【翻譯】GDC 2017 程序化生成技術在《幽靈行動-荒野》中的應用
介紹
原文鏈接:https://80.lv/articles/procedural-technology-in-ghost-recon-wildlands/
作者介紹
Benoit Martinez,育碧(法國)主美、技術美術總監。
Vincent Delassus,育碧(法國)美術總監、技術美術總監,自學成才,擔任過美術、主美、技術美術、技術美術總監。
本文由Benoit Martinez 和 Vincent Delassus 討論了在製作巨型開放世界時的技術挑戰,以及他們如何使用新工具去解決這些問題。本文主要展示了在遊戲資源開發過程中,哪些方面可以使用程序化生成技術來自動生成。
翻譯:LayneHsu
註:譯文是在譯者理解下翻譯,並非逐字逐詞翻譯,如有不足,敬請指正。
最大的挑戰
最大的挑戰當然是巨型開放遊戲世界,不僅是地形大小本身,還有多達11種特定的生態環境。每一種特定的生態環境都是獨特的:地形地貌、植被、岩石、建築物。每一種生態環境和它所處的世界環境的關係是一致的。
因為這是一個開放遊戲世界,它的地形很重要、而且裡面涉及到了很多的景觀,所以我們基本上需要從頭規劃所有的製作流程和相關的工具。
一開始我們使用了網格體,一公里兩個地形塊,帶LOD。主要是用WorldMachine生成高度圖,然後用Houdini自動生成地形塊和LOD,但是這個流程很難維持下去,因為需要用Houdini來來回回編輯,而且一點也不靈活。除了Benoit之外,當時沒有人會使用Houdini,所以他是唯一一個能夠迭代的人。
很顯然,在生產中這麼干是不行的,所以我們決定把重點放在做一個自定義的地形編輯器上。我們的想法是在這個編輯器中在任何縮放狀態下都能直接雕刻地形,不管是大到塑造山峰的形狀還是小到非常小的地形細節。
一開始我們把地形高度圖的解析度設置為每像素25厘米,但是有時候精度太高了也不好,這樣會導致巨大的地形數據量,包括地形的碰撞和導航網格也會非常巨大。後來我們用了硬體細分,把地形的精度控制在了50厘米,這樣已經夠用了。
生成了地形只是第一步,接下來我們需要在地形上放置很多的美術資源,這需要很多有能力的美術來完成。我們並不想擴張團隊規模,一方面是因為成本,另一方面是因為一個大型的團隊通常來說組織等級結構需要非常分明。我們是一個小團隊,我們知道在工作中如何彼此配合,我們的工作流程非常靈活,我們希望這一點優勢能保持下去,所以我們決定在Houdini上投入更多成本,使它成為我們創作工具的平台。
美術資源生產中有3個相互平衡的因素:團隊人數 、生產時間、生產工具。
通常來說,生產時間是給死的,我們改變不了。在我們的項目中,我們決定發展生產工具,而不是擴張美術生產團隊的人數。我們巴黎工作室從事美術資產製作和遊戲環境創建的關卡美術從來沒有超過15個。而且先排除使用工具和策略,我們的團隊也能完成任務,因為我們在巴黎、布加勒斯特和蒙特利爾的遊戲環境製作團隊非常強,他們超有才華而且工作專註。
使用程序化生成工具
從《Ghost Recon: Future Soldier》以來,我們就在嘗試程序化生成的創作方式。我們最早的工具是幫助美術在環境中放置電線,通過美術導出的一條曲線,再調整參數,幾秒鐘就能生成電線和電線間的支點。
然後我們進一步把思路推到了地形編輯、道路雕刻和添加細節上,並且能把地形的UV一直保留到最後。
我們很快意識到程序化生成方式不僅幫助我們擺脫了繁瑣的任務,還節省了時間,使美術關注於品質,有更多的時間打磨他們負責的遊戲關卡。
藉助Houdini,我們可以重新定義工具的創建處理流程。Houdini的學習起來比較難,但是其實也還好,因為網上有非常多的資料,如果你認真學,只需要花幾個月時間,你就可以開始創建你自己的工具了。作為一個技術美術,在技術和藝術之間,我以前更偏藝術方面,但是自從我學習了Houdini之後,這一切就改變了,它完全改變了我對於美術資源生產的思路和方式。
定義大小
一開始,我們的4個團隊都去了玻利維亞,研究那裡的建築、景觀和植被,這對我們來說非常重要。我們拍了15000張照片和15個小時的視頻素材,在後面的整個生產過程中,我們都參考這些素材資源來創建我們的工具以及設計遊戲中的環境,確保遊戲世界中的真實程度與現實中保持一致。
到這個階段,我們都沒有對於遊戲世界的大小進行過溝通,我們希望玩家在沒有比較和期望的情況下在遊戲中進行探索,並感到驚訝。我們覺得更重要的是遊戲能達到的多樣性和細節程度,而不是遊戲世界的大小問題。但這個遊戲世界仍然是育碧歷史上最大的動作冒險遊戲世界,要穿越這世界需要玩家花費數個小時的時間。
我們一開始用了真實世界的地形來做原型設計,在前幾次的測試中,我們採用了真實世界的海拔高度文件,並用WorldMachine做了精鍊。
https://www.zhihu.com/video/955191647764434944這種流程實現的結果在寫實方面效果很好,但是缺乏多樣性。
獲取地形的高度數據其實是比較簡單的事,但是我們缺乏編輯和整合這些數據的合適工具。當時在用Photonshop、WorldMachine或者別的軟體里處理16位或者32位的灰度圖都很麻煩。
最後我們還是用WorldMachine的地形噪波和侵蝕風化功能從頭開始做高度圖,這麼搞其實不是個容易的事,但是這樣搞的話我們可以完全控制我們的設計,來實現我們所期望的遊戲世界,裡面沒有什麼是隨機的,每座山每條河都有它們存在的原因。
我們希望風化侵蝕的效果自上而下從最高的山脈頂端作用到最低的叢林里,並且是遍布整個遊戲世界,這是一個超大型的模擬計算,想在一台計算機上以64x64的解析度算出那麼大的山脈是不可能的。
我們必須在WorldMachine上做一些自定義開發,我們向WorldMachine的作者Stephen Schmitt提出了一些額外開發的請求。請求他在分塊渲染系統中加入了一個額外的變數說明,以便與C#編寫的專用渲染農場一起使用。
我們最終用WorldMachine嘗試了每3天用80台計算機一起算一次。
另外一個挑戰是,由於成本原因,地塊彼此之間的數據訪問受到了限制,要如何在不同的機器上生成一致的地形侵蝕效果。
為了解決這個問題,我們先用一台機器用比較低的解析度渲染,把一整塊地形的侵蝕效果預渲染一遍,然後再用分塊系統在渲染農場中渲染更小的侵蝕效果和其它更費的細節,這樣可以修補90%的地塊接縫,但是用 World Machine來生成地形仍然不能保證100%的確定性。
在用XBox one展示地形的demo,或者我們在項目早期做一些預覽的時候,我們的圖形主程每次都得整合新的地塊,這是一個可預計到的消耗成本的關鍵地方。
建築可視化
我們用了Houdini做了很多不同的事情:
·編輯地形添加細節,比如道路和河流;
·很多物件的放置規則,比如貼花、森林、居民區、建築物等等;
·創建一些特殊的資產;
·這裡一個幫助美術做樓房的專用工具的例子:
它是為了創建通用的建築,而不是為了處理特例設計的。它在生產中起了很大的作用,它確保了一些模型數據的安全範圍(門窗的尺寸、建築的厚度等),並且能自動處理好UV,然後還能生成一些用來混合牆壁和地面接縫處的泥土的多邊形條帶,其它的細節(窗戶、門、道具)在這之後手動添加。
https://www.zhihu.com/video/955191929021923328對於居民區,我們採用完整的程序化方案。
這個想法是為了幫助美術讓他們有足夠的控制去實現一些看起來不錯,而且具有多樣性的有意思的布局,為他們節省出足夠的時間去添加更多的細節和有意義的東西。
https://www.zhihu.com/video/955191999956049920不管程序化生成有多好用,但它肯定不完美,還需要藝術的介入,這怎麼處理?
我們學到一點就是不要過多的提到「程序化生成」,因為大家都認為「程序化生成」就像一個魔法按鈕,只要按下它,你就會得到一堆很有規律性的又無聊的結果。
我們要做的是賦予美術權力的工具,為他們提供創建一個完整世界所需要的全部控制權,並不是什麼魔法。對於每一個特定的工具,我們都需要與使用它的美術密切交流,由他自己決定他自己的工作方式、他有什麼樣的需求、這個工具該如何幫助他工作,關鍵是在於能夠擴大規模、批量生成、節省時間。當時間省下來了,我們就可以專註於細節、提高質量,做一些程序化流程不能幹的事。這也是我們使用「程序化」和「非程序化」之間的平衡所在。
在某些情況下,我們也有可能需要不藉助任何「程序化」工具,純手工製作一個區域。比如說,Boss所在區域的村莊,我們需要純手工來設計,但是圍繞這個村莊周圍的村莊,我們可以通過程序化生成工具來完成。
「程序化生成」和「手擺」可能結合得會不太好,當你開始要「程序化生成」的時候,你可能得先鎖定你「手擺」的那部分。如果不鎖定,有可能在「程序化生成」更新時,你會失去你所有「手擺」的結果。當然,雖然我們對這個問題有一些解決方法,但是這有點杯水車薪。在大多數情況下,還是建議在「程序化生成」前鎖定你「手擺」後的數據,或者先定義好哪個手擺哪個區域程序化生成。不過到最後,哪個是程序化的哪個是手動的就不重要了。
用一個小團隊管理一個大項目
我們團隊有4個用Houdini的,我們在製作過程中學到了很多東西,我們最終使用Houdini的程度比預期要高得多,我們學會了創建很多的工具改變我們的生產步調。
正常的生產速度是線性的,團隊從第一天開始創建資產和構建遊戲關卡/世界。
當你決定開發工具時,你會經歷一些平台期,平台期並不容易,因為有時候你並不知道這個平台期需要多長時間,但是,當工具準備就緒時,只需要短短的幾天,你就可以推出一層新的資源,長此以往,團隊的效率遠遠超過純人力和時間堆出來的手工製作效率。
我們的地形、河流、道路、鐵路、森林、居住區、礦山等都是這種情況,每一層都為我們的下一層打好基礎。
https://www.zhihu.com/video/955192349127692288第一天,我們除了基礎地形啥都沒有,一周後,我們已經可以開著車穿越這個遊戲世界了。
我們Houdini團隊中的每個人都參與了一些特殊的工具:
·Guillaume負責所有的後端工作,保證Houdini的工作流程是高效且可靠的,他的工作還包括了渲染農場的渲染任務的分配。
·Erwin負責道路和居民區的工具
·Twan製作了樓房、河流、田野和音效設計師的工具以及遊戲邏輯。
·Benoit製作了建築工具
·我製作了植被、岩石、貼花和電線的工具。
當你開始使用Houdini參與環境的設計和製作時,你可能遇到最大的坑就是試圖創建一個「元工具」:一個牛逼的可以搞定一切的工具。
你需要乾的是拆分工具,每個任務單獨一個工具,這樣工具處理數據會更輕量更快,維護起來也更容易。麻煩的部分是需要為每一個工具定義好輸入和輸出,以便多個工具可以通過相互參照一起協同工作。
例如:橋樑工具可以作為獨立的工具工作,但是也可以讓鐵路工具在需要時調用橋樑工具自動放置橋樑。
https://www.zhihu.com/video/955192424335765504利用Houdini的優勢
Houdini是一個工具箱,無論你的產品是什麼樣的、或者規模如何,Houdini都可以幫到你。你可以用它來幫助美術自動化生產資源(或者是幫助音效師和程序員),它功能強大,而且很靈活。
且不說Houdini軟體本身,不得不提的是Houdini Engine。它基本上就是Houdini的核心API,你可以把它集成到你所需要的應用程序里,以我們為例,我們就是把Houdini Engine集成到了我們遊戲引擎的編輯器中。這樣,技術美術就可以在Houdini中創建工具,任何美術都可以直接在我們的遊戲引擎編輯器里使用這些工具。當美術團隊比較自主的時候,這種方案非常高效!
下面是一個快速創建可用工具的例子:
https://www.zhihu.com/video/955192603981869056Houdini讓我們思路更廣,跳出了美術的思維模式。我們對我們取得的成就感到非常滿意,並認為我們能夠在此基礎上進一步發展,光是想想就興奮。
我們不會將其和NMS做比較,因為是完全不同的遊戲和不同的內容。我們的遊戲世界裡很多地方和地標都是獨一無二的,這完全是在工具的幫助下手工製作完成的,沒有「魔法」。
這是一個有非常專業和有才華的美術們製作完成的世界,他們的願景是遊戲能帶來的生活和講述故事,這是沒有工具可以做到的。
https://www.zhihu.com/video/955192621694521344Learn more : GDC17: 『Ghost Recon Wildlands』: Terrain Tools and Technology
- GDC VAULT
推薦閱讀:
TAG:幽靈行動:荒野遊戲GhostReconWildlands | 技術美術 | 遊戲 |