Wwise SDK 2021.1.8
|
Protocols
The Wwise Authoring API is accessible through different protocols and APIs:
- WAMP: WAMP is intended to connect application components in distributed applications. WAMP uses WebSocket as its default transport, which allows for ordered, reliable, bidirectional, and message-oriented communications. WAMP allows the clients to call functions with JSON arguments and retrieve structured JSON results. WAMP also allows clients to subscribe to notifications.
- HTTP POST: HTTP is an application protocol for distributed applications. HTTP is the most used method to transfer content on the Internet. POST enables the caller to send a document body, which, for the Wwise Authoring API, corresponds to the function arguments as JSON. The HTTP response is the JSON result.
-
Wwise Plug-ins: The Wwise Authoring plug-in API exposes a way to invoke WAAPI functions:
AK::Wwise::Plugin::Host::WaapiCall()
. Refer to Using the Wwise Authoring API in Wwise Plug-ins.
WAMP and HTTP protocols can be used with a variety of languages, such as C++, C#, JavaScript, Python, and other languages with HTTP or WebSocket support.
![]() |
Note: WAMP is an open standard WebSocket subprotocol that provides unified application routing. WAMP implementations are available in the most popular programming languages. Read more about WAMP at https://wamp-proto.org. |
![]() |
Note: WAMP provides the best performance and experience because it reuses the same WebSocket connection for the whole session and provides bidirectional communications. |
In summary, here are the features supported by the protocols:
API Feature | WAMP | HTTP POST |
AK::Wwise::Plugin::Host::WaapiCall() |
Remote Procedure Calls Allows to call functions remotely on Wwise authoring Refer to Wwise Authoring API Reference |
Supported | Supported | Supported |
Publish & Subscribe Allows to receive notifications when changes occur in Wwise authoring. |
Supported | Not Supported | Not Supported |
Optimal performance | Yes | No | Yes |
Programming Languages
If you wish to use WAMP as the protocol for WAAPI, several options exist. WAMP Implementations are available across different programming languages. You will be able to find a list of existing implementations on wamp-proto.org.
However, some of these implementations are more difficult or unfriendly to use. Since WAAPI only uses a subset of the features available in WAMP, and to ease the use of WAAPI, we implemented abstraction layers over some of the implementations available. Here is a table that lists our recommendations for the most popular languages.
Language |
Recommendation |
||
C++ (Recommended) |
Use AkAutobahn AkAutobahn is a fork of Autobahn C++, with reduced dependencies, and provides a simpler interface and high performance. Difficulty: Requires intermediate C++ programming skills.
|
||
C# (Recommended) |
Use WaapiClientCore or WaapiClientJson You have the choice of:
Difficulty: One of the easiest way to use WAAPI. Requires beginner C# programming skills. |
||
JavaScript/TypeScript with the most recent Node.js LTS (Recommended) |
Use waapi-client JS waapi-client is an abstraction layer over Autobahn JS. It adds promises and async/await support, and only expose the required WAMP functionality. Please note that waapi-client also includes the TypeScript bindings. Difficulty: Requires beginner to intermediate JavaScript programming skills. |
||
JavaScript with Browser |
Use autobahn-browser autobahn-browser is a WAMP implementation ready to use in a browser. Difficulty: Requires intermediate JavaScript & Web programming skills. |
||
Python 2.7 |
Use Autobahn Python Autobahn Python is difficult to use. Setup requirements are not trivial, and async programming skills are required. Refer to the hello-wwise-wamp sample for instructions on how to set up the python project and dependencies.
Difficulty: Requires advanced Python programming skills. |
||
Python 3.6+ (Recommended) |
Use waapi-client Python waapi-client is an abstraction layer over Autobahn Python. It offers a greatly simplified usage and only exposes the required WAMP functionality. Difficulty: One of the easiest way to use WAAPI. Requires only beginner Python programming skills. |
||
Other languages |
Use one of the WAMP implementations listed at https://wamp-proto.org/ or use WAAPI with HTTP directly. |
Refer to WAAPI Samples.