Unity網(wǎng)游開發(fā)生存干貨分享:蒸汽之城實例解說
前段時間關于Unity是否適合國內手游/網(wǎng)游創(chuàng)業(yè)團隊的討論非?;鸨疚膹摹墩羝恰返拈_發(fā)歷程談起,對于國內網(wǎng)游團隊是否應該選擇Unity引擎,以及如何解決使用Unity開發(fā)網(wǎng)游時遇到的各種主要問題進行討論。
廈門夢加的蒸汽之城
《蒸汽之城》是廈門夢加網(wǎng)絡的第一款作品,使用Unity引擎制作的蒸汽朋克風3D實時戰(zhàn)斗MMORPG頁游。游戲擁有幻想工業(yè)時代恢弘蒼涼的場 景;豐富的種族、職業(yè)和技能系統(tǒng);和端游比也毫不遜色的優(yōu)質畫面和特效;各式各樣的副本挑戰(zhàn)和PvP活動;最后,所有這一切用戶都能直接在瀏覽器中以極短 的下載時間享受到?!墩羝恰繁话ǜ2妓?、Massively、ZAM等知名媒體列為2013年最值得期待的MMORPG游戲之一,目前已經簽約了多 家海外發(fā)行商,范圍覆蓋所有英語國家、東歐、土耳其和中東。土耳其版本已經于3月1日(北京時間)正式開始公開測試。
夢加團隊當初選擇Unity引擎的原因和大部分團隊類似,快速出原型、大量現(xiàn)成的內置功能和中間件、支持在瀏覽器里展示高素質的3D游戲畫面。在幾 年的開發(fā)過程中團隊才慢慢認識到用Unity開發(fā)MMO頁游需要克服太多問題和陷阱。幸運的是我們最終克服了絕大部分問題,《蒸汽之城》也即將開始海外公 測。下面我們會深入探討要完成一個高素質的Unity頁游MMO,應該解決哪些技術問題和怎樣建設團隊。
請注意,這里我們不會討論使用Unity制作單機游戲,因為Unity單機或者有社交功能的手游都有太多成功的巨無霸例子,很多開發(fā)者也通過自身經 驗表明小團隊使用Unity制作輕量級的單機或社交游戲并無太大障礙,下面我們還是以多人在線,需要后臺和大量數(shù)據(jù)處理的MMORPG為例來討論。雖然夢 加到目前為止都一直在開發(fā)瀏覽器版本的游戲,但其中很多技術話題對于多人手游項目也同樣適用。
從傳統(tǒng)頁游到次世代技術
雖然Unity已經有了7年多的歷史,這款引擎從誕生之初就一直保持了比較先進的設計理念,包括其一直以來的首要賣點:為開發(fā)者提供基于瀏覽器的高 素質3D游戲解決方案。Unity的特色既包括面向獨立開發(fā)者的快速原型、低成本跨平臺發(fā)布,也在近年來整合了更多高端商用的中間件和次世代的渲染技術。 使用Unity現(xiàn)在已經可以開發(fā)素質幾乎達到用Unreal Engine、CryEngine這些次世代引擎開發(fā)的游戲,Unity也被越來越多的AAA工作室選用來開發(fā)跨平臺的主機游戲。
這意味著Unity很好很強大,沒錯,但不代表團隊選擇Unity就是理所當然的。商用引擎的一大特點是兼容并包,要適合各種不同的項目和團隊需 要,而作為次世代引擎,其中又包括了大量圖像、動畫和資源管理的先進技術。對于初創(chuàng)團隊來說,選擇Unity雖然得到了一大堆可以快速見效的功能,但面對 這些功能時如何取舍,以及對引擎技術的理解和挖掘程度,都會對項目的命運造成決定性的影響。
Unity雖然一直以易上手、原型快速、中間件豐富整合快速著稱,但隨著項目規(guī)模和復雜程度的上升,很快開發(fā)團隊就會進入一塊網(wǎng)上各種單機游戲教程 無法涵蓋的真空地帶,而國內網(wǎng)游技術分享的環(huán)境又相對比較薄弱,這時在一些關鍵的技術難題上,初創(chuàng)團隊就會遇到很大的麻煩。從快速原型到攻克大規(guī)模項目的 技術難題之間,通常是讓很多團隊無法正確估計成本的危險過渡地帶。這也是很多使用Unity的項目結果反而不如使用自主開發(fā)的引擎或相對老舊引擎的原因。 自主引擎任何功能都要自己開發(fā),相對老舊的引擎功能較為局限,所以在內容和功能規(guī)模方面的計劃一般不會太過狂放;而Unity這樣的引擎包括從官方和社區(qū) 的宣傳上都給人一種到處都是隨手可得的免費午餐的感覺,反而會讓團隊的計劃更加激進,對困難認識不足。
下文中我們會對這些危險和解決方案進行逐一的分析,希望能給經驗不足的團隊提供警示和提前準備好解決問題的思路。
內容規(guī)模和版本控制
開發(fā)者在不同類型和規(guī)模項目的經驗,很大程度上造成了對”Unity是否適合手游/頁游創(chuàng)業(yè)團隊“這一討論兩極分化的看法。對于以《Temple Run》、《亡靈殺手》等游戲為榜樣的單機游戲開發(fā)者,以及CSR Racing這樣有多人對戰(zhàn)模式的單機游戲,即使團隊很小使用Unity開發(fā)都不會遇到什么太大的問題。這些單機游戲非常適合發(fā)揮Unity游戲性成型快 的優(yōu)勢,而內購、社交等功能都可以用現(xiàn)成的中間件來快速實現(xiàn)。
當使用Unity制作有海量內容的網(wǎng)游時,團隊遇到的第一個問題,就是無法把游戲的全部內容放進一個Unity項目中。一方面資源文件數(shù)量達到一定 程度后,每次開啟項目的導入過程就夠你泡壺茶;另外幾十人的團隊共用一個項目,在版本控制和數(shù)據(jù)安全性方面也會有很大的危險,任何人的操作失誤都可能導致 整個項目癱瘓;最后不同分工的開發(fā)者需要面對的項目數(shù)據(jù)和工作流程差別很大,共用同一個項目會在很大程度上降低生產效率。
《蒸汽之城》使用了很多個Unity項目來為各個不同的部門和小組提供定制的數(shù)據(jù)范圍,工具和流程。3D角色美術的項目里只使用角色數(shù)據(jù) (FBX->Prefab)和相關的預覽和打包工具;場景美術使用不同的項目來管理不同的場景;客戶端程序員使用的是主要的客戶端項目,他們的代碼 運行后可以讀取其他開發(fā)者上傳到服務器上的數(shù)據(jù),從而讓游戲跑起來。而大部分開發(fā)者可以使用編譯成可執(zhí)行文件的客戶端來測試自己隨時向測試服務器上上傳的 資源和設計數(shù)據(jù),從而既保證了每個人能最高效在自己的領域里工作,又保證了自己生產的內容能夠隨時在游戲版本中測試。
如此多的項目要怎樣實現(xiàn)版本控制呢?我們的解決方案是用Gitlab作為統(tǒng)一的管理平臺,每個項目作為一個單獨的Git Repository(倉庫)。使用Git的最大優(yōu)勢在于客戶端項目的版本管理,客戶端項目隨時都有多名程序員在提交代碼,使用Git就能讓他們把測試代 碼和穩(wěn)定代碼通過不同分支(Branch)來管理。我們使用master分支作為穩(wěn)定的版本,來合并每個程序員提交并測試通過的個人測試分支;整個團隊使 用的可執(zhí)行客戶端用master分支來編譯創(chuàng)建,就保證了新功能開發(fā)的速度和主版本的穩(wěn)定性。
另一個優(yōu)勢在于Submodule的使用,通過Git的submodule功能我們可以在不同項目中共享一份核心的底層代碼和部分工具代碼,這樣就 不用為每個項目分別進行游戲引擎和工具更新。Git作為目前最先進的分布式版本控制系統(tǒng),在掌握難度上是非常高的。國內網(wǎng)游團隊即使是程序部門使用Git 作為版本控制系統(tǒng)的情況也不是太多,而夢加做到整個團隊都用Git作為日常的版本控制系統(tǒng),付出的努力雖高,但回報絕對物有所值。
數(shù)據(jù)處理和工具開發(fā)
近期的討論中很多人認為Unity的短板之一在于偏重代碼驅動的引擎沒有辦法處理大批量的數(shù)據(jù),這種印象可能跟官方和社區(qū)對于那個運行超級方便、什 么工作都能往里放的MonoBehavior類的大力宣傳和依賴有關。實際上Unity里除了MonoBehavior還有使用.NET標準的自定義類, 有用法非常靈活的統(tǒng)一數(shù)據(jù)類型scriptableObject,還有各種各樣只有你想不到沒有你做不到的編輯器腳本和數(shù)據(jù)處理接口。只不過除了 MonoBehavior,其他一切數(shù)據(jù)處理手段都需要開發(fā)者去Unity的官方論壇和StackOverflow這樣的泛編程問答站點深入挖據(jù)。官方論 壇上通過搜索,其實是能找到很多使用Unity做大數(shù)據(jù)量網(wǎng)游的同行討論的,只不過這樣的引擎在國內還沒有形成很大規(guī)模的知識分享社區(qū),一些做的比較久的 中文Unity論壇也缺乏網(wǎng)游項目的討論,所以給人的印象就是Unity不擅長做這個。
事實上,Unity處理各種數(shù)據(jù)類型(XML,Json,SQL)都有現(xiàn)成的接口(用戶提供和分享的開源代碼),而《蒸汽之城》策劃團隊日常使用 Excel格式的數(shù)據(jù)配置,也可以很容易的轉化成XML后通過編輯器腳本導入Unity。最后客戶端只要讀取和處理導入后的 scriptableObject就可以了,一些改動頻繁的數(shù)據(jù)還可以直接使用XML格式在運行時讀取,減少客戶端需要更新的頻率。
說到數(shù)據(jù)處理使用的編輯器腳本,這里就必須要探討工具鏈開發(fā)的問題。對于任何大型項目,開發(fā)配套工具都是至關重要的,Unity的特色在于編輯器本 身有著非常優(yōu)秀的可擴展性,所以我們使用的工具鏈包括編輯器腳本和外部工具兩部分,分別用來處理客戶端和服務器端需要的數(shù)據(jù)。比如任務邏輯和對話的編輯器 是直接編輯數(shù)據(jù)庫的,所以我們使用VC制作的外部編輯工具。而包括關卡、資源導入、貼圖合并、NPC角色打包等等要處理Unity使用的資源數(shù)據(jù)的工具, 都是使用Unity腳本制作,開發(fā)者通過菜單命令就可以快速完成資源管線操作和編輯。
一款數(shù)據(jù)量很大的網(wǎng)游在工具開發(fā)和維護方面需要投入的力量是很大的,《蒸汽之城》在增加了工具開發(fā)的人手后,其他開發(fā)和資源生產部門的工作效率都得 到了顯著的提升。此外通過不斷改善工具的可用性,加入大量對用戶操作的預先檢定,可以有效的減少操作失誤造成的數(shù)據(jù)錯誤,提高了游戲版本的穩(wěn)定性。
原型碎片和整合測試環(huán)境
上面提到Unity里能驅動一切的MonoBehavior類為原型開發(fā)提供了很大的方便,但作為網(wǎng)游項目,任何功能和資源都需要在游戲實際聯(lián)網(wǎng)運 行環(huán)境下進行測試。如何在Unity網(wǎng)游項目中平衡原型開發(fā)和實際聯(lián)網(wǎng)測試呢?項目早期基礎功能的原型,包括動畫系統(tǒng)、圖像渲染、角色換裝等等,都是可以 直接建立單機原型的。用腳本實現(xiàn)基本功能后再加上編輯器腳本和GUI腳本來為測試加上配套工具,然后再交給資源生產部門來添加游戲中的資源。
地下城、任務和戰(zhàn)斗系統(tǒng)因為涉及到很多和服務器端的通訊部分,如果需要測試就必須使用一個支持最簡單的客戶端服務端架構的單元測試檔案配置。這里所 說的檔案,就是定義了你全部測試內容數(shù)據(jù)(或者去哪里找這些數(shù)據(jù))的scriptableObject。包括你用來測試的帳號、角色信息、測試場景、任務 或技能配置等等。以主城和地下城為游戲內容載體的《蒸汽之城》里,我們也制作大量測試用的地下城或主城場景作為任務和新功能生產的測試環(huán)境。測試環(huán)境由美 術或策劃來制作,然后交給程序部門來測試代碼,最后再交給QA測試剛完成的功能。
Unity的強大原型制作能力主要還是應該體現(xiàn)在項目初期。一旦客戶端服務端架構形成,可以在穩(wěn)定的服務器環(huán)境上運行游戲以后,開發(fā)團隊就應該把更 多的精力集中在如何能夠在實際服務器上快速添加新內容并進行測試?!墩羝恰酚羞^三組測試服務器,分別用來進行代碼、資源和網(wǎng)頁接口的測試;此外對于需 要頻繁更新調整數(shù)據(jù)的任務策劃和關卡設計人員,他們會使用在個人電腦上架設的服務器,來避免數(shù)據(jù)更新對其他人測試帶來的干擾。
動態(tài)下載和讀取
對于網(wǎng)頁游戲來說,如果不能做到快速啟動和最小化下載等待時間,相對于端游的優(yōu)勢就不存在了。《蒸汽之城》里所有美術資源都被拆分成了非常小的零 件,這樣用戶只要下載一次,就可以在運行游戲時根據(jù)需要來動態(tài)組合,大量減少了資源的重復下載率。而地下城制作的時候會使用工具進行 Serilization,游戲時每個地下城只需要下載一份XML表單,然后就會自動從用戶已經下載的“資源零件”中尋找需要的部分并進行動態(tài)拼裝。體驗 過《蒸汽之城》的用戶可以發(fā)現(xiàn)任何地下城的讀取都不會超過數(shù)秒。
接下來說說Unity頁游的一大招牌Asset Bundle的使用。Asset Bundle是可以被用戶stream下載的資源包,其中可以包含任何Unity Project中的文件。要做到動態(tài)下載,游戲中的絕大部分資源就都必須打包成Asset Bundle才能使用。在《蒸汽之城》的開發(fā)過程中,我們?yōu)榇蟛糠仲Y源生產者制作了Unity編輯器內的打包工具,只要選擇相應的菜單命令就能自動完成打 包和上傳到測試服務器上。在以后的項目中我們希望能采用Resource.Load()和Asset Bundle結合的方式,客戶端可以分別讀取原始的資源文件來使調試更方便,而測試通過后又可以切換成使用Asset Bundle來保證游戲的動態(tài)下載正常運行。Asset Bundle還有很多創(chuàng)意用法,大家可以看看官網(wǎng)上Unite2012的相關講座。
技術導向的團隊建設
前面提到了Unity在項目規(guī)模和復雜程度從單機到網(wǎng)游的巨大增加,可以說如果對于國內大部分團隊,使用Unity制作網(wǎng)游都有著一定的風險和挑 戰(zhàn)。簡單的說,Unity對于單機游戲來說,確實有很多“免費附加值”可以用來快速搭建項目和完善產品功能,但在網(wǎng)游或較大型項目層面,如果沒有對于項目 質量的較高要求,沒有一個好的團隊技術氛圍和建設思路,選擇Unity得到的免費回報和付出的技術建設成本實際是得不償失的。
假如看官讀到這里還對于使用Unity堅定不移,可以看看下面對于如何建設Unity適用型技術團隊的一些建議。
但作為網(wǎng)游項目,任何功能和資源都需要在游戲實際聯(lián)網(wǎng)運行環(huán)境下進行測試。如何在Unity網(wǎng)游項目中平衡原型開發(fā)和實際聯(lián)網(wǎng)測試呢?項目早期基礎 功能的原型,包括動畫系統(tǒng)、圖像渲染、角色換裝等等,都是可以直接建立單機原型的。用腳本實現(xiàn)基本功能后再加上編輯器腳本和GUI腳本來為測試加上配套工 具,然后再交給資源生產部門來添加游戲中的資源。
地下城、任務和戰(zhàn)斗系統(tǒng)因為涉及到很多和服務器端的通訊部分,如果需要測試就必須使用一個支持最簡單的客戶端服務端架構的單元測試檔案配置。這里所 說的檔案,就是定義了你全部測試內容數(shù)據(jù)(或者去哪里找這些數(shù)據(jù))的scriptableObject。包括你用來測試的帳號、角色信息、測試場景、任務 或技能配置等等。以主城和地下城為游戲內容載體的《蒸汽之城》里,我們也制作大量測試用的地下城或主城場景作為任務和新功能生產的測試環(huán)境。測試環(huán)境由美 術或策劃來制作,然后交給程序部門來測試代碼,最后再交給QA測試剛完成的功能。
Unity的強大原型制作能力主要還是應該體現(xiàn)在項目初期。一旦客戶端服務端架構形成,可以在穩(wěn)定的服務器環(huán)境上運行游戲以后,開發(fā)團隊就應該把更 多的精力集中在如何能夠在實際服務器上快速添加新內容并進行測試?!墩羝恰酚羞^三組測試服務器,分別用來進行代碼、資源和網(wǎng)頁接口的測試;此外對于需 要頻繁更新調整數(shù)據(jù)的任務策劃和關卡設計人員,他們會使用在個人電腦上架設的服務器,來避免數(shù)據(jù)更新對其他人測試帶來的干擾。
首先,團隊項目負責人和技術骨干關注Unity官方發(fā)布的信息和社區(qū)技術熱點討論是必須的。比如說從Unity4開始就可以在手游上使用動態(tài)字體和 動態(tài)陰影了,而這些消息的發(fā)布是在去年夏天的Unite前后,一直關注Unity新技術的團隊就可以為項目提前做好特性計劃。而且Unite上大量非常有 價值的官方和開發(fā)者講座,也能彌補很多官方教程和手冊中沒有涉及的空白區(qū)域,恰好是國內網(wǎng)游團隊急需的(比如Asset Bundle使用講座,Network基礎講座等等)。另外一個非常重要的知識庫是Unity的官方論壇 (http://forum.unity3d.com )和問答社區(qū)(http://answers.unity3d.com ),這兩個社區(qū)站由官方技術人員和活躍的。
Unity用戶共同提供內容和維護。配合Google搜索,你幾乎可以在這些社區(qū)網(wǎng)站上找到任何技術難題的答案,而且還會有各種實際案例的解決過程 (因為提問的人很可能和你有著同樣的問題)。當然使用這些官方社區(qū)必須要有較好的英語閱讀能力,這本身就對技術團隊的素質有了一定的要求。國內的 Unity社區(qū)和資訊網(wǎng)站也在越做越好,其中像Unity圣典(http://game.ceeger.com/forum/ )和Unity教程手冊系列(http://www.unitymanual.com/ )都是不錯的資源入口,建議英文不夠熟練的朋友以這些中文網(wǎng)站為索引,慢慢將獲取知識的渠道擴展到國外網(wǎng)站。
第二,Unity項目要形成有規(guī)律的從原型代碼到結構化的重構的循環(huán)過程。Unity做原型快,又有很多現(xiàn)成的解決方案,在開發(fā)周期緊張的情況下, 開發(fā)者很容易會不斷添加快速完成的功能,最后讓項目的結構臃腫不堪,內容擴展到一定程度就會遭遇新功能添加的瓶頸。也就是說,如果沒有周期化的重構,項目 功能擴展到一定程度后,再添加新功能或調整原有功能,其成本都會成倍上升。而太過頻繁的重構又會影響項目進度,如何把握這個度,就要根據(jù)團隊人員的結構來 精心安排了。
第三,Unity大型項目非常適合從早期就規(guī)劃好完整的工具鏈,根據(jù)不同開發(fā)者的技能和使用習慣定制不同的工具。對于個人開發(fā)者來說,Unity里 有大量的中間件可以滿足不同技術水平用戶的需要。在網(wǎng)游團隊中也可以用相同的思路來提高效率,應該盡量避免只有程序員使用Unity,美術和資源生產都只 局限在其他外部工具里的生產環(huán)境。另外工具鏈的功能擴展和完善是一個長期動態(tài)的過程,根據(jù)項目在不同階段的狀態(tài),對于工具需求的變化是非常正常的。建議團 隊從一開始就安排足夠的人手開發(fā)工具,并且將工具維護和需求收集作為日常工作流程的一部分看待。
后4.0時代特性展望
Unity適用型技術團隊的一些建議。
但作為網(wǎng)游項目,任何功能和資源都需要在游戲實際聯(lián)網(wǎng)運行環(huán)境下進行測試。如何在Unity網(wǎng)游項目中平衡原型開發(fā)和實際聯(lián)網(wǎng)測試呢?項目早期基礎 功能的原型,包括動畫系統(tǒng)、圖像渲染、角色換裝等等,都是可以直接建立單機原型的。用腳本實現(xiàn)基本功能后再加上編輯器腳本和GUI腳本來為測試加上配套工 具,然后再交給資源生產部門來添加游戲中的資源。
地下城、任務和戰(zhàn)斗系統(tǒng)因為涉及到很多和服務器端的通訊部分,如果需要測試就必須使用一個支持最簡單的客戶端服務端架構的單元測試檔案配置。這里所 說的檔案,就是定義了你全部測試內容數(shù)據(jù)(或者去哪里找這些數(shù)據(jù))的scriptableObject。包括你用來測試的帳號、角色信息、測試場景、任務 或技能配置等等。以主城和地下城為游戲內容載體的《蒸汽之城》里,我們也制作大量測試用的地下城或主城場景作為任務和新功能生產的測試環(huán)境。測試環(huán)境由美 術或策劃來制作,然后交給程序部門來測試代碼,最后再交給QA測試剛完成的功能。
Unity的強大原型制作能力主要還是應該體現(xiàn)在項目初期。一旦客戶端服務端架構形成,可以在穩(wěn)定的服務器環(huán)境上運行游戲以后,開發(fā)團隊就應該把更 多的精力集中在如何能夠在實際服務器上快速添加新內容并進行測試?!墩羝恰酚羞^三組測試服務器,分別用來進行代碼、資源和網(wǎng)頁接口的測試;此外對于需 要頻繁更新調整數(shù)據(jù)的任務策劃和關卡設計人員,他們會使用在個人電腦上架設的服務器,來避免數(shù)據(jù)更新對其他人測試帶來的干擾。
前面說了些經驗和建議,最后這里再說說Unity4.0后夢加的開發(fā)者還在翹首以待的功能。希望提供給其他開發(fā)者作為技術評估的參考,也希望Unity中國的大大們能夠看到并幫助改進吧。
第一,Unity4開始全面進入了使用Retargetable(可重定向)動畫技術和圖形動畫狀態(tài)機的Mecanim的時代。 Retargetable動畫是游戲業(yè)的巨大福音,制作一套動畫就可以適用于不同的骨骼和蒙皮模型,對于項目生產來說吸引力非常驚人。不過目前為止這個特 性還不能用于頁游的動態(tài)載入,因為負責動畫Clip引用的Animator里不支持任何動態(tài)讀取,可以說是阻礙頁游項目全面升級Mecanim動畫系統(tǒng)的 最大障礙了。《蒸汽之城》在Unity3.X時代就開發(fā)了自定義的腳本FSM(有限狀態(tài)機)來作為動畫控制系統(tǒng),盡管在Unity4里我們已經能夠使用 Mecanim的Avatar來運行本地原型里的動畫重定向,但因為不能動態(tài)讀取加載,一直還沒有在游戲中正式更換動畫系統(tǒng),非常的遺憾。
第二,Unity4里說好的新GUI系統(tǒng)無限期跳票。GUI的開發(fā)對于任何項目來說都意味著很大的挑戰(zhàn)和工作量,《蒸汽之城》的GUI使用的是 Unity自帶的GUI系統(tǒng)加上一套自己開發(fā)的設計工具來制作。在GUI的設計和圖像生產方面已經做到了高效率,但是調整GUI功能時代碼的修改量還是太 大了。盡管很多人在官方新GUI系統(tǒng)跳票之后已經轉投了第三方中間件的解決方案,但作為有自己工具開發(fā)組,對項目擴展性要求很高的網(wǎng)游團隊,始終還是希望 能夠拿到官方的解決方案來定制,而不是依賴于某個隨時可能停止維護的第三方插件。由于Unity4.0目前GUI系統(tǒng)的懸而未決,我們在配套GUI系統(tǒng)的 優(yōu)化方面也被迫遭遇了停滯。很希望這個系統(tǒng)能夠最終塵埃落定!
第三,Timeline功能神龍見首不見尾,而且更糟糕的是Unity似乎已經不再維護以前的Animation View了。Unity4里增加了完整的新動畫系統(tǒng)Mecanim,但對于一些簡單的UI或特效動畫,很多時候開發(fā)者還是希望能夠在Unity里快速調整 和制作。Animation View在Unity4里效率下降,子物體動畫曲線的顯示也有些奇怪。而集更多功能于一身的Timeline在Unite2012上亮相之后卻遲遲不見更 新的消息。Mecanim是一個專門處理骨骼動畫、動作捕捉、動畫分層和融合的專業(yè)系統(tǒng),但除此之外一個有時間線和關鍵幀的編輯器還是對任何游戲項目都非 常有用的,個人認為Unity團隊不應忽略這方面的需求。
腳本來為測試加上配套工具,然后再交給資源生產部門來添加游戲中的資源。
地下城、任務和戰(zhàn)斗系統(tǒng)因為涉及到很多和服務器端的通訊部分,如果需要測試就必須使用一個支持最簡單的客戶端服務端架構的單元測試檔案配置。這里所 說的檔案,就是定義了你全部測試內容數(shù)據(jù)(或者去哪里找這些數(shù)據(jù))的scriptableObject。包括你用來測試的帳號、角色信息、測試場景、任務 或技能配置等等。以主城和地下城為游戲內容載體的《蒸汽之城》里,我們也制作大量測試用的地下城或主城場景作為任務和新功能生產的測試環(huán)境。測試環(huán)境由美 術或策劃來制作,然后交給程序部門來測試代碼,最后再交給QA測試剛完成的功能。
Unity的強大原型制作能力主要還是應該體現(xiàn)在項目初期。一旦客戶端服務端架構形成,可以在穩(wěn)定的服務器環(huán)境上運行游戲以后,開發(fā)團隊就應該把更 多的精力集中在如何能夠在實際服務器上快速添加新內容并進行測試。《蒸汽之城》有過三組測試服務器,分別用來進行代碼、資源和網(wǎng)頁接口的測試;此外對于需 要頻繁更新調整數(shù)據(jù)的任務策劃和關卡設計人員,他們會使用在個人電腦上架設的服務器,來避免數(shù)據(jù)更新對其他人測試帶來的干擾。
結語
制作網(wǎng)游或有聯(lián)網(wǎng)功能的手游本身就是艱巨的工程,Unity讓表面的一切看起來更美好和更容易,但不可否認廣泛獲得成功的Unity項目還是以相對簡單的手機游戲為主。在網(wǎng)游制作方面開發(fā)者能參考的知識和信息還是太少了。夢加團隊從零開始一點點的把Unity網(wǎng)游制作各個謎題拼起來,到了今天終于有 了即將上線的高素質的頁游《蒸汽之城》。希望我們這里總結的經驗能夠幫助國內業(yè)界的朋友們,我們的解決方案也有很多不足的地方,希望國內開發(fā)者們能夠多多 分享,促進Unity和網(wǎng)游開發(fā)技術的交流!《蒸汽之城》的中文本地化版本也在進展中,預計暑期就會跟大家見面!