的探索之旅

游戏音频 / Wwise 技巧和工具

在去年 10 月的 GameSoundCon 上,我跟戴米安 (Damian) 在酒店拐角三明治店共进午餐的时候探讨着技术问题。我说“显然,现在我们可以将 MetaSounds 作为音频源在 Wwise 中运行 – 这可太方便了…” 

就在这时,有人说“谢谢!”我抬头一看,Unreal Audio 总监兼 MetaSound 架构师亚伦•麦克莱兰 (Aaron McLeran) 手握门把手走了进来!真是太巧了。如果在电影中看到这一幕,你肯定以为是精心设计的…

在最近的版本中,Unreal Audio 系统做了大幅的改进。其中很多新功能和工作流程都是为了给配乐创作提供便利,而不仅仅是实现“按下按钮,发出声音”这样的简单功能。不过,要想在复杂的大型主机游戏中激起玩家对玩法操作的情绪反应,就免不了要使用 Wwise。

AudioLink 工具允许结合 Wwise 使用 Unreal Audio Engine。更确切地说,是与 Wwise 一起使用。传统上来说,这一直是个“非此即彼”的命题。不过,AudioLink 似乎提供了一种更具协作性的“两者并用”范例。为了验证这一理论,我就想着创建一些 MetaSound 并通过 Wwise 将其输出到 Unreal 中的几个 Room。这样就可运用 Blueprint 控制的模块化合成器并将结果置于空间化环境中。除此之外,还可使用 Wwise Profiler 来监控 MetaSound 输出。

img2

White, Brown, and Fractal Music

为此,我升级到了 Unreal 5.1 并创建了三个 MetaSound 实现示例。其中所用的算法源自马丁•加德纳 (Martin Gardener) 在 1978 年左右在《Scientific American》杂志 Mathematical Games 专栏上发表的一篇题为《White, Brown, and Fractal Music》的文章。虽然这篇文章包含一些关于数学和认知的精彩论述,但其主要关注点还是通过算法生成的旋律。加德纳介绍了三种方式:

1. White Music 基本上处于一种无秩序状态:完全随机、不可预测且连续音符之间的相关性为零。

2. Brown Music 基于布朗运动(即悬浮在液体中的粒子所做的无规则运动)。在将粒子绘制到图上时,其轨迹在数学上被称为“醉汉游走”:一条包含不可预知向量的蜿蜒迹线。这样会生成一连串随机但高度相关的音符;每个音符都通过数字公式与前一音符相关。

3. Fractal Music(即粉红噪声)是通过以二值模式投掷六颗骰子来产生 6 ~ 36 之间的数字而生成的。通过将这些数字指派给键盘上的一系列音符,该算法会生成比其他方式更具音乐性的旋律。 


img3

试用 MetaSounds

我之前构建了一个 Unreal/Wwise Blueprint 工程来演示这三种算法,所以很轻松地就将其转换成了三种不同的 MetaSound:STRAIGHT 合成器、波表和背景循环旋律。

MetaSound 支持 Scale to Note Array 功能。藉此,可将 MIDI 音符量化为各种音阶和音调。在设为 Pentatonic 时,即便是随机算法也能生成优美的乐音。除此之外,我还试用了 MetaSound 合成器提供的各种工具和效果。

在 Unreal 中,我创建了一个结构体。其中包含三个尺寸逐渐增大并通过门廊相连的 Room。每个 Room 里都有一个四处弹跳的对象,每个对象都会发出前述其中一种生成的旋律,其音量和位置由 MetaSound 的 Attenuation 设置控制。目前为止,一切顺利。

设置 Wwise

