版本

menu_open
Wwise SDK 2021.1.14
重要迁移说明 2019.2

由于部分 2019.2 新增功能 的原因,您在迁移到 Wwise 2019.2 时需要注意以下事项。

弃用 Visual Studio 2013

因为取消了对 Visual studio 2013 的支持,所以要想获取声音引擎的预编译版 Windows 运行时 DLL,必须随 Wwise 一并安装 Windows SDK for Visual Studio 2017。

使用 Visual Studio 2019 构建设计工具

设计工具现在使用 Visual Studio 2019 而非 Visual Studio 2015 构建。Visual C++ Redistributable 对 Visual Studio 2015、2017 和 2019 来说都是一样的,所以插件开发人员可使用其中任一工具集来进行编译。 注意,鉴于 Visual Studio 版本 (16),我们将 Visual Studio 2019 工具集表示成了 vc160。不过,该工具集的官方版本其实是 vc142,代表其与 Visual Studio 2015 工具集 (vc140) 和 2017 (vc141) 兼容。 同理,我们将 vc150 表示成了 vc141。

现在需要 C++11 编译器

Wwise SDK 头文件现在需要有效的 C++11 来进行正常编译。如需查看支持的编译器列表,请参阅 平台要求 章节。

UTF-8 编码

Wwise 设计工具所生成的文本文件的编码格式现在为 UTF-8。我们删除了在 ANSI 和 Unicode 之间选用编码格式的选项。同时弃用了 SoundBank 生成前/生成后步骤所用的内置宏 ContentFileFormat,并将在下一版本中彻底将其移除。在 2019.2 中,提供的值将始终为 Unicode。另外,SoundFrame 收到的 SoundBank 生成设置将忽略 AK::SoundFrame::SoundBankGenerationSettings::eContentTxtFileFormat,而直接默认为 AK::SoundFrame::SoundBankContentTxtFileFormat_UNICODE。

PluginInfo.json 格式

SoundBank 的 PluginInfo.json 元数据文件的格式跟以前不一样了。确切地说,Plugins 现在只是一组简单的映射,而不是一个包含重复键值的嵌套映射。有些 JSON 读取器之前无法正确解析原来格式的数据。

新的 Memory Manager

为了实现 使用 Memory Categories 替代和扩展 Memory Pools 中所述的改进,我们对多个相关接口进行了修改。

针对 AK::MemoryMgr 接口 (AkMemoryMgr.h):

  • 添加了调试函数 AK::MemoryMgr::dRealloc,使用其来对应检测 AK::MemoryMgr::Realloc。
  • 将性能分析函数 AK::MemoryMgr::GetPoolStats 和 AK::MemoryMgr::GetPoolMemoryUsed 分别替换成了 AK::MemoryMgr::GetCategoryStats 和 AK::MemoryMgr::GetGlobalStats。
  • 修改了 AK::MemoryMgr::Free 和 AK::MemoryMgr::Falign 的返回值。
  • 从性能分析函数 AK::MemoryMgr::StartProfileThreadUsageAK::MemoryMgr::StopProfileThreadUsage 中移除了参数 AkMemPoolId(针对指定的线程收集所有内存类别的分配)。
  • 移除了内存池相关函数 AK::MemoryMgr::CreatePool、AK::MemoryMgr::DestroyPool、AK::MemoryMgr::GetNumPools、AK::MemoryMgr::GetMaxPools、AK::MemoryMgr::CheckPoolId、AK::MemoryMgr::GetPoolAttributes、AK::MemoryMgr::SetPoolName 和 AK::MemoryMgr::GetPoolName。
  • 移除了块分配函数 AK::MemoryMgr::GetBlock、AK::MemoryMgr::ReleaseBlock 和 AK::MemoryMgr::GetBlockSize。
  • 移除了调试函数 AK::MemoryMgr::CheckForOverwrite 和 AK::MemoryMgr::DumpToFile。

AK::MemoryMgr (AkModule.h) 的默认实现中:

  • 添加了函数 AK::MemoryMgr::GetDefaultSettings。
  • 修改了结构 AkMemSettings。

针对其他接口(考虑到移除了内存池):

  • 修改了 AK::SoundEngine::LoadBank 和 AK::SoundEngine::UnloadBank:为清楚起见,将“内存重载”细分为了 AK::SoundEngine::LoadBankMemoryView 和 AK::SoundEngine::LoadBankMemoryCopy。
  • 移除了 AkCommSettings::uPoolSize。
  • 移除了 AkInitSettings::uDefaultPoolSize、AkInitSettings::fDefaultPoolRatioThreshold、AkInitSettings::uPrepareEventMemoryPoolID 和 AkInitSettings::uMonitorPoolSize。
  • 移除了 AkPlatformInitSettings::fLEngineDefaultPoolRatioThreshold 和 AkPlatformInitSettings::uLEngineDefaultPoolSize。
  • 移除了 AkStreamMgrSettings::uMemorySize。
  • 移除了 AK::StreamMgr::GetPoolID。

