工作流是讓工具去適應(yīng)創(chuàng)作者。
整理/大田&林致
在今天的2026GDC(Game Developers Conference,游戲開(kāi)發(fā)者大會(huì))現(xiàn)場(chǎng),疊紙游戲分享了《戀與深空》的劇情演出管線設(shè)計(jì)。
《戀與深空》全球注冊(cè)用戶(hù)超過(guò)8000萬(wàn),這么多用戶(hù)的游戲體驗(yàn)背后,是一個(gè)超過(guò)300人的創(chuàng)作團(tuán)隊(duì),涵蓋了文案、分鏡、動(dòng)畫(huà)等多個(gè)工種。為了讓這300多人高效協(xié)同,《戀與深空》團(tuán)隊(duì)用六年時(shí)間,打磨出了一套面向開(kāi)發(fā)者的內(nèi)部管線,避免在繁雜的數(shù)據(jù)轉(zhuǎn)換和跨部門(mén)溝通中陷入混亂。
以下是經(jīng)過(guò)整理的演講《Building the Cinematic Pipeline for Love and Deepspace(構(gòu)建《戀與深空》劇情演出管線)》具體內(nèi)容:
大家剛剛看過(guò)《戀與深空》的短片,這些畫(huà)面背后,其實(shí)是一個(gè)相當(dāng)龐大的制作團(tuán)隊(duì)在支撐。要持續(xù)不斷地生產(chǎn)龐大體量的劇情演出內(nèi)容,我們需要一套非常高效且健壯的工具集。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們的管線設(shè)計(jì)始終圍繞著三個(gè)核心理念展開(kāi):
原生創(chuàng)作工作流(Creative-Native Workflows):管線必須能自然地契合創(chuàng)意團(tuán)隊(duì)的工作習(xí)慣,這包括文案、敘事設(shè)計(jì)師以及劇情演出美術(shù)。
實(shí)時(shí)迭代(Real-timeIteration):創(chuàng)作者必須能夠直接在引擎內(nèi)對(duì)他們的工作進(jìn)行即時(shí)預(yù)覽和修改。
生產(chǎn)規(guī)模護(hù)欄(Production-scale Guardrails):我們需要一套系統(tǒng),幫助團(tuán)隊(duì)在這樣大規(guī)模的生產(chǎn)中維持內(nèi)容的一致性和穩(wěn)定性。
![]()
01
原生創(chuàng)作工作流
要理解原生創(chuàng)作工作流的重要性,先來(lái)看看我們整體的工作流。
流程從劇本撰寫(xiě)開(kāi)始,接著是分鏡設(shè)計(jì)、語(yǔ)音錄制、動(dòng)畫(huà)制作,最后所有資產(chǎn)整合到游戲引擎中,和玩法系統(tǒng)組裝起來(lái)。聽(tīng)起來(lái)很簡(jiǎn)單吧?
但實(shí)際上,我們?cè)缙诘墓ぷ髁鞒淌沁@樣的:
![]()
如你所見(jiàn),不管是數(shù)據(jù)流還是工作流都相當(dāng)復(fù)雜。
文案?jìng)冇靡惶紫到y(tǒng)自己的系統(tǒng)來(lái)標(biāo)記說(shuō)話人、記錄配音語(yǔ)氣提示。音頻團(tuán)隊(duì)則需要導(dǎo)出單獨(dú)的錄音腳本,因?yàn)榕湟粞輪T在錄音時(shí)可能會(huì)即興發(fā)揮調(diào)整臺(tái)詞,或者拆分長(zhǎng)句。策劃們則需要追蹤變動(dòng),及時(shí)更新。
那么,為什么管線會(huì)變成這么復(fù)雜呢?第一個(gè)原因是,不同的工種天生就偏好不同的工具。文案更習(xí)慣在Word里工作,而策劃則習(xí)慣使用Excel里管理對(duì)話數(shù)據(jù)。甚至同樣使用Excel,不同團(tuán)隊(duì)使用的表格式也往往完全不同。
第二個(gè)原因在于,每個(gè)工種都需要有附加數(shù)據(jù)。策劃需要管理對(duì)話ID和分支邏輯,而音頻團(tuán)隊(duì)則需要錄音備注和語(yǔ)音相關(guān)的元數(shù)據(jù)。
![]()
因此,數(shù)據(jù)必須在各種格式之間不斷轉(zhuǎn)換,最后再導(dǎo)入到游戲引擎中。而且每一次轉(zhuǎn)換,都會(huì)增加版本控制和數(shù)據(jù)同步的復(fù)雜性。
為了解決這個(gè)問(wèn)題,我們需要統(tǒng)一且靈活的方式來(lái)管理對(duì)話元數(shù)據(jù)。所有的對(duì)話ID、臺(tái)詞類(lèi)型、錄音備注以及其他生產(chǎn)數(shù)據(jù),都需要放在一個(gè)中心化的系統(tǒng)里,同時(shí)又要保證只有相應(yīng)的權(quán)限角色才能查看和編輯。
但光解決數(shù)據(jù)問(wèn)題是不夠的,我們還得確保這個(gè)工具讓使用者覺(jué)得順手。文案寫(xiě)對(duì)話應(yīng)該就像在Word里打字一樣;音頻團(tuán)隊(duì)準(zhǔn)備錄音時(shí)應(yīng)該像在用電子表格。
換句話說(shuō),是工具去適應(yīng)創(chuàng)作者的工作流,而不是反過(guò)來(lái)。
![]()
為此,我們開(kāi)發(fā)了一款名叫“劇情編輯器”(Story Editor)的工具。對(duì)文案來(lái)說(shuō),它屬于開(kāi)箱即用,文案只需要直接打字就行了,這是一個(gè)鍵盤(pán)優(yōu)先的工作流。
我們?cè)谶@個(gè)文檔的形式中加入了一些結(jié)構(gòu)化的設(shè)計(jì)。在左側(cè),每一行都有明確的角色定義,告訴系統(tǒng)當(dāng)前是誰(shuí)在說(shuō)話,這段對(duì)話屬于哪個(gè)場(chǎng)景,以及玩家在這個(gè)對(duì)話節(jié)點(diǎn)是否可以做出選擇。當(dāng)然,我們也能訪問(wèn)所有的元數(shù)據(jù)。
![]()
所有的敘事上下文都集中在了一個(gè)地方,再也不需要在不同工具之間進(jìn)行格式轉(zhuǎn)換了。而且因?yàn)檫@個(gè)系統(tǒng)是基于架構(gòu)的,我們可以在需要時(shí)輕松添加新的元數(shù)據(jù)字段,同時(shí)保持所有的內(nèi)容向前兼容。
評(píng)審工作流對(duì)我們來(lái)說(shuō)也非常重要,我們讓這部分體驗(yàn)盡量貼近Word,評(píng)審人員可以留下批注建議修改,或者直接使用修訂模式修改文本,作者可以逐一過(guò)一遍這些修改,選擇接受或拒絕。
![]()
當(dāng)進(jìn)入語(yǔ)音錄制階段時(shí),可以將編輯器切換到錄音模式。在這個(gè)模式下,界面會(huì)變成一個(gè)類(lèi)似電子表格的視圖,看起來(lái)非常像Excel。
這讓音頻團(tuán)隊(duì)能夠規(guī)劃和管理錄音批次、追蹤進(jìn)度。錄制完成后,他們可以把音頻和劇本進(jìn)行對(duì)比,預(yù)覽語(yǔ)音臺(tái)詞,并管理不同的版本。最后一鍵把數(shù)據(jù)和音頻資產(chǎn)同步到語(yǔ)音項(xiàng)目中。
![]()
到這里,整個(gè)早期的敘事工作流已經(jīng)被整合到了一個(gè)單一的工具中。“劇情編輯器”管理著統(tǒng)一的數(shù)據(jù)流,同時(shí)還為不同工種保留了他們熟悉的工作環(huán)境。
我們還在它之上構(gòu)建了一個(gè)SDK,允許團(tuán)隊(duì)開(kāi)發(fā)額外的插件和自動(dòng)化工具,進(jìn)一步提升生產(chǎn)效率。
![]()
02
實(shí)時(shí)迭代
相比早期的創(chuàng)意階段,動(dòng)畫(huà)生產(chǎn)的后期階段要繁重得多,不同部門(mén)之間的迭代很常見(jiàn)。嚴(yán)格的線性工作流會(huì)讓跨部門(mén)的修改極其痛苦。
所以,我們真正需要的是貫穿整個(gè)管線的快速、實(shí)時(shí)的迭代。
動(dòng)捕是生產(chǎn)管線的核心部分。在傳統(tǒng)的動(dòng)捕工作流中,表演數(shù)據(jù)會(huì)流入到DCC(數(shù)字內(nèi)容創(chuàng)作)工具里進(jìn)行預(yù)覽,比如MotionBuilder或Maya。
為了更好地與之契合,我們搭建了一個(gè)叫“導(dǎo)演工作室”(Director Studio)的內(nèi)部系統(tǒng)。
這個(gè)系統(tǒng)將動(dòng)作捕捉、面部捕捉和攝像機(jī)數(shù)據(jù)整合到了一個(gè)統(tǒng)一的系統(tǒng)中。它還能把表演數(shù)據(jù)實(shí)時(shí)流傳輸?shù)綄?shí)際的游戲內(nèi)角色和環(huán)境中。這大大縮小了動(dòng)捕預(yù)覽和最終游戲內(nèi)效果之間的差距,讓導(dǎo)演和演員在制作過(guò)程中能做出更準(zhǔn)確的決策。
![]()
在動(dòng)作捕捉和動(dòng)畫(huà)打磨之后,所有的東西都會(huì)被組裝到時(shí)間軸上,同時(shí)加上剪輯和錄制好的對(duì)話,形成一系列的過(guò)場(chǎng)動(dòng)畫(huà)。這些都是在我們的過(guò)場(chǎng)動(dòng)畫(huà)編輯器里完成的。
這張截圖展示了我們過(guò)場(chǎng)動(dòng)畫(huà)編輯器的不同面板。每一個(gè)過(guò)場(chǎng)片段都是由幾十條,有時(shí)甚至幾百條軌道和剪輯片段構(gòu)成的,每一條軌道代表一個(gè)特定的功能。所有的軌道都可以進(jìn)行實(shí)時(shí)預(yù)覽和編輯。美術(shù)們就是在這里把所有不同的表演元素組裝成最終的過(guò)場(chǎng)動(dòng)畫(huà)效果。
![]()
![]()
總的來(lái)說(shuō),這個(gè)編輯器包含十幾個(gè)子系統(tǒng)和許多不同的軌道類(lèi)型,以支持各種各樣的過(guò)場(chǎng)動(dòng)畫(huà)創(chuàng)作需求。但由于今天時(shí)間有限,我重點(diǎn)講其中四個(gè)。
第一個(gè)是細(xì)粒度控制器(Fine-grained Controllers)。
像前面提到的,過(guò)場(chǎng)動(dòng)畫(huà)制作中的一個(gè)常見(jiàn)痛點(diǎn),就是在管線后期進(jìn)行精細(xì)的動(dòng)畫(huà)調(diào)整。比如,將角色的視線與攝像機(jī)對(duì)齊、協(xié)調(diào)與道具的交互、或者微調(diào)角色之間微妙的互動(dòng)。
如果通過(guò)反復(fù)導(dǎo)入導(dǎo)出資產(chǎn)來(lái)做這些事,效率會(huì)極低,livelink也無(wú)法提供動(dòng)畫(huà)師所需要的那種響應(yīng)速度。
![]()
為了解決這個(gè)問(wèn)題,我們?cè)谝鎯?nèi)部直接實(shí)現(xiàn)了一套DCC級(jí)別的細(xì)粒度控制器。這允許動(dòng)畫(huà)師在實(shí)時(shí)調(diào)整表演的同時(shí),能跟燈光、技術(shù)攝像機(jī)等其他部門(mén)協(xié)同工作,從而確保最佳的最終效果。
第二個(gè)是分層動(dòng)畫(huà)(Layer Animation)。
動(dòng)畫(huà)師會(huì)創(chuàng)建可復(fù)用的動(dòng)畫(huà)片段,可以根據(jù)場(chǎng)景需求進(jìn)行組合。在生產(chǎn)過(guò)程中,美術(shù)可以選擇合適的動(dòng)畫(huà)層,并調(diào)整它們的權(quán)重和播放速度,以達(dá)到理想的表演效果。
這樣,相同的動(dòng)畫(huà)資產(chǎn)就可以生成不同的結(jié)果。
![]()
第三個(gè)是暫停循環(huán)動(dòng)畫(huà)(Pause Loop Animation)。
我們的游戲中包含很多QTE,角色需要等待玩家輸入才能繼續(xù)接下來(lái)的動(dòng)作。如果動(dòng)畫(huà)只是簡(jiǎn)單地僵在一個(gè)姿勢(shì)上,表演就會(huì)有明顯的斷裂感,這個(gè)時(shí)刻的張力也就流失了。
所以我們開(kāi)發(fā)了一個(gè)叫做“暫停循環(huán)動(dòng)畫(huà)”的功能。當(dāng)游戲進(jìn)入QTE時(shí),動(dòng)畫(huà)系統(tǒng)會(huì)切換到一個(gè)特殊的循環(huán)動(dòng)畫(huà),同時(shí)等待玩家的輸入。一旦玩家做出反應(yīng),系統(tǒng)就會(huì)無(wú)縫過(guò)渡到后續(xù)動(dòng)作,這讓表演始終保持鮮活,并保全了場(chǎng)景的過(guò)場(chǎng)沉浸感。
![]()
第四個(gè)是燈光系統(tǒng)(Lighting System)。
我們的角色使用一個(gè)平行光,和多個(gè)補(bǔ)充光源配合特寫(xiě)軟陰影,再加上幾十種后處理效果,有海量的參數(shù)需要控制。
燈光美術(shù)可以在時(shí)間軸上選擇特定的參數(shù),并通過(guò)打關(guān)鍵幀進(jìn)行精確調(diào)整。
![]()
但如果每次都從頭搭建一套完整的燈光設(shè)置,會(huì)非常耗時(shí),也很難在整個(gè)游戲中保持視覺(jué)一致性。為此,我們引入了一個(gè)預(yù)設(shè)系統(tǒng)。燈光美術(shù)可以將一組參數(shù)值保存為預(yù)設(shè),從而快速搭建一個(gè)基礎(chǔ)的燈光布置。
這能顯著加快制作效率,并有助于保持穩(wěn)定統(tǒng)一的視覺(jué)品質(zhì)。
![]()
在舞臺(tái)卡里模擬復(fù)雜的舞臺(tái)燈光效果,需要同步移動(dòng)許多燈光,所以手動(dòng)去調(diào)整每一盞燈幾乎是不可能的。
所以我們借鑒了現(xiàn)實(shí)世界中舞臺(tái)燈光控制臺(tái)的工作流,并做了一個(gè)引擎內(nèi)版本。這讓美術(shù)能夠控制燈光組,并生成程序化的燈光序列。
有了這個(gè)系統(tǒng),就可以快速可靠地創(chuàng)建出復(fù)雜的舞臺(tái)燈光效果。
![]()
03
生產(chǎn)規(guī)模護(hù)欄
為了支撐大規(guī)模的生產(chǎn),我們還需要強(qiáng)大的護(hù)欄。如果沒(méi)有它們,即使是這么復(fù)雜管線里的一個(gè)小失誤,也很容易演變成系統(tǒng)級(jí)的問(wèn)題,這會(huì)耗費(fèi)大量的時(shí)間和精力去Debug。
首先是資產(chǎn)所有權(quán)界定。
正如前面提到的,過(guò)場(chǎng)動(dòng)畫(huà)的生產(chǎn)需要多個(gè)部門(mén)協(xié)同工作。團(tuán)隊(duì)經(jīng)常需要參考彼此的工作,但絕對(duì)不能意外修改不屬于自己職責(zé)范圍的資產(chǎn)。
因此,我們將過(guò)場(chǎng)動(dòng)畫(huà)項(xiàng)目劃分為基于角色的資產(chǎn)目錄,并明確界定了所有權(quán),自動(dòng)提交工具確保只有屬于用戶(hù)職責(zé)范圍內(nèi)的資產(chǎn)才會(huì)被提交。比如在“過(guò)場(chǎng)動(dòng)畫(huà)編輯器”中,燈光美術(shù)可以加載動(dòng)畫(huà)資產(chǎn)作為參考,但無(wú)法修改它們。
![]()
其次是自動(dòng)化資產(chǎn)驗(yàn)證流程。
我們的管線涉及海量的過(guò)場(chǎng)片段資產(chǎn),修改本地文件、合并沖突等還是會(huì)導(dǎo)致配置錯(cuò)誤。
為了解決這個(gè)問(wèn)題,我們建立了一系列自動(dòng)化的資產(chǎn)驗(yàn)證流程。這些檢查會(huì)定期運(yùn)行,生成報(bào)告,一旦檢測(cè)到問(wèn)題,就會(huì)通知提交者和該模塊的所有者。
這讓團(tuán)隊(duì)能夠迅速定位有問(wèn)題的資產(chǎn)和具體故障,從而快速修復(fù)。
![]()
再次,性能驗(yàn)證也是管線中非常重要的一環(huán)。
我們將性能指標(biāo)和Debug視圖直接整合到了編輯器里。比如,特效美術(shù)可以使用Overdraw視圖來(lái)快速找出需要優(yōu)化的資產(chǎn)。當(dāng)一個(gè)過(guò)場(chǎng)片段完全組裝好后,創(chuàng)作者可以直接在編輯器里播放整個(gè)序列,同時(shí)收集關(guān)鍵的性能指標(biāo),結(jié)果會(huì)以時(shí)間軸的形式呈現(xiàn),有問(wèn)題的片段會(huì)自動(dòng)高亮顯示。
![]()
我們剛才討論的性能剖析工具主要是在生產(chǎn)階段使用的,用于在開(kāi)發(fā)環(huán)境里進(jìn)行快速診斷。然而,游戲最終要跑在各種各樣的移動(dòng)設(shè)備上,面對(duì)諸多不同的芯片組和操作系統(tǒng),性能差異可能會(huì)非常大。
為了應(yīng)對(duì)這種情況,我們實(shí)現(xiàn)了多個(gè)畫(huà)質(zhì)分級(jí),并且渲染管線也包含了多個(gè)不同的執(zhí)行路徑。
我們還搭建了一個(gè)性能監(jiān)控平臺(tái),由我們的自動(dòng)化測(cè)試框架驅(qū)動(dòng),每天24小時(shí)在數(shù)百臺(tái)設(shè)備上跑測(cè)試。這讓我們能持續(xù)收集不同軟硬件配置下的性能數(shù)據(jù),并在每次發(fā)布前揪出潛在的性能熱點(diǎn)。
![]()
還有視覺(jué)回歸監(jiān)測(cè)。
從美術(shù)資產(chǎn)到渲染管線的修改,很多因素都可能無(wú)意中影響最終的視覺(jué)效果。一旦發(fā)生這種情況,程序往往要花好幾個(gè)小時(shí)回滾版本,找到變更源頭。
![]()
為了解決這個(gè)問(wèn)題,我們建了一個(gè)渲染農(nóng)場(chǎng),每天晚上都會(huì)錄制視頻進(jìn)行自動(dòng)化對(duì)比。我們還發(fā)現(xiàn)QA和美術(shù)復(fù)查問(wèn)題的速度也快多了,因?yàn)閷?duì)比視頻比直接在游戲引擎里檢查資產(chǎn)要容易得多。
我們還構(gòu)建了許多Debug工具來(lái)幫助工程師更快地診斷問(wèn)題。
例如,我們?yōu)榻巧珓?dòng)畫(huà)的混合樹(shù)及其運(yùn)行時(shí)狀態(tài)提供了可視化工具,還能復(fù)現(xiàn)過(guò)場(chǎng)動(dòng)畫(huà)之間的過(guò)渡狀態(tài),這類(lèi)地方很容易出現(xiàn)動(dòng)畫(huà)抖動(dòng)或者跨過(guò)場(chǎng)對(duì)象的生命周期錯(cuò)誤等問(wèn)題。
![]()
最后,我們支持快速打包并部署到移動(dòng)設(shè)備上,以便進(jìn)行快速的真機(jī)測(cè)試。
至于實(shí)時(shí)游戲環(huán)境,我們使用了騰訊的Crash Sight來(lái)收集和分析崩潰報(bào)告,它提供了實(shí)時(shí)的搜索、統(tǒng)計(jì)和分析工具,能讓我們迅速定位問(wèn)題,并對(duì)生產(chǎn)環(huán)境中的崩潰做出響應(yīng)。
![]()
今天其實(shí)只是涵蓋了我們管線中幾個(gè)關(guān)鍵的部分。在過(guò)去的六年里,這條管線從一個(gè)勉強(qiáng)能用的狀態(tài),進(jìn)化成了一個(gè)能夠讓我們團(tuán)隊(duì)持續(xù)高效、高質(zhì)量地產(chǎn)出劇情的系統(tǒng)。它是整個(gè)團(tuán)隊(duì)多年來(lái)不斷試驗(yàn)、迭代和持續(xù)優(yōu)化的結(jié)果,這一切離不開(kāi)每一個(gè)人的貢獻(xiàn)。
感謝大家的聆聽(tīng)。
游戲葡萄招聘商務(wù)經(jīng)理,
| |
| |
游戲行業(yè)書(shū)籍推薦: 葡萄書(shū)房
(星標(biāo)可第一時(shí)間收到推送和完整封面)
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.