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:
AK::SoundEngine::RegisterPlugin()
. (Nothing replaces it.)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: Note to plug-in implementers: The minimal changes required to make your plug-in work in 2016.1 are:
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.
AkInitSettings
parameter: AkAudioAPI eMainOutputType
was removed.AkPlatformInitSettings
. AkAPI_Default
will favor XAudio2.AkPlatformInitSettings
. AkAPI_Default
is equal to WASAPI.AK::IAkSinkPlugin::Init()
now has a new parameter: AK::IAkPluginParam * in_pParams;
in_pParams
.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.AkInitSettings
: AkOutputSettings::audioDeviceShareset = AK::SoundEngine::GetIDFromString("InsertYourAudioDeviceSharesetNameHere");
in_iDeviceType
parameter anymore. They must now be provided separately in the new separate in_uOutputFlags
parameter.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: 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.