【雷火UX帶你聚焦GDC2021】為“十字軍國王3”建立基於DNA的肖像系統(Paradox: Igor & Fredrik)

語言: CN / TW / HK

網易雷火UX使用者體驗中心編譯,轉載需註明本公眾號

什麼是GDC?

GDC是全球最高影響力的遊戲開發者會議,每年在舊金山召開一次,已有35屆。雖然一週會議的門票售價高達2千美元,仍有多達27000名業界人士現場出席,可見其價值與權威性。GDC重頭環節是非贊助類主題演講,每屆主辦方平均邀請不足300場,分核心與峰會兩大類別。這些演講人經過主辦方及其全球顧問委員會的精心挑選邀請,以高質量和創新性而備受行業認可,一定程度代表遊戲行業的當前最高水準與發展趨勢。

2020年起,受COVID-19影響,改由線上形式。2021年的GDC大會於7月19日至23日舉辦。 雷火UX共在GDC2021獲邀11場演講,領跑全球。

每年的GDC大會上,全球頂尖的遊戲開發者們將齊聚在這裡,交流彼此的想法,構想遊戲業的未來方向。接下來雷火UX公眾號會選擇一部分高質量的演講,陸續為大家進行介紹。 旨在通過對這些演講內容進行學習,瞭解遊戲領域的最新研究熱點趨勢,並 期待與全世界的遊戲愛好者一起產生更多創新和靈感的碰撞。

GDC 2021

Igor Aleksandrowicz

Igor Aleksandrowicz 

Paradox Development Studio的高階程式設計師,他自 2015 年以來一直在該工作室工作,主要開發鋼鐵之心 IV 和十字軍之王 III。

Fredrik Toll

Paradox Development Studio 的藝術總監,在過去的 10 多年裡他一直在那裡工作,並參與了每一個 Paradox Grand 策略遊戲的製作。

Fredrik Toll

本次是GDC程式設計和視覺藝術類的演講。演講中,您將深入瞭解Paradox為“十字軍之王 III”建立的肖像系統 。它是一個能夠描繪數以萬計獨特角色的框架,讓孩子能夠繼承父母的外貌,並對遊戲狀態的變化立即做出反應。Paradox 選擇建立一個基於 DNA 的系統,從而產生了一種新的程式化的角色建立方法。所有這些都是由一個非常小的團隊完成的,證明用有限的資源創造高水平的藝術是可行的。演講者們將深入探討該系統的工作原理,涵蓋一些肖像系統基礎知識、構建角色系統的注意事項、他們犯的錯誤、以及在此過程中學到的經驗教訓。

十字軍國王3簡介

CK3是個PC上的策略遊戲。 在中世紀時代末期的背景下,你可以選擇各種身份和出生地點。你需要建立一個繁榮的國家,擴張、升級、管理它,並試著讓你的王朝生存下去。在這期間,婚姻是必要的統治手段。每一個歐洲、北非、中亞、或印度的縣或王國都存在和你競爭的統治者。這些領地的統治者可能有配偶、兄弟姐妹、孩子、父母、甚至法院和議會。這些加起來總共有約50,000個不同角色。

十字軍遊戲介面

為了快捷有效地建立角色,以及實現人物生長,老化,外觀繼承等需求,他們研發了DNA肖像系統。兩位演講者分別從技術和美術的角度講述了這個系統的研發過程。

DNA系統的構建—技術

演講首先介紹了他們的基礎動畫技術。他們應用了Additive Animation (疊加動畫),Blend Shapes (混合形狀),和Decals (貼花)。

首先是疊加動畫,顧名思義,可以把其他動畫作為動畫層新增到基礎動畫上。這經常用於遊戲中的運動動畫。例如想要角色在走動的同時換彈,只需把換彈動畫放到走動動畫之上。但是這種動畫對美術並不友好,因為他們不能控制模型的頂點。並且這種方法會使法線出現問題。比如當你移動一個關節,它表面的法線會根據旋轉調整,但是它們並不會被真正重新計算,因此著色在許多情況下會是錯誤的。最後同時渲染許多疊加動畫是很慢的,所以從效能考慮,他們建議不要過度使用。

疊加動畫

關節上法線的變化

其次,他們也使用了混合形狀的技術,也經常被稱為變形目標(Morph Target)。這基本上是建立具有不同的頂點位置的基礎網格的複製體,且它們可以被混合在一起。這種技術一般用於面部動畫,通過為每一種面部表情建立混合變形,然後混合它們得到一個新的面部表情。他們用這種技術結合了疊加混合(Additive Blending),也就是說他們可以把許多混合工具結合到一起,且除了改變需要變化的頂點外不會互相影響。使用這種方法美術可以有更多的控制權,而且效能也不錯。

