top of page
Malachi Gregory

Scrub and Spray | Dirty Work

Intro

In this post I'm showcasing my process for Dirty Work's first audio overhaul. Quick summary: Dirty Work is a capstone project I worked on as an external contributor to the Game Center. Originally I was just on board for music composition and audio implementation, but after the original sound designer left, took on entire responsibility for the game's audio design.


First Steps

With Dirty Work being a sprite-based top down 2D game, there were less variables to consider when designing the footstep system. 3D reflections didn't have to be considered, thus I was able to use a more complex system.


Addressing footstep fatigue is one of my main focuses as a designer, as overused samples can really stand out to me when playing games. Learning Wwise was a game changer for me in adding variation and randomization to my own designs, and for this project I wanted to try a deeper system.


Initial Footstep System Demo


The core of this design is separating samples for heel and toe into different random containers when taking a step. The combined variation generated from both random containers stitched by a sequence container create a far more unique experience for the player, and greatly reduce the chance for annoying repetition. Below is a later implementation of the system, implementing different terrain types.


Game Footage of Footsteps


Double Tap

The main weapon of the player character Grise is a water gun, with secondary soap grenade fire. As exciting as this is, designing the audio for a stream weapon proved to be a fun challenge, as I couldn't apply normal "shooter weapon" techniques.


Water Stream

After creating my water loop and importing it to Wwise, I first had to overcome the issue of repeated activation. The water sound had to loop for as long as the player had water in their tank, and needed to stop upon releasing the mouse button.


My solution was two events, one to start the water loop and one that canceled it, tied to mouse down/mouse up triggers un Unity.


Water Stream Live Demo


Although the water audio looped seamlessly, it would get really annoying if the water source started and played out the same way upon multiple activations.


To remedy this problem, I added a seek type to the water stream start event that would play the sample in different random places, reducing the chance of hearing the loop exactly the same way over and over while fighting enemies.


Water Wwise Demo (Empty Clicks, Water Stream)


Bath Bombs

The soap grenade design went through a lot of iteration. Lots of attention went into making the initial blast feel weighty and powerful, which then transitioned to a lighter, puffy explosion.


Soap Wwise Demo (Empty Clicks, Soap Explosion, Grenade Fire)


Since the projectile speed of the soap grenade was so fast, I spatialized the explosion blast to give the player direct feedback on where the shot landed, should it go off screen.

Soap Grenade Live Demo


Refresh

The last bit of weapon design needed was for the reload/heal while in a safe zone. This sound was my overall favorite to design, layering weapon clicks, recorded bottle shakes, and exhales of relief to highlight the contrast from combat encounters.


Refresh Wwise Layering


Live Refresh Demo


Enemies Lurking

The philosophy behind Dirty Work's enemy SFX was to create gloopy, squelchy sounds to match their designs. I found a new love for ringshifters when making these sounds, you can get some gross effects with automation.

Leeches

The leeches were the first enemy I designed for. Small, fast, and aggressive, I focused on higher pitch and "screech-like" sounds for this enemy. One of the main attacks for the leech is their latching on to the player and draining health.


I was able to implement this sound through a blend container that housed a random container and looping audio source. Upon the game detecting you were in a latched state, an event would trigger posting the consistent sucking with intermittent slurps from the random container.


All Leech SFX (Spawn Charge, Death, Stun, and Suck)

Heaps

Heaps are the hulking larger enemies that transform from the spawner after clearing a wave of leeches. Since the enemies are stationary, I made sure to spatialize their spawn SFX to immediately telegraph to the player that one is on the field.


All Heap SFX (Death, Spit, and Transform)


Goopy sound design even went into the hitmarker/damage detection sounds

Damage Tick SFX


Here are some of the enemy sounds in action:


Enemy SFX Live Demo


Filling the Space

Ambiences

When designing ambiences, I took to using blend containers in a similar way to how I developed the leech sucking sounds. I had a continuous audio source to function as the bed for the scene, but to add variation to each loop, randomized between samples to create an ever-evolving soundscape for the player.


Ambience Randomization Demo


Breakables

In the rooms you fight enemies lie breakable furniture. These objects function both as cover and obstacles as you navigate the environment, and required immediate feedback upon interacting with them.


Grise needs to come off as powerful with her hammer swing, so I decided to layer the swoosh of her attack with random grunts to highlight her effort and strength.


Hammer Swing SFX


Continuing with the characterization of Grise as strong, I broke up the destruction sound into a meaty impact container and wood shattering container.


Furniture Break SFX


Here are the two sound sources combined in action:


Hammer Swing Live Demo


Talk to 'Em

Dialogue design for the speech bubbles in Dirty Work was one of my favorite parts to implement. The team wanted Animal Crossing-esque babble, and I recreated a similar system based on one of the core instruments to the music of the game: electric piano. After exporting a .wav of a singular "B" from my VST, I used Wwise's volume, pitch, and low pass randomization to wildly shift the note. The same technique was used for the selection UI sound.


Dialogue Randomization Demo


What made this sound so much fun to implement was the Unity integration. Attaching the Wwise post event to the script used to scrawl the text letter by letter, random tones were quickly generated, creating silly speech patterns to accompany dialogue.


Dialogue Live Demo


Check out the music design post to hear all these sounds in context with the rest of the audio!



Comments


bottom of page