接下来就要集成 Wwise 了…这时我遇到了第一个难题(见备注)。最新版本中包含了 AudioLink 试验功能更新,需要用户手动安装 Wwise Unreal Integration。这意味着要下载引擎插件文件,并将其放在游戏插件文件所在位置。说实话,我真不知道到底行不行得通。不过,通过仔细遵循 Wwise 问答版块 (https://www.audiokinetic.com/qa/11062/5-1-support-wwise-roadmap/) 发布的说明,我最终还是让 Wwise 在 Unreal 5.1 上运行了。

备注:亲爱的读者,您不必这样做。Wwise v.2022.1.2 现已推出并支持标准安装方式。

接下来,就可以对环境进行声学处理了。为此,我为每个 Room 添加了 AkSpatialAudioVolume,并为每个门廊添加了 AkPortal。各个 Room 还有自己的混响 Aux Bus。由此,我可以为尺寸不断增大的各个 Room 的 RoomVerb 效果器指定 Tiled Bathroom、Medium Hall 和 Cathedral 设置。为了方便控制,我还在每个 Room 中添加了 AKAmbient 声音作为循环测试脉冲来验证是否能按预期运行…最终证明,确实可以。

通过 AudioLink 将 Unreal 连接到 Wwise

然后,我创建了三个 Wwise Event。每个 Event 都会播放一个应用有 Audio Input 源插件的 SoundSFX。这个源插件选项允许 Wwise 引擎处理在 Wwise 工程之外生成的音频内容。它主要用于游戏内语音聊天(从话筒获取声音数据),但也可用作由 Unreal MetaSound 输出到 Wwise 工程的应用间音频数据通道。

AudioLink 的设计目的正是如此。

img4

这时我遇到了第二个难题。我的理解是可在 MetaSound 的 Attenuation 的 AudioLink 分区(靠近一长串 Override 选项最下面)中指定 Wwise Audio Input Event。但知道可以这样做不代表知道如何做到,而且现有选择似乎有点让人摸不着头脑。

我花了很长时间才意识到必须将 Unreal Project Settings => Wwise Integration Settings => Unreal Audio Routing (Experimental) 设为 Route through AudioLink [UE5.1],之后 Attenuation (AudioLink) 下拉菜单中才会为自定义 Wwise AudioLink Settings 显示 Create New Asset 按钮。在此之后,才能将素材设为指向相应的 Wwise Audio Input Event。

img5

非常便捷

没想到真的可以!在工程中能听到 MetaSound 和关联音乐系统发出的声音,它们被绑定到了弹跳对象,并且可在 Wwise Profiler 中监控其输出。太好了!

除此之外,我还可以:

  • 控制音量电平
  • 更改总线通路
  • 设置衰减
  • 添加效果器
  • 使用 RTPC
  • 即时修改并试听 Unreal 音频

…同时使用熟悉的 Wwise 工具。就像我一开始说的,非常便捷!

但我想要更多…

可空间化的对象

我想把 MetaSound 放在三个不同 Room 的声学环境中并在它们之间提供平滑的过渡。我想将 MetaSound 与为各个 Room 指定的混响混合在一起,使用 WwiseReflect 让音乐在墙壁上反射,根据位置和材质来调节 EQ,真正实现“发声对象处在房间之内”的效果,同时使用 Wwise 提供的各种空间化功能(Unreal 原生音频很难与之匹敌)。

这时我遇到了第三个也是最后一个难题。Audio Input 源插件的作用更像是来自混音器的馈送源,而非可通过 Wwise 空间化的对象(如 SoundSFX 容器)。虽然 MetaSound Input Event 的输出通路跟 AKAmbient 测试脉冲是一样的,但在为了空间化而使用衍射/透射时分析结果却是 100% Transmission Loss(意味着听不到声音)。在禁用衍射/透射时,可以听到 MetaSound,但没有跟混响混合在一起,并且能透过墙壁听到声音。

解决办法是将 Audio Input 输出到可空间化的 Wwise 组件,但在早期版本的 AudioLink 中好像无法通过 MetaSound Attenuation Override 做到这一点。我们在 Epic 的朋友跟我保证,这种功能是有的,但目前还没上线…会在后续版本中发布。

img6

通过组件连接

但是,等等!我想说“在 Wwise 中做什么都有好几种方法”。事实上,这正是 Wwise 的最大优势之一:按照最适合自己的方式灵活解决游戏音频问题。结果还真有别的方法来将 MetaSound 输出到 Wwise - WwiseAudioLink 组件。

作为集成包的一部分,各位可以将此组件放到对象上,在此指定 AudioLink 设置和 MetaSound,在关卡 Event Graph 中的 BeginPlay 上设置 PlayLink…然后,便可将 MetaSound 作为空间化对象来播放*。声音会留在 Room 内,Portal 会根据玩家位置淡入/淡出,音乐会随混响一起播放。大功告成!!

不过跟之前一样,目前的实验功能并不能完全满足所有用例的需求。我只能将 "whiteMusic" MetaSound 作为单个循环音调实例来配合组件进行操作。brownMusic 会以波表的方式反复调用 MetaSound,同时传入要播放的文件的名称。这可能会让组件代码不知道该怎么处理(至少让我感到很纠结)。

GDC 将近

为了不放弃自己的追求,我采用了一种混合方案:

- whiteMusic 使用 WwiseAudioLink 组件,并与 White Room 中的混响一起做空间化处理。

- brownMusic 和 pinkMusic 算法使用 MetaSound Attenuation Override 中的 AudioLink 设置。在这种情况下,可在 Wwise 工程中播放音乐,但不会做空间化处理。对此,我想出了一个变通方法:利用 3D 发声体总线和 Trigger Volume 来模拟 Brown Room 和 Pink Room 中的空间混响实现。

最终的效果听起来相当不错。各位不妨看下三个 Room 的演示视频:

各位可在此下载完整的 Unreal/Wwise 工程:

https://media.gowwise.com/blogfiles/WBFmusicLinkAKh.zip (4.3Gb)

该工程演示了两种 AudioLink 使用方法 – 选用哪种方法取决于各位的具体需求。比如,如果游戏音乐是立体声 MetaSound,那空间化可能不是优先考虑的因素。这时可通过 MetaSound 的 Attenuation 设置来连接。但要合成声音并由声学环境中的对象来播放,那么 WwiseAudioLink 组件会是比较好的选择。

必要的话,可自己编写代码来实现想要的 AudioLink 功能。而且,我相信 Wwise 和 Unreal 会提供更多的功能支持。在后续版本中,希望能结合 MetaSounds 使用 Reflect、Acoustic Texture 以及 Wwise Spatial Audio 的其他各种酷炫功能。

协同开发

  • 在制作游戏时,经常会遇到这样一个困境:“要使用原生的 Unreal 音频,还是选择完整的 Wwise 实现?”各种成本/效益因素使之成为一个长期存在的问题,但先用 Unreal 音频做原型设计,等资金到位后再安装 Wwise 的情况也是有的。

通常,这意味着要在 Wwise 中重复原型设计中的所有操作…不过现在不用了!现在不必舍弃所有的声音设计成果;直接通过 AudioLink 将其输出到 Input Event 就可以了。

  • 模块化合成器有巨大的市场,很多发烧友都喜欢自己动手。虽然可以录制其音频输出并用到游戏中,但却没有办法将 RTPC 关联到外部硬件。

现在不必这样做了。MetaSound 允许根据需要执行各种旋钮、跳线和布线操作…然后便可将旋钮和开关与变量关联起来,并根据游戏情形来对声音做必要的修改。甚至,还可使用 Wwise RTPC 完成各种所需操作。比如,通过 AudioLink 来针对多个 MetaSound 分层调节混音或修改 EQ 设置。

  • 作为一名音频工程师,在创作游戏配乐时,我每天都会运行 Wwise Profiler。它能告诉我自己想知道的各种必要信息,包括播放内容、播放时机、音量大小、所用总线、混响/效果器、CPU/声部用量…它是诸多 Wwise 功能当中最有价值的性能分析工具,方便监控、调试和优化使用 Wwise 引擎创作的配乐。

不过,现在能结合使用 Unreal 音频了!Wwise Profiler 可捕获 Input Event 的处理,从而在各个 Profiler 视图中对其进行监控。借助 AudioLink 建立的通路,可在运行时评估声部用量和音轨位置并检查总线通路、效果器、混音值及其他属性。

  • [MetaSound => AudioLink => Wwise 创作]

搭建桥梁

游戏音频的作用是在互动游戏环境中打造欢畅的情绪体验。为了实现这一目标,各方开发出了功能强大的工具和技术;正因如此,这一切才成为可能。如果没有 Epic 和 Audiokinetic 构建的复杂音频系统,我们不可能这么轻松地创作配乐。

不过,原生工具和中间件之间一直存在着“非此即彼”的困境。这主要是出于技术方面的原因。AudioLink 为这一困境提供了技术解决方案。藉此,声音设计师、音乐家和工程师可采用最适合自己的技术来实现想要的结果。

它相当于两种技术之间的桥梁。各位知道桥梁的目的是什么吗?提供便利!

   - pdx

感谢来自 Audiokinetic 的 Damian、Michel 和 Benoit 以及来自 Epic 的 Jimmy、Dan、Grace 和 Aaron。谢谢你们对本项目提供的支持。

彼得·德雷舍 (Peter "pdx" Drescher)

彼得·德雷舍 (Peter "pdx" Drescher)

彼得·德雷舍 (Peter "pdx" Drescher) 多年以来一直从事游戏和移动应用的音频制作、代码编写和功能整合工作。他是一位才华出众的声音设计师、颇有造诣的音乐家/作曲家、发文无数的期刊作者、经验丰富的程序员和技能娴熟的音频工程师。他在旧金山湾区拥有一间 ProTools 数字音频制作工作室 – Twittering Machine。

评论

留下回复

您的电子邮件地址将不会被公布。

更多文章

《Clocker》的声音设计 - Part 1

大家好,我是谭宇,来自一罐盐声音工作室(Salt Sound Studio)。下面将通过这篇博客跟大家分享一下我们的项目...

23.9.2019 - 作者:谭宇

Wwise+GME游戏语音方案:解锁更多语音玩法,让玩家“声临其境”

导语:...

4.11.2021 - 作者:腾讯云

Tell Me Why | 音频日志 – 第 4 部分:混音和母带制作

《Tell Me Why》已在 Xbox 和 PC 上发布,并且完全支持 5.1...

29.6.2022 - 作者:马休•菲奥伦蒂尼 (Mathieu Fiorentini)

Wwise Tour 2022 中国 - 视频回放

《哈利波特: 魔法觉醒-魔法世界的风格化音频设计》 《哈利波特:...

9.12.2022 - 作者:Audiokinetic (音频动能)

结合使用 Strata、Wwise 和 Unreal 构建沉浸游戏体验

在这篇博文中,我们将深入探讨如何使用 Strata 进行互动设计。为此,我们要在 Unreal Engine 5 工程中结合 Wwise...

31.5.2023 - 作者:蔡斯•斯蒂尔 (Chase Steele)

WAQL 2.0

自 Wwise Authoring Query Language (WAQL) 的第一个版本发布以来已经有几年了。在此之后,几乎没什么改动。最大的改动就是把 WAQL 集成到了 Wwise...

10.8.2023 - 作者:伯纳德 罗德里格 (Bernard Rodrigue)

更多文章

《Clocker》的声音设计 - Part 1

大家好,我是谭宇,来自一罐盐声音工作室(Salt Sound Studio)。下面将通过这篇博客跟大家分享一下我们的项目...

Wwise+GME游戏语音方案:解锁更多语音玩法,让玩家“声临其境”

导语:...

Tell Me Why | 音频日志 – 第 4 部分:混音和母带制作

《Tell Me Why》已在 Xbox 和 PC 上发布,并且完全支持 5.1...