混合形狀的面部表情

除此之外為了改變角色紋理,實現老化、疤痕等效果,他們添加了新的層用來混合貼花紋理。

面部貼花

疊加動畫,混合形狀和貼花共同構成了角色的“屬性”。屬性是統一的引數,用於影響基礎網格。它們是人像系統的構建基礎。這些實現了他們的基礎需求,且不需要很多複雜的技術或工具。

“屬性”引數

DNA系統

在這個系統中,DNA是一段定義角色外觀的數字,易於儲存、複製、和比較角色的外觀。

系統有3個核心組成部分:屬性,基因,和基因變體。屬性就是上述的方法,能讓他們直接操控網格。基因是角色主要的視覺特徵,比如髮型,鼻形,眼睛的位置等。最後,基因變體用於定義每個基因可能出現的外觀。

除此之外,DNA裡還包括了基因強度。每個基因變體有強度值屬性,它決定了這些外觀特徵是否明顯。每個變體還設定了一個種類列表,這樣他們就不需具體設定每個角色的每個變體的值。他們只需將變體種類的各種數值乘以它的強度,就可以得到想要的效果的網格資料。

除了屬性基因以外,還有決定面板、眼睛和頭髮顏色的顏色基因。它們仍然是用兩個數值表示以適應他們現有的DNA結構。這兩個值代表了它們在他們調色盤紋理裡的座標。

如下圖所示,他們使用2個數值就可以表示DNA裡的每個基因。

DNA列表

外觀繼承

家族關係需要視覺化並傳承下去,同時避免DNA特徵隨著時間丟失。換句話說,要避免這些角色外觀融入某種平均水平,或者隨時間的推移而變得極端。

為了解決這個問題,他們使用了門德爾遺傳學。在門德爾遺傳學中,每個基因都有兩種“變體”:隱性的和顯性的。就像圖例中的花的顏色是被兩種基因變體的組合定義的,人們身上會有某些變體占主導地位,某些隱形。孩子會繼承父親的一個變體以及母親的一個變體,這些特徵是否顯現取決於哪個變體站主導地位,但隱性特徵仍然存在並會被繼承。這就是為什麼有的孩子身上有祖父母的特徵而不是父母的特徵。

門德爾遺傳學基因變體組合

在他們的系統中,每個基因變體也有兩種選項。繼承時他們首先選擇父母中的一個(50%可能性)作為顯性基因的提供者,另一個則提供隱性基因。然後決定顯性基因提供者的兩個基因變體中哪個被繼承,有75%可能是顯性的變體,25%可能是隱性變體。最後用同樣的方法決定隱性基因提供者的兩個變體中哪個被繼承。這樣孩子一定會繼承父母的基因特徵,並且顯性基因有更大的機會被繼承。因為他們把基因完整的傳承了下去,他們不會在繼承時混合它們的強度。這很好的避免了基因隨著時間而變得平均或極端的情況。

孩子繼承父母基因的演算法示意圖

完整的DNA

種  族

並不是所有角色都有父母,因此必須生成一些隨機的DNA。但是不能完全隨機角色的長相因為每個地區應該有特定的長相,所以他們添加了種族指令碼。指令碼記錄了不同地區文明的DNA可能生成的範圍和強度,每個地區可能有多個種族,且每個種族有特定的比例。這雖然解決了一定的問題但不夠完美,因為遊戲裡的文明是變化的,它可能隨時間遷移。所以種族組成了遊戲基因庫的內容,這是唯一的生成新DNA的地方。

不同人種的外觀 

非遺傳性的外觀

除了以上這些特徵,還有許多不能被繼承的外觀。比如衣服,這甚至比外表更重要,因為玩家更容易根據衣服區分角色而不是面部的細節。除此之外還有細節差異,例如疤痕,疾病。這些特徵是由文明等級,角色身份以及生活變化決定的,例如時疫和受傷。

他們選擇把這些非遺傳性外觀作為附件加上。這些外觀會在渲染時附加在遺傳的DNA上,但不會被儲存並傳承下去。

遺傳性DNA和渲染DNA

這些特殊基因是根據遊戲狀態觸發的。例如角色是個國王或者女王,他們會戴上皇冠;或者他們感染了瘟疫,則應該有可怕的斑痕。他們使用觸發器在指令碼中監視這些事件,基本上就是一些 if 語句。類似於選擇播放哪些動畫的指令碼,它也會接收遊戲的實時資料。

同一個角色的不同外觀 

DNA系統的構建—美術

