Wwise 工程文件的版本控制

Wwise 技巧和工具

很多游戏开发商会利用版本控制系统来存储工程文件,藉此为多人团队协作提供便利。那么,在本文中我们就来解答如下问题:Wwise 工程文件夹内哪些文件应当存储在版本控制系统中?

巧用

为了解答这个问题,我们先来说下在 Wwise 工程创建最终音频素材时,哪些文件是必不可少的。Audiokinetic 全职声音设计师马克西米连·西马德·波里尔 (Maximilien Simard Poirier) 为此专门制作了视频教程(详见此处)。

Wwise 工程和 Work Unit 文件

所有必要文件均可通过File Manager (Shift+F1) 来查看。当 Wwise 加载了《Cube》工程时,打开该对话框时将如下图所示:

Picture1 

上图表明,此处所示的 Cube.wproj 和全部文件夹对工程来说都是至关重要的。在展开 Actor-Mixer Hierarchy 文件夹后,会看到以下内容:

Picture2 

上图表示 Actor-Mixer Hierarchy 文件夹必须存在,并且至少还要包含 Default Work Unit.wwu 文件。假如从工程文件夹中删除 Actor-Mixer Hierarchy,Wwise 将会重新创建该文件夹,同时生成空的 Default Work Unit.wwu 文件,并在用户加载工程时显示警告消息。虽然即使没有其他Work Unit 文件,Wwise 也能打开工程,但是若想按需正常运行工程,还是需要连同这些 Work Unit 文件一并加载。因此,File Manager(文件管理器)的 Work Units(工作单元)选项卡中所示全部文件都要添加到版本控制系统中。

Wwise 工程文件夹所含内容

我们来看下工程文件夹,它包含了前面说到的各项和其他一些内容:

Picture3 

其中 .validationcache 和 .wsettings 是每个用户特有的文件,不应添加到版本控制系统中。IncrementalSoundBankData.xml 文件用来显示 SoundBank(音频包)内容更改情况,并需要在生成工程的 SoundBank 时更新。它只是依据本地 Wwise 工程内容和本地 SoundBank 生成记录来反映 SoundBank 的状态,并不应包含在版本控制范畴内。.cache 文件夹一般不会添加到版本控制系统中;我们会在后文中探讨 .cache 文件夹及其所含内容。

Wwise 源文件(即原始文件)

在单击 File Manager 的 Source Files(源文件)选项卡后,会看到以下内容:

Picture4 

上图显示了 Originals 路径下的文件夹结构和《Cube》工程所用的全部 WAV 和 MID 文件。所有这些文件都要用来组织创建 Wwise 工程的最终音频素材,包括 SoundBank、流播放文件和零散文件。这些源媒体文件全部都要添加到版本控制系统中。

Originals 文件夹所含内容

在通过 Windows 文件资源管理器浏览 Originals 文件夹时,会看到以下内容:

Picture5

每个 WAV 文件都设有对应的 AKD 文件,其中存有 WAV 文件所含音频内容的相关元数据。假如在 Wwise 工程中选择了相应功能,AKD 文件会包含 Loudness Normalization(响度归一化)和 HDR 包络跟踪数据。另外,还会包含将音频文件导入到工程中时,Wwise生成的峰值分析数据。AKD 文件会由 Wwise 根据需要自行创建,因此不必添加到版本控制系统中。

拙用

现在,我们已经了解在 Wwise 工程的最终音频素材创建中哪些文件是必不可少的。那么,SoundBank、流播放文件和零散文件是否也应添加到版本控制系统中呢?答案是,看情况。假如团队里有成员不使用 Wwise 但又要在开发中试听游戏当中的声音效果,那么他们就需要访问这些文件,而采用版本控制系统将会是最便捷的方式。倘若团队选用了这种方式,那可能会有一个坏处:SoundBank 会变得不同步。比如,若只将更新过的 SoundBank 添加到了版本控制系统而没有添加新的 Init.bnk,则声音引擎在尝试加载新的 SoundBank 时便会报错。又如,若流播放文件与 SoundBank 中所含对应 Prefetch(预取)数据不匹配,也会出现相同问题;若两者并非同一次生成,则可能会导致音频出错或崩溃。对于这些潜在问题,理想的解决办法是指定一台机器或一名团队成员来构建所有音频素材,并将其定期添加到版本控制系统中。利用这种 “SoundBank 专用编译机” 方式,可以避免音频素材不匹配造成的各种问题。

