《<Alan Wake 2>背后的声音设计》系列博文
《<Alan Wake 2>背后的声音设计》系列博文深入探讨了游戏的音频设计在创作和技术上面临的挑战。同时,揭示了背后做出的精心决策和大胆创新。从构建动态对白和沉浸的 Echo 到音频 QA 的重要作用和游戏独特的性能分析系统,让我们一窥音频团队的所思所想,看看他们如何把这个世界打造得充满生机和活力。
在第 1 部分,高级对白设计师亚瑟•蒂塞隆 (Arthur Tisseront) 和塔内利•索兰塔 (Taneli Suoranta) 将带我们深入了解《Alan Wake 2》的对白整合,详细剖析如何交替呈现口语对白和叙事对白并借助音频设计在虚实交织的世界中清楚地加以区分。
简介:区分对白
《Alan Wake 2》在对白整合方面遇到了不少独特的挑战。这款游戏讲述的是一位小说家和他书中的情节变成现实的故事,由两个不同的可玩角色(Saga Anderson 和 Alan Wake)演绎。在游戏中,叙事对白和口语对白会交替呈现。不过,所有这些都未必受制于基准现实法则。所以,我们可以自由地尝试各种整合方法,来确保将对白自然地融入到游戏中,提供信息的同时又让玩家觉得有趣。
Wwise 结构
在通过 Remedy 的 Northlight 引擎整合对白之后,我们可以直接使用外部源文件,而不必将游戏对白文件放在 Wwise 中。不过,可通过 Wwise 精准控制要为每句对白应用怎样的空间化处理和效果器总线,同时确保能够根据需要管理放在其他地方的文件。为此,我们使用了内部工具来将对白台词指派给 Wwise 声音事件(我们称之为对白类型),并以此定义要如何在运行时对这些台词做空间化处理。这样我们就可为大部分对白应用同样的衰减、声障和其他游戏条件,同时还可通过添加新的声音事件及所需设置来满足特殊情形的需要(比如绕开为特定台词应用的遮蔽处理)。整体总线结构也因此而显得更加简洁。
通过使用外部源,可让 Wwise 工程更精简,加载起来也会更快。要知道,我们的外部源文件中有数千句台词。每种语言总共有大概 2.7 万句台词,这些在打开 Wwise 时都不用加载。
这当中只有过场动画例外。游戏中的过场动画全部以离线方式处理,并通过特定的 Wwise Event 进行播放(每段过场动画对应一个 Event)。同时,会将 7.1 格式的对白发送到 7.1.4 输出总线。这样做是为了确保始终与画面精确同步,并在过场时刻获得尽可能高的混音品质,同时让我们可以对音效做各种离线处理。
因为使用的是外部源,所以我们无法直接在 Wwise 中对各个对白素材实施混音。在制作过程中,在通过 Wwise 处理之前必须按照我们的规格对素材进行预混。而且,我们对游戏实施最终混音的时间有限,所以在录音之后依照规格预混素材非常重要。从这个意义上说,混音是在整合过程中迭代完成的 – 除了对不同对白类型进行统一的调整,我们其实并不需要在 Wwise 中做最终的对白混音。
两种对白之间的区别
为了展示我们是如何使用这些对白类型的,先来看看叙事对白和口语对白之间的区别。对我们来说,可以这样认为:
- 口语对白:角色实际动嘴,大声地说出来。
- 叙事对白:角色表述自己的内心想法,或者讲述故事发生的经过。
当然我们还有别的对白类型,只不过这两种对游戏最重要。
我们希望尽可能深入地探究这两者之间的区别,让玩家清楚是谁在说话以及其是否在大声说话。不仅如此,有时同一场景中还会有多个叙述者。比如,在游戏的某个环节,既有 Alan 在 Dark Place 讲述故事,又有 Saga 表述自己的内心想法。同时还有口语对白,就像下面这段一样:
我们依次听到:
- Saga 大声说话
- Saga 表述内心想法
- Alan 在 Dark Place 讲述故事
- Saga 再次表述内心想法
这段演示视频应该足以说明我们为什么要做这样的区分。
口语对白总是围绕玩家角色头部做空间化处理,而且还启用了游戏定义的混响发送。这样已经可以让我们很好地区分这两种对白类型。为了进一步增强这种效果,我们又在 Wwise 的 Steering 声像摆位器中把口语对白往前放了一点。
除此之外,在通过 Wwise 处理之前,口语对白和叙事对白还做了不同的母带处理。比如,Alan 的配音演员马修•波雷塔 (Matthew Porretta),他的声音在 110 Hz 左右有个奇妙的共振节点。通过多频段压缩和精细的 EQ 处理,我们在其叙事对白中对此做了加强,而在口语对白中则减弱了这种效果。对于 Saga 的两种对白,我们也做了类似的处理。另外,我们还对 Saga 和 Alan 的叙事对白做了一些在线处理 – 在 Wwise 中以很低的音量加入立体声延迟。
通过所有这些精细入微的调整,我们可以清楚地区分两种对白。不过,我们并未就此止步。
呼吸系统
除了对白本身,我们还为每个可玩角色创建了呼吸系统,来在其和游戏世界之间建立更紧密的联系。在整个游戏过程中,Saga 和 Alan 都会像人一样不停地呼吸,呼吸的节奏和声调都跟所处环境相称。为了让叙事对白和口语对白之间的区别更加分明,我们还使用了 Wwise 的 Auto-ducking 和 State 功能:在播放口语对白时,会砍掉角色的呼吸声循环,短暂延迟之后再重新启动。叙事旁白并不会这样。这个区别比较细微。不过,可以帮助玩家感知角色是否在大声说话。
呼吸系统本身设置在音乐层级结构下,每一次的呼吸声都有对应的音乐片段。它有三种主要的 State:relaxed、danger 和 engaged。每种 State 都有 stop、walk 和 run 三种变化版本。另外还有一种 "wounded" State,也就是玩家的 HP 值较低的情形。
借助 Wwise 的互动音乐过渡系统,每种 State 都能无缝过渡到其他 State。在跑了一段路或从高强度过渡到低强度 State 后,玩家角色会有一段时间的“冷却”,以此模拟人在体力消耗后需要喘气歇息的情形。
冷却是指对应选择的一组呼吸声,听者就像角色在放慢消耗的速度。对此,可手动设定时机和顺序:
Alan 比 Saga 喘得厉害,呼吸声也更粗重。因为跟训练有素的联邦特工相比,Alan 的身体素质肯定要差一些。所有这些都跟玩家角色的心率值有关。在奔跑或受到攻击时,心率值会升高;在安静的区域,心率值会降低。心率值越高,呼吸就越快。为了实现这一点,我们给每个玩家角色都准备了 1,000 多个呼吸声素材。除此之外,还包含了一系列与吸气、呼气、张嘴和闭嘴对应的素材。
同时,我们还在呼吸声循环中加入了玩家脚步声的旁链压缩 – 每次跨步都会迅速压低玩家的呼吸声,其中慢跑和奔跑产生的效果最为明显。这样做是为了模拟人在步履沉重时会从肺部排出更多空气的情形。从技术上来说,其实效果是反的。不过,呼吸的节奏基本上是一样的。而且,测试结果表明在跨步时增大音量的效果并没有那么好。下面是玩家奔跑时呼吸声的声部音量坐标图:
在混音中,呼吸声往往微弱到几乎听不到。除了安静区域的紧张时刻,我们希望呼吸声更多的是被感受到而不是被听到。在下面的演示视频中,我们大幅调高了呼吸声的音量。这样方便各位分辨它们是如何播放的,以及这些系统性选择在游戏中是怎样呈现的。
我们认为,这样可以在玩家角色和游戏世界之间建立更紧密的联系,从而让小说情节的曲折变化对玩家角色产生更大的影响。
同时,我们希望确保敌人角色也能在这些曲折变化当中发挥一定的作用。
将对白作为环境声 – Fadeout 与 Dark Place
在 Alan 的游戏环节,玩家要穿过 Dark Place – 一个由 Alan 自己书写的故事创造的超现实梦魇空间。所以,他被自己的回声 – 视线角落里的幻影 – 所困扰。这些 Fadeout 不断向他低声诉说。直到情绪激动,开始大喊大叫。
在为 Dark Place 营造氛围时,其中一个最大的挑战就是如何以一种不让人感到厌烦的方式整合低语声。有时一个区域会出现几十个 Fadeout,所以要避免持续播放大量的低语声。否则,会完全破坏掉紧张感。除此之外,我们还要保证玩家在直面幻影之前始终无法确定其具体位置。所以,低语声的音量在任何时候都不能太大。这里的挑战在于,一方面,我们要在用来驱动低语声的系统中控制好低语的节奏;另一方面,低语声可能会出现在 Dark Place 中的任何地方。有可能是室外,也有可能是室内,而且没法确定数量。这样的话就没法保证为其设定的可闻衰减范围在每一种情况下都能产生理想的效果。
我们的解决方案是把这些低语声放在 Blend Container 中并与玩家当前是否在室内相关联。室外的衰减距离要比室内远 10 米左右。这样就可以在整个 Dark Place 保持我们精心设置的整体节奏,而不用在脚本编写上再大费周章。
怪物和 BOSS
在整合敌人对白时,最复杂的情形就是 BOSS 战。在大部分情况下,BOSS 怪都能瞬间移动、完全出画或以其他方式离开玩家所处的世界。不过,在战斗当中仍要保持存在,时不时地给玩家迎头一击。在此,我们以 Cynthia 为例:
在这场战斗的第一阶段,她大部分时间都在水下,玩家完全看不到她。她可能出现在任何地方 – 我们要传达的信息是她还在附近,就等着玩家犯错,伺机抓住他们。然而对引擎来说,她是完全隐藏起来并且静止不动的,因此我们无法利用其在游戏中的位置来添加这段对白。除此之外,被 Cynthia 带到水下梦魇空间的 Tor 在战斗过程中也会向玩家大喊大叫。所以说,很多事情都在发生。
为了传达这一切,我们结合 Wwise 的 Listener with Automation 空间化选项运用了一些自定义卷积 Impulse Response(与 Dark Place 中用作标准辅助发送的 IR 相同),让 Cynthia 听起来既在水下,同时又在跟玩家说话。在玩家没有被主动追逐时,会循环播放 Cynthia 的对白,随机地萦绕在听者的周围,给人一种玩家被包围的感觉。另外,我们还使用了 Wwise 的 Steering 声像摆位器,确保听上去让人感觉她的位置总是略低于玩家。
在 Cynthia 开始追逐玩家时,我们会恢复正常的空间化处理,来突显她实际出现在哪个位置,以便于玩家确定要从何处逃离。
Tor 是静止不动的,位于场景中间靠下位置,不过应用了与 Cynthia 相同的混响效果,让玩家可以感知到他们大致在同一维度。
在其他 BOSS 怪出离画面时,我们采用了类似的处理方法。在游戏的第一场 BOSS 战中,Nightingale 可以在一次特殊攻击后瞬间出离画面,然后出其不意地从视野之外出现,再次攻击玩家。在他出离画面时,我们对其对白做了同样的自动化处理,来表明这一切正在发生。
音频驱动画面
除此之外,我们还使用了对白来驱动游戏某些核心环节的画面。比如,像 Echo Scene 这样遍布 Dark Place 的异世界幽灵影像。还有游戏中随处可见的手稿,其中有些也做了同样的处理。通过自研的 Wwise 插件 QAnalyzer,我们把这些对白输出到了 FX 发送端,来在运行时将总线输出的 RMS 数据发给引擎:
然后,VFX 团队便可利用这些数据制作游戏中随着音频动态变化的闪烁画面。玩家可以同时通过这种方式来分辨当前场景中的叙述者是谁。
Echo Scene 有自己的对白类型,同样应用了空间化处理,并且有实实在在的回声,但额外添加了混响效果,表明听到的并非来自当前所处世界的声音。
衰减、声笼与特殊情形
如果没有适当的声笼、声障和传播计算,不管如何设法应用空间化处理都是白费。甚至,口语对白的定位都可能出问题,尤其是在玩家四处走动的时候。
为此,我们的音频程序员伊罗•罗塞尔 (Iiro Rossell) 和塞缪尔•安德烈森 (Samuel Andresen) 针对 Obstruction 和 Occlusion 计算开发了定制的解决方案。藉此,可在游戏世界中随机放置一系列声学 Probe,并在运行时通过迹线将发声体和听者连起来。
除了在房门和致密室内几何构造等敏感区域手动放置 Probe,我们还可利用其来基于一套特定的标准计算声障和声笼数据:
- 最近的 Probe 离听者有多远
- 声音从发声体到达玩家位置要经过多少个 Probe
- Probe 的路径是否被固体几何构造遮挡,以及声音是否能穿透这种固体材料
如果声音被遮蔽,该系统还会将发声体位置移到玩家视线内最近的 Probe,以此来模拟声音绕过而非穿透固体障碍物的传播情形。
利用这些数据,我们在对白类型层面定义了 Obstruction 和 Occlusion 曲线。我们针对游戏中大多数地方使用的不同可闻距离设定了一套标准的衰减设置,并对特殊情形(比如不能有遮蔽/阻挡或需要特定的在线处理)做了例外处置。
另外,我们选择了不使用 Cone Attenuation,并为对白设置了很小的散布范围。因为我们觉得,那样会导致清晰度和方位感在角色左右转头时出现不一致。
关于表演
这篇文章的大部分都在探讨精妙的整合技巧以及我们为增强游戏中对白的氛围感运用的各种技术。但在文章结束之前,我们想强调一点,就是这一切都离不开 Matthew Porretta(Alan Wake 的饰演者)、Melanie Liburd(Saga Anderson 的饰演者)、其他主要角色和 BOSS 角色以及 21 位出色的敌方 NPC 演员(饰演 Taken)的精彩表演。他们为角色赋予了自己独有的个性。如果没有这些,无论我们应用多么精妙的空间化处理,都不可能把对白打造得那么扣人心弦。因为 Taken 的台词直接取材于 Alan Wake 的手稿,所以萨姆•莱克 (Sam Lake) 和克莱•墨菲 (Clay Murphy) 创作的剧本在这当中也非常关键。要知道,没有什么能取代对台词的精彩演绎,再多的润色也不过是锦上添花而已。
结语
对于《Alan Wake 2》这样一款对对白的处理有着独特要求的游戏,我们充分运用 Wwise 系统灵活多用的功能实现了自己想要的效果。很多元素的整合本身并不复杂,但要考虑到游戏其他各个方面;在调整的时候要深思熟虑,确保不会让玩家觉得奇怪。如果没有 Wwise 提供的各种功能,我们不可能把效果做得那么好。
评论