如何制作一款大規(guī)模的多人生存游戲?《V Rising》是對這一熱門游戲類型的暗黑風(fēng)格演繹——玩家將化身吸血鬼,在廣闊的開放世界中展開冒險(xiǎn)。
Stunlock Studios 開發(fā)團(tuán)隊(duì)?wèi)汛е甏蟮哪繕?biāo),并在開發(fā)初期就采用了 Unity 的面向數(shù)據(jù)技術(shù)棧(DOTS)和高清渲染管線(HDRP),為他們迄今為止最復(fù)雜的游戲構(gòu)建了一個(gè)穩(wěn)定且可擴(kuò)展的基礎(chǔ)。
通過使用面向數(shù)據(jù)技術(shù)棧(DOTS),Stunlock Studios 獲得了靈活的代碼架構(gòu),能夠有效管理這個(gè)規(guī)模不斷擴(kuò)大的項(xiàng)目。同時(shí),高清渲染管線(HDRP)實(shí)現(xiàn)了高保真的視覺效果,比如體積霧(Volumetric Fog),這對于營造哥特式氛圍至關(guān)重要。
憑借明智的策略與得力的工具,Stunlock 工作室讓《V Rising》在 PC 平臺大獲成功——搶先體驗(yàn)階段便好評如潮,正式發(fā)售時(shí)再度贏得贊譽(yù),隨后又通過備受好評的 PS5 移植版延續(xù)了游戲的生命力。截至目前,這款游戲的銷量已突破 500 萬份。

成果
? 創(chuàng)建了一個(gè)基于服務(wù)器的廣闊游戲世界,面積超過五平方公里,包含八個(gè)獨(dú)特的生態(tài)區(qū)域
? 實(shí)時(shí)流式加載并渲染了超過16 萬個(gè)可交互對象
? 管理了 21,000 個(gè)烘焙預(yù)制件、450 個(gè)烘焙子場景、1,600 個(gè) ECS 系統(tǒng)和 2,700 個(gè)粒子系統(tǒng)
? 通過使用Unity Profiler快速定位低效代碼和不必要的內(nèi)存垃圾,節(jié)省了數(shù)百小時(shí)的開發(fā)時(shí)間
? 通過使用SRP Batcher減少了數(shù)毫秒的幀延遲,提升了游戲的流暢性
? 創(chuàng)造了高玩家參與度數(shù)據(jù),玩家平均游戲時(shí)長為 35 小時(shí),解鎖了超過 340 萬個(gè) PlayStation?Network 獎(jiǎng)杯和 Steam 成就
? 實(shí)現(xiàn)了 PlayStation 5 專屬功能,包括自動語音聊天、對 DualSense? 無線控制器的觸覺反饋(Haptic Feedback)、自適應(yīng)扳機(jī)和控制器音效的支持,以及 PlayStation?Network 獎(jiǎng)杯系統(tǒng)
規(guī)劃游戲世界
對于《V Rising》的背景設(shè)定——瓦爾多蘭大陸,Stunlock 設(shè)想了一個(gè)可交互的、持久的世界,包含八個(gè)獨(dú)特的生態(tài)區(qū)域。每個(gè)區(qū)域都被霧氣籠罩,具有實(shí)時(shí)的晝夜循環(huán)和光影效果,這些必須在運(yùn)行時(shí)保持高性能,以提供穩(wěn)定的在線游戲體驗(yàn)。工作室聯(lián)合創(chuàng)始人兼系統(tǒng)程序員 Fredrik Haraldsson 表示:“我們決定全力以赴,在 Unity 中不受限制地實(shí)現(xiàn)這一切,這給了我們很大的自由,讓我們可以創(chuàng)造夢想中的吸血鬼王國?!?/p>
使用DOTS擴(kuò)展開發(fā)規(guī)模
Stunlock 一直在密切關(guān)注 Unity 最新發(fā)布的 DOTS,它為許多預(yù)期的性能挑戰(zhàn)提供了解決方案。盡管這項(xiàng)技術(shù)仍處于實(shí)驗(yàn)階段,但《V Rising》的開發(fā)還處于早期,且 Stunlock 的程序員已經(jīng)具備面向數(shù)據(jù)設(shè)計(jì)的經(jīng)驗(yàn)。早些采用這項(xiàng)技術(shù)還讓他們有機(jī)會與 Unity 更緊密地合作,并通過在生產(chǎn)環(huán)境中測試 DOTS 來獲得項(xiàng)目支持。
Stunlock 的開發(fā)者們意識到這一技術(shù)能為《V Rising》帶來巨大潛力,于是開始用Unity 2019.3搭建項(xiàng)目的新技術(shù)框架;與此同時(shí),團(tuán)隊(duì)其他成員繼續(xù)沿用開發(fā)《Battlerite》時(shí)的自研引擎進(jìn)行原型設(shè)計(jì),確保開發(fā)進(jìn)度不受影響。
解決性能瓶頸
雖然使用 DOTS 和 ECS 構(gòu)建《V Rising》項(xiàng)目架構(gòu)非常耗時(shí),但這樣做的好處很快就顯現(xiàn)出來了。Stunlock Studios 的聯(lián)合創(chuàng)始人兼技術(shù)總監(jiān) Rasmus H??k 表示:“通過 DOTS,我們構(gòu)建了一個(gè)能夠處理更多內(nèi)容的基礎(chǔ),并且可以有效地利用流式加載的實(shí)體和資產(chǎn)?!?strong>子場景和資產(chǎn)流式加載用于在運(yùn)行時(shí)根據(jù)玩家在游戲中看到的內(nèi)容動態(tài)加載和卸載元素。這種技術(shù)使玩家在探索《V Rising》的龐大世界時(shí)可以獲得更流暢的體驗(yàn)。
使用 ECS 構(gòu)建《V Rising》意味著可以利用子場景烘焙來管理游戲內(nèi)容。由于實(shí)體與 Unity 的核心場景系統(tǒng)不兼容,它們不能直接包含在 Unity 場景中。相反,烘焙允許從場景中加載實(shí)體,將其 GameObject 和 MonoBehaviour 組件轉(zhuǎn)換為可以在運(yùn)行時(shí)加載的實(shí)體和 ECS 組件。