SoundBank Path 文件夹所含文件

SoundBank 文件包含经过转码的媒体,以及与声音相关的结构和 Event(事件),因此更新时必然要重新生成。只有在 Wwise 工程中一个或多个声音的 General Settings(常规设置)下设置了 Stream(流播放)选项时,才会生成流播放文件。零散文件或零散媒体会在选择使用 Prepare Event(预备事件)方法管理媒体时生成。

《Cube》工程只包含一个流播放文件,并未采用 Prepare Event 机制。假设在 Project Settings (Shift+K) 的 SoundBanks(音频包)选项卡下选择了以下选项:

 

Picture6

所生成 SoundBanks 文件夹中将包含以下内容:

Picture7 

此 Wwise 工程不包含任何本地化 Sound Voice(语音)对象,所以 English(US) 文件夹是空的。在运行时,Wwise 需要访问四个 BNK 文件以及 797700993.wem 流播放文件,以便播放工程内所含声音。PluginInfo.xml 文件列出了生成 SoundBank 内容时需要的各种插件。SoundbanksInfo.xml 文件用于在生成 SoundBank 时指示 CopyStreamedFiles.exe 工具要从缓存中复制哪些流播放文件。这两个 XML 文件仅供 Wwise 生成 SoundBank 使用,所以一般不应添加到版本控制系统中。若在必要时未找到这些文件,Wwise 会重新生成它们。

NameOfSoundBank.txt 文件会在勾选了 Generate Bank Content TXT Files(生成音频包内容 TXT 文件)选项时生成。虽然不用这些文件也能播放声音,但可以考虑利用它们将 Wwise 整合到项目工具链中。请与音频程序员核实是否要使用这些文件内容来支持游戏引擎中的某些功能。如若使用,则需将 Generate Bank Content TXT Files 生成的文件添加到版本控制系统中。

总之,假如决定将运行时音频素材添加到版本控制系统中,就必须添加 SoundBank 路径下所含全部 BNK 和 WEM 文件。基于 Wwise 与游戏引擎的集成方式不同,可能还要添加 TXT、XML 和 JSON 文件。

误用

前面说了各种必要和可选文件,下面来谈下哪些文件不应添加到版本控制系统中。

.cache 文件夹所含内容

我们已经探讨了 Wwise 工程内所含大部分内容,但还没说到 .cache 文件夹。正如文档中所述:“工程缓存文件夹包含 Wwise 在音频文件转码及 SoundBank 生成期间的中间数据”。通常,此文件夹不应添加到版本控制系统中。《Cube》工程的 .cache 文件夹内大部分都是 WEM 文件:

Picture8 

这些 WEM 文件的名称与其源 WAV 文件基本相同,只不过文件扩展名前加了十六进制编号。假如 Originals 文件夹所含内容设置了编码,则会针对工程内每一条目使用 Conversion Settings(转码设置)下指定的音频编解码器对 WAV 文件进行转码。声音所应用的全部属性(如 Volume、Pitch、Low/High Pass Filter)会同时影响创建的 WEM 文件。若 Effect(效果器)选用了 Render(渲染)选项,则会在 WEM 中渲染 Effect。若在 Wwise 的 Source Editor(源编辑器)中修剪了音频源,则编码后的文件中仅包含源文件的有效部分以便节省内存。在修改这些 WEM 文件后,其文件扩展名前的十六进制编号会随之变动。

另外,还有 .cache 中的 SBStat 文件夹,它包含多个 {GUID}.stat 文件(如下所示)。这些临时文件供 Wwise SoundBank Manager(音频包管理器)视图显示 SoundBank 的 Data Size(数据大小)和 Decoded Size(解码后大小)。Data Size 是所选平台对应的游戏内存占用大小;Decoded Size 是解码后的 Vorbis 媒体对应的游戏内存占用大小。

 

Picture9

