【總結】遊戲框架與架構設計(Unity為例)
阿新 • • 發佈:2018-02-20
單機 業務 github 事件 概念 lec 集合 架構模式 wid 使用框架開發遊戲
優點:耦合性低,重用性高,部署快,可維護性高,方便管理。提高開發效率,降低開發難度
缺點:增加了系統結構和實現的復雜性,需要額外花費精力維護,不適合小型程序,易影響運行效率
常見框架
MVC
註意圖中的調用關系
MVC
優點:實現了層次化設計,是一個基礎常用的框架
缺點:MVC如果沒有用好,容易出現某一層過重的現象(如View)。MVC更適合橫向鋪量的項目。遊戲(非UI部分)則不太合適。
MVVM
MVVM 模式將MVP中的 Presenter 改名為 ViewModel,基本上與 MVP 模式完全一致。
MVP中,View 與 Model 不發生聯系,都通過 Presenter 傳遞。
唯一的區別是,它采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel
SFramework中,View不能直接修改Model,他們之間通過事件通信
uFrame&MVVM
uFrame框架模仿了MVVM這種架構模式(事實上並不包含Model部分,且多出了Controller部分)
在uFrame中,使用Element這個概念將業務分拆成三部分:
我曾使用過PureMVC框架開發過一個demo,它通過ApplicationFacade,Mediator,Proxy,Command架設項目,由SendNotification()進行交互 優點:強解耦,實現了MVC高度分離 缺點:增加代碼量,降低執行效率,函數調用層次較深,容易找不到消息發送源。Facade作為單例接口,本應管理MVC,Model、View、Controller卻提供了 getInstance()方法,讓人奇怪 MVCS
框架與架構
StrangeIOC支持依賴註入(即控制反轉(Inversion of Control,縮寫為IoC)),可以有效降低耦合度
但是IOC復雜而緩慢,而且是基於Mono的,所以我沒有選用
ECS
Entity Component System
Unity本身的組件開發就是ECS框架,ECS很適合遊戲開發,在遊戲引擎中比較常見,谷歌曾在Github上發布了一個名叫Entitas的ECS框架,下面我們就來介紹
- 表現層(View):遊戲畫面。UI
- 邏輯層(Controller):數據接口,操作控制,AI
- 數據層(Model):數據保存,圖片、聲音等資源
- ViewModel:保存遊戲中對象的數據結構,例如血量、經驗、金錢等等。
- Controller:處理遊戲業務邏輯。例如加血、減血之類的。
- View:遊戲世界中可以見的對象,和ViewModel綁定,以在遊戲中進行展現。
我曾使用過PureMVC框架開發過一個demo,它通過ApplicationFacade,Mediator,Proxy,Command架設項目,由SendNotification()進行交互 優點:強解耦,實現了MVC高度分離 缺點:增加代碼量,降低執行效率,函數調用層次較深,容易找不到消息發送源。Facade作為單例接口,本應管理MVC,Model、View、Controller卻提供了 getInstance()方法,讓人奇怪 MVCS
- Entity就是只有數據的GameObject對象,不包括方法
- 每一個Entity擁有Component組件,負責Entity數據處理
- Group是擁有相同Component的Entity集合
- Context就是創建銷毀Entity的工廠
- Collector收集器提供了簡單的方法來處理Group中Entity變化的反應。
【總結】遊戲框架與架構設計(Unity為例)