Howdy Supersonic Travellers,
I’m Ali, the audio designer for Worlds Adrift. That means that I create the sound effects and collaborate with the technical artists and the code team to make those sounds come to life in-game. A couple of weeks back Malford and I took a trip into the recording studio to work with some very talented voice artists to create some new dialogue assets.
Our characters in the shattered skies are pretty quiet at the moment. Maybe a little yelp of displeasure when the physics has it’s evil way with you, but that’s been about it. That isn’t necessarily a bad thing; stillness and peace are key tenets for the audio scape of Worlds, but we thought it was time to give it a little overhaul and hire some professional windpipes. We decided to improve in two areas. Non verbal voice assets for player effort, impacts and deaths. And voice assets to complement the new emote wheel.
- Keep pain thresholds high. We don’t want the characters sounding like they’ve lost 3 limbs each time you clip a tree. We focused on the air getting knocked out of the character’s lungs.
- Tone down death. Death is a reality. It doesn’t need to sound like Caesar taking six in the back from Brutus each time you hit the death cloud. We recorded different death emotes for ways of dying (ie. choking when you reach the bottom).
- Have fun with the emote wheel. The first category of sounds were more “important” types of sounds, giving the player direct feedback from their individual character. The emote wheel is entirely about interacting with other players around you. Give the chance to express a variety of emotions.
First we showed our two voice actors some footage. The cinematic intro, video of me spamming “Random” in the character select to give them an idea of what we look like in world, and a chunk of early gameplay. We talked through some things to avoid. Not overplaying injury and death, portraying the characters as independent, strong and proactive against the hostile world. Then these incredibly talented people just get in the booth and knock that sh*t out. It was incredible to behold. Here’s some of the things we did.
*WORLD PREMIERE* (in E3 xbox guy’s voice…)
INJURY RECORDING SESSION:
Instead of having the actors record InjurySmall, InjuryMedium, InjuryBig 15 times, we instead had them adlib to footage of me faceplanting. *Note these videos in no way represent the finished project. Just here as a curiosity.
EMOTE RECORDING SESSION:
These were performed “to picture” by the actors. Sneak peak of the dancing at the end. We hope you enjoy playing with it once editing and implementation brings it to a floating island near you!
P.S. We had to step in for an emergency pickup because the male actor was unable to burp on command. Thank GOD for Malford.
GETTING THE SOUNDS INTO THE GAME
A few days after leaving the studio we received 741 audio files of all the various takes / variants performed by our actors. So what happens between this and you wonderful community members getting your hands on them in game? Well quite a lot really! I’ll try to keep it lite (but hit me up in the comments for any more detail, I love talking about this stuff).
First pass at choosing which files work and which don’t. Need to keep it broad here as you never know until the assets get in game. Next, clean all the files using Izotope RX so that there’s no unwanted noise. Then I move over to my DAW (Digital Audio Workstation), I use Reaper, and tackle all the processing that these files require. This includes balancing levels, EQing vocal characteristics – either removing or enhancing, and maybe some compression/distortion as required. The assets that are meant to sync with visuals are then edited or looped also.
Now that I have all the files processed to a professional standard I need to convert them into a format that the game engine can interact with. For this we use a piece of audio middleware software, called Audiokinetic Wwise, which essentially takes all the sound files and all the instructions of how to play them back and condenses them into something called a Soundbank.
Game Engine Implementation
So what does the engine need to communicate to the soundbank to cause the sound to play? Basically it boils down to 2 elements. Exactly when to start and stop the sound (and how). And the location (parent object) from which this should play. Let’s take the Jumping Jacks emote as an example.
- Player selects jumping jacks emote from radial menu. Unity triggers event “Player_Emote_JumpingJacks_Male_Start”
- A random playlist container holding a number of variations of a single cycle of the jumping jacks animation starts playing through variants on loop.
- ParentObject is set as the local player. Seeing as you’d want this sound to come from “yourself” we generally use a “2D” stereo playback method (the same way music is played back) so that it sounds like the effort is coming from “you”. But what if Stephanie over in Tier 4 starts doing JumpingJacks. If the sound is 2D for everyone then you’ll hear it. So one of the complexities is that if someone who isn’t you starts an emote we’ll need a different event. “RemotePlayer_Emote_JJ_Female_Start” would trigger a 3D sound. For these we need to set attenuation properties – something that defines how the volume of a sound reduces over distance. For WA this can be one of the hardest things to balance and so…
- I get in game and get some QA friends together and we have an emote spam-off and see what breaks, what works and what really doesn’t.
- Then we iterate until the sounds are as amazing as they can be, and ready for your ears!
Thanks for taking the time. It’s been a pleasure to write this up. Please leave us comments if you’ve found this interesting and maybe I’ll get to do another one sometime!
Have a great day in the skies!