在Mac环境下使用Wwise为VikingVillage 进行声音设计

游戏音频 / 声音设计

背景

近日在完成了 Wwise 301 认证课程的学习之后,我以 Unity 商店中提供的 Viking Village 免费 Project 为基础,对其进行了全面的声音设计,并在 Mac 环境下通过 Wwise 2019 将全部的音频资源与相关配置整合部署到了 Unity 中,从而构建出了最终表现与前期设计相一致的试玩游戏 Demo。 希望此篇博文可以帮助到在 Mac 环境下进行声音设计及Unity 整合工作的 Wwise 用户与学习者,实现“在没有程序员协助的情况下,自行完成最终表现与前期设计相一致的试玩游戏 Demo ”。

环境信息

以下是此次整合过程中所使用的软件工具的版本信息:

操作系统:Mac OS 10.13.4

Wwise:2019.1.0

Unity3D:2018.40f1 Personal

Visual Studio:8.3.11 for Mac

准备Unity工程

关于 Viking Village 工程在 Unity3D 2018.40f1 中的前期配置:

1. 首先,在新建 Unity 工程后,前往 Unity Asset Store,搜索 Viking Village 并进行下载,完成后导入到当前工程中:

1

Unity Asset Store

在Viking Village的Package完成导入后,由于其与Unity 应用存在版本兼容问题,将会致使Console 栏出现 “BuildTargetGroup.WebPlayer” 报错与 Lighting Data 无法兼容的警告等信息——我们首先要解决“BuildTargetGroup.WebPlayer” 报错,否则将无法载入场景:

2

2. 双击“BuildTargetGroup.WebPlayer” error信息,打开 CrossPlatformInputInitialize 脚本,并将第 88 行的WebPlayer改为 WebGL,保存后,返回到 Unity编辑器:

34

将第 88 行的WebPlayer改为 WebGL

3. 在 Unity 的 Project 搜索栏中,输入 Viking Village找到场景文件,将其拖入 Hierarchy 中,并删除之前新建工程时自动创建的“空场景”:

5

在完成上述操作之后,启动 Play Mode,我们将顺利载入 Viking Village场景,但由于 Lighting Data 也存在兼容性问题,因此此时的场景会显得十分的暗淡,下面我们将对Lighting Data进行配置。

Lighting Data配置

1. 退出 Play Mode,打开 Unity 顶部的 Window 栏内,打开Rendering->Lighting Settings 窗口:

6

2. 然后在Debug Settings 中开启Auto Generate,并将其选项更改为 “Clear Baked Data” ,这样光源将恢复为正常状态:

7

再次进入 Play Mode ,我们将发现场景明显较之前明亮且清晰了很多。但此时我们还需要为主角的活动区域、Camera 的重新分配、以及为 WwiseIntegration 的配置再做些前期准备。

在 Unity 的 Project 搜索栏中,输入 FirstPersonCharacter,找到游戏的主角文件夹,将整个文件夹移至到 Assets 的根目录下(以确保 WwiseIntegration 在之后可以与主角的脚本互相关联到)。

8

将 Assets 目录下 FirstPersonCharacter——Prefab 中的 FPSController 添加至场景中,并删除 Hierarchy 中的“QualityManger”(因为此 Prefab 包含了原本工程中的 Camera 以及主角的活动区域设置,会与 FPSController 中的 Camera 、Listener 有一定的冲突,所以在这里我们需要将其删除)——然后,我们再次启动 Play Mode,此时我们将能够听到主角具有的原本工程中配置的“脚步“、“落地” 与“跳跃”声,且主角的活动范围将不会被仅限于村庄内;到目前为止,我们对 Viking Village 工程 在目前环境下的初期配置部署均已完成,下面开始进行对 Wwise 整合前的预部署。

9

Wwise 整合前的预部署

首先,我们需要让 Viking Village 工程关联到 Wwise Integration 的相应资源组件(目的是将Wwise集成至Viking Village项目),通过启动 Wwise Launcher,在 Unity 栏目里,为已存在的 Unity 工程进行 Integration 工程配置,点击进入“Integrate Wwise into Project·····”。

10

在工程配置界面选项栏里,选择相应的 Wwise 版本、Platform、Wwise SDK、Wwise 工程路径等必要的整合选项,之后点击“Integrate”按钮;

PS:Wwise 工程是之前在音频设计阶段已经自行创建的工程,对于还未创建 Wwise 工程的用户而言,在点击“Integrate”按钮之前,最好先创建一个对应的 Wwise 工程。(不创建工程的话Launcher会自行创建一个空白工程)

11

12

待 Launcher “Integrate” 完成后,前往 Viking Village 工程文件夹目录下,我们将会看到一个名为“Wwise”的压缩包(即 Wwise Integration 组件)。注:通常情况下,使用Launcher集成后Wwise SDK就已经被部署到Assets文件夹里了(若遇到问题也可将解压内容手动部署至Assets文件夹内);之后再次进入 Viking Village Unity工程,并对其 Wwise Settings 进行相应设置,若配置正确,则在 Wwise Picker 中将会显示已关联的 Wwise WorkUnit——若在之前对 Wwise 工程已经进行了设计,并生成过 SoundBank,则在 Wwise Picker 栏里,将会查看到与 SoundBank 一致的资源信息:

