Table of Contents

Important Migration Notes 2016.1

WG-24215 BREAKING CHANGE: Dynamic and static library system for plug-ins In order to better support commercial game engines (such as Unity and Unreal 4) and 3rd-party plug-in makers, the plug-in system was overhauled. Plug-ins now come in two flavors: static libraries and dynamic libraries. Static linking works as before, with the notable exception that AK::SoundEngine::RegisterPlugin() is now unnecessary and deprecated. The function is kept for backward compatibility.

Because of this overhaul, some include filenames for plug-in factories (in AK/Plugin/) were changed for consistency. If you were linking with all plug-in through AllPluginRegistrationHelpers.h and AK::SoundEngine::RegisterAllPlugins(), you will not be affected by the change. If not, simply include the new file and the registration will be done automatically. One notable change is AkVorbisFactory.h, which has been renamed AkVorbisDecoderFactory.h.

Follow these steps to get your game compiling with 2016.1 and its new plug-in system:

  • Remove all calls to AK::SoundEngine::RegisterPlugin(). (Nothing replaces it.)
  • If some factory include files ("SDK/include/AK/Plugin/*****Factory.h") are not found, find the new, similar filename in the same folder.

Also, to avoid mismatches between plug-ins that support different interfaces (which could lead to crashes), plug-ins are now versioned. The Plugin library from previous versions of Wwise will not work in the current version; you need to install the correct version.

Note.gif

Note: Note to plug-in implementers: The minimal changes required to make your plug-in work in 2016.1 are:

  • Define an instance of AK::PluginRegistration in your lib, named YourPluginRegistration. Usually, in the same CPP file as the implementation of the "Create" callbacks.
  • Add the AK_STATIC_LINK_PLUGIN(YourPlugin) macro in your factory include file (****Factory.h). Barring certain exceptions, this should be the only line in the file. The "Create" callbacks should not be exposed anymore.
  • Add DEFINE_PLUGIN_REGISTER_HOOK into your authoring DLL, in the same file as your DLL main() or InitInstance().
  • Call AK::Wwise:RegisterWwisePlugin() in the DLL main() or InitInstance() of your authoring DLL.
  • The Factory file should NOT be included in other header files. It should be included in the same file as your DLL main() or InitInstance().
  • The AkGetSoundEngineCallbacks() function is not needed anymore. You should delete it.
  • In your implementation of GetPluginInfo(), set out_rPluginInfo.uBuildVersion to AK_WWISESDK_VERSION_COMBINED. This is defined in the <AK/AkWwiseSDKVersion.h> include.

All plug-in samples (SDK/samples/Plugins) have been updated. Compare them for reference. If you want to provide a DLL for Unity or Unreal, it is not the same file as the authoring DLL. Check the How to Create Wwise Sound Engine Plug-ins for details and examples on how to do these steps.

WG-27060 (Android) Dropped support for non-NEON CPU devices (such as Tegra 2). Now all Android pre-compiled libraries are now using NEON instructions. This provides a very significant performance improvement. If you target non-NEON devices, you can still compile the code for that target (with Level 2 sources).

WG-28482 MP3 source plug-in sample was removed. The MP3 source plug-in sample was supported on Windows only, using a Windows API that could not be ported. It is now removed from the distribution.

WG-28509 Removed the parameter uMaxNumTransitions from the AkInitSettings structure. The maximum number of transitions can now freely grow as needed by demand. There is no more transition stealing system and all transitions will now be honored unless the system runs out of memory. It is the game responsibility to make a proper usage of transitions.

WG-28982 Remove channel restrictions on iOS, tvOS and Android To support multichannel data for iOS, tvOS and Android, SoundBank generation does not downmix input data to stereo anymore. Consequently, SoundBanks re-generated for these platforms may increase in size if they contain multichannel sounds. If resource management requires it, one can still downmix sounds explicitly to stereo within the authoring tool .

WG-28789 Support Audio Devices plug-in Parameters.

  • The AkInitSettings parameter: AkAudioAPI eMainOutputType was removed.
    • On Windows: This setting was moved into AkPlatformInitSettings. AkAPI_Default will favor XAudio2.
    • Xbox One: This setting was moved into AkPlatformInitSettings. AkAPI_Default is equal to WASAPI.
    • On all others platforms: This setting is not required anymore and was simply removed.
  • The function prototype AK::IAkSinkPlugin::Init() now has a new parameter: AK::IAkPluginParam * in_pParams;
    • This is now consistent with all other plug-ins types which already had this. If you are porting an existing plug-in, simply ignore the new parameter in_pParams.
  • The AkOutputSettings::pfSinkPluginFactory parameter was removed from the AkOutputSettings initialization structure. From now on, to initialize a sink plug-in (Audio Device) you need to create an Audio Device ShareSet in the Wwise project and generate your SoundBanks with a proper set of parameters.
  • AK::AddSecondaryOutput(): AkOutput_Option*** are not Or-able with the in_iDeviceType parameter anymore. They must now be provided separately in the new separate in_uOutputFlags parameter.
  • AkOutput_Option*** options were renamed AkAudioOutputFlags_Option***

WG-28254 Query API Update: A new parameter has been added to AK::SoundEngine::Query::GetRTPCValue() to support retrieval of an RTPC value by playing ID. To migrate existing code, simply set the playing ID parameter (in_playingID) to AK_INVALID_PLAYING_ID. See the SDK doc for information on how to query an RTPC value by playing ID.

WG-29474 Deprecated AkSoundPosition and AkListenerPosition AkSoundPosition (game object position) and AkListenerPosition have been replaced by a single type: AkTransform. Therefore, game object orientation is now fully qualified with a top and a front vector. Members must be modified with setter methods, forcing you to rewrite how you fill these structures.

Note.gif
Note: There is no internal sound engine check for detecting the validity of game object orientation. The top vector must be perpendicular to the front vector and normalized. However, this is only used for ambisonics rotation. If you are not using ambisonics files and no top vector is readily available, you may set them to any arbitrary value, such as the listener's top vector.

WG-29828 (iOS) It is now unnecessary to call Suspend() and WakeupFromSuspend() for iOS for normal application interruptions (background/foreground, music, and so on). The management of the application life cycle is monitored internally and these calls are handled by the sound engine. This is valid only for iOS.

WG-30376 (Windows) If using AkSoundEngineDLL on Windows, it is now necessary to install the Visual Studio 2013 package to have it. However, this DLL is compatible with projects compiled with any version of Visual Studio.