使用框架開發遊戲
優點:耦合性低,重用性高,部署快,可維護性高,方便管理。提高開發效率,降低開發難度
缺點:增加了系統結構和實現的複雜性,需要額外花費精力維護,不適合小型程式,易影響執行效率
常見框架
mvc
我的sframework中,view層是單獨的,model我放在基類中,controller則在派生類,實現了mvc的分離(如果要重構的話我可能會用組合代替繼承)
舉例: playerhud+playerctrl(playeryuka)+iplayer
注意圖中的呼叫關係
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這個概念將業務分拆成三部分:
uframe是視覺化的,功能似乎方便實用,但是由於收費,我沒有深入過,不便過多評價
puremvc
puremvc框架引入了多種設計模式、訊息機制(使用觀察者模式,發布/訂閱模式)來解耦各個模組
優點:強解耦,實現了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框架,下面我們就來介紹
ecs的教程現在還比較少,詳細的我也不方便介紹了,感興趣的可以在這些框架中選乙個深入
其他
trap框架
trap是乙個學長製作的單機遊戲,他在這個遊戲中使用了自己原創的框架,sframework也從中參考了不少設計思路。trap有分ui部分和遊戲部分,封裝了unity事件和輸入控制,使用單例、manager和notificationcenter進行訊息傳輸,不過目前未開源
gameframework
基於 unity 5.3+ 引擎的遊戲框架,國人原創,開源
詳情可以去官網檢視 簡介
sframework
sunset game 製作組自主設計研發的一款unity通用遊戲框架,設計思想類似mvc+ecs。簡介
還有更多優秀框架可以在github中找到~
架構設計思想總結
1 分而治之 簡單的說就是將複雜的業務,工作進行拆分。開發中最早接觸到的mvc 三層架構就是最經典的案例。在開發中業務總是會比較複雜,通過拆分,任務分配到每個成員,大家各司其職,降低任務難度,同時又能將工作處理好。3 業務發展驅動技術發展,技術發展驅動業務 通俗的說,我們上班是為了賺錢,公司運營也是...
設計模式與架構設計
論設計模式在架構設計中的運用 設計模式 在我們現實的軟體專案開發中,常常會遇到一次又一次的關於軟體設計上的問題,而設計模式就針對那些問題提供了一系列的解決方案。設計模式是一種較高層次程式結構的設計策略 是一種技巧,它著重於為軟體系統 子系統內部的各物件間提供乙個良好的通訊平台,協調各者之間的關係,使...
架構設計開篇 架構設計的目標與衡量
程式設計即設計,即架構。架構,這個詞比較神秘,以致於很多程式設計師望而卻步,以為要什麼了不得的本事。確實的,架構設計是一種高遠的目標,但千里之行,始於足下。架構的目標是什麼呢?實現所需服務 架構,致力於以更低成本 更高效率 更高質量地實現所需服務。架構,是兼顧質量 效率與成本的魔法。但架構並不研究如...