0% found this document useful (0 votes)
98 views8 pages

Vehicle Audio Modding Guide For Wreckfest - Wwise2019-1-6

This document provides instructions for modifying engine audio assets in Wreckfest, a racing game, using the Wwise audio engine. It describes downloading and setting up the Wwise authoring tool to match the version used in Wreckfest. It then explains how to import custom engine audio files, set up blend tracks to transition between the files based on RPM, and configure real-time parameters to control pitch and volume for a realistic engine sound. Additional tips are provided for balancing audio resources between player and AI vehicles.

Uploaded by

Amit Jain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views8 pages

Vehicle Audio Modding Guide For Wreckfest - Wwise2019-1-6

This document provides instructions for modifying engine audio assets in Wreckfest, a racing game, using the Wwise audio engine. It describes downloading and setting up the Wwise authoring tool to match the version used in Wreckfest. It then explains how to import custom engine audio files, set up blend tracks to transition between the files based on RPM, and configure real-time parameters to control pitch and volume for a realistic engine sound. Additional tips are provided for balancing audio resources between player and AI vehicles.

Uploaded by

Amit Jain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Engine audio modding guide for Wreckfest

Applies to: Wwise version 2019.1.6

This tutorial describes how to make custom engine audio assets to be used with the Windows version of
Wreckfest​, a banger / folk racing game developed by ​Bugbear Entertainment and published by ​THQ
Nordic​. Additional modding info can be found at the ​official Bugbear Community website​.

Basic Setup
The audio of Wreckfest is implemented using ​Wwise API and ​Wwise Authoring Tool by ​Audiokinetic​. To set
up a basic environment for modding:

1. Ensure you are running a latest version of Wreckfest.


2. Download and install Wwise Launcher​.
3. Run Wwise Launcher, select ‘Wwise’ tab and install the version that matches the version this
tutorial applies to (printed below document title).
4. Locate ​wreckfest_vehicle_audio.zip under the /tools subfolder of Wreckfest main installation
folder and extract it to a suitable location. Keep the zip archive for later use.
5. Open ​wreckfest_audio_example.wproj

If you are new to Wwise it is best to keep the ​official help documentation at hand, and in particular,
studying the basics of Wwise graphical user interface with the help of ​’Getting to Know..’ chapters under
Working with Wwise​. Additionally you might want to have a look at some of the ​official video tutorials​.
Links to specific topics are provided throughout this tutorial. There’s also a section with some additional
tips & tricks at the end of this document.

IMPORTANT: ​Wwise Authoring Tool version needs to match the version with which Wreckfest runtime
binaries were generated with. Otherwise any newly made soundbanks will not load. When API version is
updated in Wreckfest, you will then need to install a matching version of Wwise Authoring Tool and
regenerate any old soundbanks to continue using them.

Wwise Project Overview


The example project includes a basic framework needed to create engine audio designs. You need to
import your own assets, or commonly ‘Media Files’ in Wwise lingo (.wav files etc.), and adjust
vehicle-specific ​Real-Time Parameter Control (RTPC)​ curves to match your assets.

When carrying out edits, you will be primarily working in Designer screen layout. If this isn’t active, switch
to it by pressing F5. In this layout you will mainly use ​Project Explorer​, ​Property Editor​, ​Contents Editor and
Transport Control views (Picture 1). Additionally you will need to have ​Blend Track Editor view open,
further referred to as “BTE”, to this screen layout (press ​Control + Shift + B ​to show). A dual-head monitor
setup comes in handy here, just float the windowed BTE view over to second monitor.

Additional notes have been included to various objects within the audio object hierarchy, if not visible then
locate this under the ​‘Audio’ tab of Project Explorer. You can view the notes by selecting an object, then
opening Property Editor view (if not visible, press ​Shift + Y​) and clicking on box item in the upper right
corner of window (Picture 1).

Please refer to official documentation about ​The Project Hierarchy​ of a Wwise Authoring Project.
Picture 1: Wwise Authoring Tool with Designer layout (F5) active, and Blend Container selected in audio object hierarchy.

Engine Asset Importing & Basic Blend Track Setup


With the example project open in Wwise and Designer layout active, the objects which mostly need to be
edited are located in ​‘Modding Templates’ folder under the ​Actor-Mixer Hierachy​. There are separate
Work Unit objects (WU) for AI and Player vehicles; this instruction describes editing these objects, but you
can also copy/paste these to new WUs.

