[心得] 沙漠商旅C的遊戲設計(1)
作者:NDark
時間﹔201001
沙漠商旅C的遊戲設計(1)-簡介與MenuEditor
http://wp.me/pBAPd-aB
談完了"容易被遺忘的遊戲模組"之後
接下來說明的就是沙漠商旅C的專案內容。
簡介
沙漠商旅C是移植自D-MAH的Flash遊戲作品Caravaneer的Windows平台VC++專案。
沙漠商旅遊戲連結:http://freegame.com.tw/flash/slg/slg_p_057.htm
作者官網:http://www.d-mah.com/
自2008年年底,我開始進行此遊戲的移植專案,
希望能藉著移植這個作品,來達到視窗遊戲設計的自我訓練與對於遊戲層運作的探索。
專案最終完成度端看能繼續投入到什麼程度為止,
是否達到100%並不十分重要,但希望能盡量完成原始遊戲的設計範圍。
選擇沙漠商旅為目標的原因:
一。我不打算進行新的企劃案的設計,沙漠商旅雖然是個小遊戲,
但是遊戲內充滿各種元素,包含經營,戰術,經濟,角色扮演,劇情。
二。我不打算進行美術創作,因此不能空想一個新的遊戲專案。
因此透過移植這個Flash遊戲的過程來更了解遊戲層的運作,
藉此了解一個視窗遊戲遊戲層的單純架構與企劃,美術之間的溝通流程。
因此在幾篇文章中,我都不會提到這個遊戲好不好玩,或是好玩在哪裡。
因為我認為好不好玩是企劃的工作,也是企劃人員該有的擔當,認知,以及被要求之處。
以一個程式設計人員來說,應該先完成的是快速實現企劃的想法以及撰寫模型來驗證。
本專案僅進行學術研究及開發訓練之用,
Caravaneer遊戲之所有素材及名稱之權利為原作者D-MAH所有。
本專案之結果僅會作為本人經歷及教學示範之用,不會進行販售。
本人已去函徵求D-MAH之同意,但未獲回音。
專案系統與特色(Project System & Features of Caravaneer C)
. Windows CLR Form project
. Visual Studio C++ 2005
. EZGL ( OpenGL on .net 2.0 )
. supported by Menu Manager(菜單管理器) and Menu Editor(菜單編輯器)
. supported by Resource Pool(資源池) and Resource Editor(資源編輯器)
. supported by Editors of all kind objects in Caravaneer C(各種物件編輯器)
. using OpenGL windows font text drawing(畫字系統)
. using OpenGL select system(點選系統)
. stage paragraphing & event-driven development(分段及事件觸發開發流程)
. save & load (可以存讀檔)
. suported by Parameter Loader
時程
2008.09 進行核心類別開發
2008.12.28 開始進行版本控制及繪圖平台設計
2009.02.25 進行Resource Pool的開發
2009.03.01 進行Story System的開發
2009.03.11 進行City Editor的開發
2009.03.17 進行Caravan Editor的開發
2009.03.24 進行Menu Editor的開發
2009.04.15 進行Resource Editor的開發
2009.05.09 進行Resource Editor與Menu Editor的整合
2009.05.11 進行城市選單的設計與實作
2009.05.16 進行城市購買選單的設計與實作
2009.06.18 進行關卡資源的釋放與重讀
2009.06.27 進行玩家與城市的擺放與簡單移動
2009.07.09 進行Billboard的實作
2009.07.17 進行UID Updator的開發
2009.08 文件及遊戲事件整理
2009.08.25 進行Individual Editor的開發
2009.09.07 進行Transporter Editor的開發
2009.09.18 進行Equipment Editor的開發
2009.10.02 進行Message Observer功能開發
2009.10.07 開始進行戰鬥系統開發
2009.12.03 戰鬥結束與戰利品選單開發
2009.12.26 進行Cart Editor的開發
2010.01.03 進行文件的撰寫
編輯器-Menu Editor
Menu Editor(菜單編輯器)是沙漠商旅C專案中一個相當重要的開發重點。
起源於當年我在口古月遊戲製作小組的時候就有的構想。
但是當年礙於人力與優先度並沒機會完成。
主要目的是
建立一個圖形化介面使得企劃與美術人員可以自行設計遊戲中的菜單(選單)。
不用把構想寫在紙上,再由程式人員設定進程式裡面。
減少管理與開發上的流程協調與衝突。
企劃與美術人員可以自行調整選單的位置與其他參數,存成一個選單檔。
程式開始時選單檔讀入後自動建立選單。
系統與特色
主要由菜單管理器(Menu Manager)來管理整個菜單系統,
菜單管理器內有選單(Menu State)陣列,而陣列內又有各類菜單物件
目前的版本菜單種類有圖片,文字,與區域。
菜單物件資料有位置,顏色,大小,是否要畫,識別編號,貼圖關鍵字等屬性。
區域菜單預定為是一個看不見的方塊,是為了點選機制而設計的。
菜單物件資料中的識別編號是為了點選機制而設計的。
菜單系統目前還不支援2D Sprite等特效。
選單之間利用一個FSM-like的機制紀錄選單的轉換。
選單檔目前是用文字模式來紀錄,開發維護方便。
沙漠商旅C也透過菜單管理器來讀入選單檔。
由於是一個檔案,所以讀入後要怎麼作其實是看平台要怎麼處理。
不會受到菜單編輯器的限制。
菜單物件的編輯支援新增移除,拖曳移動,角落縮放,複製貼上,上一步。
編輯器會定期存暫存檔避免程式當機。
內容
遊戲的平面選單一向是開發上重要性不高的部分。
但是因為每個遊戲其實都有平面選單的設計,因此其實選單開發流程化是被過分低估的。
這個菜單編輯器的開發期其實相當長,多半是實務上需要什麼就開發那個功能。
原本是想開發一個像是視窗程式設計可以用滑鼠拉來拉去的設計。
編輯器負責指定一些常見的參數,然後把這些資訊存檔起來。遊戲開始時讀入。
這樣企劃人員及美術人員修改選單的設計的時候,就不用去麻煩程式人員作調整,
或是面對一個十分不容易了解的參數文字檔。
比較設計不良的地方有幾個地方:
分別是UnDo與ReDO並沒有建立;
編輯器只能紀錄移動或是縮放的上一步;
而且編輯器尚不知道目前的物體是否與上一步的相同。
程式流程在繪圖的時候概念很簡單,把每一個開啟的選單中的物件都畫出來即可。
請注意,選單管理器只提供資料,真正執行的時候是看系統怎麼處理這些資料。
如果是圖片物件就依照指定的貼圖標籤畫方塊。
如果是文字物件就依照指定的內容來畫字。
區域物件比較特別,有點像一個透明的板子,遊戲的繪圖模式不畫它。
但是當要檢查滑鼠點選的時候就要畫出來(讓滑鼠可以點到這個板子)。
因此實際使用的時候就是把選單檔案讀進來
gsMenuManager.ReadFile( ... ) ;
繪圖的時候
for( i = 0 ; i < gsMenuManager.m_vMenuState.size() ; i++ )
if( true == gsMenuManager.m_vMenuState[ i ].Active() )
{
...
畫Image
...
畫Text
...
畫Region(Select模式下)
...
}
要取用選單物件,有很多方法.
我大部分是透過每個選單及物件都給一個辨別名稱Rich Name.
pState = gsMenuManager.GetStateByName( ... )
然後再找該選單內的圖片或文字
pImage = pState->FindImageByName( ... )
文字物件比較特別的是存了字體大小與對齊等屬性,提供給系統使用。
有關貼圖關鍵字與貼圖標籤的指定會在資源編輯器的時候會一併說明。
選單間的轉換是為了選單的開啟/關閉/切換而設計的
FSM-like的設計紀錄了選單中某一個物件(被按到後)
會否開啟/關閉/切換其他選單的資訊。
這個FSM包含了物件來源標籤以及他可能的對象及動作(開啟/關閉/切換)。
譬如說
State i的Image a按下之後會關閉State i開啟State j , k
這個FSM Link會紀錄 active[ 0 ] = j active[ 1 ] = k
deactive[ 0 ] = i
(因為同時間可以開啟多個選單,因此這不是一個標準的FSM。)
所謂2D Sprite我沒有特別進行開發的原因是,
這個特色幾乎是每個遊戲引擎都已經內建的功能。
可以讀圖的遊戲引擎都應該對Sprite進行設計。
--
"May the Balance be with U"(願平衡與你同在)
視窗介面遊戲設計教學( http://0rz.tw/V28It ),討論,分享。歡迎來信。
視窗程式設計(Windows CLR Form)遊戲架構設計(Game Application Framework)
遊戲工具設計(Game App. Tool Design )
電腦圖學架構及研究(Computer Graphics)論文代讀(含投影片製作)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.96.77.176
※ 編輯: NDark 來自: 140.96.77.176 (02/26 18:22)
※ 編輯: NDark 來自: 140.96.77.176 (02/26 18:23)
推
02/27 01:22, , 1F
02/27 01:22, 1F
推
02/27 08:02, , 2F
02/27 08:02, 2F
→
02/27 10:23, , 3F
02/27 10:23, 3F
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
67
98
172
299