-前言-
**以下內容均是個人的一些小想法**
-正文-
當我們寫出了一套自己的遊戲框架之後,我們就能在以後每次開發新項目的時候,快速複用以往的經驗積累。一個框架的好處就是複用性,在開發一個新項目的時候,能快速專注於新遊戲的業務邏輯。我們在寫遊戲框架的時候,應滿足MVC設計思想,做到邏輯分離。這樣,在我們開發項目的時候,功能與功能直接的耦合就能降到相對較低的水平,我們更能協作開發。
首先作爲一個MVC的框架,應該包括,Control模塊,View模塊,Data模塊(Model),每一個功能模塊由一個Manager去管理持有這三個模塊,從而形成一個功能的基礎。
Control模塊可以獲取得到View中的界面,也可以獲取得到Data中的數據。
這三個模塊在Manager初始化時也應該存在一定先後順序。應該首先初始化數據模塊——>界面模塊——>控制器模塊,在釋放的時候則順序相反。
每一個功能模塊都是一個Manager,這個Manager則持有相關邏輯,界面,數據等對象。
Control模塊
一個功能模塊可以包含多個Control,每個Control可能處理的事情都不一樣,可能是對界面某個地方做處理,只要我們分得夠細,Control也就可以有很多個。只是說有沒有這個必要性而已。
View模塊
View模塊同樣也可以多個,View裏面一般持有控制對象的原始圖元數據等,都會暴露接口,提供給Control控制
Data模塊
Data模塊是存儲這個模塊對應的數據,生命週期是模塊初始化到模塊卸載期間,對應的我們遊戲一般存在的玩家數據等全局數據,生命週期更短。
框架能力及分級
框架在設計之初都會進行層次分級,哪個粒度的結構處理哪個粒度的事情,這樣一層一層的最終到我們的業務邏輯。
首先,我們程序一般入口爲Main函數,這時候我們就可以啓動我們框架。
一般一個框架最基礎要包括如下能力:
- 遊戲數據管理(DataModule)
- UI管理(2D界面的管理能力)
- 網絡通信(http通信,WebSocket通信)
- 遊戲業務邏輯的管理
- 平臺化
這上面有些是遊戲引擎提供的,我們只需要做一點封裝,比如Laya本來就有Pool(資源池),我們只需要在上層邏輯封裝Pool實現自己的資源池即可。
以上可以基本形成一個遊戲框架的結構。一個GameCenter可以由很多模塊組成,不止上面圖上所列舉的,不過也要保證模塊之間的粒度是儘量相同的。
上面每個模塊中可能又包含很多具體的功能對象。以下爲一個MVC框架的設計
上面的MVCable就是最開始我們所說的Manager,持有Control、View、Data對象
-結語-
我們設計的框架不可能滿足任何場景,有時遇到需要修改的時候,就需要作出一定修改。另外MVC的設計思路也不是沒有缺點,在第一次接觸你框架的人多數都不是很懂,因爲MVC的設計一般是比較繞的,代碼也比較散,不過等你熟悉了這套設計思路之後,就會知道寫代碼是多麼的絲滑。