早前,我决定在毕业设计中使用 Wwise 制作游戏音频。在此,我想说说当时为何做出这样的决定,以及 Wwise 在创作过程中提供了怎样的帮助。我希望这篇博文能对尝试使用 UE4 和 Wwise 的同学以及对 Wwise 不怎么熟悉的音频同行有所帮助(译注:UE4 全称 Unreal Engine 4,即虚幻引擎 4)。
我为何决定学习使用 Wwise
大约两年前,我在学校听说了 Wwise,并且注意到好多游戏资讯和网络文章中都提到过它。于是,我就开始查阅 Wwise 相关资料。那时候,我对游戏音频制作流程的理解是:首先音频总监提出声音设计需求,然后声音设计师开始创作,最后发给程序员进行集成。正是因为有这样的认识,我才只学了如何制作声音。然而,随着对 Wwise 的慢慢了解,我发现实际工作流程并非像以前想的那样:在此过程中,音频团队还要提供音效和音乐的播放结构,然后才会交给程序员集成数据。这让我猛然意识到,为了跟上游戏开发潮流,我不能只满足于学习如何制作声音!
我为何选择结合使用 Unreal 和 Wwise
在工程前期,我花了很长时间思考,作为学生如何赢得潜在雇主的青睐。经过一番琢磨,我明确了一些关键要点,并据此制定了两大目标:
- 目标 1:证明自己有能力制作并集成各种类型的音频。
- 目标 2:创建一个工程,借此展示自己对游戏充满热情,并且马上可以为团队做出贡献。
对于第一个目标,虽然我在学校学习了音频制作和集成,同时获得了 Wwise 认证,还通读了相关文档,但是具体如何展示自己的能力呢?关键是要找到一个实施对象,然后把制作的音频集成进去。估计有不少同学都卡在了这儿。有的以为肯定需要专业人士帮助,否则都不知道从哪着手;有的觉得学习难度太大,时间根本不够用,因此望而却步。我曾经也是这么想的。
对于第二个目标,同样有好些问题需要考虑。在音频知识和创作能力方面,我是很有信心。但是,能不能马上投入到工作中?我离现实游戏制作有多大差距?我对最新工具的了解程度如何?我有没有真的用过呢?不管你有怎样的创作潜力,要想成为一名音频专业人士,这些问题都是必须要考虑的。
这就要说到 UE4 了。现在有很多公司都在使用这款游戏引擎,还有不少人关心Wwise 如何与其集成。
我当时就想,假如使用 UE4 制作游戏,就可以实现自己定下的第二个目标了。但是,第一个目标又如何实现呢?毫不夸张地说,这个难度要大很多。幸好有使用 Wwise 和 Unreal 构建的 Wwise Audio Lab 示例工程。不过,由于我还只是个 UE4 新手,而且从来没学过编程,所以有很多资料需要查阅,不下一番苦功是肯定不行的。于是,我决定通过网络视频和资料学习如何使用 UE4,并利用网络研讨会这些资源了解 Unreal 游戏创作的基础知识。
最终,我学会了如何使用 Unreal 和 Wwise 编译游戏。另外,还有一点必须说明:通过注册学校项目,学生是可以免费使用 Wwise 的!
我使用了哪些 Unreal 和 Wwise 功能
接下来,说说我创建的工程。
我创建了一个第三人称游戏,并在其中使用了 Unreal 和 Wwise 的以下三项功能:Switch(切换开关)、State(状态)和 Game Parameter(游戏参数)。
・State
为了表现玩家死亡过程,我使用了 States。
在 Wwise 中,我在玩家死亡时为 SFXBus 总线应用了滤波器。滤波导致的音量变化有些大,所以我稍稍调高了 Bus Volume(总线音量)。
以下截图显示了玩家死亡和逐渐丧失意识时的 Death_Rev 设置。在发送 Death(死亡)状态时,Death_Rev 音量会升高。
下面是我在 UE4 中所做的设置。注意最左侧红色方框和最右侧蓝色方框。
在角色受伤时,左侧红色方框会发送一个 Event(事件)。在右侧蓝色方框收到该 Event 时,会发布 Death 状态。随便设置一下,State 功能就实现了。真没想到会这么简单,简直太神奇了…
・Switch
为了变换主角和敌人(熊怪)的脚步声,我使用了 Switch 功能。让我来举例说明一下 Bear_Footstep 事件(如以下截图所示)。
在 Wwise 中,我创建了 Switch Group(切换开关组)对象 Footstep_Bear,并设置了两个 Switch:Brick(砖地)和 Snow(雪地)。
下面来看看我在 UE4 中所做的设置。在 Bear 和 BoxCollision 发生 Overlap 时,会生成 Footstep(脚步)名称,并存储在 Game Instance(游戏实例)中。
从以下截图可以看出,我准备让 AnimBP 接收名称信息,并据此设置 Switch。
・Game Parameter
为了发送石头的滚动速度以及对象和玩家之间的距离,以便将这些信息转发给 Wwise,我使用了 Game Parameter 功能。以下截图举例说明了地面飞箭机关与玩家之间距离所应用的 Game Parameter。
在 UE4 中,在需要改变参数的音频事件发生后,将会设置相应 RTPC 值。
在 Wwise 中,我为 Blend Container(混合容器)对象 TrapArrow 中的三个声音分别设置了 Gain(增益)值,使其随距离变化。我想让第一个声音(金属声干声)和第二个声音(低沉飞箭声)的音量随距离增大而降低,第三个声音(金属声混响)的音量随距离增大而升高。
关于工程中使用的功能,大概情况就是这样。
结语
现在回想起来,我很惊讶自己居然 40 天左右就完成了工程,要知道最初我连 UE4 功能都不会用。假如没有 Audiokinetic 提供的文档、学习资料、视频教程,恐怕不会这么顺利。在此,我要说声“谢谢”。当然,在此过程中我也遇到过很多困难。有时突然就听不到声音了,有些值应该发送了但却没收到,经常费好大劲才找到解决问题所需的资料。特别是关于音频的资料,就更不好找了。在创建这个工程的过程中,我经常会想:“我需要更多资料!”所以,希望有一天我也能为别人提供这样的支持。
我发现,即便是作为学生个人,一样可以做到很多事情。假如你正在学习音频并且有兴趣,不妨试用一下 UE4 和 Wwise。相信我,这比想象中有意思多了,可能比玩游戏还带劲儿!
评论
婵婵 罗
October 07, 2018 at 02:59 am
Great! It's useful ,thank you。
婵婵 罗
October 07, 2018 at 02:59 am
Great! It's useful ,thank you。