Saturday, July 01, 2006

HIMMG vol.01

Final Spike Poster (experimental version)究竟這是甚麼題目?「HIMMG」?讓我來慢慢解釋吧。兩個月前,我將我自己製作經年的電腦遊戲,「Final Spike」的一段Teaser Trailer發報,得到了不少正 面的回應,亦有網友希望我說說我在製作遊戲時的難題,或一些製作上的技巧,在我想了一陣子後,我決定寫出一個Blog系列,來說說我製作電腦遊戲的一些事 ,我訂出了這個系列的題目,就叫做「How I Make My Game」。

今次是第一篇,我會先說說,我的Game Engine「Ngan-GINE'3D」。在Ngan-GINE'3D的初期,我已經決定要做一個,以製作動作遊戲為本的Game Engine。首先要 做的,使要學習用Direct3D,因為那時候我接觸了3D圖像編程沒多久,要學習如何做一個Engine,那就要選個API/SDK吧。在了解Direct3D是如何畫出多邊形後, 便開始嘗試做個最基層的系統,我稱之為「Frame」。在Ngan-GINE'3D中,是沒有任何所謂Scene Management,而最基層的,就是這個Frame了。

Frame系統中的成員,都是最基本的,例如Position、Rotation、Local Matrix... 等等。而Function方面,會包含了Translate、Rotate、Update、 Transform... 等等。當然,Frame也會有建立及移除 Function了,在建立的時候,會放進一個作為分類的資料,以便認知這個Frame是用來做甚麼的(在Ngan-GINE'3D中,暫時只有角色及Camera類別)。在Frame系統完全後,便開始做3D Model的繪畫了,那時候對3D圖像認識淺,就找來Quake的MD2檔案來玩玩,到了明白當中的運作後,就開始找個3D Modeler來用了。在不記得 甚麼情況下,得知了MilkShape3D的存在,更有內建Skeleton Animation,而且還可以自己做Export Plugin等,便開始研究MS3D了。

用了很多時間來研究MS3D,始終自己的數學水平比較弱,用了數個月才學好了MS3D及Export出自己的檔案類型。同時我亦將MS3D中的Skeleton Animation,分拆 出來加到了Frame系統中,作為Frame內的成員之一。在學習MS3D期間,同時亦學會了靜態的3D Model繪畫,但其與動態3D Model有之後再用了數個月的時間,加進了繪製靜態3D Model。其後再用了數個月時間,想加進地圖資料和Frame系統的Collision Detection,但怎樣做也不理想,後來才知道最大原因是,因為Ngan-GINE'3D中沒有Scene Management,導致不能分割區域做出準確的Collision response,所以後來就放棄研究了,但始終一直不能找到好方法代替。在往後,更加入了Skybox、Billboard、2D Sprite... 等等。

在此期間,碰巧香港中文大學舉辦了一個遊戲創作比賽,我就用了這個Ngan-GINE'3D,做了個實驗版本的「Final Spike」參賽,可能是剛巧碰到SARS的爆發,參賽作品比較少,感覺有點僥倖地取得公開組別的銅獎。在下一次,我會說說在製作那個實驗版本的「Final Spike」時,所學到的東西如何改進Ngan-GINE'3D的功能。

Final Spike Title screen (experimental version) Final Spike in-game screen (experimental version)

3 comments:

Anonymous said...

請問你用什?的繪圖軟件 (例如 photoshop, paintshop) 呢?

狂野 said...

我是台北的遊戲開發公司。對您開發遊戲感到很有趣,向您問聲好!

有機會的話,說不定可以發到台北來啊!

Ngan Lo ( 顏佬 ) said...

狂野您好, 想不到有台北的朋友來我的Blog呢, 謝謝.

你的Idea也很不錯呢, 希望不遠的未來能夠達到吧.