案例研究 - 在 RoboRaid 中使用空间音效

本文介绍 Microsoft HoloLens 体验团队在为 RoboRaid 混合现实第一人称射击游戏创建音频时面临的难题。

技术

空间音效是 Microsoft HoloLens 最令人兴奋的功能之一,当对象不在视线范围内时,用户可以通过它感知周围情况。

在 RoboRaid 中,空间音效最明显且最有效的使用是提醒玩家注意其视线之外发生的情况。 例如,突袭者可能会从房间内任何扫穿的墙壁进入。 如果你未正对它进入的位置,则可能发现不了它。 为了提醒你注意这种入侵,系统会让你听到突袭者进入的位置发出的独特声音,让你知道需要快速行动来阻止它。

幕后

为 HoloLens 应用创建空间音效是一个全新且独特的问题,该问题解决起来可能很难,因为没有任何已完成的可供参考的项目。 希望我们在开发 RoboRaid 时面临的音频挑战的这些例子会对你创建自己的应用的音频有所帮助。

注意 CPU 的负担

空间音效对 CPU 的要求可能很高。 对于 RoboRaid 这样会让玩家忙得不亦乐乎的体验,必须将任何给定时间的空间音效实例数保持在 8 以下。 通常,它与设置不同音频事件的实例数限制一样简单。 达到限制后出现的任何实例都会被终止。 例如,当蜂产卵时,其蜂鸣音在任何给定时间都被限制为三个实例。 考虑到一次只有大约四个蜂可以产卵,三个蜂鸣音已经足够了,因为大脑无法跟踪那么多发声类似的音频事件。 这样可以释放资源供其他空间音效事件(例如敌方爆炸或敌方准备射击)使用。

对成功的躲避进行奖励

躲避机制是 RoboRaid 中最重要的游戏机制之一,在我们看来也是 HoloLens 体验真正独到之处。 因此,我们希望对成功躲避的玩家给予丰厚的奖励。 在开发过程中,我们很早就将多普勒的“嗖嗖”音制作得很吸引人。 最初,我的计划是使用循环,并使用音量、音高和滤波器来实时操作它。 此计划的实施将很复杂。 在提交资源来生成它之前,我们创建了一个成本低廉的原型,使用的资产带有多普勒音效,目的是了解其效果。 我们优秀的开发人员开发出了这个“嗖嗖”音资产,该资产会在炮弹飞过玩家耳边时提前刚好 0.7 秒进行播放,结果令人赞叹! 不用说,我们抛弃了更复杂的解决方案,实现了此原型。

(若要详细了解如何创建内置了多普勒效果的音频资产,请参阅 2 分钟内 100 个嘶嘶声。)
Successfully dodging an enemy's projectile rewards the player with a satisfying whizz-by sound.

丢弃没有效果的声音

最初,我们希望在玩家成功躲避敌方的炸弹后在玩家身后播放爆炸声,但出于多种原因,我们决定放弃这个音效。 首先,它并没有像用于躲避动作的嗖嗖声特技效果那样有效。 当炮弹击中你身后的墙壁时,游戏中出现的其他声音也可能会掩盖该声音。 其次,我们在地面上没有设置碰撞效果,因此当炸弹击中地面而不是墙壁时,无法播放爆炸音效。 最后,空间音效存在 CPU 成本。 敌方精英蝎子(一种可在墙中爬行的生物)有一种特殊的攻击,该攻击可发射大约八个炸弹。 这不仅会在混音中造成巨大混乱,而且还会引入难听的噼啪声,因为它对 CPU 造成了很大的负担。

展现被击中

我们在 HoloLens 上遇到的一个有趣的问题是如何才能传神地展现出玩家被击中的情形,这很困难。 混合现实体验的成功之处在于能够让你有一种故事就发生在你身上的感觉。 这意味着,你必须相信你正在自己的客厅中抵抗外星机器人的入侵。

显然,玩家在被击中时不会有任何感觉,因此我们必须寻找一种方法来让玩家确信自己遇到了麻烦。 在传统游戏中,你可能会看到一个指示你的角色已被击中的动画,或者屏幕可能会闪现红色,同时你的角色可能会哼哼几声。 由于这些类型的提示在混合现实体验中不起作用,因此我们决定将视觉提示与一种夸张的声音组合在一起,来表示你已受伤。 我制作了一个很大的声音,该声音在混音中非常突出,以至于会盖过其他一切声音。 然后,为了让它更加突出,我们添加了一个简短的警告声音,就像核潜艇下潜时发出的声音。
When a player gets hit in RoboRaid, they see a visual cue, but also get an exaggerated audio cue that tells them they've taken damage.