虽然缓存文件原本并不应该共享,因为其内容随时都可利用相应 Wwise 工程和原始文件来重新创建,不过有些团队会选择性地将 .cache 所含内容添加到版本控制系统中。这样做的主要原因是,假如 Wwise 工程包含大量音频素材,那么重新创建 .cache 并实施转码时可能会相当耗时。这种方法的问题是,只要更改属性(如 Conversion Setting 或 Audio Source),文件名就会变动并保存到 .cache 文件夹中,最终导致很多不必要的文件添加到版本控制库中。

.backup 文件夹

Wwise 工程的根目录下还设有一个 .backup 文件夹。用户使用新的 Wwise 大版本设计工具打开并升级工程时,此文件夹将自动创建。在必要时,可利用 .backup 文件夹所含内容将 Wwise 工程还原到升级前的状态。您可以直接使用版本控制系统将 Wwise 工程恢复至升级前的版本并获取相同文件,所以根本没必要将该文件夹所含内容添加到版本控制系统中。

结语

首先,要养成将工程、Work Unit 和原始 WAV 文件添加到版本控制系统中的习惯。其次,在添加 SoundBank、流播放和零散文件时要注意保持同步;否则,可能会出错。最后,要避免添加 .cache 文件夹所含内容,以免出现问题。我希望这篇文章能让各位更清楚地了解 Wwise 工程文件夹内哪些文件应当添加到版本控制系统中!

纪尧姆·雷诺 (GUILLAUME RENAUD)

Audiokinetic

纪尧姆·雷诺 (GUILLAUME RENAUD)

Audiokinetic

Audiokinetic客户技术支持主管 纪尧姆自 2014 年初便加入 Audiokinetic 客户技术支持团队。他精通 Wwise 相关知识并热衷与社区分享,深信技术只有被用户理解才能尽其所用。在探索游戏和小说构筑的虚拟世界之余,他喜欢穿上跑鞋抑或踏上滑雪板投身现实天地。

评论

留下回复

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

更多文章

“零代码”开发小游戏—UE4蓝图与Wwise结合的设计思路 - Part 2

请阅读本文第一部分。

3.2.2020 - 作者:伍岚珊

在Wwise中进行大批量音频管理的思路分享

在我的日常音频工作中,经常会遇到需要做大批量语音文件导入、配置的情况,由此产生的批量化处理需求大致可分为三种:...

11.5.2020 - 作者:葛鑫

为 Wwise 2021.1 构建插件 | 第 1 部分:背景和目标

大家可能不知道,Wwise 生态系统其实具有很强的可扩展性。有时,各公司要为其项目构建定制的插件,供应商会将自研插件迁移到 Wwise。对此,我们必然要提供相应的支持。新的 Wwise...

27.9.2021 - 作者:米歇尔•多奈斯 (Michel Donais)

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3 - 如何在Wwise2021.1.x版本下继续使用Heavy Compiler?...

12.1.2022 - 作者:侯晨钟

关于如何在团队工作环境中使用 WAAPI 和 Python

在本文中,我想说说自己很长一段时间以来是如何使用 WAAPI 的。这当中用到了 Python、命令扩展 (Command Add-on) 和一个小的辅助程序 (Helper) 库。藉此,能以比...

11.5.2022 - 作者:尤金•乔尔内 (Eugene Cherny)

Wwise Spatial Audio 2023.1 新增功能 | Reverb Zone

Reverb Zone 简介 在 Wwise 23.1 中,我们为 Wwise Spatial Audio 增添了一个名为 Reverb Zone 的工具。Reverb Zone 本质上来说是...

10.1.2024 - 作者:托马斯•汉森 (Thomas Hansen)

更多文章

“零代码”开发小游戏—UE4蓝图与Wwise结合的设计思路 - Part 2

请阅读本文第一部分。

在Wwise中进行大批量音频管理的思路分享

在我的日常音频工作中,经常会遇到需要做大批量语音文件导入、配置的情况,由此产生的批量化处理需求大致可分为三种:...

为 Wwise 2021.1 构建插件 | 第 1 部分:背景和目标

大家可能不知道,Wwise 生态系统其实具有很强的可扩展性。有时,各公司要为其项目构建定制的插件,供应商会将自研插件迁移到 Wwise。对此,我们必然要提供相应的支持。新的 Wwise...