IMPORTANT: ​Do not modify objects or their placement under ​Master-Mixer Hierarchy​, as this could lead to
broken in-game settings and/or silence engine audio in-game, or when previewing within the Wwise
Authoring Tool.

The way basic engine audio is set up in Wreckfest is, the imported engine assets become child objects of a
Blend Container ​(BC) and are assembled to ​Blend Tracks (BT)​. The latter define the order and length of
how each asset will play, as the vehicle is revved over its full RPM range. The engine BC needs to contain
BTs at least for on-load and off-load states of an engine, to simulate the amount of load being applied to
engine. More BTs can be added for extra textures. The engine BC for AI vehicles is best kept greatly
simplified from that of the Player to optimize the use of hardware resources. ​Remember: ​There can be up
to 23 AI in a given race, and very complex designs can ramp up the CPU load in no time.
For a basic engine setup, you will need to prepare a bunch of assets to populate On-load and Off-load BTs.
Each of the assets needs to..

1. have a constant pitch (= steady RPM),


2. have a known ‘natural’ RPM value (= eg. at which RPM the asset was recorded), and
3. loop seamlessly.

You should have enough assets to cover the full RPM range that is set to the RTPC Game Parameter
Property (under ​Game Syncs tab of Project Explorer). For the example objects, max RPM is set to 6700.
Regardless of what files you have, it’s recommended to include the natural RPM with the filename for quick
reference later on.

With the basic assets prepared, drag & drop them (or the whole folder) over the AI or Player example BC
for import. Please refer to Wwise documentation about ​The Importing Process​ and ​Importing Media Files​.

Once assets have been imported (and in the process, assigned to child objects) you then need to enable
looping for each. Go through objects one by one and check ​“Loop – Infinite” under ​General Settings ​tab of
Property Editor view (Picture 2). Once this is done, Press ​Shift + C to open ​Audio File Conversion ​dialog,
check that ​“Windows” platform is selected and click ​OK.​ After this, with any child object selected, clicking
Play (or pressing ​Spacebar​) in Transport Control view (usually at bottom of Wwise main window) should
now produce audible sound. Stop the sound once you’ve had enough.

Picture 2: Looping enabled in BC child object

TIP: ​With the AI and Player example BCs, it is recommended to keep the example Onload & Offload BTs
intact for reference during editing; these can be used to copy/paste RTPC curves and deleted once you’ve
finished building custom Blend Tracks for the newly imported assets.

To start defining BTs for your imported assets, switch to BTE and ​(re-)select the BC in Project Explorer to
refresh BTE view. First, add new track(s) for groups of assets you imported by clicking ​‘New Blend Track’​,
then head back to ​Contents Editor (Picture 1) and drag the desired assets over to the appropriate BT list to
the right (Picture 3).

IMPORTANT: M​ake sure to organize child objects w ​ ithin each BT list ​so, that they are in ascending order by
RPM (idle to highest). This list defines the order in which included objects will appear in BTE, and you can
drag/drop here to reorder. BTE itself does not allow changing the order of assets!
Picture 3: Adding assets by drag & drop to a Blend Track within a Blend Container

Before getting into detail configuration of child objects of a BT we still need to define basic pitch tracking
for each. ​Do you still remember that ‘natural’ pitch value from before? Good! If not, go back and re-read
from previous page, for now’s the time to dig up them numbers!

To calibrate pitch tracking, select any of the example BC child objects and, in Property Editor, navigate to
RTPC tab, right-click ‘Voice Pitch’ (Y Axis) and copy the parameter. Select one of the new BC child objects,
and paste the copied parameter. Then, right-click somewhere on this newly added curve, select ​“Build
Smart Pitch Curve” from the context dialog and in the following window, input the native pitch value of
object and click ​OK​. Looking at the resulting graph, you should now see the native RPM value line up with
zero crossing of Voice Pitch / Y Axis.

NOTE: ​This calibration is needed only if you want the engine pitch to follow in-game RPM and/or to stay
consistent over a set of assets. If you have only one asset to cover the entire RPM range, don’t care about
pitch, or are designing a highly “experimental” engine, you can choose to skip setting up Smart Pitch Curves
entirely.

