2019年6月10日

《Contractors》通过令人惊叹的画面和精心打磨的枪战要素推动VR射击游戏发展

作者 Jimmy Thang

在2018年12月发行抢先体验版的《Contractors》已经成为一款被游戏迷钟爱的虚拟现实射击游戏。这款游戏拥有可能在多人VR射击游戏中首屈一指的画面,外观精细的枪支模型,以及全身逆向运动学系统和流畅的运行速度。考虑到《Contractors》是由独立开发商Caveman Studios的区区四名成员制作的,这一切就更令人惊叹。

我们找到机会采访了项目主管Weihan Ding和首席程序员Cong Ku。两人介绍了他们如何在保证满足VR严格的性能要求的同时实现该游戏出色的视觉保真效果,讨论了他们如何围绕VR的长处和弱点设计射击游戏,等等。  

(本视频转载自YouTube:视频原址

感谢你们抽出时间接受采访,也祝贺《Contractors》自从发行抢先体验版以来获得的种种成功。许多玩家评价说,《Contractors》在硬核射击游戏和休闲射击游戏之间找到了恰到好处的平衡点。这是你们设计游戏时的目的吗?

项目主管Weihan Ding:
是的。我们希望自己的游戏与其他VR射击游戏有显著不同。我们需要考虑两件事。一是TTK(击杀时间)的比例,二是游戏模式。目前《Contractors》提供控制模式来满足热爱竞技的硬核玩家,以及游乐场模式来满足比较休闲的玩家,后者有团队死亡竞赛和枪战游戏等选择。
1NHy0wPg.jpg
《Contractors》拥有令人惊叹的纹理、光照和粒子效果,画面水平可能是迄今为止制作的竞技VR射击游戏中最好的。你们是怎样实现这种图形保真度的?你们觉得UE4在图形方面是否给你们提供了优势?

首席程序员Cong Ku:在制作《Contractors》时,我们严格遵循了PBR工作流程。我们使用Substance Painter制作某些武器和道具。对于场景资源和纹理,我们使用了许多来自Quixel Megascan的照片扫描资源。UE4提供了所有现代化的渲染功能以及令人惊叹的材质和粒子系统。只要制作一个材质模板,然后将资源拖进场景里,就能得到看起来很不错的基础。

虽然《Contractors》具有很高的图形保真度,但是用户都称赞这个游戏出色的优化和流畅的运行速度。考虑到VR比较严格的系统要求,你们是如何保证性能的?

Ku:在渲染方面,有几条诀窍帮助了我们。我们首先进行资源优化:

  1. 确保场景中多边形数量高的网格体具有合适的LOD。这在使用MSAA的时候尤其重要,因为复杂的网格体往往会在三角形边缘周围造成更多过度绘制。
  2. 确保材质具有合理的着色器指令数。禁用“高质量反光”选项可以省去大量着色器指令。对用于小道具或粗糙表面的材质,这样做是值得的。启用“完全粗糙”选项也可以节省许多着色器性能。我们对几乎所有植物叶子材质都进行了这样的处理。
  3. 在必要时把使用相同材质的多个网格体合并成一个网格体来节省绘图调用。

我们还进行了两个引擎级别的优化:

  1. 我们使用了“注视点渲染”进行VR渲染,启用这种技术使我们的GPU性能有了小幅提升。
  2. 我们增加了一个动态分辨率半透明渲染通道来实现场景半透明效果。而UI则是放在另一个全分辨率渲染通道中。如果场景半透明元素的渲染通道使用的GPU预算过多,我们就按1/4分辨率来渲染这些元素。

在游戏性方面,我们发现下列做法很有帮助:  

  1. 避免使用启用了“生成重叠事件”的组件。在移动物体上更新这些重叠事件的成本是非常高的。
  2. 不要设置Actor/组件在同一帧里变换一次以上。如果角色和难处理的物体有许多子组件和很深的组件层级,那么多次更新它的变换就会产生很高的性能成本。要避免使用SetRelativeLocation(...)然后SetRelativeRotation(...)之类的办法,应该使用SetRelativeLocationAndRotation(...)。如果你确实需要在同一帧里多次修改组件的变换,那么使用FScopedMovementUpdate也可以避免不必要地更新子变换。
  3. 使用“蓝图原生化”工具将一些需要大量计算的蓝图原生化。
WBAX-O11.jpg
《Contractors》具有令人钦佩的逆向运动学系统,它能够做到渲染全身,而许多VR游戏都避免这么做,仅仅使用三个接触点。你们是怎么在游戏里实现它的?

Ding:
我们使用了一个第三方插件,它帮助我们节省了很多用在逆向运动学上的时间。我们花了很多时间来研究IK的工作原理,并且小心地将它与美术创建的骨架网格体一起调整。虚幻的动画蓝图也提供了另一些控制IK系统的优秀工具。

在这个游戏里,武器的操作、装填和射击给人很棒的感觉。为了使它们在VR里有合适的表现,你们是不是做了很多原型设计?

Ding:
我们做了大量的原型设计。我们向枪械专家征求反馈,了解特定武器的操作方式,它们的后坐力,而且很关注RPM等武器的细节。我们希望确保每一种武器的感觉都和它们的真实原型一样;在M16之类的武器上甚至有枪栓卡榫按钮,你可以使用控制器点击按钮来完成开栓动作。

虚幻的组件系统也使武器组装变得很容易。在实现了所有工具之后,我们只需要添加枪栓组件、扳机组件、前握把和武器主体,然后就成了!一件简陋的武器已经可以使用了!这在原型设计阶段帮了大忙;武器的各种零件可以方便地互换,而我们可以从封测玩家那里得到反馈,快速进行更改。
qOh7m1O1.jpg
《Contractors》目前的地图有很高的多样性和趣味性。能不能谈谈你们为竞技性VR设计游戏创作地图的思路?

Ding:
VR射击游戏最大的特色之一就是沉浸感;当你蹲在掩体后面的时候,你是真地在蹲下。我们为《Contractors》设计地图时,主要目标就是不破坏玩家的沉浸感。我们在地图里添加了大量掩体。玩家需要不断地观察所有方向来发现敌人的活动,这意味着他们需要在游戏里始终谨慎地行动。

其次,我们是根据游戏模式来设计地图布局的,也就是说我们需要认真思考在哪里放置出生点、目标位置和堵塞点,避免让一方获得不公平的优势。

地图和枪战的设计是以近距离战斗为核心还是远距离战斗为核心?

Ding:
在VR中,像素分辨率是比较低的,因此我们把重点放在30-60米的中距离战斗上,在这样的距离上,玩家不用瞄准镜瞄准时可以比较清晰地看到目标。在游戏中,玩家可以选择轻型防弹背心,以便携带副武器,所以我们除了近距离战斗的室内目标之外,还设计了一些用于远距离交火的狙击点。
81Z1Zdgj.jpg
我们可以期待将来出现更多地图吗?

Ding:
当然可以!我们现在每月更新一次《Contractors》。将来的地图会多得多。

你们觉得UE4作为VR开发引擎怎么样?

Ku:
对于VR开发来说,它真是棒极了。UE4对各种VR平台有出色的支持,而且很容易针对每种平台切换和测试。

团队有特别喜欢的UE4工具或功能吗?

Ku:
蓝图系统,总的来说,它真是个杰作。用它来安排工作流程非常方便。例如,在我们制作武器的时候,程序员可以在C++里制作一些基础的Actor和组件,向蓝图公开某些参数/函数,并在必要时创建一些组件可视化器。然后设计师和美术就可以直接调整参数/公开的函数来改变武器的行为。另一个让我们怎么夸奖也不为过的工具就是UE4的分析工具。它具有让我们了解游戏性能所需的一切功能。
WUc6bOsv.jpg
虚幻商城对你们有没有帮助?

Ding:
虚幻商城对我们这样的小型游戏工作室的帮助真是太大了,它提供了很多高质量的资源,在原型设计和最终产品制作上都为我们节省了大量时间。Epic Games推出每月免费资源的举措更是要让我们翘大拇指称赞!

能够访问UE4的源代码对工作室有没有帮助?

Ku:
当然有。能够研究和修改源代码帮了我们大忙,让我们解决了很多本来“无解”的问题。这种功能也大大方便了我们添加一些特定于游戏的引擎级修改/功能。

迄今为止你们在开发游戏的过程中得到的最重要的经验是什么?

Ding:
那就是我们对VR的认知。这是一种了不起的平台,有巨大的潜力。我们很希望看到这个行业在2019年有什么进步。

再次感谢你们抽出时间接受采访。人们可以在哪里了解更多关于《Contractors》的信息?

Ding:大家可以访问我们的网站:http://contractorsvr.com/或我们的Steam页面:https://store.steampowered.com/app/963930/Contractors/