組織起一個遊戲引擎  

Posted by 藍斯洛 in

在組織一個遊戲引擎之前,第一件也是最重要的一件事是,先定義這個遊戲引擎的定位是什麼。

舉例來說,這個遊戲引擎將會是一個繪圖程式庫還是一個全能的遊戲開發環境?

像Gamebryo、RenderWare是一個繪圖程式庫,Unreal就是一個很強大的,幾近全能的遊戲開發環境。甚至還有像BigWorld這樣的專門為大型網路遊戲所設計的遊戲引擎。

定位的另一種涵義是需求。我常常犯一種錯誤,該處理的需求不做,卻偏偏做一堆用不到的東西。

我把這個遊戲引擎,定位為一個繪圖程式庫,提供遊戲需要的基本的繪圖處理功能。另外,我會再加上必要的工具程式。

說實話,就使用者的觀點來說,工具程式比程式庫還重要。但是對開發者而言,尤其是技術導向的開發者,就覺得那是枝微末節的事。我曾經忽略過這樣的事實,後來就必須老老實實的還債。

範例程式跟說明文件也很重要,不過在開發的過程中,我會寫需要的設計文件與測試程式,也就可以滿足這兩塊的需求。

簡單的組織架構像是這樣。

以Graphic Kernel為核心,Math Library、Core Utility提供必要的支援物件,Tools Set則是工具程式組。

比較特殊的是Graphic API與Graphic Kernel 之間的關係,我用了反向依存的方式來降低兩個模組之間的耦合程度。Graphic Kernel中定義了一個IGraphicAPI的介面,而實做層則放在Graphic API模組中。用這樣的方式,我把最低階的繪圖工作拉到Graphic API模組來做,這個模組會跟DirectX API有關聯,而Graphic Kernel模組則完全不受DirectX影響。

當然,野心如果大一點,我可以做兩三個不同實做程序的Graphic API模組,這樣我只要將API模組抽換,我的程式就能夠支援DirectX, OpenGL,.....

不過野心太大不是好事。

基礎的組織結構就這樣了,我想我可能還需要針對模組內的架構來寫一些設計文件。

This entry was posted on 2008年7月4日 星期五 at 星期五, 7月 04, 2008 and is filed under . You can follow any responses to this entry through the comments feed .

2 意見

匿名  

我很想要了解一個遊戲、一個朝向遊戲想要開發的人,您會給他什麼樣的意見?

我覺得很多人都講說每一個人要專精,我完全不知道該怎麼去做自己,到底目標該怎麼去實現呢?

2009年10月15日 下午9:56

別的我不敢說,就程式設計這方面來講,最直接有效的方法,就是學習寫程式,試著自己寫一個小遊戲出來。

實際動手做,比空想實在。

而且在這個過程裡,你可以發現自己究竟只是單純的想要做遊戲還是真的適合這一行...

2009年10月20日 上午9:40

張貼留言