Detailed Blend Track Configuration


For information on how to monitor a Blend Track, please refer to chapter.. wait for it(!).. ​Auditioning the
Contents Of a Blend Container​ of Wwise documentation.

With the basic child object order and pitch tracking sorted, we can now do detail configuration of BT
objects, including overlaps (crossfades) between each, balancing of loudness etc. Open BTE, select BC to be
edited and you will see its BTs now filled with a bunch of colourful boxes. Each of these boxes represents an
object on BT lists we made previously. ​Nnice!

For each new BT, enable Crossfade (checkbox towards top-left in BTE) and assign the vehicle specific RPM
RTPC to control this. Doing so will add a matching RTPC marker / flag over the colored boxes (Picture 4).
Next, similar to copy/pasting the RTPC pitch curve, now instead do the same for RTPC Voice Volume curves
for any BTs you added.

Picture 4: The example Onload Blend Track, with Crossfade RTPC control added (green marker)
With both Y (target) and X (source) axis defined and the sound playing, dragging RTPC markers left/right
over the full BT range will simulate how the assigned parameter will affect the sound in-game. While this
isn’t an accurate representation of ​all the automation combined,​ it will still give you idea of how each
​ hen driven by the Wreckfest physics engine.
parameter behaves ​individually w

As load is applied (or engine allowed to decelerate) and the RPM changes accordingly, the appropriate BT
will play through child objects, and transitions between each need to sound smooth. This is achieved by
adding overlaps, aka crossfades, between child objects where one object fades in as the other fades out. To
make the objects overlap, move the objects or drag their left/right edges. Right-click these edges to select
the crossfade shape.

It’s recommended to first use shapes similar to those in example BTs - this is a specific type of equal
loudness crossfading that works most of the time. Even so, IF the overall loudness seems to dip over a
specific crossfade, then you need to try other shape combinations. Adjusted these by right-clicking
left/right edges of any object in BTE. With the BC playing, drag the example RTPC (green marker in Picture
4) over the problematic crossfade to monitor for volume changes. Adjust crossfade type and monitor for
changes to find your preference.

If loudness between objects doesn’t match or pitch doesn’t change smoothly (despite correct Smart Pitch
Curves have been set), these issues are best adjusted using object properties in Contents Editor (with BC
selected). Voice Volume RTPC curves should be only used to control the overall loudness of the engine, ​not
to kludge volume issues with any specific sound objects.

Picture 5: Adjusting child object pitch & volume using Contents Editor

For further reference please read chapters ​Managing Crossfades and ​Working with Blend Tracks of Wwise
documentation.

NOTE: ​The Wreckfest game engine communicates the amount of load placed on the engine to Wwise via a
Load parameter (eg. RTPC_Player_Load). This has a range of 0 to 1, and is used by Wwise to determine
whether to play objects from onload or offload BTs. With the car idling stationary, this load value sits at 0.5.
Any value above 0.5 indicates acceleration, whereas values below it indicate deceleration. Shifting gears,
applying brake or braking with the engine will temporarily drop the value below 0.5 and towards 0. From
here it will either jump back above 0.5 (if the gas pedal is pressed) or home in back to 0.5, as the vehicle
decelerates and pulls to a stop. Note that for the Player vehicle there’s a separate RTPC for throttle, to
communicate how far down the Player has pressed the gas pedal.
Calibrating Overall Volume
Final step in defining settings for your engine is to meter and adjust its volume for overall loudness. This will
set engine sound level on par with the other vehicles in the game.

Open ​Loudness Meter view by navigating to ​Views -> Loudness Meter -> Loudness Meter Sync Group 1
under main window pulldown menus. In this view you need to select the appropriate audio bus that will be
used to monitor for volume levels. Click the ​‘…’ button to open ​Project Explorer Browser and in that
window select either ​‘Car_Player’ to adjust Player vehicle, or ​‘Car_AI’ to adjust AI vehicle. Click OK to
confirm & close Browser.

Select the BC to be adjusted and hit Play in Transport Control view. If you’re not hearing sound, check that
‘States display’ (Click ‘States’ button) under Transport Control view shows that the ​‘Game’ state parameter
is set to ​‘None’​. Then:

