昨日gamelook曾就某投資人把移動(dòng)團(tuán)隊(duì)失敗原因之一歸于選擇Unity引擎進(jìn)行了一番評(píng)論,工具本身無(wú)罪,但如何理解工具、正確使用Unity引擎確實(shí)需要討論,在選擇Unity之前你或許需要了解下這個(gè)引擎實(shí)際開發(fā)過(guò)程中的技術(shù)特點(diǎn)、以及適應(yīng)的游戲產(chǎn)品類型,gamelook熱心讀者Fxcarl昨天就這個(gè)問(wèn)題專門撰文一篇,來(lái)幫助大家了解Unity游戲開發(fā)、分享心得,推薦閱讀。
文/FXCarl
代碼驅(qū)動(dòng)帶來(lái)的技術(shù)題
游戲碎片化。U3D 引擎有個(gè)很有力的特色,就是實(shí)時(shí)編譯運(yùn)行。這意味著無(wú)論在任何時(shí)候,只要按下運(yùn)行圖標(biāo),當(dāng)前的場(chǎng)景就會(huì)進(jìn)入可執(zhí)行狀態(tài)。這導(dǎo)致了游戲在開發(fā)的過(guò)程中經(jīng)常陷入一種不應(yīng)當(dāng)?shù)淖孕艩顟B(tài)。同時(shí)也導(dǎo)致了游戲內(nèi)容長(zhǎng)期處在碎片狀態(tài)下,并低估游戲功能整合時(shí)可能遇到的困難。
資源管理是 U3D 引擎的一個(gè)難點(diǎn)。U3D 的資源管理系統(tǒng)因?yàn)榭缙脚_(tái)的緣故和操作系統(tǒng)的文件系統(tǒng)是脫鉤的,需要熟練的掌握 Resources 目錄和 Assetbundle 的技術(shù)才能靈活的控制游戲中的資源使用情況。但這一工作時(shí)常會(huì)被簡(jiǎn)單的理解為將資源放置在游戲工程目錄下,剩下的交給引擎自己搞定 ……
需要自己做數(shù)據(jù)系統(tǒng)。我們?nèi)缃駠?guó)內(nèi)研發(fā)的作品,絕大多數(shù)是數(shù)據(jù)密集型(策略、經(jīng)營(yíng)、卡牌、KRPG),這和 Temple Run 這樣的游戲類型有些不同。數(shù)據(jù)密集型的游戲需要采用數(shù)據(jù)驅(qū)動(dòng)的形式來(lái)進(jìn)行游戲的設(shè)計(jì)和開發(fā),但是 U3D 提供的框架是一個(gè)代碼驅(qū)動(dòng)型的結(jié)構(gòu)(對(duì)于原型開發(fā)來(lái)說(shuō)極為有力)很多時(shí)候會(huì)讓研發(fā)團(tuán)隊(duì)陷入泥潭 —— 看起來(lái)功能開發(fā)出來(lái)了(只要在U3D的對(duì)象檢查器里調(diào)調(diào)參數(shù)就能工作),卻遲遲無(wú)法進(jìn)入大規(guī)模制作階段(策劃拿著數(shù)據(jù)表格卻無(wú)法應(yīng)用到游戲里)。U3D 引擎本身也沒(méi)有提供任何在數(shù)據(jù)方面的支持,數(shù)據(jù)表要么需要自行處理,要么需要自己尋找嵌入式的數(shù)據(jù)庫(kù)解決方案。
網(wǎng)絡(luò)連接部分其實(shí)也是類似。U3D 本身集成的網(wǎng)絡(luò)模塊并不是為大規(guī)模 C/S 結(jié)構(gòu)的游戲所設(shè)計(jì),常需要自行開發(fā)一套客戶端和服務(wù)器結(jié)構(gòu)。當(dāng)然也可以求助中間件來(lái)解決 …… 但是容易讓人迷惑的地方在于,U3D 既可以使用 .net 的網(wǎng)絡(luò)機(jī)制像端游一樣工作,也退一步可以用加密的 www 機(jī)制,當(dāng)一個(gè)簡(jiǎn)單的頁(yè)游來(lái)處理。如何抉擇是個(gè)難題,貿(mào)然貪多求全往往換來(lái)遙遙無(wú)期。
測(cè)試 U3D 開發(fā)的游戲亦一個(gè)很麻煩的過(guò)程。原因也是那個(gè)幾乎不會(huì)崩潰,隨時(shí)可運(yùn)行的場(chǎng)景/邏輯混成編輯器 —— 它會(huì)讓開發(fā)團(tuán)隊(duì)誤算自己當(dāng)前的游戲完成度,以及需要什么樣的測(cè)試。
尖端技術(shù)帶來(lái)的麻煩事
高精尖的動(dòng)態(tài)光照和復(fù)雜材質(zhì)系統(tǒng)。U3D 比起其他的移動(dòng)平臺(tái)或者網(wǎng)頁(yè)游戲開發(fā)工具而言,往往最打動(dòng)人的就是其無(wú)與倫比的畫面渲染效果。但是在光鮮的官方演示背后,仿佛總有看不到的壁壘阻礙著其他開發(fā)者的步伐。實(shí)際上駕馭 U3D 所需要的能力是超乎一般想像的。U3D 的渲染架構(gòu)的確夠強(qiáng)大,完成 Unreal 甚至 CryEngine 級(jí)別的畫面渲染質(zhì)量都是可能的,但是它并沒(méi)有包裝這些系統(tǒng)而是將靈活性交給了開發(fā)者。我們的程序員是否已經(jīng)控制住了渲染管線的復(fù)雜度?我們的技術(shù)美術(shù)是否可以指導(dǎo)我們的美術(shù)完成充分發(fā)揮 U3D 能力?美術(shù)制作人員是否有具有勝任所謂“次世代”精度要求的游戲內(nèi)容制作?這些東西屬于小團(tuán)隊(duì)嗎?
全局光照烘培。這是一個(gè)非常非常非常實(shí)用的 U3D 功能。理應(yīng)所有的 U3D 團(tuán)隊(duì)都靈活使用。但是想要用好就有了另外一番難度 —— 美術(shù)和場(chǎng)景制作人員的配合,而誰(shuí)來(lái)負(fù)責(zé)就比較難說(shuō)了。另外美術(shù)必須用非常精準(zhǔn)的尺寸來(lái)制作場(chǎng)景中的物件,否則 U3D 將無(wú)法正確的處理全局 UV。
工具鏈帶來(lái)的紛紛擾擾
GUI 系統(tǒng)的各種理論。所有人都在吐槽 U3D 自帶的 GUI 系統(tǒng)太慢 —— 問(wèn)題是真的有證據(jù)嗎?一方面很多人說(shuō)我做測(cè)試的時(shí)候做了一大堆的控件,的確很慢。另外一方面大家也會(huì)發(fā)覺(jué) GUI 系統(tǒng)會(huì)帶來(lái)一些不必要的渲染請(qǐng)求(Draw Call)。于是大家都在拼了命的做兩件事情,一個(gè)是減少渲染請(qǐng)求,一個(gè)是想盡一切辦法的避開 GUI。但其實(shí)情況沒(méi)那么嚴(yán)重,無(wú)論是挑選替代中間件如 NGUI 還是直接使用 U3D 的 UI 系統(tǒng)都不會(huì)巨大的影響 —— 除了不當(dāng)使用之外極少見到 GUI 成為性能焦點(diǎn)的時(shí)候。不過(guò)無(wú)論是 NGUI 還是 U3D 內(nèi)置 UI 都沒(méi)有很好的 UI 工具 —— 要么過(guò)于程序員導(dǎo)向,要么過(guò)于偏向布局而不方便增加代碼功能。內(nèi)部開發(fā)一些擴(kuò)展工具或者工作流程都很有必要。
版本控制的難題。Asset Server 還是 SVN 其實(shí)多多稍稍都有不適應(yīng) U3D 的情況。但是更關(guān)鍵的地方在于整理好文件的內(nèi)部結(jié)構(gòu)以及經(jīng)常備份。恰當(dāng)?shù)氖褂?U3D 的命令行模式可以實(shí)現(xiàn) U3D 工程的自動(dòng)編譯發(fā)布。
擴(kuò)展 U3D 本身功能的能力。因?yàn)?U3D 較為完整的功能而忽視對(duì) U3D 本身的功能拓展是一種常見狀態(tài),隨時(shí)保持專人不斷的優(yōu)化 U3D 本身的功能是非常重要的,譬如各種各樣的批量化操作等等。但是這有個(gè)前提,擴(kuò)展工具需要充分理解工具,U3D 相對(duì)來(lái)說(shuō)功能過(guò)于強(qiáng)大,以至于很多團(tuán)隊(duì)中的成員會(huì)害怕學(xué)習(xí),而將 U3D 作為少數(shù)團(tuán)隊(duì)成員或?qū)儆诔绦騿T的工具 —— 這就很成問(wèn)題了。
需要前瞻性的判斷能力
每一個(gè),每一個(gè)國(guó)內(nèi)開發(fā) U3D 游戲的團(tuán)隊(duì)都在抱怨 U3D 的中文字體支持問(wèn)題等等。可是實(shí)際上真正用前瞻性的角度在使用 U3D 引擎的團(tuán)隊(duì)并不多 —— 以今天此時(shí)此刻為例,U3D 4.0 已經(jīng)可以在任何平臺(tái)上使用動(dòng)態(tài)的字體,支持 Unicode 編碼 —— 中文不在話下。從 U3D 3.5 遷移到 4.0 幾乎不用對(duì)項(xiàng)目做任何的修改,而如果說(shuō)之前并不知道 4.0 會(huì)支持動(dòng)態(tài)字體的話,那么為什么不多去官方論壇關(guān)注一下每個(gè)版本的開發(fā)進(jìn)度情況呢?每一個(gè)在 2013 才會(huì)發(fā)布的游戲都不應(yīng)該擔(dān)心字體問(wèn)題才對(duì)嘛 ……
保持對(duì)每個(gè)版本 U3D 更新內(nèi)容和未來(lái) U3D 功能的關(guān)注可以大量減少重新發(fā)明輪子的問(wèn)題,也能在遇到一些困境時(shí)保持更好的心態(tài)。直接郵件開發(fā)者也會(huì)是個(gè)很好的選擇,請(qǐng)一定要多騷擾他們!一般提前3個(gè)月到6個(gè)月就能獲知將來(lái)版本可能更新的內(nèi)容的。
1 “Code-Driven”
State Management
Assets Management
Data Management
Networking
Testing
2 CuttingEdge Techs
Dynamic Lighting & Complex Materials (Textures)
Lightmapping
Nav mesh
Mecanim
DX11
3 Toolchain
GUI
VersionContorl
4 Vision
原文地址:http://game.zol.com.cn/354/3543149.html