Table of Contents

Important Migration Notes (2012.2)

Environmental system is replaced by the Auxiliary Sends

Important: The environmental system was replaced by an auxiliary send system.

Here are the highlights:

Auxiliary Bus: The Auxiliary Bus is a new kind of bus that can be inserted anywhere in the Master-Mixer Hierarchy. It contains a subset of the features available on an audio bus, more precisely: audio output volume, effects, states and RTPC.

Auxiliary Sends: Any Actor-Mixer Hierarchy or Interactive Music Hierarchy object can define auxiliary sends which allow sending a portion of the audio signal to an auxiliary bus for parallel processing. Environmental effects are now assigned to auxiliary busses and the auxiliary send defines which object reacts to the environmental effects.

Game-defined Auxiliary Sends: Up to 4 simultaneous auxiliary sends can be set per game object dynamically in the game. Each send is defined by the auxiliary bus where the information is sent to and a send volume.

User-defined Auxiliary Sends: Up to 4 additional sends can be set per Actor-Mixer Hierarchy or Interactive Music Hierarchy object directly in the Authoring tool.

Every object that wants to use the game-defined send system must have the Use game-defined auxiliary sends option enabled. Enabling this option is equivalent to route the object to the bus previously identified as environmental.

Environmental Bus and Effect ShareSets: The environmental bus concept was removed. During the migration, every effect ShareSet with the Can be environmental option set to true will have a matching Auxiliary Bus created under the bus identified as environmental. Those auxiliary busses will host the ShareSet effects, and will be used by the game-defined send system.

API changes:

Please take note of the following API changes:

  • AK::SoundEngine::SetGameObjectEnvironmentsValues() becomes AK::SoundEngine::SetGameObjectAuxSendValues().
    Instead of using the SetGameObjectEnvironmentsValues() with shareset IDs, the game can use SetGameObjectAuxSendValues() with Auxiliary Bus IDs. The new function allows to set auxiliary sends, per game object, by specifying the send volume and the auxiliary bus.
  • AK::SoundEngine::SetGameObjectDryLevelValue() becomes AK::SoundEngine::SetGameObjectOutputBusVolume().
    Same behavior as before. Allows to set the main audio output bus volume, per game object, by specifying the direct volume to the bus.
  • AK::SoundEngine::SetEnvironmentVolume() removed.
    Use an RTPC on the Auxiliary Bus volume to achieve similar behavior.
  • AK::SoundEngine::SetEnvironmentVolumes() becomes AK::SoundEngine::SetAuxBusVolumes().
    Use SetAuxBusVolumes to specify per speaker volumes, for a specified auxiliary bus.
  • AK::SoundEngine::Query::GetEnvironmentVolumes() becomes AK::SoundEngine::Query::GetAuxBusVolumes().
    Use GetAuxBusVolumes to obtain the speaker volumes, for a specified auxiliary bus.
  • AK::SoundEngine::BypassEnvironment() removed.
    Use an RTPC on the Auxiliary Bus bypass effects property to achieve similar behavior.
  • struct AkEnvironmentValue becomes struct AkAuxSendValue.
    and members are renamed.
  • struct AkSpeakerVolumeMatrixCallbackInfo member changed.
    bIsEnvironmental was renamed to bUseWetVolumes.
  • AK_INVALID_ENV_ID replaced by AK_INVALID_AUX_ID
  • AK::SoundEngine::Query::GetGameObjectEnvironmentsValues() becomes AK::SoundEngine::Query::GetGameObjectAuxSendValues()

Known Issues

Override Parent: Objects that have a parent routed to the bus previously identified as environmental, but that are not routed to the environmental bus (because of Override Parent), will use the game-defined auxiliary sends after the migration. Please verify if any of these objects exist in your project, and make sure they don't use Game-Defined auxiliary sends in order to maintain the same behavior.

ShareSet without Can be Environmental: Effect ShareSets that were manually added to a SoundBank and that are used as environmental effects, but with the Can be environmental option set to false, won't be migrated to an Auxiliary Bus. Please take some time to identify these ShareSets and create one auxiliary bus for each associated effect, under the bus previously identified as environmental.

Name conflicts: When an Auxiliary Bus is automatically created at migration, it is possible that the newly created Auxiliary Bus name do not match the original ShareSet name from which it was created. Please consult the Project Load Log after the project is loaded.

Bus names must be unique

Bus names must now be unique across project. When migrating to 2012.2, busses may be renamed automatically to resolve conflicts.

API: SetEffect() renamed to SetBusEffect() and SetActorMixerEffect()

SetEffect() was renamed to SetBusEffect() and SetActorMixerEffect()

Volume can go over 0 dB

Volumes are now allowed to go over 0 dB. In previous versions, if RTPC, States or Events in the project were making the volume go over 0 dB, the volume was clipped to 0 dB. With 2012.2, the volume changes are all honored, and the volume could go over 0 dB. This could potentially affect the mix in your game.

Effect plug-ins need to specify if they use IsSendModeEffect()

When effects are inserted into an Auxiliary Bus, the dry signal may not be part of the output depending if AK::IAkEffectPluginContext::IsSendModeEffect() is returning true or false. It is the responsibility of the effect plug-in to query Wwise with IsSendModeEffect() at run-time initialization to know if it needs to output the dry signal.

When an effect is using the IsSendModeEffect() function, it should specify it inside its XML plug-in definition. The attribute SupportsIsSendModeEffect was added to allow the effect plug-ins to specify it. This attribute is optional.

<PluginModule>
    <EffectPlugin Name="My Effect" CompanyID="??" PluginID="??" SupportsIsSendModeEffect="true">
        ...