1. In Transport Control, click button ​‘RTPCs’​, then find and adjust the
RPM RTPC which controls pitch of your engine. For the examples
provided, this is either RTPC_Player_Example or RTPC_AI_Example.
You should hear the pitch change. Set your RTPC to max value.
2. Also set the appropriate Load RTPC to max value.
3. If everything is now configured correctly, the Loudness Meter should
show at least two colored bars. We’re interested in the one that
reads ​“Integrated” underneath it. Unlike the other two other bars,
this will not register movement by default.
4. With the sound of your engine playing, press the ​‘Capture’ button in
the Loudness Meter view. You will see a timer start to count. Let it
run for 10 seconds and then press the same button again to stop
metering.
5. For Player vehicles, and with RTPC set to max., the Integrated value
should read about -15 (dB).
6. For AI vehicles, and with RTPC set to max., the Integrated value
should read about -19 (dB).
7. If the captured volume reading isn’t a match, open General Settings
tab of Property Editor with the BC selected and adjust Voice Volume
slider up or down depending on which way the value needs to go.
8. In the Loudness Meter view, click ‘Reset’.
9. Repeat from step 3 until the Integrated loudness value of your
engine matches the above. In general you should try matching the
value within a 1dB bracket. That is, between -15.5 to -14.5 for Player
vehicle, and -19.5 to -18.5 for AI vehicle.
Picture 6: Loudness Meter
capturing Car_Player bus.

NOTE: ​Occasionally you may find that even with values matching the above, the engine sound may still
struggle cutting through the mix, or being reasonably audible, among all the other vehicles in a race. If this
is the case, then try adjusting the Voice Volume for that BC higher at 1dB increments, until you find a level
that works. If you add / render any EQ effects to your engine sound, remember to check for levels in a
similar fashion. Cutting or boosting a frequency can greatly swing the metering result. After each change
you will need to regenerate soundbank(s), copy them to the correct folder and restart the game for changes
to take effect.
Generating Soundbanks
Soundbank objects are the assets used by Wreckfest game engine and Wwise API to play audio. These
objects act as a container for all objects (event triggers, assets etc.) required to play a specific set of sounds,
such as your freshly made vehicle engine mod. In order to generate a soundbank, you need to first define
what will be included.

If you’re modifying only AI_Modding_Example and Player_Modding_Example provided with the project,
these are included in similarly titled soundbanks and you only need to generate & copy files over. Any new
items added under these example objects get automatically added to their soundbanks too, unless
explicitly unchecked under the ​‘Edit’​ tab of ​SoundBank Editor​ view.

To generate soundbanks for your vehicle:

1. Switch Wwise to ​Soundbank​ layout by pressing F7.


2. Ensure that the bank(s) you wish to use is checked in ​SoundBank Manager view, along with
Windows platform and English language.
3. If you added soundbank objects in (​Soundbanks tab of Project Explorer), make sure your
Actor-Mixer objects are included: From SoundBank Manager view, select the Soundbank you wish
to modify, then select Audio tab in Project Explorer and drag & drop items to the ​‘Add’ tab of
SoundBank Editor view.
4. Click ​‘Generate Selected’​ and wait for the process to complete.
5. Under the Wwise project folder, you will then see a GeneratedSoundBanks folder. All the generated
soundbanks will go here.
6. Copy the ​.bnk file you wish to add, under /mods/example/data/vehicle/mod_vehicle_1/audio in
the Wreckfest installation folder.

For additional info about soundbanks, please read chapters ​Generating a Soundbank and ​Building
Soundbanks of Wwise documentation. There’s no need to copy over any other generated files other than
those named after the new engine sound, as none of the others will be used!

Integration to Wreckfest / Editing Vehicle Data


With the soundbank(s) generated and copied over, the final step is to let Wreckfest executable know which
bank(s) to look for and the correct events & RTPCs to call.

1. Under Wreckfest installation folder, open BagEdit subfolder and launch BagEditCommunity.exe
2. Open ​…mods/example/data/vehicle/mod_vehicle_1/audio/mod.engs​. The file with its full folder
path will open to the left window pane, and data in that file to the right window pane.
3. Make sure that the soundbank name and all RTPCs match the file you generated.
4. In the left pane, select ​mod_ai.enga​, repeat step 3, then jump to step 5.
5. In the left pane, navigate to ​…mods/example/data/vehicle/mod_vehicle_1/part/engine and edit
both ​mod.veen ​and ​stock.veen​. For each, check that ​‘Engine Sounds’ points to file in step 2 and
‘Engine Sounds AI’​ points to file in step 3.

