如何制作一款大規模的多人生存游戲?《V Rising》是對這一熱門游戲類型的暗黑風格演繹——玩家將化身吸血鬼,在廣闊的開放世界中展開冒險。
Stunlock Studios 開發團隊懷揣著宏大的目標,并在開發初期就采用了 Unity 的面向數據技術棧(DOTS)和高清渲染管線(HDRP),為他們迄今為止最復雜的游戲構建了一個穩定且可擴展的基礎。
通過使用面向數據技術棧(DOTS),Stunlock Studios 獲得了靈活的代碼架構,能夠有效管理這個規模不斷擴大的項目。同時,高清渲染管線(HDRP)實現了高保真的視覺效果,比如體積霧(Volumetric Fog),這對于營造哥特式氛圍至關重要。
憑借明智的策略與得力的工具,Stunlock 工作室讓《V Rising》在 PC 平臺大獲成功——搶先體驗階段便好評如潮,正式發售時再度贏得贊譽,隨后又通過備受好評的 PS5 移植版延續了游戲的生命力。截至目前,這款游戲的銷量已突破 500 萬份。
成果
? 創建了一個基于服務器的廣闊游戲世界,面積超過五平方公里,包含八個獨特的生態區域
? 實時流式加載并渲染了超過16 萬個可交互對象
? 管理了 21,000 個烘焙預制件、450 個烘焙子場景、1,600 個 ECS 系統和 2,700 個粒子系統
? 通過使用Unity Profiler快速定位低效代碼和不必要的內存垃圾,節省了數百小時的開發時間
? 通過使用SRP Batcher減少了數毫秒的幀延遲,提升了游戲的流暢性
? 創造了高玩家參與度數據,玩家平均游戲時長為 35 小時,解鎖了超過 340 萬個 PlayStation?Network 獎杯和 Steam 成就
? 實現了 PlayStation 5 專屬功能,包括自動語音聊天、對 DualSense? 無線控制器的觸覺反饋(Haptic Feedback)、自適應扳機和控制器音效的支持,以及 PlayStation?Network 獎杯系統
規劃游戲世界
對于《V Rising》的背景設定——瓦爾多蘭大陸,Stunlock 設想了一個可交互的、持久的世界,包含八個獨特的生態區域。每個區域都被霧氣籠罩,具有實時的晝夜循環和光影效果,這些必須在運行時保持高性能,以提供穩定的在線游戲體驗。工作室聯合創始人兼系統程序員 Fredrik Haraldsson 表示:“我們決定全力以赴,在 Unity 中不受限制地實現這一切,這給了我們很大的自由,讓我們可以創造夢想中的吸血鬼王國。”
使用DOTS擴展開發規模
Stunlock 一直在密切關注 Unity 最新發布的 DOTS,它為許多預期的性能挑戰提供了解決方案。盡管這項技術仍處于實驗階段,但《V Rising》的開發還處于早期,且 Stunlock 的程序員已經具備面向數據設計的經驗。早些采用這項技術還讓他們有機會與 Unity 更緊密地合作,并通過在生產環境中測試 DOTS 來獲得項目支持。
Stunlock 的開發者們意識到這一技術能為《V Rising》帶來巨大潛力,于是開始用Unity 2019.3搭建項目的新技術框架;與此同時,團隊其他成員繼續沿用開發《Battlerite》時的自研引擎進行原型設計,確保開發進度不受影響。
解決性能瓶頸
雖然使用 DOTS 和 ECS 構建《V Rising》項目架構非常耗時,但這樣做的好處很快就顯現出來了。Stunlock Studios 的聯合創始人兼技術總監 Rasmus H??k 表示:“通過 DOTS,我們構建了一個能夠處理更多內容的基礎,并且可以有效地利用流式加載的實體和資產。”子場景和資產流式加載用于在運行時根據玩家在游戲中看到的內容動態加載和卸載元素。這種技術使玩家在探索《V Rising》的龐大世界時可以獲得更流暢的體驗。
使用 ECS 構建《V Rising》意味著可以利用子場景烘焙來管理游戲內容。由于實體與 Unity 的核心場景系統不兼容,它們不能直接包含在 Unity 場景中。相反,烘焙允許從場景中加載實體,將其 GameObject 和 MonoBehaviour 組件轉換為可以在運行時加載的實體和 ECS 組件。
Rasmus 認為,運行時數據與編輯器數據的清晰分離是使用 DOTS 和實體的最大優勢之一。他解釋道:“在編輯器中,我們創建編輯用預制件(authoring prefabs),這些預制件本質上是帶有 MonoBehaviors 的標準 GameObjects。然而,這些預制件僅用于編輯目的,不會直接用于游戲本身。相反,它們會經過一個稱為烘焙(baking)的過程,被轉換為運行時組件。由于編輯用預制件僅在編輯器中使用,我們可以向它們添加功能和數據以優化工作流程,而不必擔心影響實際游戲。”
以這種方式使用編輯用預制件讓更新《V Rising》變得更加容易。當需要調整某個系統時,Stunlock 的程序員無需讓美術師和設計師手動修改成千上萬個關聯預制件,只需更改烘焙代碼(Baking Code)來提取更新系統所需的數據即可。Rasmus 表示:“這不僅有助于維護,顯然也提升了性能。因為預制件上的編輯器專用數據不會被轉換為運行時組件,自然規避了這些性能開銷。”
突破技術瓶頸
正如 Stunlock 所預料的那樣,使用實驗性技術會帶來一些挑戰。Rasmus 表示:“我們最初遇到的許多問題都是自己造成的。我們創建的許多實體太大,包含太多組件,這意味著我們無法像希望的那樣將大量實體組合在一起。為了解決這個問題,我們將實體縮小并增加了內存塊的大小,這使情況大為改善。在游戲已經開發完成的情況下,除了從經驗中學習,我們能做的只有這么多。”
由于 DOTS 技術與 Unity 傳統開發模式差異顯著且更為復雜,Stunlock 采取了漸進式團隊適配策略。開發初期,程序員僅需通過編寫簡單組件和編輯代碼(authoring code)來完成小型任務,以此熟悉新的工作流程。隨著熟練度提升,團隊很快便能運用 C# Job System 等 DOTS 組件開發工具,顯著加速整體開發進程并提升質量管控效能。
技術美術師 Filippa Arvidsson 解釋道:“通過使用 C# Job System,我們構建了一些工具,可以掃描項目中的網格以查找重復幾何體,或計算網格的多邊形密度,以識別可能需要減少子像素三角形數量的資源。”
“DOTS 面向數據的方法是我在 Unity 中編寫代碼時新的首選方式,因為一旦你克服了從 GameObject 轉向系統思維的初始障礙,就會發現它非常直觀。當然,性能優勢也是一大加分項。”
對于技術背景較弱的團隊成員,Stunlock 在 DOTS 代碼庫之上實現了一些工作流程,使他們能夠更直接地為項目做出貢獻。其中一個工作流程是允許創建預制件組件,這些組件可以生成并監聽預定義的事件,例如玩家生成時觸發的效果,或在滿足某些條件時應用的增益效果。通過這個系統,設計師可以在不需要深入了解 DOTS 的情況下,創建模塊化且易于管理的游戲玩法元素。
第二個工作流程主要用于功能實現,讓設計師可通過受限 API 在腳本層進行操作。這使他們能夠自主編寫能與組件交互的腳本,并注冊到不同事件系統中,從而顯著提升生產效率。
通過高清渲染管線(HDRP)釋放圖形和游戲玩法潛力
《V Rising》基于 HDRP 構建,這不僅實現了更高精度的畫面表現,并以有趣的方式塑造了玩家的游戲體驗。
Rasmus 表示:“體積霧(Volumetric Fog)無疑是塑造游戲視覺風格最核心的特效。當美術團隊確認采用 HDRP 管線后,整個藝術風格都圍繞其特性進行了適配,因此 HDRP 影響了游戲的整體外觀。”除營造哥特式氛圍、增強法術特效的表現力外,體積霧更被創新性地轉化為動態視野遮蔽系統,通過物理級光線散射實時隱藏玩家不可見區域。
Stunlock 使用HDRP 的基于物理的天空(Physically Based Sky)來管理《V Rising》的晝夜循環,這一機制對游戲玩法至關重要。在白天,如果玩家長時間暴露在陽光下會受到傷害,必須躲在陰影中移動。安全區域和危險區域必須明確定義,以避免這一機制讓玩家感到沮喪。
Filippa 表示:“實時渲染非常重要,不僅可以創建一天中不同時間之間的精美過渡,還可以直觀地告訴玩家哪些區域會被陽光灼傷。HDRP 在這方面表現得非常出色,允許我們的美術師為不同區域和不同時間設置不同的體積配置文件(Volume Profiles),并通過平滑混合實現自然過渡。”
Stunlock 充分利用了 HDRP 的腳本化功能,構建了數百種自定義視覺效果、著色器和后處理效果。Filippa 回憶了一個作為自定義后處理效果實現的效果:使靠近攝像機的物體變暗。這一效果貫穿整個游戲,并從一開始就為《V Rising》設定了氛圍。
她說:“以最開始的墓穴場景為例,高聳的石柱以壓迫性構圖籠罩吸血鬼角色。后處理通道(Post-Processing Pass)會根據物體與攝像機的距離動態加深近景柱體的明度,瞬間營造出令人不安的壓抑氛圍,這種視覺敘事的效果極具沖擊力。”
Stunlock 還根據他們的需求定制了 HDRP 的源代碼,刪除了冗余的功能和計算,以提高性能。他們擴展了體積配置文件(Volume Profiles),以驅動超出典型 HDRP 效果的組件。這使得技術背景較弱的美術師和設計師能夠在編輯器中獨立配置不同場景中的天氣、音樂和音效等元素。
Filippa 表示:“能夠將這些功能開放給美術師,真的非常強大。通過這種方式,他們可以在最少的技術支持下,讓每個生態區域在一天中的不同時間看起來完全符合他們的期望。這無疑節省了大量時間。”
進軍PlayStation 5平臺
《V Rising》是 Stunlock 的首款主機游戲,當索尼聯系他們時,他們抓住了這個機會來迎接新的挑戰,并觸達 PlayStation 5 上潛在的數百萬玩家。
程序員首先升級了 Unity 版本,以利用 ECS 1.0 的額外性能改進。PC 版本的主線程曾是一個限制因素,因此他們使用 C# Job System 將工作分配到其他線程。安全調度幫助他們輕松地在主線程上創建不干擾其他任務的工作。Rasmus 表示:“我們的大部分開發是在 Entities 1.0 之前完成的,現在升級后,我們經常使用日志記錄來查看發生了什么,這也非常有用。”
在圖形方面,Filippa 指出批處理對 PlayStation 5 的渲染性能有很大影響,因此他們在 HDRP 中構建了工具,用于改進的 UDIM(U-Dimensional)工作流,使他們能夠將具有不同材質的子網格組合在一起,以減少繪制調用。她說:“這可能為我們節省了數毫秒的 CPU 消耗時間,因為渲染數據可以以更高效的方式發送到 GPU。”
掌控黑夜
從 PC 版 1.0 正式發布、PlayStation 5 平臺登陸,再到近期與科樂美數字娛樂(KONAMI)旗下傳奇 IP《惡魔城》(Castlevania)的聯動合作,《V Rising》一直在不斷壯大。這是一個小團隊取得的非凡技術成就,他們敢于大膽嘗試新技術,為玩家創造了引人入勝且獨特的體驗。
通過 DOTS,Stunlock 能夠在《V Rising》中添加“更多的內容”,同時將性能問題降到最低;而 HDRP 則幫助他們創造了令人難忘的視覺效果,為玩家提供了更加沉浸和引人入勝的體驗。如今,《V Rising》是基于 DOTS 開發的規模極為龐大的游戲之一(以代碼行數衡量),而 Unity 正在利用從該項目的開發中獲得的洞察,使編輯器對于開發規模宏大的游戲的創作者來說更加高效和穩定。
Rasmus 表示:“我們最初并沒有打算加入這么多動態的和可破的壞元素,這些都是水到渠成的,因為我們能夠做到。這證明了 ECS 的強大,以及它能夠實現的顯著性能優勢。如果沒有 DOTS,今天的《V Rising》將會大不相同。”
Unity 官方微信
第一時間了解Unity引擎動向,學習進階開發技能
每一個“點贊”、“在看”,都是我們前進的動力
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.