BigBox VR:多人联机VR游戏的10个开发建议

时间:2022-02-09 22:46:29       来源:腾讯网

相比于单机游戏,一款多人VR游戏可能遇到更多挑战,比如用户基础、运行速度、体验感等等。在Quest带领下,VR用户人数持续增长,多人VR游戏的春天似乎已经开始,VR吃鸡游戏《Population:One》上线Quest仅几个月时间,营收就已经突破1000万美元。

据青亭网了解,《Population:ONE》首发时的刷新率达到72FPS,地图面积1x1千米,支持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游戏渲染方式的有效性,优化应用

该工具为开发者提供多项验证指标,包括图块热图、图块时间线、性能统计数据等等。参考:FB

关键词: vr游戏 boxvr population:one