《Unpacking (搬家模拟器)》是一款体验日常生活情境下将行李从箱子中取出并摆放到新家中的益智游戏。它结合了方块拼图和家居装饰玩法。在打造舒适生活空间的同时,玩家将逐步了解行李主人的人生。在八次搬家的过程中,将有机会亲近了解某个素未谋面的角色和一段不曾听闻的故事。
起因
《Unpacking》的创意源自现实生活中的爱情故事。起因是当时像素艺术家雷恩•布赖尔 (Wren Brier) 和 WitchBeam 程序员兼创始人蒂姆•道森 (Tim Dawson) 决定搬到一起住。在拆开纸箱、取出物品并逐一归位的过程中,他们受到启发并开始琢磨怎么做成一款游戏。很快,想法变成了设计。后来慢慢变成了《Unpacking》这款游戏。
《Unpacking》在游戏制作的各个方面获得了一系列奖项(包括音频)。2022 年,《Unpacking》在与一众 AAA 级游戏大作的激烈角逐中斩获了游戏开发者选择奖最佳音频奖。那么,这一切究竟是怎么回事呢?
《Unpacking》发布后不久,声音设计师弗朗西斯科•德尔皮亚 (Francesco Del Pia) 的一条推文就在网上疯传。这段视频对拟音的细节赞誉有加,并迅速获得了一百多万的点击量。查看弗朗西斯科的推文
其中一条回复引起了杰夫的注意…
…之后不久,Audiokinetic 的同行问杰夫可否在公司博客上分享他的创作历程。于是,便有了这篇博文。
游戏的拟音是由一个家庭小团队制作的。该团队由业内资深人士杰夫•范戴克以及他的妻子安吉拉和女儿艾拉组成。这款规模相对较小的游戏巧妙运用 REAPER 和 Wwise 创建并整合了大量细节丰富的音频。这篇博文介绍了范戴克夫妇如何管理《Unpacking》的拟音制作,以及如何与小团队一起创建了 14,000 多个细节丰富的 WAV 文件。
音频理念
一开始,杰夫便与雷恩和蒂姆就音频风格进行了探讨。在像素游戏中,音乐和音效一般都是 Chip Tune 风格的。这样可以增添复古像素氛围。杰夫认为这对音乐来说特别适合,但用哔哔啵啵声制作音效就太过了。他觉得,超现实音效跟像素艺术倒是挺搭的。
原型设计 1
在决定制作超现实音效后,杰夫着手梳理了可能用到的厨房用品,并在自家厨房对这些物品进行了录音。
最初,他使用了 RØDE NT2-A 话筒和 TASCAM DR-40 录音机。在随后的录音当中,为了获得更纯净、更细腻的录音效果,这两套设备都被换掉了。最终,团队选用了 Sennheiser MKH 8040,将其插到老式的 Steinberg MR816x 音频接口上,再连到更老式的 Macbook Pro 上。
原型设计 1 注释:
- 游戏中除了音乐并没有太多声音,所以拟音细节很容易会被注意到。
- 厨房中的自然混响可以增添真实感。
- 在不同物品之间共用声音会破坏沉浸感。
这引发了一些问题:
- 游戏中的物品可在不同房间之间移动,因此所有音效都要在消声室里录制,并通过音频引擎实时添加反射效果。
- 在不同的物品之间共用声音会破坏沉浸感,所以每个物品的录音都要有多个变化版本,反映游戏中各个表面上的放置和捡取动作。
- 就游戏拟音而言,总体范围是什么?是否可行?这个问题的答案目前还是个未知数,所以杰夫暂时把重点放在了音乐上。
原型设计 2
六个月后,游戏里有了好些个房间。于是,杰夫问他的女儿艾拉(也是一名作曲家和声音设计师)能否在大学假期帮忙录制一些拟音。艾拉在一个安静房间(闲置卧室)里对厨房物品做了多个表面的录音和剪辑。不过,艾拉很快便忙于完成自己的大学音乐学业并创作第一首个人游戏配乐而无暇继续拟音工作。
原型设计 2 注释:
- 录音当中用到的道具都是游戏中实际出现的物品。
- 大多数表面都是真实的表面(如瓷砖、地毯等)。
- 有些表面需要临时准备(水槽用的是倒过来的金属烤盘)。
- 拟音的范围慢慢变得越来越广。
75K 个 WAV 文件?工作量太大完不成
这时杰夫意识到了两件事情:自己一个人无法完成这个项目,而且设计流程必须灵活、高效。最后,他得出了跟很多遇到这种情况的人一样的结论…救命啊!我需要帮助。
杰夫的妻子安吉拉拥有音频和视频背景。在 Electronic Arts Canada,她曾负责管理《Triple Play》和《NBA》等游戏的实况对白。管理海量数据可以说是她的专长。他心想,“她最合适了!”。
他们首先做了一些基本的数学计算。鉴于游戏设计,他们估计最终游戏总共会有 500 种不同的物品,它们可能会被放在 15 种不同的表面上,每种物品在每个表面上要有 10 种变化。也就是说,总共会有 75K 个声音文件。这么大的工作量能完成吗?答案很简单,“不能”。所以,他们需要转变自己的设计思路来减少拟音的数量,同时确保声音的多样性。另外,还要构建相应的流程来自动完成部分制作和整合工作。
高效的设计流程
借助三条设计思路,拟音的总量从 75K 减少到了 15K 以下。
通用软表面
安吉拉和杰夫发现,物品在软表面上发出的声音通常都差不多。为此,他们在地毯和床等软表面上对轻、中、重和超重物品做了通用的录音。然后,将这些声音指派给了大多数游戏物品,除了会在软表面上发出独特声音的物品(如餐具)。
通用物品
安吉拉和杰夫对听起来差不多的物品使用了通用的录音。其中包括玻璃、金属、陶瓷、塑料实心、塑料空心物品(重量等级分为轻、中、重和超重)。这些录音有很多种变化版本。很多游戏物品都能共用这些声音,而且整体效果并不会受太大影响。
为独特的声音使用调和音
游戏中听起来比较独特的物品可拆分为两种声音:放置物品的声音和物品固有的声音。小猪存钱罐就是个很好的例子。小猪存钱罐是个陶瓷制品,带有硬币嘎啦作响的声音。对此,杰夫和安吉拉明确了可使用通用录音的物品(小猪存钱罐使用了通用的陶瓷声音,这种声音在所有表面上都录制过了。硬币发出的响声被单独录了下来。并且,WAV 文件会被一并触发。)
REAPER
安吉拉和杰夫希望充分利用 REAPER 和 Wwise 的功能,并尽可能多地自动执行相关操作,从而简化制作流程。另外,他们希望工作流程是非破坏性的(降噪除外),并且方便重复用于不同的音频设置。
REAPER Dynamic Split
首先,他们构建了一些简单易用的功能。比如,Dynamic Split(将录音自动拆分为单个条目)。
REAPER 布局
REAPER 工程的布局与两个简化流程密不可分:自动命名文件和导出为与 Wwise 中的模板布局匹配的文件夹结构。安吉拉和杰夫使用音轨和子音轨纵向设置了游戏表面,并使用区域横向设置了游戏物品。每个表面音轨包含两条子音轨:place 和 pickup。
REAPER 布局放大视图
区域 Ceramic Light / 音轨 Benchtop / 子音轨 place / 子音轨 pickup
REAPER 布局的缩小视图:其中显示了区域、音轨和子音轨。区域列表允许按列排序、按条目搜索并跳到时间线中的某个区域。
通过主总线上的自动化功能管理 EQ 和频率
对于安静的声音,在将话筒靠近要录音的物品时往往会产生距离效应,导致录制出来的低频出现异常。对此,可使用几个不同强度的高通滤波器轻松解决(使用 Fabfilter 插件)。在必要的时候,可通过主总线上的自动化功能加以启用。声音尖锐刺耳的录音可使用 Oeksound 的 Soothe2 处理,需要更多低频的录音可使用 BOOM 的 ENFORCER 处理。
使用 REAPER 脚本自动命名文件
安吉拉和杰夫基于工程布局的区域/音轨/子音轨制定了以下文件命名规范:item_surface_action_variant#
他们使用了 X-Raym 的脚本按照特定模式进行重命名:通过区域识别物品,然后通过音轨识别表面,再通过子音轨识别操作(放置或捡取),最后对变化版本加以编号。该脚本能在几秒钟内命名 14K 个文件。
将 REAPER 导出与 Wwise 导入匹配
安吉拉和杰夫在设计 REAPER 布局时考虑到了 Wwise 布局。在从 REAPER 导出时,按照了与 Wwise 中的导入模板一致的模式命名并嵌套文件夹结构。这样可以借助自动化功能大大减少工作量。
最终输出按照与 Wwise 中的导入模板一致的模式使用“区域/音轨/子音轨”布局命名并嵌套文件夹和 WAV 文件。
Wwise
Wwise 初始设置
杰夫设置了一个名为 action 的 Wwise Switch Group,其中包含 "pickup" 和 "place" Switch。然后,又设置了一个包含所有表面的 "surface" Switch Group。不过,这一切是如何运作的呢?
在触发 Wwise Play Event 时,Unity 会设置这些 Switch。比如:
Play Event = Shoe_Heavy;Surface = Benchtop;Action = Place
然后,Wwise 会从该容器中随机选择 Switch。
使用 Wwise 模板将文件夹和 WAV 文件导入到指定的结构
在导入时,可将模板应用于所有物品并以此简化导入流程。该模板可确保与从 REAPER 导出的文件夹结构保持一致。藉此,为游戏中的每个物品自动创建所有 surface 容器并正确地进行嵌套,从而节省大量的时间。
导入流程
1. 选择要导入的文件夹(从 REAPER 导出的文件夹结构)。
2. 应用之前创建的模板。
在 REAPER 文件夹结构与模板匹配时,右侧的字体会高亮显示为黄色,表示 Wwise 找到了匹配的文件夹并会创建对应的容器。
在将音频导入到此容器结构后,会选中所有容器并为每个物品创建新的 Play Event。之后,Switch 会与 Play Event 一起运作。Wwise Play Event 会根据 Switch 对容器内容逐一进行筛选。
同样是刚才的例子:
Play Event = Shoe_Heavy;Surface = Benchtop;Action = Place
然后,Wwise 会从该容器中随机选择 Switch。
Google 电子表格
灵活地分配声音
现在,所有需要添加声音的游戏物品都在 Unity 中,录制的拟音全都在 Wwise 中。不过,游戏物品比独特声音的录音要多 – 大家可能还记得,安吉拉和杰夫制作了通用声音和调和音以便在多个物品之间共用。对此,需要在便于管理的地方做相应配置。而且,要能为游戏物品分配声音并实时试听声音的变化。为此,蒂姆在 Unity 中构建了一个方便将数据直接从 Google 表格下载到 Unity 工程中的工具。这样的话只需在 Unity 中单击一下,就可马上试听电子表格中做了更改的条目。Google 电子表格给了安吉拉很大的自主权(不依赖于程序员),让她可在某个声音不适用的时候试听并更改为物品分配的声音。在必要时,还可精细地调整对声音的分配。
Unity 中的定制审查工具
交叉引用
为了方便管理拟音,蒂姆还构建了定制的审查工具。因为游戏是分阶段构建的,在不同开发阶段会添加新的游戏物品和表面,所以要追踪在哪些表面上对哪些物品做了录音会变得越来越难。审查工具最初是为了避免在创建新的录音列表时做大量的手动交叉引用。不过,它的功能远不止如此。在不同模式下,其可显示下列内容:
- 整个游戏中可在上面放置任何游戏物品的表面
- 各种物品以及各个表面都缺少了哪些音频文件
- 电子表格中按照预期分配或覆盖的物品和表面
晃动方向和力度
晃动游戏中的物品
游戏中的很多道具(如存钱罐、棋盘、笔筒和水壶)都是可以晃动的。
为了对玩家晃动鼠标或控制器的操作做出自然的反应,杰夫和安吉拉试着对录音和剪辑流程进行了一些调整。
以下截图展示了 Wwise 中的设置:
"Shake_Piggybank" Blend Container 包含 "Left"、"Right" 和 "Stop" Switch Container。
通过鼠标移动代码发给 Wwise 的 direction 参数选择晃动方向。
在与晃动方向对应的 Switch Container 内选择晃动力度。
在将鼠标的移动速度发送到 Wwise 后,会选择晃动力度(Hard、Medium 或 Soft)。
结语
- 我们录制了大量游戏物品发出的声音!
- 我们通过设计思路减少了拟音的数量。
- 我们充分利用 REAPER 和 Wwise 简化了制作流程。
- 我们可以使用 Unity 中的定制审查功能轻松管理拟音。
如需进一步了解《Unpacking》的音频设计,请点击以下链接:
杰夫的 GDC 2022 演讲
Level with Emily Reese 播客
Unpacking Audio Deep Dive
希望各位喜欢这篇博文!
范戴克夫妇
ANGELA VAN DYCK |
评论