Trending
Opinion: How will Project 2025 impact game developers?
The Heritage Foundation's manifesto for the possible next administration could do great harm to many, including large portions of the game development community.
Stillalive studio's Benedict Sanderson explains how he created a soundtrack that responds to the player's every move.
April 9, 2024
Game Developer Deep Dives are an ongoing series with the goal of shedding light on specific design, art, or technical features within a video game in order to show how seemingly simple, fundamental design decisions aren’t really that simple at all.
Earlier installments cover topics such as how Mimimi games
crafted the save scum-friendly save system in Shadow Gambit: The Cursed Crew, and the technical work and creative nuances behind Slime Rancher 2's new weather system and the experiential impact that developers Monomi Park designed for players, and the marketing strategy that helped Timberborn's popularity soar with only two years in early access with Mechanistry comms manager Michal Amielanczyk.
In this edition, sound designer for stillalive studio Benedict Sanderson tells us about his creative vision for Garden Life and the whys and hows of achieving its dynamic ambient audio system.
I’m Benedict Sanderson, sound designer for stillalive studios. I’ve worked at our Austrian studio for nearly three years now, and I was lucky enough to have the chance to flex my musical chops for our latest game, Garden Life: A Cozy Simulator. The game is just that: a relaxing, charming experience in which you can develop your own garden with all manner of decorative flowers and objects, with a beautiful art style, soothing music and audio.
There are plenty of games out there where you can grow plants with a “cozy” moniker or vibe—Stardew Valley and Harvest Moon come to mind—but we wanted to create something with much less “work” to do, where you can really get creative and chill out in your own little space. The play area is quite small in our game, and there’s no large world to explore, apart from the local town and shop, you just have your little garden to hang out in and decorate how you please. However, even before adding any plants and decorations, the garden is jam-packed with little details to make it really feel alive.
Although Garden Life has “simulator” in the name, it takes quite a few liberties with realism. While a lot of the plants, their names, their colors, and their growth conditions take cues from real life (it pays to have an actual botanist as your project’s producer), there are plenty of “unrealistic” things that add to the fun and laid-back atmosphere. For example, plants don’t take days or weeks to grow; you can often see them bloom right in front of your eyes! So, rather than have realism as my main objective in the sound design, believability was instead what I set out to foster. Creating an audio experience which you can really get lost in—one which makes you feel you’re really there, and which you might even want to leave running in the background to enjoy the sounds—that was my main aim.
To do this, I set up some interesting technical systems, such as a semi-randomised background music system, and a dynamic ambience transition system for when you move from one area to the next. The game was developed in Unreal Engine 5, and FMOD Studio was used as our audio middleware, giving me lots of tools to create interesting audio systems.
The music system was great fun to make. Before the project was signed, a small team in our studio made a prototype of the game’s plant growth system, and upon seeing it, I thought I could make some simple, smooth background music to play over it. I knew straight away that a game like this would benefit greatly from having a rich, natural ambience, so I didn’t want anything too busy for the music. Instead, I made something which is essentially comprised of different musical building blocks, which all get pieced together randomly as the track plays, with lots of space in between phrases for the ambience to take center stage. I actually have my wife to thank for the “improvisational” style of it—she quickly gets tired of repetitive music, so I knew I should make something a bit different.
Of course, the whole soundtrack is very acoustic and “natural”. I performed a lot of the musical parts, which I feel was very important, as too much software instrument presence would take away from its real, natural feeling. We were also already having people say the game’s art style reminded them of Studio Ghibli films, so while I didn’t want it to sound grand and beautiful like Howl’s Moving Castle, I did want some of the quirky fun and naturalness of other Ghibli soundtracks like Kiki’s Delivery Service and Ocean Waves. Also, as it’s such a laid-back soundtrack, I didn’t have to be super precise and professional with the performance and timing, so it suited me and my skills just fine.
While there are some synth sounds and clean electric guitar lines dotted about, it’s predominantly acoustic guitar, piano, ukulele, and trumpet. As for software instruments and libraries, there’s a lot of stuff in the music and sound design from Spitfire LABS—check them out if you’re looking for great, interesting, and free sounds! The Pianobook community was a fantastic resource for finding free software instruments, such as mandolins and melodicas, and Orchestral Tools’ Loire library has some brilliant accordion and chalameau (a kind of French clarinet) that can be heard throughout the game. This combination of fun, quirky instruments was just what I wanted, and helped me evoke a fun, charming, “European” sound. It also feels appropriate for the region in which the game is set—although the game locale is fictional, it’s based on rural Austria or Germany.
So, for the composition. Imagine you’re in your garden, pottering around on a pleasant summer’s day. Your friend is sitting in the corner with an acoustic guitar, improvising a little tune. They have the vibe and the general chord sequence down, but they always play it a little bit differently—an extra note here and there; different timing to the musical arpeggios; a longer pause before the next phrase. Sometimes they go back to the “beginning” of the track, sometimes they go into a B or C section. You always have an idea of how it’s going to go, but it has that laid-back, improvisational quality to it which means you never know what exactly is coming next, and it doesn’t get tiring or repetitive. This is what I set out to create.
FMOD Studio gave me all the tools I needed to create this randomization. One music “event” is told to play at the start of an in-game day—an example can be seen in the screenshot here. Just like in a traditional DAW or music player, the playhead moves along the timeline, and as it hits something, a musical event is triggered. A yellow musical phrase could play; a green arrow could send the playhead back or ahead to a different part of the track; a blue looping section could trap the playhead, making it play silence for a while; and so on.
The basic layout of the “D” musical phrase. Image via stillalive studios.
Inside each musical block, there’s a shedload more variation going on. This screenshot shows inside the 4th phrase—the “D section” music block. Inside it, every green block contains several different performances of a phrase, and one is selected at random as the playhead activates it. The chord sequence is the same every time in this phrase, but different performances, inversions, and embellishments really bring the background music to life, helping to create a living, relaxing soundtrack.
The "D" musical phrase. Image via stillalive studios.
Occasionally, natural sounds also play a part in the music. At certain points, birds, frogs, wind in trees, and other things will sound to fill in the gaps between musical phrases. I found this a great way to make the whole soundscape feel fuller and richer, without always having music playing. The bird response is my personal favourite of these sounds; a bird tweets a little ditty as a response to a musical phrase, in tune and in time with the music, and from the position of a tree in the garden. Did I actually teach a bird to sing the phrase and then record it? Or did I whistle it myself at a low pitch, then speed up the recording so that it sounds like a bird? I’m afraid that secret’s staying with me!
Of course, different game states also affect the music. If the end of the day is near, an extra layer will slowly come in, signifying that it’s time to wrap up. A mellow trumpet line or soft piano ditty will accompany the rest of the track, up until the church bells in the distance tell you it’s time to go home, at which point the music stops, allowing you to take in the sounds of the evening ambience. Hop on the bus and go home—a new tune is waiting for you tomorrow morning!
A more “classic” music system also happens in the village square, where the instrumentation changes as you move from one area to the next. I put a nice little twist on it though, making heavy use of FMOD’s transceivers, which can be thought of like walkie-talkies. All the music in the village square is played by an FMOD event, but none of it passes through the event’s main output; instead, the different instrument layers are transmitted to different receivers in the map, and are audible from there. This means that the quirky variation of the tune that exists in the shop can be heard coming from the shop doorway (it’s diegetic—in the world), but once you get inside the shop, it joins the rest of the instruments and becomes “2D ”, or non-diegetic. This creates a nice feeling of the music being simply background music, but also somewhat “in the world”.
Image via stillalive studios.
Believability was my main aim in creating the soundscape for Garden Life. When thinking about how to trigger the different ambience sounds for when you’re in the garden or in the shed, I first looked at the simple and “traditional” option of using a collider to fade out the current ambience and fade in a new one over a set number of seconds. As you cross the door threshold to the shed, a 1-second transition would be triggered, for example, and it would always take one second to happen.
This wouldn’t do for me. You walk in and out of the shed and the greenhouse a lot as you play, and the sound can be drastically different when in and outside, especially if it’s raining. So, I decided that I instead wanted a system which knows how far you are from the doorway, and which plays a blend of the inside and outside ambience based on your position. This means that if you stand in the doorway, you’ll hear the inside sound on one side of you and the outside on the other. This makes it far more realistic as you walk in and out of buildings, and it doesn’t break immersion for the player when they discover that there’s a set point in space in the doorway which makes the sound change as you take a tiny steps in and out.
What’s more, a “portal” system was devised, so that as you go further into the building, the outside sound will collapse into one position and be heard coming from the doorway, just like you’d expect in real life. Unfortunately, FMOD doesn’t have a system built-in for creating this effect, but with some help from a programmer on our team, we managed to create something good. Essentially, separate distances between the player and the door threshold are calculated, depending on whether you are inside or outside. These values are sent by Unreal to the FMOD ambience event and they drive different values for each sound, mainly the volume, a filter (to muffle or sharpen the sound), and the “sound size,” which makes it sound all around you or like it’s coming from the door threshold.
This was the first time I’d tried creating such a system, so as you can expect, there were lots of hiccups on the way. For a start, I was tracking and updating many global parameters at the same time, and one small change to one of the many volume curves could throw the whole system off—I can’t count the number of times I opened the project one day and realized a seemingly unimportant change I’d made previously had ruined something else.
For example, here are some of the super fun parameters I was constantly tracking —buckle in.
DistShedInt (distance to the shed doorway while inside, with a slow seek speed so it doesn’t suddenly jump in value),
DistShedExt, (the same, but while outside),
DistShedIntFast (as above, but with a faster change time to change certain sounds instantly)
DistShedExtFast (this is getting confusing now)
IsInShed (a Boolean used to trigger certain sounds only if you’re in or out of the shed)
Now, that’s already confusing to me, but then add similar parameters related to the greenhouse, the large tree in the garden, different areas in the village square… it all got pretty confusing pretty quickly.
It was all very, very fiddly. Curves were drawn and used to automate these parameters in FMOD, so that as you move away from a door, the volume of a sound first goes up a bit, then down a bit, so that it sounds natural. These curves have to all match on different ambience sounds, so that they blend in and out at the same rate. The distance values were sent instantly to FMOD from Unreal, but different “seek speeds” or lerp rates were used to smooth the change of each of these parameters, preventing sudden jumps in sound. Boolean parameters were used to make sure the ticking clock in the shed is only audible when IsInShed is true, but whoops—editing that parameter has now somehow made the clock deafeningly loud while standing in the doorway! Getting this to work was a process that required a little bit of attention every day for a few months to make sure it was just right.
While I’m looking forward to working on another project in which I can refine this system, a little break from seeing curves and output logs full of numbers when I close my eyes is very much appreciated. I also get the impression that if a “proper” programmer were to look at what I’d cobbled together with Unreal Blueprints, they’d shudder—but hey, if it works, it works, and that’s good enough for me.
If you’re interested in doing a somewhat complicated ambience system yourself, good luck! It’s very rewarding, and I really believe it makes a great difference to the overall quality of a game.
First of all, do a lot of research. What you can achieve and how you can do it all changes depending on what software you use; native Unreal audio has its own systems and quirks, FMOD has its own toolset, Wwise is more expensive but has “portalling” built in to make life easier, and so on. Don’t be put off if you can’t use fancy middleware on your project, because there are plenty of games out there that have great audio systems with just the native engine audio capabilities. Deep Rock Galactic has some brilliant audio in my opinion, and it’s all done natively in Unreal by one sound designer!
Get out there and play some games and try and reverse-engineer them to work out how they do it. Play a game with great sound, and try moving from one area to the next—how does the sound change? Do you think it’s using colliders? Do you think there’s any real-time calculation of the size of the area you’re in? Can you hear distinct reverb zones and settings that the game switches between? Is the game’s environment changeable or destructible, and how does the sound react to this? Are the same birds audible when you’re inside or outside a building?
Like this, you can build up an idea of what you want to achieve with your game. Deciding on what you consider important, and coming up with a theory of how you can create it is honestly half the battle, because once you know what you want to do and how it should sound, it becomes much easier to actually implement it.
Finally, have a list of references. They can be games which sound how you imagine your game to sound (I used Firewatch and Among Trees as general sound references), or other games which are inspiring or generally great sounding. Record some gameplay footage and write down what you like and don’t like in it, and what you do and don’t want to inspire the sound in your game. This will help you stay on track while working on your project, and hopefully keep up to the high standards of other fantastic titles.
Garden Life was a fantastic project to work on, and I feel very grateful to have been part of the team. I’m chuffed with what we achieved—I was honestly very lucky to have had so much freedom to experiment with lots of different systems and ideas, and I firmly believe it made a massive difference to the quality of the audio in the game. If you ever find yourself designing audio for a game in a similar situation with freedom and time to experiment, seize the opportunity!
You May Also Like