Rasmus 認(rèn)為,運(yùn)行時(shí)數(shù)據(jù)與編輯器數(shù)據(jù)的清晰分離是使用 DOTS 和實(shí)體的最大優(yōu)勢之一。他解釋道:“在編輯器中,我們創(chuàng)建編輯用預(yù)制件(authoring prefabs),這些預(yù)制件本質(zhì)上是帶有 MonoBehaviors 的標(biāo)準(zhǔn) GameObjects。然而,這些預(yù)制件僅用于編輯目的,不會直接用于游戲本身。相反,它們會經(jīng)過一個(gè)稱為烘焙(baking)的過程,被轉(zhuǎn)換為運(yùn)行時(shí)組件。由于編輯用預(yù)制件僅在編輯器中使用,我們可以向它們添加功能和數(shù)據(jù)以優(yōu)化工作流程,而不必?fù)?dān)心影響實(shí)際游戲。”
以這種方式使用編輯用預(yù)制件讓更新《V Rising》變得更加容易。當(dāng)需要調(diào)整某個(gè)系統(tǒng)時(shí),Stunlock 的程序員無需讓美術(shù)師和設(shè)計(jì)師手動修改成千上萬個(gè)關(guān)聯(lián)預(yù)制件,只需更改烘焙代碼(Baking Code)來提取更新系統(tǒng)所需的數(shù)據(jù)即可。Rasmus 表示:“這不僅有助于維護(hù),顯然也提升了性能。因?yàn)轭A(yù)制件上的編輯器專用數(shù)據(jù)不會被轉(zhuǎn)換為運(yùn)行時(shí)組件,自然規(guī)避了這些性能開銷。”

