Unity框架設(shè)計(jì):架構(gòu)師必備開(kāi)源框架:3天打造大廠商用框架
現(xiàn)在Unity的相關(guān)技術(shù)已經(jīng)都非常常熟了,如果你的技術(shù)能力與閱歷夠,搭建一個(gè)商用的游戲框架,你只需要3天的時(shí)間。今天給大家分享一個(gè)Unity老鳥(niǎo)3天能搭建一個(gè)自己的商用框架的幾個(gè)必備的開(kāi)源庫(kù),方便大家學(xué)習(xí)與使用,同時(shí)學(xué)習(xí)這些有前途的開(kāi)源庫(kù)也能讓你在公司里面游刃有余。
?
1: 搭建商用Unity框架必須要考慮的幾個(gè)點(diǎn)
?
首先我們做商用的Unity游戲開(kāi)發(fā)框架要考慮一些點(diǎn),做一些取舍,來(lái)做好技術(shù)選型,主要考慮以下幾個(gè)方面:
1:采用什么樣的技術(shù)來(lái)做熱更新,目前主流的熱更新方案有: Lua解決方案, ILRuntime解決方法,TypeScript的puerts解決方案, IL2CPP的解決方案, 目前強(qiáng)烈推薦大家使用IL2CPP的解決方案huatuo/HybirdCLR。因?yàn)檫@個(gè)方案是性能最好的,不會(huì)改變?nèi)魏蜺nity開(kāi)發(fā)方式的最好的一種熱更方案,也將會(huì)是Unity方案的主流。
2:選擇一個(gè)好的資源管理技術(shù)方案,資源管理技術(shù)方案是游戲開(kāi)發(fā)中最重要代碼量最多的方案之一。資源管理主要是要考慮開(kāi)發(fā),發(fā)布,打空包,資源熱更新,打包增量與更新, 多平臺(tái)多渠道多版本管理等需求。
3: 其它一些小模塊與游戲制作相關(guān)的工具,比如配置表,UI框架,時(shí)間管理,定時(shí)器,IO,Debug模塊等。
4: 采用什么樣的開(kāi)發(fā)模式來(lái)組織業(yè)務(wù)邏輯代碼, Unity是基于組件化開(kāi)發(fā)模式的,很多游戲框架也會(huì)做一些小的改動(dòng)來(lái)定義項(xiàng)目中的開(kāi)發(fā)模式,比如有些框架用狀態(tài)機(jī)作為流程切換與管理的主線(xiàn),有些用傳統(tǒng)的方式來(lái)做流程與管理的主線(xiàn),具體可以根據(jù)自己要做的游戲類(lèi)型, 開(kāi)發(fā)習(xí)慣,與團(tuán)隊(duì)成員的技術(shù)能力等來(lái)分析與選擇。
?
搞清楚了主要的這些點(diǎn)以后,我們就開(kāi)始針對(duì)這些來(lái)列舉一些開(kāi)源的框架,方便大家來(lái)學(xué)習(xí)與使用,讓你快速的搭建一個(gè)自己的框架出來(lái),做框架不再是一個(gè)很高級(jí)的事情,按照自己的想法來(lái)定義一個(gè)開(kāi)發(fā)模式,讓自己后期開(kāi)發(fā)游戲舒服快樂(lè)即可。我不主張直接用一個(gè)商用的整體框架, 比如GameFramework等, 除非他們和你的項(xiàng)目管理與組織方式非常貼近,否則要根據(jù)自己的項(xiàng)目實(shí)際來(lái)定制一個(gè)適合自己的開(kāi)發(fā)模式與工作流。但是不可否認(rèn),GameFramework, MotionFramework,ET等游戲開(kāi)發(fā)框架里面還是有很多值得學(xué)習(xí)的設(shè)計(jì)理念與習(xí)慣,所以作為開(kāi)發(fā)者我們也要學(xué)習(xí)相關(guān)的一些架構(gòu)設(shè)計(jì)與原則方式。
?
2: 商業(yè)框架必備: 當(dāng)前流行的開(kāi)源模塊
?
我們不給大家推薦整體的框架,因?yàn)檫@個(gè)和你的游戲類(lèi)型與管理方式,技術(shù)儲(chǔ)備等相關(guān)。我給搭建推薦幾個(gè)主要的模塊框架,這些模塊能很好的處理游戲開(kāi)發(fā)中的特定問(wèn)題,同時(shí)這些框架模塊也是在商業(yè)項(xiàng)目中經(jīng)過(guò)驗(yàn)證的。
首先是熱更新,現(xiàn)在只要是新項(xiàng)目,我都推薦大家使用基于IL2CPP vm的熱更方式huatuo/HybirdCLR, huatuo現(xiàn)在是途游開(kāi)源的,HybirdCLR團(tuán)隊(duì)之前在途游,后來(lái)做了一個(gè)類(lèi)似的框架HybirdCLR, 所以他們應(yīng)該是同文同種,都可以用,具體用哪個(gè),可以自己判斷,
我把兩個(gè)項(xiàng)目的github地址都放出來(lái):
Huatuo: 途游開(kāi)源,
https://github.com/tuyoogame/

