Not Today, Darling!
Solo audio on a 5-person team: 11 weeks to build procedural kart engines, team-recorded character voices, and a 32-source split-screen mix.
Grannies on Go-Karts
Four grandmas race for inheritance in a chaotic 4-player side-scrolling kart game. I was the only audio person on a 5-person team, with 11 weeks to build readable engines, crashes, power-ups, and character voices.
The audio problem was density. Four players can accelerate, collide, trigger power-ups, and shout over each other in the same moment. I built roughly 70 UE audio events, kept the mix under a 32-source limit, and used MetaSounds for engine layers that respond to RPM and throttle while leaving room for impacts, power-ups, and VO.
This was my first time working with animators, developers, and artists on a shared production schedule. Audio decisions had to survive feedback from people with different priorities: animation timing, gameplay readability, level pacing, and deadline pressure. I learned to defend the mix when it mattered, compromise when the game needed it, and ship because four other people were waiting on my work.
At the end, I recorded everyone from the team doing granny voices for collisions, power-ups, and overtakes. Pick a character color and you hear one of us. The team-recorded VO became part of the character identity, and the production practice carried directly into Shadow Frames.
Yes, those are real granny voices. Yes, they're us.
Audio notes
Project video. At the end, I recorded everyone from the team doing granny voices for collisions, power-ups, and overtakes. Pick a character color and you hear one of us. The team-recorded VO became part of the character identity, and the production practice carried directly into Shadow Frames.
What I Built
Procedural Go-Kart Engine
My first serious MetaSounds project. RPM, throttle, and load drive the engine sound in real-time - no baked loops. The engine layer responds continuously to player input. I was learning MetaSounds as I went, so the graph was messy, but the state changes were readable: acceleration, braking, and sliding each had their own movement and pitch behavior.
Stopping 4 Players from Sounding Like a Mess
4 players means 4 engines, 4 sets of power-ups, collisions, and granny screams all at once. Without structure, it was noise. I built a Sound Class hierarchy where the local player's kart stays prioritized in the mix. Distant karts get attenuated and ducked. Power-ups and collisions run through concurrency limits, so the mix keeps the local player readable instead of playing low-priority events at full weight.
Team Voices as Granny Characters
Last week of the project. I set up a mic and recorded every team member doing their best angry granny - reactions to getting hit, picking up power-ups, overtaking someone. Each character color is a different person from the team. Randomized Sound Cues with cooldown timers so they don't repeat. Pick the red granny and that's our programmer yelling at you.
Under the Hood
What Went Wrong & How I Fixed It
"I Can't Hear My Own Kart"
What Was HardFirst playtest with all 4 players: engines, power-ups, collisions, and VO overlapped until players struggled to track their own kart. I'd never mixed anything with this many simultaneous sources before.
What I DidBuilt the Sound Class hierarchy described above, but the real lesson was figuring out the priority order. First attempt: equal priority for all karts. Second attempt: your kart at max, others at half. Final version: three priority tiers with concurrency limits per tier, so the local kart, power-ups, and collision cues stayed audible during 4-player pileups.
Making a Synth Engine Not Sound Like a Synth
What Was HardI'd never touched MetaSounds before this project. Procedural engine sound is tricky - it can easily sound like a vacuum cleaner instead of a go-kart. The engine had to respond quickly to throttle changes and feel like it's actually powering something with wheels.
What I DidThe parameter mapping was straightforward. The hard part was pitch smoothing - without it, sudden throttle changes made the engine jump between frequencies like a broken synthesizer. I added interpolation so the pitch ramps up and down instead of snapping. The result was a responsive engine layer that stayed readable during 4-player races without adding extra looped audio assets.