Picture 7: Editing .veen files with BagEditCommunity.exe

TIP: ​Soundbank and modded car names can be anything but the folder structure has to match. For example
…mods/ MYOWNMOD/data/vehicle/MYOWNCAR/…
Tips and Tricks
Here’s a collection of miscellaneous tips & suggestions for your engine designs.

● You can set up objects for multiple engines to a single Wwise project, and generate only ones you
need. This is great for trying out variations of a vehicle, and storing all within a single project. Keep
in mind that the free license of Wwise allows for a project to hold only up to 200 objects.
● Preparing steady RPM assets from vehicle recordings often requires ‘flattening’ pitch change over
the length of each asset. Spectral visualizers, like the ‘Spectrograph Spectrogram Meter’ JS plugin
included with Cockos Reaper (​reaper.fm​) allows you to visually see some of this pitch change.
● Feeling lost with where to source engine sound recordings? T​ ry looking up one of the free annual
GDC Soundpack bundles. These contain huge variety of free-to-use sounds by professional sound
recordists and audio designers, including vehicle recordings, all to demo their commercial sound
libraries. The packs are tens of gigabytes in size though.
● You could also record engine sounds off of other games. Don’t forget to hold steady RPMs!
● Using Youtube to source engine assets is highly ​not recommended​. YT videos are commonly
recorded with integrated microphones of devices (eg. mobile phones) which are primarily designed
to capture the effective frequency range of human speech. The audio also has undergone at least
one pass (if not multiple passes) of lossy encoding. Garbage in, garbage out.
● Much of engine sound quality (besides decent quality source recordings) is attributed to re-pitching
of assets based on RPM. Having only a few assets to cover the full RPM range will add audible
imperfections to the sound, since assets are more likely played far beyond their natural pitch. Good
rule of thumb is to have natural RPMs spaced around 1000 RPM apart. Sometimes you might need
even more.
● If opting to synthesize sounds on a computer, sticking with real world conversion of ​1 RPM = 1/60
Hertz (Hz), or 1000 RPM = ~16.67 Hz will add a sprinkle of realism to your engine mod. Well, if
that’s what you’re after anyway.. ;-). For conversion reference, look up one of the numerous
RPM-to-Hertz / Hertz-to-RPM tools online.
● Furthermore, if synthesizing sounds on a computer, it’s good to keep in mind that engine RPM is
calculated from crankshaft rotations and not engine cycles. If synthesizing sounds eg. for a single
cylinder 4-stroke engine, this would have ignition occurring every two rotations of the crankshaft
(and further, sending a blast of ignition gases through the exhaust at same rate).
● Commonly, the basic engine intake sound is hiss that changes in loudness according to RPM, but
not in pitch. If including this type of sonic element to your sound, you don’t need to use the Build
Smart Pitch Curve feature. If you still fee the intake sound pitch needs to change, rather experiment
with far more gentle automation curves.
● If looking to include a turbo or supercharger sound texture, you can set up new BCs or additional
BTs under the main engine BC to simulate these. For any new BC(s), you will also need to modify
the event (triggering the sound) to include a ‘Play’ event. Note that Player vehicles also need a
‘Stop’ event to stop sounds from playing, eg. when exiting a race.
● Under the ‘Effects’ tab of Actor-Mixer Property Editor, try adding effects plugins like EQ to address
problematic frequencies in your engine recordings. To have any of these effects baked to assets
rather than calculated in runtime, then check the ‘Render’ option.
● To dynamically alter your engine sounds, try controlling effects plugin parameters with RTPCs such
as Player_Load, Player_RPM or Player_Throttle.
● To modify gear stick sound, import assets under the ‘GearStick’ Actor-Mixer object. Remember to
modify the event responsible of triggering this sound (eg. ‘Play_Player_GearShift_Example’) to
include newly added objects. If you don’t hear any GearStick sound in Wwise, in Transport Control
view check that Game state is set to ‘None’ and that ​RTPC_camera_index​ is set to 2.

You might also like