Audio Implementation


From suspenseful tracks in horror movies, to extravagant sing-along songs in musicals, and even stylistic moments with little audio at all, sound design is an extremely important part of all media today. Video games are no exception; Most video games have accompanying sounds for all possible interactions. Making sure the visuals have closely matching audio really helps to sell the world game developers create. For our game we want to leverage the power of audio as well.

Since the world of Land of Lights has a story, we want to include sounds that convey its moods and themes. Throughout the game you solve puzzles with your companion Guppy, using their ability to interact with the light in objects around the world. We need to make sure our music and sound effects reinforce the setting of walking around an island with a little creature, solving puzzles by interacting with the world and its light, and uncovering the mystery of this disease that seems to be hurting the island.

We are partnered with a team at the Berklee College of Music, and with their knowledge and experience we have been bringing these ideas to life. But we don’t just need good sounds, we also need to implement them;  that’s where MetaSounds comes in. MetaSounds is a built-in audio engine new to Unreal Engine 5. We decided to use MetaSounds mostly due to ease of access, as it comes built into our version of Unreal Engine. But we also wanted to use this as a learning experience for a new tool that may be used more often in the future.

One of the first things we created using MetaSounds is a Character Sound Effects Component. Although we only have two main characters in our game, Guppy and Casta, there are a lot of similar instances where we need them to make sound. We combined these into one Character Component that handles idle sounds, jumping, and footsteps. We then inherited from this functionality to create components that handle the distinctive sounds that Guppy and Casta make. In Guppy’s component we deal with the audio for their cries, imbuing light, and absorbing light. And in Casta’s, although not fully implemented yet, we plan on dealing with shouts for commanding Guppy and grunts for interacting with objects. Most of these sounds can be implemented simply by having a MetaSound Source that plays the sound once for each action. However, Casta’s idle and Guppy’s cry sounds are different. These sounds need to be played at random intervals during their respective states with the ability to be paused and resumed when needed. Pausing and resuming sounds was simple with Sound Sources, but randomly repeating sounds was a little more difficult. Thankfully MetaSounds offers a solution.

MetaSound Sources, along with their main purpose of customizing and formatting audio, work similarly to Unreal Engine’s Blueprint graph, offering some execution control nodes that we can work with. Sound Sources include “Triggers” that help customize the execution logic of each sound. Trigger Repeat can be used in combination with Random nodes to pulse a new sound playback at random periods. Using these nodes we created a reusable sound source, parameterized by the sound to play and minimum and maximum delay intervals.

Repeating MetaSound Source

Footstep sound effects are also unique in their implementation. We wanted them to realistically change based on the ground characters walk on and match their walking/running animations. To change the footstep sounds on different surfaces we used Unreal Engine’s Physical Surface Types. By creating these surface types and assigning them to different materials, we can easily determine what surface the player is stepping on when we look at the ground beneath a character’s feet. With this surface type in our Character SFX Component, we can switch which footstep sound should be played on each step.

To match each footstep sound to a character’s animation we used custom animation “Notifies”. Notifies allow us to trigger our code based on the timing of an animation. By scrubbing through the walking and running animations and placing Notifies down when a foot hits the ground, we were able to correctly time and link up our logic for playing footstep sounds.  

Animation Notifies in Casta’s walking animation

I am excited to continue implementing audio with MetaSounds and working with our partners over at Berklee. With these tools and our partner’s creations we are striving to leverage the powers of audio to present a compelling story, and most of all create a fun experience for our players.