I/O 改进

如果您要使用 AK::IAkStdStream 的自定义实现,必须使用针对接口指定的新函数 AK::IAkStdStream::WaitForPendingOperation() 。这时必须中断操作并只在完成待处理 I/O(如有)后返回结果,同时返回流的新状态。

Wwise Spatial Audio 迁移指南

Wwise 2019.2 对 Spatial Audio 进行了多项重要改进:该版本简化了工作流程以及 Spatial Audio 功能的集成和使用,并大大提升了性能和灵活性。不过,这些改进可能会影响到现有的工程。2019.1 中的有些功能并不会直接映射到 2019.2 中,因此需要手动进行迁移。为了给想要进行迁移的用户提供参考,此指南特地阐明了为何我们要实施这些改进以及它们将如何提升整体的用户体验。

直接在设计工具中配置 Spatial Audio

Wwise 的核心理念在于为声音设计师提供有力的帮助,从而使其尽量减少对程序员的依赖。所以,我们觉得非常有必要允许设计师直接在 Wwise 设计工具内而非另外在游戏引擎中配置 Spatial Audio 设置。*为此,我们将以下属性添加到了 Wwise 中的声音和总线对象:*

  • *Early Reflections Aux Bus*:设置此声音所要发送到的 Auxiliary Bus,以便实施早期反射处理。该总线必须搭载 Wwise Reflect 效果器插件才能对早期反射进行渲染。通过设置有效的早期反射总线,可在 Spatial Audio Runtime 中对此声音实施反射处理。对于不应生成早期反射的声音,需将此字段留空。
  • *Early Reflections Send Volume*:为 Early Reflections Aux Bus 所指定的早期反射总线设置发送音量。
    • 注意:用户可以通过新的 API AK::SpatialAudio::SetEarlyReflectionsVolume() 来针对特定游戏对象设置 Early Reflections Send Volume。此函数收到的值会跟设计工具中针对特定声音设置的音量加在一起。
  • *Enable Diffraction*:针对此声音启用衍射处理。在选中此方框时会:
    • 计算发声体和 Spatial Audio 听者之间的衍射路径,包括穿过 Portal 和绕过几何边缘的路径。
    • 根据衍射系数设置声障值。
    • 根据衍射系数设置 Diffraction 内置游戏参数。
    • 通过多点定位来根据计算得出的虚声源位置对声音实施声像摆位和衰减。 在这里要注意,Spatial Audio 配置设置现在是*针对特定声音来指定的*。之前,没有办法为同一游戏对象所播放的两个声音设定不同的设置。为此,只能另外创建游戏对象并为其设定新的发声体设置。

不再需要另外注册发声体

既然现在可以直接在工程中指定设置,那么在定义了 Spatial Audio 属性并需要加以处理的对象播放声音时,Spatial Audio Runtime 就能及时获知。如此一来,便*不必再将游戏对象注册为 Spatial Audio Emitter*。另外,我们还移除了 AkEmitterSettings。为了让 Spatial Audio 更加易于理解和使用,相较于 AkEmitterSettings,设计工具中*减少了不必要的设置*。您可以参考以下内容来迁移 AkEmitterSettings 中的各个字段,并在 Wwise 工程中的相应位置设置新的值。

  • *name*:不再适用。请在将游戏对象注册到声音引擎时使用调试名称。
  • *reflectAuxBusID*:现在在 Wwise 设计工具中针对特定声音来指定。现在需要在 General Settings 选项卡中为声音和总线定义早期反射总线。
  • *reflectionMaxPathLength*:不再需要。Spatial Audio 现在可访问由带有 Spatial Audio 设置的声音指定的衰减曲线,曲线中的 Maximum Distance 则用于 Reflection Distance 启发式算法。
  • *reflectionsAuxBusGain*:现在在 Wwise 设计工具中针对特定声音来指定。现在需要在 General Settings 选项卡中为声音和总线定义 Early reflections Send Volume。
  • *reflectionsOrder*:反射阶数现在作为全局设置传给 Spatial Audio Init Settings,不能再针对特定游戏对象来指定。Wwise 2019.2 中新构建的反射引擎不仅在处理高阶反射方面更加高效,而且对场景中的发声体数量也没有那么敏感了。它会统一地计算所有发声体的反射,所以没必要再针对特定发声体来指定反射阶数。
  • *reflectorFilterMask*:考虑到很少使用且会影响性能,我们在 Wwise 2019.2 中移除了此功能。
  • *roomReverbAuxBusGain*:若要更改 Room 辅助总线的发送电平,请在设计工具内的 General Settings 选项卡中修改 Game-defined send volume。
  • *diffractionMaxEdges*:若要针对特定声音启用衍射,请在设计工具内的 Positioning 选项卡中选中 Enable Diffraction 复选框。Max Edges 参数现在在 Wwise 2019.2 中是编译时常量。
  • *diffractionMaxPaths*:若要针对特定声音启用衍射,请在设计工具内的 Positioning 选项卡中选中 Enable Diffraction 复选框。Max Paths 参数现在在 Wwise 2019.2 中是编译时常量。
  • *diffractionMaxPathLength*:不再需要。Spatial Audio 现在可访问由带有 Spatial Audio 设置的声音指定的衰减曲线,曲线中的 Maximum Distance 则用于 Diffraction Max Path Length。
  • *useImageSources*:事实上始终为 true。因为现在可针对特定游戏对象来指定镜像声源,所以此附加设置不再必要且已被移除。

移除了多余的 Spatial Audio API

在 Wwise 2019.1 及较早版本中,Spatial Audio 中的很多 API 其实跟声音引擎中的 API 是重复的,但却专门应用于了注册为 Spatial Audio Emitter 的游戏对象。这样不仅容易产生混淆,而且无法确保用户调用正确的 API。在 2019.2 中,因为不再需要注册发声体,所以我们*移除了以下 API*。

不再需要针对 Portal 应用衰减

在大部分情况下,*用户需在 Wwise 设计工具中移除 Room 总线上所应用的全部衰减*。在 Wwise 2019.2 中,Spatial Audio 会将发声体和听者之间整条路径的距离应用于声音的衰减,所以现在不需要再在 Room 对象上设置衰减。

在 Wwise 2019.2 之前,用户使用 Portal 时常会遇到以下问题:对于通过 Portal 传播的混响,两个带有不同衰减的声音的相对混音不一致。比如,脚步声的衰减较短,枪炮声的衰减较长,两种声音都通过同一 Portal 传播。两种声音在 Portal 位置混合在一起,然后在同一位置重新进行空间定位。声音的衰减通过发声体和 Portal 之间的距离估算,而这段距离只是发声体和听者之间总距离的一部分。这时 Spatial Audio 依赖 Portal 的衰减来进一步对混响实施衰减。这样的话,随着听者离 Portal 越来越远,两个声音的相对音量保持不变,而不是像声音的原始衰减曲线指示的那样,脚步声比枪炮声衰减得要快。注意,只有湿声路径存在这种问题,直达路径还跟预期一样。

在 Wwise 2019.2 的 Spatial Audio 中,通过有效地将 Portal 的拾音位置设定到听者所在位置解决了此问题。如此一来,就可在将声音在 Room 的 3D 总线中混音之前,将声源和听者之间路径的总距离应用于声音的衰减曲线。现在没必要再将衰减应用于 Portal(即 Room 总线),不过有时候可能还会用到。通过对衰减进行后期混音,可进一步降低混响的音量,或对穿过 Portal 的混响额外进行滤波。

使用 WwiseConsole 替代 WwiseCLI

现在使用 WwiseConsole 替代了 WwiseCLI。不过,WwiseCLI 跟以前一样仍然可用。之前在 WwiseCLI 中执行的所有操作都可在 WwiseConsole 中完成,只需要更改一下语法就可以。建议最好迁移到 WwiseConsole,因为今后的新功能只会添加到 WwiseConsole。

WwiseCLI 和 WwiseConsole 之间的区别

WwiseConsole 会自动存档。在不带参数运行时,会列出支持的操作。然后,就可显示特定操作的相应 Help。WwiseConsole 信息也可在 SDK 文档中找到,提供有在线页面和离线文档两种形式。

比如,显示有关如何生成 SoundBank 的 Help:

WwiseConsole generate-soundbank --help

标准语法为:

WwiseConsole operation project --option1 valueOfOption1 --option2 valueOfOption2

WwiseConsole 示例

下面对照原有的 WwiseCLI 列出了一些 WwiseConsole 语法示例。

仅针对 Windows 和 Linux 平台生成 SoundBank。

WwiseCLI C:\MyProject\MyProject.wproj -GenerateSoundBanks -Platform Windows -Platform Linux
WwiseConsole generate-soundbank C:\MyProject\MyProject.wproj --platform Windows Linux

运行 WAAPI 服务器并启用详细日志记录。

WwiseCLI C:\MyProject\MyProject.wproj -Waapi -Verbose
WwiseConsole waapi-server C:\MyProject\MyProject.wproj --verbose

创建支持 Windows 和 Linux 平台的新工程。

WwiseCLI C:\MyNewProject\MyNewProject -CreateNewProject -Platform Windows -Platform Linux
WwiseConsole create-new-project C:\MyNewProject\MyNewProject.wproj --platform Windows Linux

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