从小扬声器发出大声音

为了满足设备的需求,HoloLens 扬声器既小又轻,因此你不能期望听到太多低音。 与针对智能手机或手持游戏设备进行开发类似,声音设计师和作曲者必须考虑到其音频的频率内容。 我始终使用全频范围来设计声音或编写音乐,因为用户可以选择戴耳机。 但是,为了确保与 HoloLens 扬声器兼容,我偶尔会运行一个测试,方法是:在我碰巧正在使用的任何 DAW 的主控机件中放置一个 EQ。 EQ 设置包括一个大约 600 Hz 到 700 Hz(陡峭度不是太高)的高通滤波器,以及一个大约 10K(陡峭度高)的低通滤波器。 这应该可以让你大致了解声音在设备上的播放效果。

如果你依赖低音来提供音乐中的和弦变化感,你可能会发现,应用此 EQ 设置时,音乐完全没有和弦基音的感觉。 为了解决此问题,我向低音添加了一层高一个八度的内容(带有一些丰富的泛音),混音后会获得和弦基音感。 有时候,使用谐波失真来调高泛音会在上限范围内提供足够的频率内容,让我们的大脑认为其下还有内容。 这适用于特技效果,例如撞击、爆炸或特殊时刻的声音(如关底怪物发出的超强攻击)。 你真的不能依赖低音来让玩家获得撞击感或沉重感。 与音乐一样,使用谐波失真来模拟嘎吱音绝对是有效的。

使音频提示突出

自然,团队中的每个人都想要华丽的音乐、响亮的枪声和巨大的爆炸声,但他们也希望能够听到画外音或任何其他对游戏来说很关键的音频提示。

在使用全范围频率的主机游戏中,你可以根据声音的重要性通过更多选项来划分频率。 就 RoboRaid 来说,我受到剪切声音后可以获得的频率范围数量的限制。 如果使用低通滤波器,则会从声谱的高频部分剪切过多内容,声音中几乎不会留下任何内容,因为没有太多低频。

若要使 RoboRaid 声音在设备上尽可能大,我们必须缩小整个体验的动态范围,通过为不同类型的声音创建清晰的重要性层次结构来广泛使用闪避。 我将闪避从 -2 dB 设置为 -6 dB,具体取决于重要性。 我个人不喜欢在游戏中出现的明显闪避,因此我花了大量时间来优化淡入/淡出计时和音量衰减量。 我们为空间音效、非空间音效、VO 设置了单独的总线,并且设置了干总线,无需对音乐进行混响操作。 然后,我们创建了高优先级总线、关键总线和非关键总线,以便将资产进行设置后转到相应的总线。

我希望音频专业人士能够像我在 RoboRaid 上工作一样,在他们自己的应用上愉快且充满激情地工作。 我迫不及待地想看到(和听到!)Microsoft 外部的优秀人士所创作的 HoloLens 作品。

自制

我发现,若要让某些事件(例如爆炸)的声音“更大”(就像响彻整个房间),一个技巧是为空间音效创建单声道资产,将其与 2D 立体声资产混合,然后在 3D 中播放。 这确实需要一些优化,因为立体声内容中信息过多会降低单声道资产的方向性。 但是,进行适当的平衡就会产生会使玩家朝正确方向转动头部的巨大声响。

你可以使用下面的音频资产自行尝试强劲的声音:

方案 1

  1. 下载 roboraid_enemy_explo_mono.wav,将其设置为通过空间音效进行播放,并将其分配给某个事件。
  2. 下载 roboraid_enemy_explo_stereo.wav,将其设置为在 2D 立体声中进行播放,并将其分配给与上述事件相同的事件。 由于这些资产已规范化为 Unity,因此需减少这两个资产的量,使之不会进行削波。
  3. 同时播放这两种声音。 转动头部,感受空间音效。

方案 2

  1. 下载 roboraid_enemy_explo_summed.wav,将其设置为通过空间音效进行播放,并将其分配给某个事件。
  2. 播放此资产本身,并将其与方案 1 中的事件进行比较。
  3. 尝试对单声道和立体声文件进行不同的平衡。

另请参阅