突破技術(shù)瓶頸
正如 Stunlock 所預(yù)料的那樣,使用實(shí)驗(yàn)性技術(shù)會帶來一些挑戰(zhàn)。Rasmus 表示:“我們最初遇到的許多問題都是自己造成的。我們創(chuàng)建的許多實(shí)體太大,包含太多組件,這意味著我們無法像希望的那樣將大量實(shí)體組合在一起。為了解決這個(gè)問題,我們將實(shí)體縮小并增加了內(nèi)存塊的大小,這使情況大為改善。在游戲已經(jīng)開發(fā)完成的情況下,除了從經(jīng)驗(yàn)中學(xué)習(xí),我們能做的只有這么多。”
由于 DOTS 技術(shù)與 Unity 傳統(tǒng)開發(fā)模式差異顯著且更為復(fù)雜,Stunlock 采取了漸進(jìn)式團(tuán)隊(duì)適配策略。開發(fā)初期,程序員僅需通過編寫簡單組件和編輯代碼(authoring code)來完成小型任務(wù),以此熟悉新的工作流程。隨著熟練度提升,團(tuán)隊(duì)很快便能運(yùn)用 C# Job System 等 DOTS 組件開發(fā)工具,顯著加速整體開發(fā)進(jìn)程并提升質(zhì)量管控效能。
技術(shù)美術(shù)師 Filippa Arvidsson 解釋道:“通過使用 C# Job System,我們構(gòu)建了一些工具,可以掃描項(xiàng)目中的網(wǎng)格以查找重復(fù)幾何體,或計(jì)算網(wǎng)格的多邊形密度,以識別可能需要減少子像素三角形數(shù)量的資源?!?/p>
“DOTS 面向數(shù)據(jù)的方法是我在 Unity 中編寫代碼時(shí)新的首選方式,因?yàn)橐坏┠憧朔藦?GameObject 轉(zhuǎn)向系統(tǒng)思維的初始障礙,就會發(fā)現(xiàn)它非常直觀。當(dāng)然,性能優(yōu)勢也是一大加分項(xiàng)?!?/p>
對于技術(shù)背景較弱的團(tuán)隊(duì)成員,Stunlock 在 DOTS 代碼庫之上實(shí)現(xiàn)了一些工作流程,使他們能夠更直接地為項(xiàng)目做出貢獻(xiàn)。其中一個(gè)工作流程是允許創(chuàng)建預(yù)制件組件,這些組件可以生成并監(jiān)聽預(yù)定義的事件,例如玩家生成時(shí)觸發(fā)的效果,或在滿足某些條件時(shí)應(yīng)用的增益效果。通過這個(gè)系統(tǒng),設(shè)計(jì)師可以在不需要深入了解 DOTS 的情況下,創(chuàng)建模塊化且易于管理的游戲玩法元素。
第二個(gè)工作流程主要用于功能實(shí)現(xiàn),讓設(shè)計(jì)師可通過受限 API 在腳本層進(jìn)行操作。這使他們能夠自主編寫能與組件交互的腳本,并注冊到不同事件系統(tǒng)中,從而顯著提升生產(chǎn)效率。

