前言:
人在英國進修程式,其中一門課是要求自製一款遊戲
兩個月時間限制。我在這作業中負責底層架構建立和模組化功能
遊戲製作:
當初想法是,既然是來學習程式的,那就不用現有遊戲引擎
而是用C++和SDL2,並以Entity-Component-System為主架構來實作
因為目標是做一款RPG闖關遊戲,所以想法是先做一個簡易遊戲引擎
然後再利用引擎來編寫遊戲劇本,這樣比較好擴充後續關卡
遊戲簡易流程圖:http://imgur.com/bYokLS3
通用Component包含:圖像(圖片/文字)、事件、位置、物品屬性
內部系統(負責單一Entity內的Component更新):移動
中層系統(內含Entity List,系統只負責邏輯處理):背包、選單、關卡、任務
環境系統:事件偵測、碰撞偵測(從EntityManager中觀察含有特定component的Entity)
InputManager(收集玩家按鍵的Queue)、EntityManager(所有Entity)
遊戲成果圖(注意!背景和人物圖像是由圖片網站購買再加工)
http://imgur.com/nWOH98K
因為只有兩個月時間,所以遺留幾個待處理問題:
1. smart pointer不夠熟悉,導致memory leak
2. 如果後續增加關卡的話,EntityManager勢必會太長,這部份沒有效控管
3. 圖像沒有進行分批讀取處理
4. 碰撞僅以四邊體偵測,相對粗糙
5. 圖片僅有顯示,無任何特效
雖然整個陽春又有很多錯誤地方,但我覺得這個作業是個好的開始
多虧這個作業的磨練,我在使用cocos2dx可以上手快些,即使架構不同
而且讓我對遊戲整個流程有初步了解,還會仔細研究現有引擎是如何處理問題
雖然因此而常常只能睡4-5小時,但是過程很值得:)