The latest release of Wwise 2024.1 for Godot is here, bringing significant improvements and new features to optimize the integration process. Designed to improve usability, this update introduces workflows similar to those used in the existing Unity and Unreal integrations, making it easier for developers familiar with those platforms to get started. Key changes include the introduction of the WwiseProjectDatabase as a new data source, support for Auto-Defined SoundBanks, Wwise Types, improved Plugin support across all supported platforms, and more. Explore the full breakdown of these updates and learn how to get started below.
Key Updates
WwiseProjectDatabase as Data Source
In earlier versions of the integration, WAAPI was used to generate Godot-compatible Wwise IDs for displaying Wwise objects in the Wwise Picker and WAAPI Browser. However, this approach had several limitations:
- Required the Wwise Authoring project to be open alongside the Godot Editor to generate IDs.
- Potential conflicts when connecting to the Authoring application if multiple projects were open simultaneously.
- Lack of a hierarchical overview of the Wwise project. Objects were displayed as a flat list without context (no folders or Workunits were displayed in the Picker for example).
- Manual ID regeneration inside the Godot Editor was necessary whenever the SoundBanks were updated.
What's new?
The WwiseProjectDatabase now tracks all relevant Wwise project data and auto-updates by monitoring a user-specified SoundBank directory:
- A generated asset called
WwiseProjectData
provides easy access to data about the Wwise project and core Wwise objects such as Acoustic Textures, Aux Buses, SoundBanks, Events, Game Parameters, States, Switches, and Triggers. This asset enables the retrieval of hierarchical Wwise object data and is automatically populated by the ProjectDatabase, ensuring that the asset stays up to date with changes in the Wwise project. - Editor components like the Wwise Picker and the new Wwise Browser now use this structured data instead of the static Wwise IDs, giving you an up-to-date snapshot of your Wwise project without extra manual steps. This change improves usability by providing a more accurate representation of the Wwise project.
The Browser and Picker are now both populated with data from the ProjectDatabase.
Support for Wwise Types
Similar to Wwise Types in the Unity Integration, Wwise Types in Godot are a collection of classes representing core objects within Wwise, such as SoundBanks, Events, Game Parameters, States, and Switches. When a Wwise Type is exported in a Godot script (meaning serialized and made available in the Inspector for users to edit), a button will appear in the Godot Inspector, allowing users to select their required object via the dedicated Wwise Picker:
In addition to representing Wwise objects, Wwise Types come with built-in functionalities that allow developers to interact with these objects directly. This removes the need to rely solely on the exposed functions in the Wwise
singleton.
For example:
- The
WwiseEvent
class includes apost
method to post Events directly from the object. - The
WwiseRTPC
class provides aset_value
method to set RTPC values.
These examples highlight the intuitive approach Wwise Types bring to interacting with Wwise objects.
Support for Auto-Defined SoundBanks
The integration now supports Auto-Defined SoundBanks by default. When a WwiseEvent
object that references an Event that is not included in a User-Defined SoundBank is instantiated in the engine, the integration automatically prepares the Event using the AK::SoundEngine::PrepareEvent
API after loading its SoundBank. The integration unprepares the Event and unloads its Bank when the WwiseEvent
is destroyed and not referenced anymore. Whether an Event belongs to a User-Defined SoundBank or not is determined by the ProjectDatabase.
As a result of this change, the AkBank
Node and the WwiseBank
type will only allow the selection of User-Defined SoundBanks in the Wwise Picker.
Improved Plugin Support Across Platforms
While the integration already supported plugins, enabling them was a difficult process. Users had to recompile the integration and explicitly specify the plugins they wanted to use (e.g., AK Convolution Reverb). This process has now been simplified across all supported platforms:
- The ProjectDatabase identifies which plugins are used in the project.
- During export, the integration automatically copies the required plugins to the export directory, allowing the Wwise soundengine to load them automatically.
- When previewing the game in the editor,
AkInitSettings::szPluginDLLPath
is used to specify the path to the shared libraries required by the soundengine. - On platforms such as iOS, static libraries and the necessary initialization code are added to the Xcode project during export. This is achieved using Godot Export APIs like
EditorExportPlugin::add_ios_project_static_lib
andEditorExportPlugin::add_ios_cpp_code
.
Additionally, users can now easily use their own custom plugins without recompiling the integration. The integration will detect the usage of custom plugins in the project. However, the Sound Engine Plugins must be copied manually to the respective platform's DSP folder in the integration. The Wiki includes a guide that details this process.
Wwise Objects as Assets
When selecting a Wwise object from the Wwise Picker, a corresponding Godot Asset (Resource) is created at res://Wwise/resources
. The resources store information such as:
- Name, ID, and GUID of the Wwise object.
- Additional metadata, e.g., whether an Event is included in a User-Defined SoundBank.
They are used and referenced by integration Nodes such as AkEvent3D
, AkBank
, AkSwitch
, AkState
etc. and by the exported Wwise Types.
It is important to note that these Resources are only created when users actively use them (e.g., by selecting them in the Wwise Picker) and not for all objects in the Wwise project.
In-Engine Documentation
Short documentation and code snippets for functions within the Wwise
and WAAPI
singletons, as well as various Wwise types, are now accessible directly in the editor. Users can jump to the documentation page by pressing CTRL and clicking on a function:
Getting Started with Wwise and Godot
Here’s how to set up the Wwise Godot integration in just a few steps:
Download the Latest Release
- Grab the latest version of the Wwise Godot integration from the Releases page in this repository.
- Make sure you have Wwise 2024.1.1 and Godot 4.3 installed.
Install and Configure
- The Getting Started Guide will walk you through the initial setup.
Explore the Wiki
- The Wiki offers comprehensive tutorials and useful examples that will help you make the most of the integration.
Join the Discord community to share your experiences and ask questions.
Comments