Thursday 27 November 2008

概念中的遊戲引擎

某次為同事的遊戲做了一些手尾工夫,隨手整理一下源代碼,只是一晚半晚時間,就可以把 loading 的時間減半。自此,便一直念念不忘要開發一個像樣子的 game engine。

在我構思的設計裡,game engine 會以 OOP 形式運行,資源管理、記憶使用、圖片載入踢走等麻煩工序,都交由 game engine 去處理。而遊戲本身便以多個各自獨立的 module 運作,modules 間也能夠溝通和互相建立、銷毀,modules 的數量也無上限。

每一個 module 可以代表不同的遊戲畫面或狀況,或許是主菜單的其中一頁,或許是遊戲裡的一小部分,把程序裡可分割的部分給分割開去,為了取締如今程式裡常見的兩個巨無霸 state:menu_state 和 game_state。巨無霸的缺點就是內裡又有另一組 state machine,每個動作、更新,都得經過 game engine 和巨無霸的兩個 state machine,源代碼冗長而且各 state 都混合在一起。如果能把各部分都拆件,這樣子去做開發,源代碼應該更整齊,功能更強大,亦容許多人同時去開發各部分而不會互相影響吧。當然,最終目的是令程式跑得更順暢更華麗。

雖然我覺得這概念應該可以在不同 platform 上使用,但現今我只能考量 Symbian S60 的情況。畢竟,各 platform 也有不同的處理方式,一個針對 Symbian 的設計能否適合在別的 platform 上使用,還是未知之數。

(仍在參詳中,今次得花點時間看書了)

S60 Platform: 2D Game Engine Example

今晚讀了 Nokia 的 2D 遊戲例子和源代碼(S60 Platform: 2D Game Engine Example),雖然它針對各手機屏幕可支援的 color depth 做了優化,但如今大部份手機都支援 24-bit colors,似乎沒有必要特別處理這個。其內部有關 level 的部份,看似容許追加 level,但作為一個 example 來說,有點兒「過火」(一個千餘行的數字 array 代表 example 裡的第一關地圖,任誰都不會去修改它變成 level 2 吧)。其他部份也似乎頗難應用,到最後能從中得到的,只有少數編寫 game engine 時該注意的地方。看這個 example 時,一個很大的 DON'T COPY 浮在眼前。


看來有必要要取得《Games on Symbian》這本書了。

No comments: