目录

Wwise SDK 2018.1.11
重要迁移说明 2016.1

WG-24215 重大变化:插件的动态和静态库系统 为了更好地支持商用游戏引擎(列如 Unity 和 Unreal 4)和第三方插件制造商,对插件系统进行全面修改。现在的插件有两种类型:静态库和动态库 。静态链接照常工作,值得注意的例外是AK::SoundEngine::RegisterPlugin() 现在不再是必需的,已经被废弃。保留此功能的目的是提供向下兼容。

由于此次全面修改,更改了插件工厂(位于 AK/Plugin/)的某些 include 文件名,以实现一致性。如果您通过 AllPluginRegistrationHelpers.h 和 AK::SoundEngine::RegisterAllPlugins() 链接所有插件,则您将不会受到更改的影响。否则,只要加入新文件,将自动执行注册。一个显著的变化是 AkVorbisFactory.h 已经重命名为 AkVorbisDecoderFactory.h。

按照以下步骤使用 2016.1 及其新的插件系统编译您的游戏:

  • 移除了 AK::SoundEngine::RegisterPlugin() 的所有调用。(无替代。)
  • 如果找不到某些工厂 include 文件(“SDK/include/AK/Plugin/*****Factory.h”),则在同一文件夹中查找新的相似文件名称。

另外,为避免支持不同接口的插件之间存在不匹配(可能导致崩溃),现在插件加入了版本概念。Wwise 以前版本的 Plugin 库不可用于当前版本;您需要安装正确的版本。

Note: 有关插件实现器的注意事项:使插件在 2016.1 工作的最小改动是:

  • 在 SoundBank 中定义一份 AK::PluginRegistration,命名为 YourPluginRegistration。通常位于“Create”调用的实现的同一 CPP 文件中。
  • 在您的工厂 include 文件(****Factory.h)中添加AK_STATIC_LINK_PLUGIN(YourPlugin) 宏。毫无任何例外,它是文件中唯一的一行。不应再暴露“Create”调用。
  • 在工程 DLL 中加入 DEFINE_PLUGIN_REGISTER_HOOK ,工程 DLL 位于与 DLL main()InitInstance() 相同的文件中。
  • 调用工程 DLL 的 DLL main() or InitInstance() 中的 AK::Wwise:RegisterWwisePlugin()
  • 其它头文件中不应包含出厂设置文件。它应位于 DLL main()InitInstance() 所在的同一文件中。
  • AkGetSoundEngineCallbacks() 函数不再需要。应删除它。
  • GetPluginInfo() 的实现中,将out_rPluginInfo.uBuildVersion 设为 AK_WWISESDK_VERSION_COMBINED<AK/AkWwiseSDKVersion.h> include 中没有定义它。

所有插件示例(SDK/samples/Plugins)均已更新。比较它们作为参考。 如果您想为 Unity 或 Unreal 提供 DLL,则注意这个和设计工具的 DLL 是不同的文件。检查 如何创建 Wwise 声音引擎插件 了解有关如何执行这些步骤的详情和例子。

WG-27060 (Android) 取消了对非 NEON CPU 设备(例如 Tegra 2)的支持。 现在所有 Android 预编译库都使用 NEON 指令。这带来了极大的性能提升。如果您针对的是非 NEON 设备,则仍可针对该目标编译代码(使用 2 级源代码)。

WG-28482 MP3 源插件示例已被移除。 MP3 源插件示例仅支持 Windows,它使用的是无法移植的 Windows API。现在它已经从发行版本中删除。

WG-28509 删除了 AkInitSettings 结构中的 uMaxNumTransitions 参数。 现在可按需求增长而自由提高过渡段的最大数量。现在已移除过渡段"剥夺"系统,除非系统内存不足,否则将执行所有过渡段。正确使用过渡段属于游戏的职责。

WG-28982 移除 iOS、tvOS 和 Android 中的声道限制 为了支持 iOS、tvOS 和 Android 的多声道数据, SoundBank 生成操作不再将输入数据下混为立体声。因此,为这些平台重新生成的 SoundBank 如果包含多声道声音,它们的大小可能会增大。如果资源管理需要它,则仍可在设计工具中将声音显式下混到立体声。

WG-28789 支持音频设备插件参数。

  • AkInitSettings 参数:AkAudioAPI eMainOutputType 已经被移除。
    • 在 Windows 中:此设置已经移到 AkPlatformInitSettingsAkAPI_Default 将支持 XAudio2。
    • Xbox One:此设置已移到 AkPlatformInitSettings 中。AkAPI_Default 相当于 WASAPI。
    • 在所有其它平台上:不再需要此设置,已将它删除。
  • 函数原型 AK::IAkSinkPlugin::Init() 现在有一个新参数:AK::IAkPluginParam * in_pParams;
    • 现在它与已经有此参数的所有其它插件类型一致。如果您移植现有插件,则只需忽略新参数 in_pParams 即可。
  • AkOutputSettings::pfSinkPluginFactory 参数已从AkOutputSettings 初始化结构中移除。从现在起,要初始化接收端插件(音频设备),您需要在Wwise工程中创建音频设备共享集,并使用相应的一组参数生成 SoundBank。
  • AK::AddSecondaryOutput(): AkOutput_Option*** 不再可与 in_iDeviceType 参数进行或运算。现在必须在新的 in_uOutputFlags 参数中单独提供它们。
  • AkOutput_Option*** 选项被重命名为 AkAudioOutputFlags_Option***

WG-28254 查询 API 更新:AK::SoundEngine::Query::GetRTPCValue() 中添加了一个新参数,以便通过播放 ID 检索 RTPC 值。为了迁移现有代码,只需将播放 ID 参数(in_playingID)设为 AK_INVALID_PLAYING_ID。请参阅 SDK 文档了解如何通过播放 ID 查询 RTPC 值的信息。

WG-29474 弃用的 AkSoundPosition 和 AkListenerPosition AkSoundPosition (游戏对象位置)以及 AkListenerPosition 已经替换成一个类型:AkTransform 。因此现在的游戏对象朝向完全由指向上方和前方的向量限定。成员必须带有赋值方法,迫使您改写填充这些结构的方式。

Note: 声音引擎没有用于检测游戏对象朝向有效性的内部检查。上方向量必须垂直于前部向量,并且归一化。然而,它只用于环绕立体声旋转。如果您没有使用环绕立体声文件,并且上方向量不太好用,则可将它们设为任意值,例如听者的上方向量。

WG-29828 (iOS) 对于 iOS,现在没有必要为正常的应用程序中断(后台/前台、音乐等)调用Suspend()WakeupFromSuspend() 。应用程序生命周期的管理由内部监控,这些调用由声音引擎处理。它只对 iOS 有效。

WG-30376 (Windows) 现在如果在 Windows 上使用 AkSoundEngineDLL ,就必须先安装 Visual Studio 2013 包。但是,这个DLL文件兼容用任何版本 Visual Studio 所做出的工程。