SlideShare a Scribd company logo
1 of 24
Download to read offline
A few ideas how to integrate Wwise Authoring API
(WAAPI) into your project workflow
Eugene Cherny
Audio programmer at NetEase Games
DevGAMM Fall 2021
About this talk
●
The goal is to provide a concise introduction to WAAPI, how to
integrate it, with examples
●
Rough plan
– Basics, important concepts, reference pages to bookmark
– Overview of tools involved and some ideas how to use them, also
on how to make your own tools that use WAAPI
– Examples
– Some pitfalls that you may or may not encounter
About WAAPI
●
Allows to perform editing actions on a Wwise project that’s currently open in the Authoring
tool
●
Possible: creating banks, events, containers, reading and modifying their properties,
importing audio
●
Your code can also subscribe to changes done in Wwise project
– E.g. to auto-rename event .uassets!
●
Some things aren’t reachable from WAAPI yet, e.g. RTPCs and blends
– Though keep an eye on the changelog
●
WAAPI has a client-server architecture: the authoring tool is a server, and your code
is a client
– For better or for worse
– Also, accessible either via a WAMP or a HTTPS endpoint
Things to bookmark
●
Wwise Authoring API Reference – Functions
https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi_functions_index.html
– Things that can be queried or modified
●
Wwise Authoring API Reference - Functions
https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi_topics_index.html
– Notifications Wwise Authoring tool can send to you
A little bit about Wwise projects
●
Essentially, Wwise projects are hierarchies of objects that together define playback
rules for the sound engine runtime
●
Each object belongs to certaing type / class (e.g. “Event”,
“RandomSequenceContainer”)
●
Each class has their own set of properties (e.g. “BusVolume”, “IsStreamingEnabled”)
●
Child objects inherit some of the properties from the objects higher in the hierarchy
●
Some things are exceptions, e.g., IIUC, RTPCs aren’t quite properties
To bookmark
●
Wwise Objects Reference
https://www.audiokinetic.com/library/edge/?source=SDK&id=wobjects_index.html
– Lists all available Wwise object types
– And their properties — which is essential when working with WAAPI
How to use WAAPI
●
C++, C#, NodeJS, Python — these languages have WAAPI clients from Audiokinetic
●
Also from Unity and Unreal Engine
●
Wwise Authoring tool must be running
– I think it can also be ran in a headless mode using WwiseConsole.exe
with “waapi-server” command
●
For the rest of the talk, we are going to be focused on Python
Running WAAPI scripts (1/2)
●
I like when tools don’t require working with CLI
●
Our team has a custom Total Commander that we distribute internally through SVN
– It bundles lots of portable tools and scripts
– We create top-bar menu items which can one-click run them
– Including WAAPI scripts, of course
●
Seriously, you should try Total Commander!
Running WAAPI scripts (2/2)
●
We also create Command Add-ons for Wwise Authoring tool
●
They allow to execute arbitrary commands and pass some project-specific arguments to
them, such as GUID of selected objects, path to Wwise project, etc.
●
And they allow to add new commands to menus, both a main menu and a context menu
– “My new favorite thing of all time!” © P. Griffin
●
More on this in the examples section
Distributing Python scripts (1/2)
●
Ideally, teammates shouldn’t have to configure anything in order to run tools
●
We solved this, again, with our Total Commander build
– A portable Python distribution was included with Total Commander
– All dependencies were installed there and synced through SVN, so everybody
has identical environments to run our tools
– This environment doesn’t conflict with system’s Python which can occasionally
be used by game projects we work with
– Occasional hiccups related to compiled packages such as NumPy
●
Essentially, SVN Checkout of our Total Commander updates all internal tools for
everyone in our team, i.e. about 30 people
Distributing Python scripts (2/2)
●
A super simple alternative is to keep Python scripts in
the Wwise project directory, e.g. “Scripts”
●
Audio team will always have latest scripts, but they
must configure Python environment themselves
– Which is not hard with instructions
– Don’t forget to update them when a new tool
introduces new package dependency
●
Can probably be solved by adding
“install_python_requirements.bat” to the
Wwise project root
●
We’re going to use this approach in the examples
ahead
And one more thing
●
Most of the WAAPI scripts I wrote were essentially CLI tools, they accept arguments,
print info to the console, etc.
●
I found that adding simple dialogue windows confirming success or failure, asking
for permission to proceed, etc. hugely improve experience working with such small
tools
– It’s just satisfying to know that the tool just finished and it gives some assurance
to proceed further with other things
●
The good part, these things can be easily displayed
with Python’s Tk — any of such dialogue windows is
one or two lines of code in most cases
Getting to examples
●
The purpose of those examples is to give a taste of how actual useful WAAPI scripts might
look like, as well as to, dare I say, to inspire to apply some of the mentioned techniques to
your own projects
●
Due to slide format, I’ll omit some parts of the code
●
I’ll also use a few helper functions that I wrote for myself that simplify communicating with
WAAPI a bit by handling JSON request and response packing and unpacking
●
So, basically, consider the examples as pseudocode rather than final code
●
The code should be available here:
https://github.com/ech2/DevGAMM_2021_Fall
– Warning: don’t expect scripts to be polished as I couldn’t just copy code used
on projects, so these were basically whipped up one day before the submission
deadline (kidding, mostly)
Prerequisites
●
In order to run scripts you’ll need a Python installed
– On Windows, tick “Tk” and “pip” check-boxes during installation
– And, of course, Python executable must be in PATH
●
Also install additional packages like follows:
pip install pyperclip waapi-client
pip install -U git+https://github.com/ech2/waapi_helpers.git
E1: copy GUID of a selected object
●
No WAAPI yet, but super useful and a
good example on how to configure
a command add-on
●
Pass a selected object GUID as an
argument to Python script which just
copies it to the clipboard
●
Right click on any object in the hierarchy to see the following option
– Courtesy of the Command Add-on on the right −−−−−−−−−−−>
E2: print names of all events
●
A simple script that lists all events in a project and shows it in a dialogue window
●
The script traverses the project starting from “Events” directory and yields only objects
that have type “Event”
– To be precise, not just objects their GUIDs and names
E3: configure streaming
for MusicTrack objects
●
Set streaming properties for all MusicTracks
– Super easy to forget and a bit annoying to do: need to go down to the hierarchy or use
Wwise Queries, which I always forget how to use
●
Unexpectedly, “Latency” is spelled “Lantency” — couldn’t understand why my script failed to set
this property first time I wrote this :)
E4: reset faders to zero
●
Set all faders under selected object to zero, except objects containing “@ignore” tag in
their comments
●
Note, objects in the Actor-Mixer Hierarchy have property “Volume”, but ones in Master-
Mixer Hierarchy use “BusVolume”
●
This example also shows a technique
of storing metadata in the “notes”
section, which tools can use for
something
E5: remove invalid events
●
Event is invalid if it has no actions or actions point to non-existing object
Idea: automatic .wav import
workflow
●
Goal is to create hierarchies, banks and events automatically when new .wav files
are imported — basically your own Wwise “templates” that can be instantiated
– Also feasible to regenerate implementations of already imported sounds
●
Approach 1: create objects right with WAAPI
– Easy to implement and debug
– IIRC, access to blends and RTPCs is quite limited
●
Approach 2: create “template” hierarchies in Wwise, copy and modify properties
properties, etc.
– Easy to understand, as “templates” live in a Wwise project
– Not trivial to implement, e.g. we had to store a bunch of metadata in object notes
Other WAAPI ideas
●
As you can see, lots of useful things can be done relatively easy
●
Some other ideas for further studies (we are quite time limited today):
– Automatically rename .uasset files in Unreal Engine when their corresponding
objects in Wwise are renamed
– Remove unused objects from Actor-Mixer Hierarchy
– Add game-specific Wwise project health checks, like reporting “Override Parent”
in unexpected places (hard to spot if it causes a bug!), check naming
consistency — everything that Integrity Report can’t do
●
Can run offline, generate HTML status pages, etc.
– Brew freshly ground coffee
Things to be aware of
●
WAAPI server halts when dialog windows in Wwise are open, e.g. User Settings or Source
Control
●
WAAPI call can time out when request was too large, e.g. requesting GUIDs of all objects in the
hierarchy
– I solved this in my scripts by only requesting direct children in one WAAPI call, Python
iterators make it basically invisible
●
When copying or moving things with WAAPI, MediaID can change in work units, which might
lead to inconveniences when using UE’s event-based packaging (lots of unrelated things in
changelists, need to regenerate data, etc.)
– For one of our tools we solved this by patching work unit files to preserve MediaIDs
●
Command add-ons can’t handle paths with white spaces in some cases
– Can be solved by adding tokens to arguments and parsing them in the scripts
Acknowledgments
●
One way or another, most of things presented here resulted from
working with these amazing people, in alphabetical order:
– Dmitry Patrakov
– Ruslan Nesteruk
– Viktor Ermakov
●
Also, while preparing this presentation, I used Limbo project as a
playground for testing scripts
Thank you!
Feel free to reach me out
me@eugn.ch
Discord ГРИА