HybirdCLR: focus creative games(代碼哲學(xué))開(kāi)源:
https://github.com/focus-creative-games

熱更新基于huatuo/HybirdCLR來(lái)進(jìn)行項(xiàng)目組織與構(gòu)建。選擇huatuo/HybirdCLR最大的好處幾乎不會(huì)影響到正常的Unity開(kāi)發(fā),你正常的使用Unity開(kāi)發(fā)就可以了,熱更新偷偷的就可以給你處理了。
?
選好了熱更新模塊以后,接下來(lái)就是資源管理模塊,我推薦大家使用途游開(kāi)源的YooAsset框架, YooAsset框架目前在很多項(xiàng)目中在用,因?yàn)橐彩峭居谓?jīng)過(guò)了商業(yè)驗(yàn)證后開(kāi)源出來(lái)的,能幫我們節(jié)省很多的開(kāi)發(fā)時(shí)間,同時(shí)用起來(lái)也非常的方便,他有Edtior模擬器運(yùn)行模式,單機(jī)運(yùn)行模式,聯(lián)機(jī)運(yùn)行模式。
項(xiàng)目仍然來(lái)自于途游開(kāi)源:
https://github.com/tuyoogame/

熱更框架與資源管理框架一確定,你的游戲開(kāi)發(fā)框架基本上都不會(huì)太差,能達(dá)到商用級(jí)別。而且這兩個(gè)都來(lái)自于途游的大廠開(kāi)源,可以放心的使用。
?
接下來(lái)就是游戲數(shù)據(jù)配置表框架,這里的話(huà)給大家推薦的是luban與FlashExcel。luban更完善與強(qiáng)大,能處理好{excel(csv,xls,xlsx)、json、bson、xml、yaml、lua、unity ScriptableObject} => {binary、json、bson、xml、lua、yaml、erlang、 custom format}等格式,F(xiàn)lashExcel專(zhuān)門(mén)處理配置表格。分別給到大家他們的項(xiàng)目地址:
FlashExcel:
https://github.com/nizhenchao/FlashExcel
luban來(lái)自與focus creative games(代碼哲學(xué))開(kāi)源:
https://github.com/focus-creative-games/luban

3 如何能定制好自己的游戲框架
?
前面我們講過(guò)游戲框架的核心就是定義一種針對(duì)某種類(lèi)型項(xiàng)目的開(kāi)發(fā)的協(xié)作與管理的方式。作為架構(gòu)師如何能夠定制好自己的游戲框架,我覺(jué)得重要的有幾點(diǎn):
(1) 掌握基本的原理原則與處理方式。雖然很多東西不用我們寫(xiě),但是基本的原理原則和使用方式我們要知道,比如打空包,技術(shù)原理是如何做的,比如增量更新技術(shù)原理是如何做的,比如熱更新的技術(shù)原理如何等,這些能夠幫助我們更好的使用與閱讀維護(hù)別人寫(xiě)的底層的庫(kù)。為什么很多小伙伴自己用庫(kù),怎么都用不好,看不懂,其實(shí)就是知識(shí)的儲(chǔ)備量不夠,如果你能了解主流的解決方案與思路,再去看別人寫(xiě)的源碼,你會(huì)發(fā)現(xiàn)開(kāi)源庫(kù)的好處就是別人花了大量的時(shí)間做了你要做的工作,而且還不用自己親自動(dòng)手,前提是你有和作者接近的知識(shí)儲(chǔ)備,所以我們要注重我們的基礎(chǔ)知識(shí)與基本原理原則的學(xué)習(xí)與積累。
(2) 搭建商用游戲框架還有重要的一個(gè)點(diǎn)就是先學(xué)習(xí)別人搭建的游戲開(kāi)發(fā)框架是如何組織管理項(xiàng)目的,它們的設(shè)計(jì)的優(yōu)點(diǎn)與缺點(diǎn)是什么?適合哪些游戲,哪些項(xiàng)目。很多人可能在公司用GameFramework/MotionFramework等,雖然我不建議大家在沒(méi)有搞懂自己的游戲類(lèi)型與開(kāi)發(fā)管理方式是否與這類(lèi)框架本身的理念符合時(shí)就盲目的使用開(kāi)源的游戲框架,而不是自己定制,但是我還是推薦大家學(xué)習(xí)一些游戲開(kāi)發(fā)框架的組織方式與設(shè)計(jì)理念,為定制你自己的開(kāi)發(fā)流做好一些設(shè)計(jì)準(zhǔn)備。
?
今天的分享就到這里了,關(guān)注我,下一節(jié)分享”Unity如何基于狀態(tài)機(jī)來(lái)組織驅(qū)動(dòng)游戲邏輯”。
附:視頻教程
https://www.bycwedu.com/promotion_channels/2146264125?