大世界遊戲製作:《幽靈行動·荒野》程式化技術介紹
作者:Kerry 本文首發於知乎專欄“TA週刊”
地址:https://zhuanlan.zhihu.com/p/164857684
這一次給大家帶來《幽靈行動·荒野》專案的大世界製作技術,總共分為四個章節。
本篇為第一個章節:程式化技術篇,分享者Benoit Martinez和Vincent Delassus 分享了關於程式化流程中的一些心得,其中包括之前不少讀者私信我關於Houdini與手動流程的結合以及成本、迭代等問題,希望能給大家帶來一些啟發。(原文地址:https://80.lv/articles/procedural-technology-in-ghost-recon-wildlands/)
最大的挑戰
巨大的開放世界最大的挑戰絕不僅是地形本身,還包括如此多樣的生物群落(11種)。每一種生物群落都要有與之匹配的且特定的景觀,植被,岩石,建築物等。
基本上來講,我們必須從頭開始制定管線流程和製作工具,因為這是一個開放的世界,因為它與自然景觀息息相關,並且地形非常重要。
最初,我們使用靜態網格模型來製作地形,1平方千米一塊地形Mesh(帶LOD)。
基於World Machine製作的高度圖,我們有一個Houdini流程來自動對地形進行分塊並生成對應的LOD,但是從Houdini到編輯器來回過程需要進行大量的維護工作,這點非常棘手,而且一點都不靈活。除了Benoit之外,當時沒有人在使用Houdini,因此他是唯一可以迭代的人。
顯然,在量產階段這種做法是行不通的,因此我們決定將重點放在開發定製化的地形編輯器上。功能需求方面,我們希望能夠直接在編輯器中以任何比例進行雕刻,能夠雕刻山脈的整體結構(巨集觀)也能調整很小的地形細節(微觀)。最初,地形高度圖的解析度為1畫素25釐米,但有時覺得精度太高了,這是一個非常繁重的資料量,因為碰撞體和導航mesh也需要同樣的精度。我們最終確定了1畫素50釐米的高度圖解析度(也就是一米需要高度圖的兩個畫素),同時由於我們還具有硬體曲面細分功能,這已經足夠了。
地形只是第一步,隨後需要在這上面填充美術資源,這個過程可能需要很多牛逼的美工來完成。由於許多原因,我們不想增加團隊規模(成本原因)。大型團隊通常意味著需要有非常細化的分工組織。我們是一個很小的團隊,我們知道如何合作,我們的流程非常敏捷,我們希望繼續保持這個優點。這就是為什麼我們決定在Houdini上投入更多資金來開發程式化/自動化的工具。
在美術資源製作方面,關鍵在於如何平衡3個要素:團隊–時間–工具。通常,您不能控制專案的開發時長,因為這是定死的。在我們的案例中,我們決定使用工具來提升生產力,而不是增加團隊規模(美工人數)。在巴黎,我們從未有超過15位水平的藝術家來創造所有資產和世界建築。
使用程式工具
自《幽靈行動:未來戰士》以來,我們一直在這裡試驗程式化方法。我製作的第一個工具只是幫助藝術家放置電線。藝術家正在匯出一條曲線,然後再調整一下引數,就能在幾秒鐘內生成線杆和電線。
第一個houdini工具
然後,我們進一步推進這種程式化邏輯到地形編輯環節,我們自動生成道路,並且新增細節和生成UV,同時凹陷地形做相應的匹配。
我們很快意識到,不僅程式方法有助於擺脫繁瑣的任務,而且還節省了時間。藝術家能夠專注於質量,有更多的時間來提高自己的水平。
使用Houdini,我們已經能夠重新定義工具建立過程。Houdini的學習曲線陡峭,但沒有您想的那麼難。houdini官方是線上上提供的大量資料,如果您對此很認真,則只需幾個月的時間就可以開始建立自己的工具。自從我開始學習Houdini的那一天起,我過去更多地是在藝術家方面,而不是技術方面。它完全重新定義了我處理美術資源的方式。
地圖規模
首先,我們去了玻利維亞幾個星期,全國各地有4個團隊。對我們來說,研究建築,景觀和植被非常重要。我們拍攝了大約15000張照片和15小時的視訊。在整個製作過程中,我們都依靠該資料庫來建立我們的工具並設計世界,以確保所有內容都是一致且真實的。
到目前為止,我們還沒有與外界討論任何關於世界規模的問題,因為我們希望玩家在沒有比較或期望的情況下進行探索。我們認為這與尺寸規模無關。它更多地是關於多樣性和您可以達到的細節豐富程度。但它仍然是育碧有史以來最大的動作冒險世界,大概需要花費幾個小時才能走遍整個地圖。
我們開始使用現實世界的位置資料進行原型製作。在最初的幾個測試中,我們只是獲取了真實海拔檔案並在World Machine中對其進行了完善和細化。
就寫實性而言,效果還不錯,但缺乏多樣性。
獲取海拔資料很容易,但是我們缺少好的工具來編輯和組合它們。在Photoshop中編輯16bit和32bit的灰度圖是非常麻煩的,當時在包括World Machine在內的任何其他應用中也是如此。最後,我們只是在World Machine中使用噪聲和腐蝕從頭開始。這並不容易,但是我們想盡辦法來提高編輯的可控性,從而能設計出我們想要的地形。在最終生成的這張地圖中,沒有什麼是隨機的,每條河,每座山在哪兒都是有它存在的理由,整個設計和製作過程都有章可循。
我們希望得到從最高的山峰到底層叢林的雨水侵蝕效果。這是一個龐大的的模擬計算量。無法在一臺計算機上以這種解析度(64k x 64k)計算如此大的地形。
我們必須在World Machine上進行一些自定義開發。我們向WorldMachine的開發者Stephen Schmitt請求了一些額外的開發。他為分塊渲染系統新增了一個額外的變數介面,以便與用c#編寫的專用渲染場一起使用。
我們最終試用了World Machine,並每3天在80臺計算機上進行一次計算。
由於成本的原因,這些圖塊之間的訪問受到限制,因此另一個挑戰是在不同的機器之間需要確保產生一致的侵蝕。為了解決這個問題,我們先在一臺機器上以較低的解析度渲染大面積侵蝕土地,然後使用Tile系統在渲染農場中分配微侵蝕和其他昂貴的細節。它修正了90%的分塊接縫問題。但是當時版本的WorldMachine還不能做到百分百的完美。
我們將Houdini用於許多不同的事物。
- 在地形自動新增其他細節,例如道路和河流
- 根據規則自動放置物體(貼花,森林,建築物等)
- 建立特定美術資源
- 這裡有個自動組合生成建築物的工具示例。
這個工具只是用來快速組建一些通用建築資源,細節要求不會太高,因此工具能很好地發揮作用。它有幫助你組合窗戶和門的大小,窗戶和地板的高度等,並匹配UV,而且會生成一些多邊形帶,以幫助在牆壁/地面交叉點上混合一些汙垢。然後手動新增所有細節(窗戶,門,支撐)。
Building+Tool(Houdini)
對於村落佈局,我們採用了完整的程式化方法。
這個想法是要幫助藝術家,使他們有足夠的控制權來實現有趣的圖形分佈,多樣性和美觀的居住環境。它為他們節省了足夠的時間以便手動新增細節。
無論程式生成的質量如何,它都不是完美的,並且需要藝術家干預。您是如何解決的?
我們完全同意。我們學到的是不要過多地提及程式化,因為每個人都認為“程式化”就像是一個魔法按鈕,按一下就能獲得無聊而乏味的結果。對於程式化,我們更多地認為這是輔助藝術家解放生產力的工具,使他們在構建一個完整大世界擁有足夠的控制權。對於每種特定工具,我們都會與專門的藝術家緊密合作。他是決定該工具將如何發揮作用,他需要什麼以及他希望它如何工作的人。關鍵是能夠大規模構建並節省時間。然後,利用節省下來的時間,我們可以專注於細節和提高質量,因為這是程式化無法做到的。在使用程式化和手動之間也要取得平衡。在某些情況下,我們需要完全手動控制,並且我們將完全手動指定某些位置,而無需任何工具。我們可能想在某些地方設定Boss在村莊內的位置,然後我們可以使用程式化工具在其周圍建立村莊。
程式和手動不能很好地融合在一起。當您開始在程式化的基礎上手動修改,您必須鎖定它。如果不這樣做,您將在下次更新時丟失所有手動調整的結果。當然,我們有一些解決方法,但這並不是一件簡單的事。在大多數情況下,我的建議是在繼續手動操作之前要先鎖定程式化資料;或者設定一個手動區域,程式化構建的時候會繞過這塊區域。
最後,究竟哪些需要程式化、哪些需要手動完成,其實無所謂,主要看專案、團隊、美術的喜好等等因素共同決定。
如何管理一個大型專案
我們有4位Houdini藝術家(包括Benoit)。在製作過程中我們學到了很多東西。我們最終使用Houdini超出了我的預期。
我們瞭解到的是,構建(大量)工具會改變您的生產節奏
左:正常生產。右圖:工具開發(平)和新內容量(陡)
常規量產過程是線性的。您有一個團隊,從第一天開始,他們就製作資源並構建關卡/世界。
當您決定專注於工具時,您會經歷一些平穩階段。這並不容易,因為有時您只是不知道需要多長時間。但是,當該工具準備就緒時,只需幾天,您就可以推送新的大量的內容。最後,這比你僅用蠻力所達到的製作速度會更快,處理的內容量會更多。
這正是地形,河流,道路,鐵路,森林,定居點,礦山等等之類的製作流程所展示出來的實際收益。我們每一層的資源內容逐級疊加,整個世界就是這樣一層一層內容地疊加製作完成的。
Houdini團隊中的每個人都在使用一些特定工具:
- Guillaume在所有後端上工作,並確保Houdini管線的可靠性和高效。他特別從事關於渲染農場的分散式計算。
- Erwin主要負責道路和村落分佈。
- Twan負責建築工具,河流,田野和關於音效的工具以及gameplay等等。
- Benoit設法保持這些工具流程的健康高效的執行,並推動了建築學的運用,同時研究了植被,岩石,貼花和電源線等。
當您開始用Houdini進行場景製作的時候,您可能會犯的最大錯誤是嘗試在一個工具之內完成所有工作。一個功能任務對應一個工具,這樣維護會更容易。最難得部分是需要為每個工具正確定義輸入和輸出,以便工具之間能夠相互引用資料。
例如,橋樑工具可以單獨使用。但我們用鐵路工具的時候,也可以使用它在需要的地方自動放置橋樑。
利用Houdini的優勢
Houdini是一個工具箱。無論您生產什麼產品,無論規模如何,Houdini都能為您提供幫助。您可以使用它來自動執行任務,建立內容,幫助美術師(或聲音設計和遊戲程式設計師)。它既靈活又強大。
Houdini本身很有價值,但我不得不提到Houdini-Engine。基本上,它是Houdini核心API,您可以將其整合到主機應用程式中。在我們的案例中,我們確實在內部編輯器中整合了Houdini-Engine。這意味著TA可以在Houdini中建立工具,任何藝術家都可以直接在編輯器中使用這些工具。這是一個示例,說明它可以以多快的速度建立現成的工具:
Houdini幫助我們擴大了思維範圍,超越了藝術水平。我們對所取得的成就感到非常滿意,令人興奮的是,我們將能夠在此基礎上進一步發展。
最後,欣賞一下這個由一群非常敬業且有才的藝術家共同創造的世界。
相關文章
- 《幽靈行動·荒野》中的程式化技術:道路、河流、城鎮、植被
- 幽靈選單介紹;
- 探討大世界遊戲的製作流程及技術——大場景製作技術概況篇遊戲
- [技術分析]探討大世界遊戲的製作流程及技術——前期流程篇遊戲
- 《塞爾達傳說:荒野之息》的大世界地圖是怎麼製作的?地圖
- ORACLE流複製技術介紹Oracle
- MySQL入門--複製技術介紹MySql
- 《心靈願望》技術總監:大幅縮短 2D 遊戲角色製作時間的自動化技術遊戲
- WiFi協議的調製技術介紹WiFi協議
- 育碧Ubisoft新作《幽靈行動:斷點》首度亮相斷點
- AJAX技術介紹
- Excel圖表製作方法介紹Excel
- 容災技術介紹
- JSF技術介紹JS
- MySQL組複製(MGR)全解析 Part 2 常用複製技術介紹MySql
- jQuery外掛製作簡單介紹jQuery
- Excel分類軸介紹與製作Excel
- 容器技術和Docker介紹Docker
- 負載均衡技術介紹負載
- “摩登時代”:試論《幽靈行動:斷點》為何惡評如潮斷點
- 詳細介紹在遊戲製作中的分形演算法(轉)遊戲演算法
- 天美高階TA:淺談大世界場景自動生成技術
- 《幽靈行動:斷點》更像是時運不濟的“背鍋俠”斷點
- 《幽靈行動:斷點》:育碧開放世界流水線又一力作斷點
- 育碧承認《幽靈行動:斷點》失敗:缺乏獨有亮點斷點
- 育碧新作《幽靈行動:斷點》洩露 10月4日發售斷點
- 安卓App熱補丁動態修復技術介紹安卓APP
- Docker容器技術與Docker介紹Docker
- 漏洞挖掘利器-Fuzz技術介紹
- JDBC介面技術介紹1 (轉)JDBC
- JDBC介面技術介紹2 (轉)JDBC
- AIGC底層技術介紹AIGC
- 專業rpm包製作神器multipkg介紹
- 負載均衡技術(一)———負載均衡技術介紹負載
- 《幽靈行動:斷點》:追求開放世界 卻被亂花迷了眼斷點
- 農民世界遊戲攻略介紹|FarmersWorld軟體開發技術遊戲
- 《幽靈行者》:近期最酷炫的賽博朋克遊戲之一遊戲
- 幽靈詭計:遊戲敘事的意義、方法與技巧遊戲