More Related Content

Similar to Integrate Wwise Authoring API (WAAPI) into your project workflow

Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakayaMbakaya Kwatukha
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoinWilliam Chong
 
Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsSteve Keener
 
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...Paul Jensen
 
Building Eclipse Plugins with Tycho
Building Eclipse Plugins with TychoBuilding Eclipse Plugins with Tycho
Building Eclipse Plugins with Tychojsievers
 
Django Article V0
Django Article V0Django Article V0
Django Article V0Udi Bauman
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsAlessandro Pilotti
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkitPaul Jensen
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesYshay Yaacobi
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackke4qqq
 
ApacheCloudStack
ApacheCloudStackApacheCloudStack
ApacheCloudStackPuppet
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
JUST EAT: Embracing DevOps
JUST EAT: Embracing DevOpsJUST EAT: Embracing DevOps
JUST EAT: Embracing DevOpsPeter Mounce
 
One code Web, iOS, Android
One code Web, iOS, AndroidOne code Web, iOS, Android
One code Web, iOS, AndroidArtem Marchenko
 
Containerdays Intro to Habitat
Containerdays Intro to HabitatContainerdays Intro to Habitat
Containerdays Intro to HabitatMandi Walls
 
WordPress Must-Use Plugins (Quick Overview)
WordPress Must-Use Plugins (Quick Overview)WordPress Must-Use Plugins (Quick Overview)
WordPress Must-Use Plugins (Quick Overview)Ronald Huereca
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using SwiftDiego Freniche Brito
 

