研发实战:将Oculus Go游戏《Tsuro》移植到Oculus Rift
查看引用和消息源请点击:映维网
将Go游戏移植到Rift
(映维网 2019年06月19日)Thunderbox Entertainment的丹·泰勒(Dan Taylor)是一位游戏领域的资深从业者,曾参与过《荣誉勋章》,《杀手》和《古墓丽影》等热门内容的制作。他早前曾向我们分享过他们团队在开发移动VR内容时的经验与教训。
现在,他再次向我们介绍了将Oculus Go游戏移植到Rift平台时需要注意的事项。以下是映维网的具体整理:
要了确保我们首款主要的VR内容能够流畅地支持Oculus Go,我们进行了大量的研究:你可能已经看过Unity分享的关于如何为移动硬件优化游戏的文章,或者看过将Rift游戏移植到Quest的视频介绍。我们Thunderbox Entertainment总是在尝试与众不同的道路,所以这篇文章感觉有点像是“倒过来”。
要将一款专为移动设备开发的VR体验升级成支持PC,这其中有多么困难呢?实际上并不难,前提是你知道自己在做什么,并且专注于以最小的成本实现最大的价值。
我们的游戏《Tsuro:The Game of The Path》是基于同名的桌面游戏,所以核心玩法大致相同:玩家轮流将棋子放在棋盘,然后棋子将沿着棋盘路径行进。如果路径把它们引导到边缘,则棋子剔除。获胜者是最后一位仍在游戏中的玩家。《Tsuro》的虚拟版本要大70倍,背景则设置成古老的日本寺庙。由于游戏玩法十分简单,所以我们专注于提高沉浸感和环境保真度。
如下所示,《Tsuro》采用了低多边形风格,这在Go中看起来非常优秀。今天我们将概述使得游戏配得上Oculus Rift的额外性能的步骤。
1. 六自由度和Touch
我们首先解决的问题是六自由度头部追踪和Oculus Touch控制器。我们是通过PC开发《Tsuro》,而为了加速迭代时间,我们已经实现了其中的大部分,但游戏需要进行最后的润色修改。由于我们的环境存在坡度,我们编写了一个简单的高度调整脚本,这样用户就可以在屋顶和坡道周围走动。由于《Tsuro》的Go版本设计为支持单个控制器,我们同时必须确保玩家可以轻松地切换左手控制器和右手控制,同时能够选择将Oculus Touch控制器用于Rift或Rift S。
最终,控制器更新中的最关键一点是添加合适的触觉反馈。对于下面的动图,你实际感受时会更加炫酷。
利用现有的音频文件来驱动控制器触觉非常简单,但我们发现更为夸张的波形会更加合适,所以我们使用了一个状态机来直接控制振动,并且我们的补间系统动态生成波形(上面的爆炸动图如下所示)。这使得我们能够以更快的迭代时间精确控制控制力。如果你希望进一步了解有关自定义补间系统,请参阅我之前分享的博文。
我不知道应该如何强调优秀的触觉反馈对于一款游戏的重要性:当我们实现了这一点后,一切都感觉更为“真实”。
另外,在这个时候你的游戏版本应该非常适合Oculus Quest,所以你可以进行相应的扩展。
2. PBR着色器
现在是时候利用高端的图形性能力了。为了提升图形质量,我们用高级的PBR着色器替换了所有移动着色器。PBR着色器的镜面高光确实可以提升环境的逼真度和沉浸感。
简单吗?不简单。照明响应的改动意味着我们的UI变得完全不可读。为了令其再次可读,我们需要小心翼翼地调整照明,选择UI材质,并且重新为大部分界面上色。一旦UI恢复,我们调整特定元素的材质属性,并且将用稍微更高端的着色器来替换Mobile Water Shader。请留意水体:要支持VR,反射和折射需要对着色器进行专门的调整。
3. 调整照明和阴影
移植过程中最苦难的一点可能是照明。对于移动端,为了平衡性能和画面,我们坚持下面的标准:
- 环境是单个对象
- 环境未点亮,照明提前烘培
- 只有主要的游玩区域有阴影
- 一次只为少数物品提供阴影
- 阴影比较生硬和低分辨率
- 没有环境照明
对于PC,我们可以推翻上述标准:
- 我们可以分割环境并允许更高分辨率的照明贴图
- 采用混合的环境照明,大部分仍然主要是烘培,但…
- 阴影贴图允许我们为整个场景体提供动态阴影
- 每个动态对象都可以投射实时阴影
- 阴影比较柔和和高分辨率
- 天空和点亮环境
为了令烘焙照明看起来尽可能出彩,我们进行了大量的实验,如调整环境照明和纹理密度。Unity中的烘焙照明是一种黑魔法,我强烈推荐这个优秀的YouTube视频教程 。重要提示:当迭代烘焙照明时,使用超低分辨率进行快速读取,然后当对结果感到满意时,你就可以加码,并在它计算更为详细的版本时出去享用午饭。高分辨率的贴图可能需要一段时间进行烘烤,但最终的结果绝对值得。
既然你拥有这些高级的着色器,你可以通过添加动态照明来进一步利用它们。Oculus建议最多使用3个动态照明,但由于我们的环境针对移动设备进行了优化,所以我们可以使用更多的动态照明。我们将其用于火炬效果,并使游戏对象自行发光。我们尝试了正向渲染和延迟渲染,但都没有发现有太大的性能差异。
4. 视觉效果与颜色分级
现在照明效果已经调整完毕,接下来我们升级FX。
我们将移动天空盒改为动态生成的天空盒,其中包含漂移的云朵,一个位于正确照明位置的太阳,以及一个可调节的渐变曲线。然后,我们将大部分的低多边形无照明效果换成更为精细的着色器(最明显的是花瓣,尘埃和坩埚)。
最后,你可以使用图像后期处理。设置起来非常简单,并且可以令游戏画面大为改观。需要强调的是,这里的诀窍是凡事不可过量:很多效果在VR中看起来非常糟糕(如景深),但我们采用了细致的颜色分级和微妙的Bloom效果,从而令《Tsuro》为Rift带来更为梦幻的氛围。
5. 高保真度音频
在将游戏移植到Rift时,音效的差异令我们感到十分惊讶。尽管我们没有时间研究Oculus的声音整合,但《Tsuro》的Go版本包含一个非常动态的音景,可为逼真感提供微妙的混响。对于PC版本,为了提高声音衰减的逼真度,我们发现几乎每个声音发生器都需要重新调整。请注意:在Unity中,包含对数衰减的声音永远不会是完全无声(请参阅下面的曲线)。我们没有在Go版本中发现到这一点,但随着Rift保真度的提高,这个细节会非常明显。
6. 提交前的测试
如果你已经为Go发行过游戏,你应该非常熟悉Oculus的VRC测试。对于帮助VR生态系统保持高质量的内容,这项测试十分重要。值得注意的是,Rift版本的测试存在微妙的差异。主要是当你摘下头显时,你必须暂停游戏并禁用控制。请务必查阅官方的检查表,并使用自动验证工具来快速过一遍需要注意的地方。
Oculus Debugging Tool非常便于在开玩游戏时显示性能数据。奇怪的是,我们发现通过Oculus菜单启动内容会更加流畅,而不是直接运行.exe更加流畅。
一旦你确定游戏能够达到90FPS,接下来就是最后的调整。
7. 额外的细节
一切看起来都华丽,而且帧率非常流畅,但还没有达到要求。这时你还可以做什么呢? 《Tsuro》的Go版本有一个似乎人人都非常喜欢的细节:一只随机出现的小狐狸在寺庙中闲逛。对于Rift版本,我们决定给它提供一定的伙伴:池塘里的锦鲤,篱笆上的雀鸟,以及一只嗡嗡作响的大黄蜂。
作为添头,这个增强版动物园可以通过一定的优化支持Go版本。
最后,我们花费了一点时间来为Oculus Home开发Custom Items。我们利用Boxshot将标准FBX格转换为可以在本地进行测试的GLB文件,然后再上传到Oculus Dash。我们将物品与一些酷炫的成就关联起来,而玩家现在可以解锁Tsuro棋盘游戏,并通过可爱的日式立体模型来装饰自己的虚拟空间。
如果你希望直接赠送给玩家,你可以将其作为Entitlements并分配给游戏。
8. 是时候发行了
六自由度运动,触觉反馈,PBR着色器,精心设计的照明,增强的视觉效果,重新平衡的音效,VRC合规性,以及一点额外的元素,《Tsuro》感觉比以往更加身临其境。通过额外的细节和细致的润色,画面看起来非常出色……
我们很高兴能《The Path of the Path》能够登陆Rift,并希望这款优化的体验能够吸引更多的游戏玩家。