Esther|編輯
相比於單機遊戲,一款多人VR遊戲可能遇到更多挑戰,比如用戶基礎、運行速度、體驗感等等。
在Quest帶領下,VR用戶人數持續增長,多人VR遊戲的春天似乎已經開始,VR吃雞遊戲《Population:One》上線Quest僅幾個月時間,營收就已經突破1000萬美元。
據青亭網了解,《Population:ONE》首發時的刷新率達到72FPS,地圖面積1×1千米,支持24個玩家同時競技。
實際上,72FPS是Quest 1的最高刷新率,而Quest 2最高可提升至120FPS,因此未來該作是否將支持更高的刷新率也值得期待。
有了足夠的用戶基礎後,那麼如何流暢、快速運行大規模的VR遊戲地圖,則曾為該作開發者BigBox VR致力於解決的問題。
在不久前舉行的FC大會期間,BigBox與Meta VR內容團隊的開發者關系工程師Cristiano Ferreira一起,分享了開發多人VR遊戲的建議和經驗,值得開發者們借鑒。
據悉,Ferreira主要負責幫助開發者提升VR遊戲的運行速度、流暢性,讓VR遊戲的刷新率達到Quest標準。
而《Population:One》美術與技術負責人Greg Chudecke,過去20年一直從事優化、編寫遊戲的引擎和工具,曾為PS 3、Gear VR開發遊戲。
另一位Gabe Brown則是BigBox聯合創始人。
Brown表示:我們為Quest 1研發的VR遊戲原型,成為了後來《Population:ONE》更新迭代的基礎。
在迭代過程中,我們總結了十項經驗:
1,Quest端渲染架構:基於圖塊的渲染架構TBR《Tile-based render》對比即時模式架構IMR《immediate mode rendering》
《Population:ONE》開發團隊的宗旨是,『根據硬件去優化,而不是與之對抗』。
因此,為了在Quest一體機上流暢運行多人VR遊戲,該作采用了TBR渲染架構,好處是簡化了整個渲染流程,而且渲染質量高、節省算力、運行速度更快、降低散熱。
不過,TBR架構的渲染效果受到帶寬限制,因此顯存架構也需要基於圖塊,而不是實時運行完整的系統存儲。
IMR為一體式系統,每一幀都直接渲染、運行設備顯存。
而TBR則是僅渲染每一幀調用的像素,而且每一幀還會分成多個圖塊,分別渲染。
TBR架構分為兩部分,即分塊和渲染。
換句話說,TBR適用於移動設備,而IMR則是傳統臺式機采用的GPU架構。
2,降低Drawcall次數和渲染狀態變化《Setpasses》,也與TBR渲染架構有關
Chudecke表示:渲染遊戲過程中每次Drawcall所需的時間不同,與渲染狀態的變化程度有關。
為了減少渲染狀態變化,開發團隊采用了一種單一的著色器《Uber Shader》。
此外,該作的光照模型僅采用一個定向光線。
也就是說將畫面中的各種變量固定,這樣渲染狀態將隻有一次變化。
3,分層細節級別渲染系統《HLOD》
Chudecke表示:HLOD系統是在Quest上流暢運行大規模VR場景的關鍵。
HLOD系統指的是,大規模網格模型組通常具備較少的細節,而單獨的網格模型則具有更多細節,所以前者drawcall次數更少。
而為了批量渲染大規模VR環境,開發者將遊戲的背景分成多個網格組《一次drawcall可替代每個獨立網格模組的drawcall次數》,進一步降低drawcall,從而提升渲染效率。
此外,遠處的場景通常不那麼清晰,因此不需要渲染那麼多細節和色彩。
換句話說,《Population:ONE》在VR玩家眼前用Uber著色器來渲染畫面細節,而遠處則隻用Uber著色器來渲染頂點。
遠近不同程度的細節可以自然融合,就像是在現實生活中,人眼前的畫面比遠處要更清晰。
4,優化主線程:使用Burst Complier優化渲染流程,多線程渲染
將一些計算任務交給服務器,然後串流至VR客戶端中,比如第三人稱角色動畫,以及手肘、手、頭部的反向動力學計算等等。
不過,這種方案需要考慮到帶寬占用率。
《Population:ONE》采用了一個自定義的貼圖、粒子系統,該系統的特點是僅在GPU上運行,通過計算著色器來渲染。
5,將渲染任務分配給多幀圖像
Ferreira表示:Quest 1刷新率足夠高,可達72Hz甚至高達90Hz。
因此,或許可以將VR遊戲渲染任務分配給多個圖像幀。
通常,VR遊戲的默認刷新率在30-60fps之間,而大多數商用遊戲引擎默認每一幀圖像都更新。
不過,開發者可以手動設置圖像更新頻率,比如每三幀更新一次等等。
在《Population:ONE》中,開發者盡量限制動態目標的更新率,也就是說每幀主線程的LOD《細節級別》變化限制在1到2次,以避免卡頓、延遲。
此外,遊戲角色的更新頻率也根據距離有所變化,1公裡遠的角色比玩家附近的角色更新頻率更少,這樣的好處是節省帶寬,同時提升刷新率。
雖然不是每幀畫面都更新,但大多數肉眼難以察覺。
6,GPU實例化
一次Drawcall調用多種像素,好處是省去驅動驗證的時間。
隻需要一組由多塊模型組成的網格就能渲染樹木、窗戶等物體。
7,嚴格控制內存占用率
Brown表示:為移動VR平臺開發內容的另一個挑戰是,需要嚴格控制內存使用率。
Quest采用了一種共享的內存模式,也就是說系統和圖形緩存都使用同一個存儲空間。
因此,如果不嚴格控制內存占用率,VR遊戲將很快用盡VR一體機的緩存。
於是,BigBox利用Unity引擎的addressables框架來降低VR遊戲的內存占用率,原理是在線下異步載入資源,以控制載入、卸載資源的時間。
Brown表示:addressables框架深度集成在《Population:ONE》角色、槍支的資產流程中。
8,避免後期特效渲染,這是出於對GPU存儲的考慮,而且TBR框架還得重新設置
同時,也不支持抗鋸齒、固定註視點渲染優化功能,視覺效果無法提升。
建議優化VR中移動時遮擋餘光視覺的陰影,即:從邊緣至視覺中心透光度逐漸增強,也就是說最邊緣完全不透光,而到了視覺中心陰影越來越透明,與中間的視覺自然過渡。
不過,如果渲染這種效果的每一個像素成本較高,也許可以設置兩個網格,一個是純黑的,另一個半透明《去除中間註視點位置》,兩個網格根據距離來調整中間透光區域的大小。
9,測試基準是關鍵
早期,為了測試《Population:ONE》的基準,BigBox邀請到18人測試這款遊戲,每天遊戲時長達8小時。
為了減少測試時間,BigBox定制了18臺用於測試遊戲的Quest 1《集成錄制遊戲過程的攝像頭》,可以將基準測試時間降至20分鐘,是原來的五分之一。
此外,BigBox還使用機器人來測試遊戲。
10,利用Oculus提供的RenderDoc來驗證VR遊戲渲染方式的有效性,優化應用
該工具為開發者提供多項驗證指標,包括圖塊熱圖、圖塊時間線、性能統計數據等等。
參考:
《 END》
每天五分鐘,輕松了解前沿科技。
——青亭網