為了建成一個這樣的系統,除了技術外,美術也需要考慮到很 多因素。

基礎網路

首先需要建一個基礎網格,這是以後每個角色的基礎。一般需要建每個性別一個,為了節省時間,你也可以只建一箇中性的模型,然後使用這個模型根據每個性別進行調整,得到一箇中性的男建模和女建模。注意不要立刻這麼做,先保證你需要的所有功能都能執行。

中性的基礎網格

除外,你要保證建模有平滑的曲線。網格的線條應該符合臉部的自然弧度,避免尖銳的邊緣,特別是嘴部和鼻部。同樣的,你需要在眼部鼻部嘴部多加幾何,這樣方便你使用Blend Shapes (混合形狀)。在使用前一定要完整的測試你的模型,因為一旦開始使用,你就再無法改變它了。

頭部的幾何部分

關於多邊形計數(Polycount),最好的基礎網格需要多少多邊形?隨著效能的日漸優化,現在這更取決於個人偏好,但是一般來說不是越多越好。這仍對他們的效能有一定影響,但更重要的是它會影響儲存(memory)。一旦你開始建很多彎曲的形狀,它會佔用不少的儲存。當然更大的理由是過多的頂點會使你的工作流程更復雜和艱難。尤其是對蒙皮(skinning)來說,會加大工作量,所以不要建超出你需要的數量。

另一個建立角色時的考慮是他是否應該能夠張嘴。推薦建模時把嘴脣分開,即使你當前沒有張嘴的需求,這能為以後的變故提前做好準備。

表情變化需要張嘴

Joint VS Blend Shape  

除了基礎網格,你還要考慮到在哪裡使用Joint Based(關節)或Blend Shapes (混合形狀)。演講者們推薦使用Blend Shapes並結合少量的關節來輔助。Blend Shapes使你有更多精準的控制,降低複雜性,並有更好的效能。關節應該在Blend Shapes表現不好或製作動畫時使用。

Blend Shapes可以實現人物從小長大

外觀區分

製作中,需要使用有限的外觀相互組合,讓玩家能輕易的區分不同角色不同地區。在預算有限的情況下,長相變化並不能引起玩家過多的注意,最重要的區分點是大面積的視覺效果改變。

髮型對人物形象的影響

除了頭部,更重要的是衣服的變化。第一,他們添加了不同外觀層,底層,上層,和頭飾。這大大增加了外觀的數量,但分層會造成網格相交,產生許多bug,所以需要在加層之前測試好。

新增層級的效果

另外一個衣服的改動是多種顏色的裝飾和圖案。同時還使用了不同的面料和花紋。每個面料的領子和袖子也會有不同的顏色組合。

同樣衣服的不同配色和裝飾

他們還用顏色和圖案來區分地區。一個地區應該更多的使用一種特定的顏色,這能使玩家更好的區分角色身份。

實踐經驗  

溝通反饋

開發者面臨的問題之一是技術和美術的溝通不足。這可能是因為他們一開始的期望設的太低了。應該反過來,有很高的設想然後慢慢縮小。有的時候美術需要新的功能,但是沒有有空閒的程式設計師來立即處理,這顯然使效率降低了。當然他們可以僱更多程式設計師和更少的美術,但是這也會有更大的風險,比如最終做出的東西不合期望,還是要丟棄然後重做。

工  具

他們缺乏更好的工具和管道。比如美術想要可以預覽或者看到目前的內容,雖然提出需求後建造了一個這樣的工具,但是它缺乏更好的使用者體驗,如果這方面能改進的話可能會節省很多時間。同樣,新增新內容是相當耗費時間的。他們必須手動在各種文字檔案裡完成這項工作,這既困難又耗時。所以建議不要忽視你管道里的工具,它會顯著地節省很多時間並提高過程的效率。

總  結  

遊戲的成功離不開豐富的人物,尤其在3D遊戲中,外觀特色,長相繼承,以及渲染速度為人物塑造增添了不少難度。國王十字軍3作為一個需要大量人像的遊戲,使用DNA系統解決了這些問題。技術方面,他們建立了包含基因組的DNA來儲存人物的外觀資料,使用門德爾遺傳學的方法保證了外觀的繼承,併為了更好的動畫效果使用了Blend Shapes結合Joints輔助生成表情。美術上,他們介紹了基礎網格的重要性,以及如何使用有限的資源相組合生成更多的外觀。系統的建立需要美術的規劃和技術的創新,更重要的是兩方的互相配合,同時工具能為開發、測試和美術提供巨大的便利。希望這些經驗對人像系統的開發者有所啟發和幫助。

往期推薦

「其他文章」