通過高清渲染管線(HDRP)釋放圖形和游戲玩法潛力
《V Rising》基于 HDRP 構(gòu)建,這不僅實(shí)現(xiàn)了更高精度的畫面表現(xiàn),并以有趣的方式塑造了玩家的游戲體驗(yàn)。
Rasmus 表示:“體積霧(Volumetric Fog)無疑是塑造游戲視覺風(fēng)格最核心的特效。當(dāng)美術(shù)團(tuán)隊(duì)確認(rèn)采用 HDRP 管線后,整個(gè)藝術(shù)風(fēng)格都圍繞其特性進(jìn)行了適配,因此 HDRP 影響了游戲的整體外觀?!?strong>除營造哥特式氛圍、增強(qiáng)法術(shù)特效的表現(xiàn)力外,體積霧更被創(chuàng)新性地轉(zhuǎn)化為動態(tài)視野遮蔽系統(tǒng),通過物理級光線散射實(shí)時(shí)隱藏玩家不可見區(qū)域。
Stunlock 使用HDRP 的基于物理的天空(Physically Based Sky)來管理《V Rising》的晝夜循環(huán),這一機(jī)制對游戲玩法至關(guān)重要。在白天,如果玩家長時(shí)間暴露在陽光下會受到傷害,必須躲在陰影中移動。安全區(qū)域和危險(xiǎn)區(qū)域必須明確定義,以避免這一機(jī)制讓玩家感到沮喪。
Filippa 表示:“實(shí)時(shí)渲染非常重要,不僅可以創(chuàng)建一天中不同時(shí)間之間的精美過渡,還可以直觀地告訴玩家哪些區(qū)域會被陽光灼傷。HDRP 在這方面表現(xiàn)得非常出色,允許我們的美術(shù)師為不同區(qū)域和不同時(shí)間設(shè)置不同的體積配置文件(Volume Profiles),并通過平滑混合實(shí)現(xiàn)自然過渡?!?/p>
Stunlock 充分利用了 HDRP 的腳本化功能,構(gòu)建了數(shù)百種自定義視覺效果、著色器和后處理效果。Filippa 回憶了一個(gè)作為自定義后處理效果實(shí)現(xiàn)的效果:使靠近攝像機(jī)的物體變暗。這一效果貫穿整個(gè)游戲,并從一開始就為《V Rising》設(shè)定了氛圍。
她說:“以最開始的墓穴場景為例,高聳的石柱以壓迫性構(gòu)圖籠罩吸血鬼角色。后處理通道(Post-Processing Pass)會根據(jù)物體與攝像機(jī)的距離動態(tài)加深近景柱體的明度,瞬間營造出令人不安的壓抑氛圍,這種視覺敘事的效果極具沖擊力?!?/p>
Stunlock 還根據(jù)他們的需求定制了 HDRP 的源代碼,刪除了冗余的功能和計(jì)算,以提高性能。他們擴(kuò)展了體積配置文件(Volume Profiles),以驅(qū)動超出典型 HDRP 效果的組件。這使得技術(shù)背景較弱的美術(shù)師和設(shè)計(jì)師能夠在編輯器中獨(dú)立配置不同場景中的天氣、音樂和音效等元素。
Filippa 表示:“能夠?qū)⑦@些功能開放給美術(shù)師,真的非常強(qiáng)大。通過這種方式,他們可以在最少的技術(shù)支持下,讓每個(gè)生態(tài)區(qū)域在一天中的不同時(shí)間看起來完全符合他們的期望。這無疑節(jié)省了大量時(shí)間?!?/p>
進(jìn)軍PlayStation 5平臺
《V Rising》是 Stunlock 的首款主機(jī)游戲,當(dāng)索尼聯(lián)系他們時(shí),他們抓住了這個(gè)機(jī)會來迎接新的挑戰(zhàn),并觸達(dá) PlayStation 5 上潛在的數(shù)百萬玩家。
程序員首先升級了 Unity 版本,以利用 ECS 1.0 的額外性能改進(jìn)。PC 版本的主線程曾是一個(gè)限制因素,因此他們使用 C# Job System 將工作分配到其他線程。安全調(diào)度幫助他們輕松地在主線程上創(chuàng)建不干擾其他任務(wù)的工作。Rasmus 表示:“我們的大部分開發(fā)是在 Entities 1.0 之前完成的,現(xiàn)在升級后,我們經(jīng)常使用日志記錄來查看發(fā)生了什么,這也非常有用?!?/p>
在圖形方面,F(xiàn)ilippa 指出批處理對 PlayStation 5 的渲染性能有很大影響,因此他們在 HDRP 中構(gòu)建了工具,用于改進(jìn)的 UDIM(U-Dimensional)工作流,使他們能夠?qū)⒕哂胁煌馁|(zhì)的子網(wǎng)格組合在一起,以減少繪制調(diào)用。她說:“這可能為我們節(jié)省了數(shù)毫秒的 CPU 消耗時(shí)間,因?yàn)殇秩緮?shù)據(jù)可以以更高效的方式發(fā)送到 GPU?!?/p>
掌控黑夜
從 PC 版 1.0 正式發(fā)布、PlayStation 5 平臺登陸,再到近期與科樂美數(shù)字娛樂(KONAMI)旗下傳奇 IP《惡魔城》(Castlevania)的聯(lián)動合作,《V Rising》一直在不斷壯大。這是一個(gè)小團(tuán)隊(duì)取得的非凡技術(shù)成就,他們敢于大膽嘗試新技術(shù),為玩家創(chuàng)造了引人入勝且獨(dú)特的體驗(yàn)。
通過 DOTS,Stunlock 能夠在《V Rising》中添加“更多的內(nèi)容”,同時(shí)將性能問題降到最低;而 HDRP 則幫助他們創(chuàng)造了令人難忘的視覺效果,為玩家提供了更加沉浸和引人入勝的體驗(yàn)。如今,《V Rising》是基于 DOTS 開發(fā)的規(guī)模極為龐大的游戲之一(以代碼行數(shù)衡量),而 Unity 正在利用從該項(xiàng)目的開發(fā)中獲得的洞察,使編輯器對于開發(fā)規(guī)模宏大的游戲的創(chuàng)作者來說更加高效和穩(wěn)定。
Rasmus 表示:“我們最初并沒有打算加入這么多動態(tài)的和可破的壞元素,這些都是水到渠成的,因?yàn)槲覀兡軌蜃龅?。這證明了 ECS 的強(qiáng)大,以及它能夠?qū)崿F(xiàn)的顯著性能優(yōu)勢。如果沒有 DOTS,今天的《V Rising》將會大不相同?!?/p>
Unity 官方微信
第一時(shí)間了解Unity引擎動向,學(xué)習(xí)進(jìn)階開發(fā)技能
每一個(gè)“點(diǎn)贊”、“在看”,都是我們前進(jìn)的動力
熱門跟貼