Table of Contents

Wwise SDK 2021.1.1
Creating a new Plug-in

To create a new plug-in, simply run the following in a command-line and answer the prompts:

python "%WWISEROOT%/Scripts/Build/Plugins/" new

Here is an example session:

> python "%WWISEROOT%/Scripts/Build/Plugins/" new
plug-in type {source, sink, object_processor, mixer, effect}: effect
Do you need to do out-of-place processing? (no)
project name: MyNewFX
display name: (MyNewFX) My New FX
author: Audio Kinetic
description: A brand new effect plug-in
About to create project with:
{'author': 'Audio Kinetic',
'description': 'A brand new effect plug-in.',
'display_name': 'My New FX',
'name': 'MyNewFX',
'out_of_place': False,
'type': 'effect'}
Is this OK? (yes)
Generating project structure for MyNewFX

This will create a directory that is named after your plug-in's current working directory. The directory contains a skeleton for the type of plug-in to create.

├── FactoryAssets
│   └── Manifest.xml
├── Help
├── MyNewFXConfig.h
├── PremakePlugin.lua
├── SoundEnginePlugin
│   ├── MyNewFXFX.cpp
│   ├── MyNewFXFX.h
│   ├── MyNewFXFXFactory.h
│   ├── MyNewFXFXParams.cpp
│   ├── MyNewFXFXParams.h
│   └── MyNewFXFXShared.cpp
├── WwisePlugin
│   ├── MyNewFX.def
│   ├── MyNewFX.xml
│   ├── MyNewFXPlugin.cpp
│   ├── MyNewFXPlugin.h
│   └── Win32
│       ├── MyNewFXPluginGUI.cpp
│       └── MyNewFXPluginGUI.h
│   └── res
│       └── Md
│           └── en
│               └──
├── additional_artifacts.json  
└── bundle_template.json

The purpose of these files and directories is as follows:

  • PremakePlugin.lua -> Premake file used to generate platform-specific solutions for a plug-in.
  • ProjectNameConfig.h -> Header file containing global identification variables for a plug-in. This is where the Company ID and Plugin ID can be modified.
  • WwisePlugin -> The directory containing the authoring part of the plug-in and it is used as a dynamic library by the Authoring application.
    • ProjectName.def -> DLL module definition file used to export the plug-in library (Windows only).
    • ProjectName.xml -> Description file containing information about several aspects of the plug-in. For more details, see Wwise Plug-in XML Description Files.
    • ProjectNamePlugin.h/.cpp -> Class that implements the backend part of the plug-in. For more details, see Authoring Plug-in Library Format.
    • Win32/ProjectNamePluginGUI.h/.cpp -> Class that implements the frontend part of the plug-in for Authoring on Windows. For more details, see Authoring Plug-in Library Format.
    • res/Md/en directory -> Files used to build the documentation of the plugin's properties in HTML format.
  • SoundEnginePlugin -> The directory containing the sound engine part of your plug-in. It is used in your game by the sound engine and can be built as a static library or a shared library.
  • FactoryAssets -> The directory containing any factory assets that should be installed with the plug-in. A Manifest.xml file in this directory specifies the required dependencies for any factory assets to be included in a project.
  • Help -> The directory containing plugin's documentation files that will be packaged and installed in the Authoring/Help/<PluginName> folder.
  • additional_artifacts.json -> A JSON file listing the paths of additional files to package.
  • bundle_template.json -> A JSON file containing plug-in's metadata used when creating the plug-in's bundle.

You can now successfully start writing your plug-in! Refer to Audio Plug-ins for more information on how to write audio plug-ins.

Note: Plug-in tools use a hash of the plug-in name to generate the Plug-in ID. If a user wants to change the Company ID or the Plug-in ID, they must change them in three files: ProjectNameConfig.h, FactoryAssets/Manifest.xml and WwisePlugin/ProjectName.xml.

Note: If you are generating plug-ins using the same settings and want to automate a task, prompts can be pre-filled by passing them as command-line arguments.

python "%WWISEROOT%/Scripts/Build/Plugins/" new [--sink | --mixer | --object_processor | --source | --effect] [--out-of-place] [-a AUTHOR] [-d DESCRIPTION] [-t DISPLAY_NAME] [-n NAME] [--no-prompt]

See the help of new command for the meaning of each argument.

python "%WWISEROOT%/Scripts/Build/Plugins/" new -h

Next section: Configuring Your Project With Premake