Similar to Integrate Wwise Authoring API (WAAPI) into your project workflow (20)

Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
 
Building JavaScript
Building JavaScriptBuilding JavaScript
Building JavaScript
 
Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable Results
 
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
 
Building Eclipse Plugins with Tycho
Building Eclipse Plugins with TychoBuilding Eclipse Plugins with Tycho
Building Eclipse Plugins with Tycho
 
Django Article V0
Django Article V0Django Article V0
Django Article V0
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
 
ApacheCloudStack
ApacheCloudStackApacheCloudStack
ApacheCloudStack
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
JUST EAT: Embracing DevOps
JUST EAT: Embracing DevOpsJUST EAT: Embracing DevOps
JUST EAT: Embracing DevOps
 
One code Web, iOS, Android
One code Web, iOS, AndroidOne code Web, iOS, Android
One code Web, iOS, Android
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Containerdays Intro to Habitat
Containerdays Intro to HabitatContainerdays Intro to Habitat
Containerdays Intro to Habitat
 
WordPress Must-Use Plugins (Quick Overview)
WordPress Must-Use Plugins (Quick Overview)WordPress Must-Use Plugins (Quick Overview)
WordPress Must-Use Plugins (Quick Overview)
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
Deploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab FacilitiesDeploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab Facilities
 

More from DevGAMM Conference

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...DevGAMM Conference
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...DevGAMM Conference
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...DevGAMM Conference
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...DevGAMM Conference
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)DevGAMM Conference
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...DevGAMM Conference
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...DevGAMM Conference
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...DevGAMM Conference
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...DevGAMM Conference
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)DevGAMM Conference
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)DevGAMM Conference
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...DevGAMM Conference
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...DevGAMM Conference
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)DevGAMM Conference
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...DevGAMM Conference
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...DevGAMM Conference
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...DevGAMM Conference
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...DevGAMM Conference
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...DevGAMM Conference
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...DevGAMM Conference
 

More from DevGAMM Conference (20)

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
 

Recently uploaded

SCRIP Lua HTTP PROGRACMACION PLC WECON CA
SCRIP Lua HTTP PROGRACMACION PLC  WECON CASCRIP Lua HTTP PROGRACMACION PLC  WECON CA
SCRIP Lua HTTP PROGRACMACION PLC WECON CANestorGamez6
 
Design Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William VickeryDesign Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William VickeryWilliamVickery6
 
VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130
VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130
VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130Suhani Kapoor
 
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 nightCheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 nightDelhi Call girls
 
Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`
Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`
Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`dajasot375
 
The_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdf
The_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdfThe_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdf
The_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdfAmirYakdi
 
Cosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable BricksCosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable Bricksabhishekparmar618
 
VIP Call Girl Amravati Aashi 8250192130 Independent Escort Service Amravati
VIP Call Girl Amravati Aashi 8250192130 Independent Escort Service AmravatiVIP Call Girl Amravati Aashi 8250192130 Independent Escort Service Amravati
VIP Call Girl Amravati Aashi 8250192130 Independent Escort Service AmravatiSuhani Kapoor
 
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
PORTAFOLIO   2024_  ANASTASIYA  KUDINOVAPORTAFOLIO   2024_  ANASTASIYA  KUDINOVA
PORTAFOLIO 2024_ ANASTASIYA KUDINOVAAnastasiya Kudinova
 
A level Digipak development Presentation
A level Digipak development PresentationA level Digipak development Presentation
A level Digipak development Presentationamedia6
 
3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdf3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdfSwaraliBorhade
 
VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...
VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...
VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...Suhani Kapoor
 
CALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun serviceanilsa9823
 
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfChapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfParomita Roy
 
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts ServiceCall Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Servicejennyeacort
 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...Call Girls in Nagpur High Profile
 
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130
VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130
VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130Suhani Kapoor
 

Recently uploaded (20)

SCRIP Lua HTTP PROGRACMACION PLC WECON CA
SCRIP Lua HTTP PROGRACMACION PLC  WECON CASCRIP Lua HTTP PROGRACMACION PLC  WECON CA
SCRIP Lua HTTP PROGRACMACION PLC WECON CA
 
young call girls in Pandav nagar 🔝 9953056974 🔝 Delhi escort Service
young call girls in Pandav nagar 🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Pandav nagar 🔝 9953056974 🔝 Delhi escort Service
young call girls in Pandav nagar 🔝 9953056974 🔝 Delhi escort Service
 
Design Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William VickeryDesign Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William Vickery
 
VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130
VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130
VIP Call Girls Service Mehdipatnam Hyderabad Call +91-8250192130
 
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 nightCheap Rate Call girls Kalkaji 9205541914 shot 1500 night
Cheap Rate Call girls Kalkaji 9205541914 shot 1500 night
 
Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`
Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`
Abu Dhabi Call Girls O58993O4O2 Call Girls in Abu Dhabi`
 
The_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdf
The_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdfThe_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdf
The_Canvas_of_Creative_Mastery_Newsletter_April_2024_Version.pdf
 
Cosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable BricksCosumer Willingness to Pay for Sustainable Bricks
Cosumer Willingness to Pay for Sustainable Bricks
 
young call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Service
young call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Service
young call girls in Vivek Vihar🔝 9953056974 🔝 Delhi escort Service
 
VIP Call Girl Amravati Aashi 8250192130 Independent Escort Service Amravati
VIP Call Girl Amravati Aashi 8250192130 Independent Escort Service AmravatiVIP Call Girl Amravati Aashi 8250192130 Independent Escort Service Amravati
VIP Call Girl Amravati Aashi 8250192130 Independent Escort Service Amravati
 
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
PORTAFOLIO   2024_  ANASTASIYA  KUDINOVAPORTAFOLIO   2024_  ANASTASIYA  KUDINOVA
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
 
A level Digipak development Presentation
A level Digipak development PresentationA level Digipak development Presentation
A level Digipak development Presentation
 
3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdf3D Printing And Designing Final Report.pdf
3D Printing And Designing Final Report.pdf
 
VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...
VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...
VIP Russian Call Girls in Gorakhpur Deepika 8250192130 Independent Escort Ser...
 
CALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Aminabad Lucknow best Night Fun service
 
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfChapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
 
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts ServiceCall Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
Call Girls In Safdarjung Enclave 24/7✡️9711147426✡️ Escorts Service
 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
 
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
 
VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130
VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130
VIP Call Girls Service Kukatpally Hyderabad Call +91-8250192130
 