13

14

PS:关于 Wwise Settings 的配置,在 Wwise 301 中第九课的章节里有完整且详细的阐述,可以在这里详细查阅(https://www.audiokinetic.com/courses/wwise301/?source=wwise301&id=The_AkInitializer#read)。在进行完以上一连串的前期准备工作后,我们终于可以正式的将 Viking Village 的 SoundBank、Event、Switch、AuxBus 集成进入 Unity 了!

声音设计

首先介绍一下我为此场景所做的声音设计:

基于 Viking Village 的场景需求,我设计制作了以下相关 GameObject 的声音资源并予以整合。

主角(通过脚本实现):

  • 不同地形的脚步声(Dirt、Wood、WaterLight、WaterDeep)
  • 主角动作与语气(跳跃、动作语气)

空间环境:

  • 村庄内/外(风声、鸟叫声)
  • 海边(海风、海浪),

交互类声景:

  • 火把
  • 风车
  • 自定义的 NPC 语音
  • 自定义的声障空间

15

具体整合过程的细节阐述与方法实践:

1.将已制作完成的音频素材导入 Wwise 工程,按照类别与场景需求对WorkUnit、ActorMixerHierarchy(SFX Object)、MasterMixerHierarchy(AudioBus、AuxBus)、ShareSets(EffectFormat)、 Event、GameSync(Switch) 分别进行配置;

16

并为 SFX Object 设计了不同的 Attenuation 曲线、3D Position、随机 Pitch、随机 LPF、随机音量、Switch 配置、效果器 Bus 等;并为每个 Event 配置了单一或多个Action以实现期望的播放逻辑;

17

2.在 Unity 探测到 Wwise 整合工程后, 使用 Wwise 生成 SoundBank;Unity 的 Wwise Picker 栏中将显示对应的 Wwise 资源,然后我们并开始在 Unity 中对各类声音资源进行配置整合:首先建立该场景中 SoundBank 的加载;

183.修改原本 Viking Village 中的 “FirstPersonController” 脚本:注释掉了原本与 Audio 有关的代码;FootStep、Jump、Land 音效采用 Wwise API进行了实现,并对 FootStep 的Material Switch 进行了“ Unity Tag 检索”,便于之后 为FootStep 分配对应不同地形材质的Switch ;

19

20

21

4.设计配置 自然环境类音效—— 村庄内/外风声、鸟叫、海浪、火把、风车:相应的自然环境声音的Wwise Event 将在进入游戏后被启动,红色覆盖区域表示声音的音量衰减范围,通过采用 AkAmbient 的 LargeMode 可以在有效节约资源使用的情况下,实现很好的声景塑造;绿色透明 Box 是为了在部署衰减源坐标时便于用来观察不同地形区域而设置的辅助 Box。

22村庄内的风声环境声覆盖区域
23
村庄外的风声环境声覆盖区域 123
24村庄外的鸟叫声覆盖区域
25村庄外的海浪声覆盖区域
26火把声覆盖区域
27风车声覆盖区

5.设计配置环境中的 NPC 语音音效:当主角进入对应 NPC 碰撞体所覆盖的范围之内时,Unity将 发送 Wwise Event以触发 NPC 相应的语音,此语音采用了在 Wwise 内设置的 “序列随机组合” 的播放逻辑; 同样,我也对其设置了相应的衰减;

28Ps:模型来自 Unity 免费资源商店
29Wwise NPC 语音的序列随机语序设计

6. 空间混响 AuxBus 效果的声景设计:当主角进入具有“混响空间”的区域环境时,玩家在空间内听到的所有声音都将会产生混响效果,与视觉空间相匹配。

30Wwise AuxBus 效果的配置
31Unity AuxBus 部署与刚体碰撞设置——此空间为自行定义的混响空间建筑物模型

PS:对应的声源 Object 需要配置了具有启动 EnvironmentAware 选项的 Ak GameObj 脚本组件—— 由于 FPSController Prefab 中,没有此 组件,因此需要自行添加。

7. 发音数测试与性能的优化:在 Wwise 内,对各类型的 音频对象进行了播放限制、虚声部及优先级设置,并在Project Settings当中对游戏内宏观的MaxVolume 及 MaxVoice进行了设置。在与Unity 进行了 Remote Running 测试及调整后,最终在声景不受影响的情况下,将游戏运行时发音数控制在了7以内;通常情况下,实际发音数仅在 3-5之间。此外,我还对环境 Loop 资源设置了 Streaming 的播放方式,减小了游戏运行时候内存的占用;并采用了 Vorbis 编码,减小了包体。

32

33

34对各类型的 音频对象 进行了播放限制、虚声部及优先级设置
35对不同平台进行MaxVolume 与 MaxVoice 的设置
36转码为 Vorbis

8. 为不同材质的路面,分配脚步材质 Switch —— Dirt、Wood、WaterLight、WaterDeep ,并在游戏中对四种类型的「脚步 Switch」进行测试直至听觉上无“穿模”情况出现为止:通过脚本关联定义的 Unity Tag 为 Prefab 直接绑定「脚步 Switch」,使得在保证脚步声与材质“不穿帮”的情况下,最大限度且高效的完成配置——实现了“任意区域、不规则区域、碎片化区域”间脚步声的自然切换。

37为 Tag 添加相应的 脚步材质名称

为 Unity Demo 中代表综合地形区域的 Prefab 添加类型为 Dirt的脚步材质 Tag。

38

为 Unity Demo 中代表主角有可能触及到的的木质路面的Prefab添加类型为 Wood 的脚步材质 Tag —— 这种做法的好处在于可以轻松高效地实现“主角行走于复杂多变的地形时的脚步声的自然切换。

39

通过 Cube Box 来部署 WaterLight 与 WaterDeep 的脚步 Switch Tag ,并在游戏运行时disable掉 Cube 的 Mesh Render—— 由于此Demo 中 水面与路面 存在“穿模”的情况(水有涨落),所以未采用直接将 Water 有关的「脚步 Switch」绑定至 GameObject的方式来进行部署。

40

9. 在 Unity Editor 内,通过 Wwise Profile 对 Play Mode 进行完整的测试与 Debug,至无问题后 采取Profile设置构建可独立运行的Mac版本,并将 该可独立运行版本与 Wwise Profile再次进行关联,以验证同样能够良好运行 。

关联了 Wwise Profile 的 可独立运行的Mac 版本 Demo。

41

至此,关于 Viking Village 的 Wwise Unity 整合已经全部完成并予以实现,在运行游戏时,通过 Wwise Profile 监测后音频性能良好,声景与音效均可说听上去自然且舒适。

请看以下演示视频。

国内观赏视频通道

结语

很高兴此次可以与大家分享 Mac 系统下 Wwise Unity 集成的使用经验。关于文中具体的实践细节,在 Wwise 301 课程里均有详细介绍,推荐感兴趣的朋友进行深入的阅读与学习。此外,在 Wwise 博文中的一篇名为“使用 Wwise/Unreal Engine 4/Unity 3D 进行脚步材质管理”(https://blog.audiokinetic.com/-unity-3d/)的 Tips 文章内,提供了相关“脚步材质”的代码,推荐前往查阅。

希望此篇博文对在 Mac 系统下使用 Wwise Unity 集成的开发者或 Wwise 用户有些许的帮助,

对于 PC 环境下的 Wwise 学习者与用户,可以前往声音设计师 Michael Zull 的Youtube WestSideElectronicMusic 频道,那里有他早期提供的关于PC 系统下将Wwise 集成到Unity Viking Village 项目的基础教程。(https://www.youtube.com/watch?v=rK96gLoZMEY&list=UUIYnEzCGIszD9Q26WNJVsqA&index=15

感谢各位读者与社区朋友们耐心地阅读,期待与大家继续共同地学习与交流!

孙宇轩

音频设计师/声音设计

孙宇轩

音频设计师/声音设计

专注于音频技术、声音设计的游戏开发从业者一枚

评论

留下回复

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

更多文章

如何以音频为职业谋求发展

与其他行业相比,通往音频行业的成功之路可能更为曲折。那么问题来了,如何在音频行业谋求发展?面对众多职业选择,到底从哪里做起呢?...

21.9.2020 - 作者:A Sound Effect

EBP管线概述

EBP是什么? 前不久Wwise 2019.2版本的UE4 Integration推出了一条新的管线,叫做Event-Based...

10.12.2020 - 作者:范润鹏

以盲人的视角浅谈游戏的可玩性

想象一下你最喜欢的电子游戏。回想一下它的开场菜单屏幕、第一个关卡、惊心动魄的 BOSS...

15.12.2020 - 作者:Brandon Cole

Time RTPC的使用技巧探讨

2019年,我曾经写过一篇探讨线性控制在Wwise中应用的文章。在那之后,针对局部线性控制的应用,我在不同的项目中,对其不同的方向做了大量的尝试。今天就和大家分享一下关于Wwise中Time...

14.4.2021 - 作者:王润琦

赛博朋克世界的声景塑造 — 以游戏《底特律:成为人类》为例 (第一部分)

30.8.2021 - 作者:赵茉茉

借助 IR 混响增强声音的真实感

8.9.2023 - 作者:BOOM Library

更多文章

如何以音频为职业谋求发展

与其他行业相比,通往音频行业的成功之路可能更为曲折。那么问题来了,如何在音频行业谋求发展?面对众多职业选择,到底从哪里做起呢?...

EBP管线概述

EBP是什么? 前不久Wwise 2019.2版本的UE4 Integration推出了一条新的管线,叫做Event-Based...

以盲人的视角浅谈游戏的可玩性

想象一下你最喜欢的电子游戏。回想一下它的开场菜单屏幕、第一个关卡、惊心动魄的 BOSS...