“游戏性至上”是暴雪的核心价值之一。守望先锋的音频团队制定了颇具雄心的目标 —— Play by Sound:通过声音传递尽可能多的信息,给玩家的操作选择提供参考,而不是简单的响应角色动画或技能特效。
1300 WWU 文件,14,300 被引用的 WAV 文件,55s 的加载时间(从 SSD 上),6 sound design, 2 music, 1 programmer, 1 production, 1QA 的人员配置。
在 Master-Mixer 中,总线最高层级是按照2D_Audio和3D_Audio进行划分。划分目的应该是为了整合 Dolby 的 Binaural 解决方案。
在 Actor-Mixer 中,声音是按照类别而不是英雄/地图进行组织的。在每个类别的子节点上划分英雄1P和3P,从而可以在较高层级上实现统一的参数调整,如RTPC,发送,复音数控制等,减少bug出现的几率。
Interactive Music 由 2个 Music Switch Container 组织。 Overwatch_Music 负责所有主要游戏状态对应的音乐; Overwatch_Stingers 负责所有短乐句叠加层。
实现目标的途径:
团队在一开始尝试使用 HDR (High Dynamic Range),但在测试中发现这可能导致大量意料外的ducking出现。最终游戏采用了一套 重要性系统 ,让玩家能优先听到最重要的声音。
根据下表的每一项Sound Importance Factor计算该英雄的重要性:
类别 | 权重 | 最小持续时间 (s) |
---|---|---|
Damage | 0.5 | 2 |
Distance | 0.3 | 1 |
Enemy Size on My Screen | 0.1 | 0.2 |
My Size on Enemy Screen | 0.3 | 3 |
Scripted | 0.4 | 1 |
Seen By | 0.3 | 2 |
Shot At | 0.6 | 2 |
将所有英雄按照重要性排序,依排序结果划分为4个级别:
High - 1个, Normal - 2个, Low - 4-10个, Cull - 其它
不同的重要性级别对应不同的RTPC值,通过其调节Volume, Priority, Filters, Pitch等参数 。对于Low和Cull级别,声音衰减非常明显,很多时候基本上听不到;动态空间大都给到了位于前两个级别的角色上。
友方一般拥有更低的重要性,在混音中居于更次要的位置。
我们现在知道你最大的威胁是谁,如何定位他?
在3D_Audio总线上挂载了 Dolby Headphone Virtualizer 插件,其子总线的通道设置为7.1.4( 参考Dolby Atmos 7.1.4 ),子总线中的信号通过插件下混为 Binaural 的立体声信号。 Scott Lawlor 使劲吹捧了一下插件的效果,能够准确的分辨后方和垂直方向上的声源😄
我们现在知道你最大的威胁是谁,也知道他在什么位置,但你能听出他是谁并且他在做什么呢?
switch结构实际上是回答一系列问题:这个语音是系统语音么?是大招么 ?是无线电信号么?
不同的VO Sound SFX 对应了不同的优先级、混音总线、RTPC设置等。
场景:Reinhardt和Widowmaker在一队,Pharah在另一队。Pharah释放大招被Reinhardt开盾吸收伤害;Widowmaker躲在Reinhardt后面狙杀掉Rharah;Reinhardt冲刺撞在墙上。每一个英雄都根据不同的播报类型听到不同的语音事件。
从 Pharah 的视角看,备选语音列表:
Hero | Stimulus | Broadcast | Category | Heard? |
---|---|---|---|---|
Reinhardt | Shield activate | Friendly + Player | Chatter | × |
Pharah | Jump | Player | Exerts | √ |
Pharah | Rocket barrage | Enemy + Player | Critical | √ |
Pharah | Damage taken | Involved Heroes | Pain | × |
Pharah | Death | All | Death | √ |
Widowmaker | Enemy killed - Crit | Player | Chatter | × |
Reinhardt | Shield low health | Player | Chatter | × |
Reinhardt | Charge activate | All | Critical | √ |
Reinhardt | Charge unsuccessful | Player | Chatter | × |
从 Widowmaker 的视角看,备选语音列表:
Hero | Stimulus | Broadcast | Category | Heard? |
---|---|---|---|---|
Reinhardt | Shield activate | Friendly + Player | Chatter | √ |
Pharah | Jump | Player | Exerts | × |
Pharah | Rocket barrage | Enemy + Player | Critical | √ |
Pharah | Damage taken | Involved Heroes | Pain | × |
Pharah | Death | All | Death | √ |
Widowmaker | Enemy killed - Crit | Player | Chatter | √ |
Reinhardt | Shield low health | Player | Chatter | × |
Reinhardt | Charge activate | All | Critical | √ |
Reinhardt | Charge unsuccessful | Player | Chatter | × |
从 Reinhardt 的视角看,备选语音列表:
Hero | Stimulus | Broadcast | Category | Heard? |
---|---|---|---|---|
Reinhardt | Shield activate | Friendly + Player | Chatter | √ |
Pharah | Jump | Player | Exerts | × |
Pharah | Rocket barrage | Enemy + Player | Critical | √ |
Pharah | Damage taken | Involved Heroes | Pain | × |
Pharah | Death | All | Death | √ |
Widowmaker | Enemy killed - Crit | Player | Chatter | × |
Reinhardt | Shield low health | Player | Chatter | √ |
Reinhardt | Charge activate | All | Critical | √ |
Reinhardt | Charge unsuccessful | Player | Chatter | √ |
Overwatch - Game Audio Using Wwise (part 1/2)
Overwatch - Game Audio Using Wwise (part 2/2)
Overwatch - The Elusive Goal: Play by Sound on GDC pdf