Integrate Wwise Authoring API (WAAPI) into your project workflow

  • 1. A few ideas how to integrate Wwise Authoring API (WAAPI) into your project workflow Eugene Cherny Audio programmer at NetEase Games DevGAMM Fall 2021
  • 2. About this talk ● The goal is to provide a concise introduction to WAAPI, how to integrate it, with examples ● Rough plan – Basics, important concepts, reference pages to bookmark – Overview of tools involved and some ideas how to use them, also on how to make your own tools that use WAAPI – Examples – Some pitfalls that you may or may not encounter
  • 3. About WAAPI ● Allows to perform editing actions on a Wwise project that’s currently open in the Authoring tool ● Possible: creating banks, events, containers, reading and modifying their properties, importing audio ● Your code can also subscribe to changes done in Wwise project – E.g. to auto-rename event .uassets! ● Some things aren’t reachable from WAAPI yet, e.g. RTPCs and blends – Though keep an eye on the changelog ● WAAPI has a client-server architecture: the authoring tool is a server, and your code is a client – For better or for worse – Also, accessible either via a WAMP or a HTTPS endpoint
  • 4. Things to bookmark ● Wwise Authoring API Reference – Functions https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi_functions_index.html – Things that can be queried or modified ● Wwise Authoring API Reference - Functions https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi_topics_index.html – Notifications Wwise Authoring tool can send to you
  • 5. A little bit about Wwise projects ● Essentially, Wwise projects are hierarchies of objects that together define playback rules for the sound engine runtime ● Each object belongs to certaing type / class (e.g. “Event”, “RandomSequenceContainer”) ● Each class has their own set of properties (e.g. “BusVolume”, “IsStreamingEnabled”) ● Child objects inherit some of the properties from the objects higher in the hierarchy ● Some things are exceptions, e.g., IIUC, RTPCs aren’t quite properties
  • 6. To bookmark ● Wwise Objects Reference https://www.audiokinetic.com/library/edge/?source=SDK&id=wobjects_index.html – Lists all available Wwise object types – And their properties — which is essential when working with WAAPI
  • 7. How to use WAAPI ● C++, C#, NodeJS, Python — these languages have WAAPI clients from Audiokinetic ● Also from Unity and Unreal Engine ● Wwise Authoring tool must be running – I think it can also be ran in a headless mode using WwiseConsole.exe with “waapi-server” command ● For the rest of the talk, we are going to be focused on Python
  • 8. Running WAAPI scripts (1/2) ● I like when tools don’t require working with CLI ● Our team has a custom Total Commander that we distribute internally through SVN – It bundles lots of portable tools and scripts – We create top-bar menu items which can one-click run them – Including WAAPI scripts, of course ● Seriously, you should try Total Commander!
  • 9. Running WAAPI scripts (2/2) ● We also create Command Add-ons for Wwise Authoring tool ● They allow to execute arbitrary commands and pass some project-specific arguments to them, such as GUID of selected objects, path to Wwise project, etc. ● And they allow to add new commands to menus, both a main menu and a context menu – “My new favorite thing of all time!” © P. Griffin ● More on this in the examples section
  • 10. Distributing Python scripts (1/2) ● Ideally, teammates shouldn’t have to configure anything in order to run tools ● We solved this, again, with our Total Commander build – A portable Python distribution was included with Total Commander – All dependencies were installed there and synced through SVN, so everybody has identical environments to run our tools – This environment doesn’t conflict with system’s Python which can occasionally be used by game projects we work with – Occasional hiccups related to compiled packages such as NumPy ● Essentially, SVN Checkout of our Total Commander updates all internal tools for everyone in our team, i.e. about 30 people
  • 11. Distributing Python scripts (2/2) ● A super simple alternative is to keep Python scripts in the Wwise project directory, e.g. “Scripts” ● Audio team will always have latest scripts, but they must configure Python environment themselves – Which is not hard with instructions – Don’t forget to update them when a new tool introduces new package dependency ● Can probably be solved by adding “install_python_requirements.bat” to the Wwise project root ● We’re going to use this approach in the examples ahead
  • 12. And one more thing ● Most of the WAAPI scripts I wrote were essentially CLI tools, they accept arguments, print info to the console, etc. ● I found that adding simple dialogue windows confirming success or failure, asking for permission to proceed, etc. hugely improve experience working with such small tools – It’s just satisfying to know that the tool just finished and it gives some assurance to proceed further with other things ● The good part, these things can be easily displayed with Python’s Tk — any of such dialogue windows is one or two lines of code in most cases
  • 13. Getting to examples ● The purpose of those examples is to give a taste of how actual useful WAAPI scripts might look like, as well as to, dare I say, to inspire to apply some of the mentioned techniques to your own projects ● Due to slide format, I’ll omit some parts of the code ● I’ll also use a few helper functions that I wrote for myself that simplify communicating with WAAPI a bit by handling JSON request and response packing and unpacking ● So, basically, consider the examples as pseudocode rather than final code ● The code should be available here: https://github.com/ech2/DevGAMM_2021_Fall – Warning: don’t expect scripts to be polished as I couldn’t just copy code used on projects, so these were basically whipped up one day before the submission deadline (kidding, mostly)
  • 14. Prerequisites ● In order to run scripts you’ll need a Python installed – On Windows, tick “Tk” and “pip” check-boxes during installation – And, of course, Python executable must be in PATH ● Also install additional packages like follows: pip install pyperclip waapi-client pip install -U git+https://github.com/ech2/waapi_helpers.git
  • 15. E1: copy GUID of a selected object ● No WAAPI yet, but super useful and a good example on how to configure a command add-on ● Pass a selected object GUID as an argument to Python script which just copies it to the clipboard ● Right click on any object in the hierarchy to see the following option – Courtesy of the Command Add-on on the right −−−−−−−−−−−>
  • 16. E2: print names of all events ● A simple script that lists all events in a project and shows it in a dialogue window ● The script traverses the project starting from “Events” directory and yields only objects that have type “Event” – To be precise, not just objects their GUIDs and names
  • 17. E3: configure streaming for MusicTrack objects ● Set streaming properties for all MusicTracks – Super easy to forget and a bit annoying to do: need to go down to the hierarchy or use Wwise Queries, which I always forget how to use ● Unexpectedly, “Latency” is spelled “Lantency” — couldn’t understand why my script failed to set this property first time I wrote this :)
  • 18. E4: reset faders to zero ● Set all faders under selected object to zero, except objects containing “@ignore” tag in their comments ● Note, objects in the Actor-Mixer Hierarchy have property “Volume”, but ones in Master- Mixer Hierarchy use “BusVolume” ● This example also shows a technique of storing metadata in the “notes” section, which tools can use for something
  • 19. E5: remove invalid events ● Event is invalid if it has no actions or actions point to non-existing object
  • 20. Idea: automatic .wav import workflow ● Goal is to create hierarchies, banks and events automatically when new .wav files are imported — basically your own Wwise “templates” that can be instantiated – Also feasible to regenerate implementations of already imported sounds ● Approach 1: create objects right with WAAPI – Easy to implement and debug – IIRC, access to blends and RTPCs is quite limited ● Approach 2: create “template” hierarchies in Wwise, copy and modify properties properties, etc. – Easy to understand, as “templates” live in a Wwise project – Not trivial to implement, e.g. we had to store a bunch of metadata in object notes
  • 21. Other WAAPI ideas ● As you can see, lots of useful things can be done relatively easy ● Some other ideas for further studies (we are quite time limited today): – Automatically rename .uasset files in Unreal Engine when their corresponding objects in Wwise are renamed – Remove unused objects from Actor-Mixer Hierarchy – Add game-specific Wwise project health checks, like reporting “Override Parent” in unexpected places (hard to spot if it causes a bug!), check naming consistency — everything that Integrity Report can’t do ● Can run offline, generate HTML status pages, etc. – Brew freshly ground coffee
  • 22. Things to be aware of ● WAAPI server halts when dialog windows in Wwise are open, e.g. User Settings or Source Control ● WAAPI call can time out when request was too large, e.g. requesting GUIDs of all objects in the hierarchy – I solved this in my scripts by only requesting direct children in one WAAPI call, Python iterators make it basically invisible ● When copying or moving things with WAAPI, MediaID can change in work units, which might lead to inconveniences when using UE’s event-based packaging (lots of unrelated things in changelists, need to regenerate data, etc.) – For one of our tools we solved this by patching work unit files to preserve MediaIDs ● Command add-ons can’t handle paths with white spaces in some cases – Can be solved by adding tokens to arguments and parsing them in the scripts
  • 23. Acknowledgments ● One way or another, most of things presented here resulted from working with these amazing people, in alphabetical order: – Dmitry Patrakov – Ruslan Nesteruk – Viktor Ermakov ● Also, while preparing this presentation, I used Limbo project as a playground for testing scripts
  • 24. Thank you! Feel free to reach me out me@eugn.ch Discord ГРИА