【雷火UX帶你聚焦GDC2021】為“十字軍國王3”建立基於DNA的肖像系統(Paradox: Igor & Fredrik)
網易雷火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輔助生成表情。美術上,他們介紹了基礎網格的重要性,以及如何使用有限的資源相組合生成更多的外觀。系統的建立需要美術的規劃和技術的創新,更重要的是兩方的互相配合,同時工具能為開發、測試和美術提供巨大的便利。希望這些經驗對人像系統的開發者有所啟發和幫助。
往期推薦
- 【雷火UX使用者研究】從發展心理學看遊戲中的年輕玩家
- 【雷火UX全球本地化】打破遊戲出海的“巴別塔”:遊戲本地化簡史
- 【雷火UX體驗設計】你不知道的體驗設計之介面音效設計
- 更垂類更聚焦!“雷火UX大資料技術”公眾號正式啟程!
- 【雷火UX體驗設計】簡述遊戲中的社會行為
- 【雷火UX體驗設計】AAA遊戲互動的“破”與“立”
- 【雷火UX使用者研究】種田遊戲如何喚醒玩家的DNA?
- 【雷火UX×浙大心理系】使用者研究訓練營(第8課) : 資料分析基礎
- 【雷火UX資料產品】為什麼抽卡時你是非酋?帶你揭祕隨機數到底是怎麼生成的
- 【雷火UX帶你聚焦GDC2021】普遍性和差異化因素:兩類動機的故事(Quantic Foundry:Nick Yee)
- 【雷火UX使用者研究】遊戲直接競品的使用者是我們的核心使用者嗎?
- 【雷火UX體驗設計】在VR遊戲中打造高度沉浸的體驗
- 【雷火UX×浙大心理系】使用者研究訓練營(第7課) : 海外使用者研究
- 【雷火UX帶你聚焦GDC2021】語音聲控遊戲:過去、現在和未來(Jeferson Valadares)
- 【雷火UX體驗設計】為真實的世界設計:遊戲輔助功能(工具篇)
- 【雷火UX×浙大心理系】使用者研究訓練營(第6課) : 實驗室測試綜合訓練
- 【雷火UX平臺開發】還在使用字型圖示?試試打造SVG圖示庫吧
- 【雷火UX帶你聚焦GDC2021】育碧:基於微服務平臺構建遊戲應用生態(Ubisoft:Martin Lavoie)
- 【雷火UX使用者研究】為玩家體驗增加驚喜感:遊戲內的彩蛋設計
- 【雷火UX帶你聚焦GDC2021】遊戲開發者使用的語音AI:優化敘述過程(Shreyas Nivas)