在VR发展的初期,很少有3A级开发者比CCP Games更早关注投入其中。4月24日,上海CCP Games主管Alex Riviere以及技术总监 William RavaineUnreal Open Day活动。活动上二人分享了《Gunjack2》开发过程中对于性能考量、优化、蓝图以及音频使用的技巧。

Alex Riviere强调了空间音频对于塑造游戏沉浸感的重要性,在Gunjack2加入了大量语音。这些语音不仅仅用于故事的传达,同时也用于游戏的反馈。他们以此来引导玩家进行转向或者改变操作,将注意力瞄准到正确的目标上。

William Ravaine分享通过合适的工具来对性能进行把控,包括FPS Chart来查看性能数据,Finding Bottlenecks和napdragon Profiler来观测渲染情况。此外其还提到了一些节约性能和开发费用的小技巧。

蓝图的设计理念是将系统写进代码中,在蓝图中对它们进行延展,且适用于一些高级的逻辑流程。二人认为在代码中使用核心功能,容易成型,进行重构和调试,并得到所需要的效果。

以下是演讲内容,VRZINC整理有删减:

Alex Riviere:我们团队希望能够让大家提供这样一款基于移动平台、低成本且随时可以玩的游戏,而Gunjack也是我们最为畅销的VR游戏之一。

先给大家看下Gunjack2的开发流程。游戏采用混战式的模式,一共9个月的开发流程,20个开发者,包括我自己、设计、程序、美术、音频等等。前四个月做概念和原形,5个月的时间真正进行内容制作。于去年12月1号发布游戏,发售后的两个月不断升级和增加新的内容,包括多人模式。

加入多人模式增加重玩性

William Ravaine:在Gunjack1中我们将视角和驾驶舱进行了锁定,目的是不会在射击的时候阻碍玩家的视线。而在Gunjack2中我们选择用控制器瞄准敌人进行射击,玩家获得更好的临场感和沉浸感。

与此同时,我们对游戏系统进行了扩充,加入了Power-UP系统,玩家在游戏过程当中可以积累能量点数。通过控制器进行滑动选择三种不同的技能。此外我们在战斗中加入了交互设计,敌方一些导弹攻击我们可以实现反弹效果。

为了在Gunjack2中提供更好的重玩性,我们也引入了一些在线元素,加入即时生存的任务,例如每一天玩家都可以参与到生成的挑战任务中,与五位玩家一起竞争最高分。每一周我们都会生成一个系列的任务链,而且难度不断增加,相当于小型的战役模式。玩家在完成任务后可解锁新的Power-UP,同时游戏支持全球排名榜和成就系统。

用语音来实现叙事和引导

Alex Riviere:由于我们在玩法上面存在一些限制,所以我们加入了任务之间的过场动画。每一个任务都有这样的动画,动画会将下一个任务的背景介绍给玩家。

此外我们还加入了很多的语音,通过剧情式的语音形式,任务之中玩家会收到来自指挥官的无线电语音,用通讯连接的形式在界面上面显示出来,可以看到说话人的头像。

这些语音不仅仅用于故事的传达,同时也用于游戏的反馈。我们以此来引导玩家进行转向或者改变操作,将注意力瞄准到正确的目标上。

选择合适的工具进行性能分析来达到性能目标

William Ravaine:我们做Gunjack1的时候,主要针对是Google Pixel和Pixel XL机型。我们目标是达到60帧,1080的分辨率,这样在安卓系统中的持续模式相当于一个性能分析的模式。除了可以持续进行测试外,同时不过热处理器。

通过我们的VRSDK可以进行各种的设置,包括能够进行异步投影,来减少视觉延迟感。之前在我们的设备之上测试出来每帧大概3毫秒的样子,然而真正每帧的时间大概有7毫秒的时间,而且一开始的时候,我们是没有办法得到最终的硬件规格。因此我们也是比较保守定义了性能的预算,50-60个的多边形,120 Draw Calls的调用。

我们使用了单向动态光源,而不是静态的光源。我们希望纹理的大小小于1K,便是实现更好的压缩效果。此外我们没有做任何后处理的效果,因为这样会大幅提高运行成本。

我们通过性能分析达到我们的性能目标,常用的工具是FPS Chart。如果一个敌人向你瞄准或者有一个转换的战斗场景,会有更多的内容在这张表上面出现。其它一些性能的数据,是在每一个任务完成之后出现的。通过这张图可以非常清楚的发现问题所在之处,而且在数据库中我们可以时常查看性能相关数据。

我们可以通过一个非常有用的工具来看到具体性能水准是什么样的,但还需要更多的细节才能够找出来性能方面的问题。因此我们还使用了Finding Bottlenecks和napdragon Profiler,来观测渲染的建立。

玩游戏的时候会出现温度很高的情况,防止设备被损害,会把CPU和GPU降低,这叫SoC Throttling。低性能的状态下,特别是在VR环境中,需要去比较两种文档数据。比如在做优化工作时,需要比较建模数据之前和建模之后的情况。保证用户可以在不同情况进入并且进行体验。

可持续模式就是我前面提到的,能够提供很大的帮助,随着时间的推移越稳定。如果设备用的时间长了,实际温度高了。将设备关闭一个小时左右,它就可以恢复了。

一些维护性能的小技巧

在手机上如果驱动量过大,可能导致Gunjack2的效果不好。因此我们采用了一个动态的方法,同样的事情在同样的时间发生,这在移动手机上的使用非常重要。

在对物体的渲染过程中我们会分别进行,其中有一些非常低的分辨率和透明度,基本上人们不会注意到它。

为了省钱,我们在对驾驶舱进行了渲染的过程中,在屏幕上会有大面积的天空出现。此外为了避免比较大的费用,我们需要将一些角色进行回收而不是毁灭。

这是一个非常简单的技术,但需要注意的是,游戏开发人员在重新使用这些角色的时候,需要适当使用,而且可能会出现程序方面的漏洞。在我们的这些战役当中,有时候会有一些船是无敌舰。

蓝图和音频使用的注意点

蓝图是非常方便、有效的工具,我们在原型和预测的结果端都进行了使用。但我们认为两者的使用应该是不同的,在预测阶段不一样,如果滥用蓝图的话反而会导致困难的出现。

蓝图的设计理念是将系统写进代码中,在蓝图中对它们进行延展,换句话说我们支持的是核心功能在代码中使用,这样它容易成型,进行重构和调试,然后得到所需要的效果,因此蓝图也适合一些高级的逻辑流程。

在Gunjack中,蓝图的教材是由我们一个设计方设计,每一个教材都有非常独特的要求,所以蓝图特别适用我们这样的情况。我们还在UI逻辑中使用了蓝图。同时针对数据库我们基本上要进行密码设计,然后设置一层、蓝图一层,保证这个数据有合适的组件,能对各种各样的事件进行反应,比如着火这样的事情。

我们在通关蓝图上还使用了一些自定义的物体或者素材,让玩家以不同的方式来完成每个任务,类似如何实时完成任务,视角应该如何保持等等。

Alex Riviere:最后,为什么说音频对于Gunjack2非常重要?VR最大的优势在于沉浸感,但想要让玩家身临其境,我们发现需要通过各式各样的信息包围他们的感官。正如之前提到,除了视觉,用户需要更多感官的感知。空间音频是我们在开发Gunjack2中营造身临其境感的重要方式,甚至有玩家会跟着音乐一起歌唱。