Introduction
Hi everyone! I’m Lewis, a sound designer at Soundcuts, and co-founder of Airwiggles. I’m here to talk about the one area of audio that I always start first when working on a new project: ambiences! Our team at Soundcuts recently worked on Supermassive Games’ The Quarry, and I was tasked with designing ambiences as well as other things. I think ambience sound design is often neglected in video games and especially so in beginner’s sound design demo reels: it is a great opportunity for world building, adding realism, setting tone, telling a story, and pleasing any players who happen to be avid bird watchers. Ambiences can be so much more than a simple Switch Container flicking between a few stereo loops: and as someone who has recently dove into the world of ambience design myself, I’m going to take you through how I make my ambiences as lush and detailed as possible!
Step 1: Finding Your Bearings
Before getting into the technical stuff: I always ask myself, what am I looking to achieve? Why bother putting in so much extra time and effort into ambiences? Here’s what I want my ambiences to do:
- Add realism: I don’t want any players to be taken out of the world by hearing a bird in the wrong continent, a car with the wrong engine, or an insect chirping at the wrong time of day. Great audio helps immerse people into the world and making sure all of these details are correct helps suck people in without them noticing.
- Position the player: I like it when players can tell their location in a level with their eyes closed. With enough sound emitters and creative implementation tricks, players should be able to quickly tell their orientation, their elevation, and where each point of interest is in a level.
- Tell a story: Like all aspects of audio, ambiences are a great way to subtly tell a story to the player. A well-placed furniture rattle can send shivers down the spine of someone immersed in a scary horror game, and a police siren wailing in the distance can help add to the excitement of an action scene in a busy city. Once we have our systems set up, there are a multitude of ways we can start twisting and bending these into shape in order to fit the narrative.
Knowing this, my first step is typically to start gathering source material. I want to be as detailed as possible, and so at this stage I will be looking to add a sound for literally anything in the scene that could make any noise. If we have a level set in the forest: we can scan our brains, and sound libraries, for the types of sounds we could use:
- Wind blowing through trees and bushes
- Bird calls
- Insect chirps
- Other animal calls, such as deer, foxes, and frogs
- Wildlife crawling, climbing, flying, woodpecking, etc
- Rivers/streams
- Distant vehicles, from cars on the motorway to planes in the sky
- Creaking wood from the trees
- Rustling of leaves from trees and bushes
- Falling twigs and pinecones from trees
- Water drops from leaves and trees
Fig 1: A typical REAPER session featuring several layers of a forest ambience.
I’d then start to think about how I can use these sounds. When I create ambiences, there are several types of ambience assets that I need. These can be simplified into 2 main distinctions: 2d vs 3d. 2d sounds being stereo/surround sounds that will play without any positioning information, like a simple room tone or bed of wind. 3d sounds will be mono sounds that we will place onto certain objects and set up custom attenuations for, such as aircon units and buzzing lights. Once everything is implemented, we will hopefully have a nice blend of 2d and 3d sounds which will sound rich and lush no matter where the player is positioned. These are the asset types I will be considering when collecting source material:
- 2d beds (loops): these are your typical stereo looping ambiences that sit underneath everything. I refer to them as ‘beds’ because everything else is going to lie on top of it: the role of the 2d bed is to add consistency to the ambience no matter where the audio listener is, and to make sure there is never any total silence. 2d beds could be an interior room tone, a subtle wind, a spaceship rumble… something fairly uninteresting as you typically don’t want it to stand out too much.
- 2d oneshots for randomisation: this is probably the rarest asset type I use: but sometimes I like to trigger 2d audio assets on loop using Random/Sequence Containers. This leans into the more non-diegetic side of ambience design. For example, in a horror game, we can have a collection of creepy ghost whispers that could trigger at random intervals, but not necessarily originating from any point in particular. We can randomise the volume and panning of each asset so that it is impossible for the player to actually locate them: but instead, they just haunt them. We did something similar with a collection of creepy wind gusts in The Quarry that would trigger randomly when walking up high on a spooky walkway.
- 2d sweeteners: I classify these as individual assets that play once and only once. Sometimes, even when you’ve set up the most elaborate ambience system in the world, you still need a little kick of bespoke audio to enhance a certain camera shot at a certain time. This could be a whistling howl of wind when the player looks into a scary cave for the first time, or the eagle screech when jumping off of a big height in Assassin's Creed. 2d sweeteners are immensely useful when working on in-game cutscenes, as you can design bespoke ambience layers for individual camera shots, just like you would for linear media.
- 3d spots (loops): these will make up most of your assets. Individual objects or locations in the level have sound emitting from them in some way. The possibilities for these are endless: obvious noise-emitting objects like fridges and dripping taps, to more subtle audio sources like the exterior bleed from a closed window or something flowing through ceiling pipes. I aim to populate levels with as many of these sounds as possible: and if there is too much going on, I can always take them out later!
- 3d oneshots for randomisation: just like the 2d oneshots, sometimes I want to randomly trigger certain assets from a precise location in the level. This lends itself well to fauna: bird calls, rats squeaking, foxes howling - we can place these in the level where these animals could reside, and using Wwise’s random delay, pitch, and volume, we can ensure these sounds never repeat the same patterns, saving filespace at the same time.
- 3d sweeteners: just like the 2d sweeteners, we can also position a well-placed sweetener asset on a certain object in the environment to help give your ambiences a bit of oomph when needed. One fun idea is to implement a sound effect for all the birds in the area flying away, positioned from the bird-calling locations, and triggering this when the player fires a gun.
Now we have a bunch of cool and creative ideas for our sound sources, we can start creating our assets! We can start by gathering sound effects and recording our own ambiences: but bear in mind, with so many layers to this ambience system all playing at once, the individual layers should probably lean strongly towards subtlety. Try to keep the noise floors low, and remember that it’s perfectly okay for some of your files to be practically silent with a few creaks or details sprinkled throughout.
I’d love to quickly touch on one specific layer of ambience: birds. Most games I’ve worked on have needed some bird song in the background, and previously my go-to method involved searching ‘birds’ in my sample library and dragging in whatever I thought sounded nice. In hindsight, this approach sounded pretty bad, as it turns out the world of bird song is much deeper than I first thought. It may seem obvious, but there are thousands of bird species, each with their own wildly different sounding calls, all of which are only prominent in certain regions and in certain seasons. The bird calls you’ll find in one region of America will greatly differ to another region further south. Using the power of the internet, you can look up which birds are the most common in the geographical location that your game is set. You can also match their calls to the correct season, time of day, and surroundings, such as if these birds are commonly found near bodies of water. If you tailor your ambience to only include geographically correct birds, the soundscape you’re creating is going to sound unique, detailed, and accurate - and it will please any bird watchers who happen to be listening! It is of course worth mentioning though: if it tells a good story, you can always bend the rules a little bit - just like how seemingly every Hollywood film sneaks a well-placed loon call in. It may not be technically appropriate, but it does sound pretty cool!
This also extends to other fauna and wildlife: foxes, deer, insects all have unique sounds based on their location and time of day. My colleague Chris Jolley took this to the next level when adding cricket sound effects to The Quarry: he read that according to Dolbear’s Law, the rate of cricket chirps increases with outdoor temperature. So, with some backwards engineering, he worked out the rough temperature of each in-game location, and adjusted the rate of the cricket chirps to match. This was great attention to detail, and it helped make each location feel different and fresh, whether the player consciously noticed it or not. Adding life to your ambiences is a great way to, well, add life to your ambiences. Have a think where certain animals might be residing: rats squeaking in a basement near some old food, or fox’s calls echoing through the streets of a nighttime cityscape.
Fig 2: A simple Wwise session with several different 2d and 3d ambience stems.
Step 2: Making Things Dynamic
As a general rule, I try to ensure that every single possible camera position in a level has a bespoke ambience mix. Thinking like this helps me ensure I’m adding enough detail to my ambiences, and it helps me achieve a certain stylistic audio direction which I personally quite like: ambiences that sound like they would in a film. In films and TV, typically, whenever there is a camera cut, the ambience track follows suit and also hard cuts to wherever the camera is positioned next. The idea of a single ambience track looping over several camera cuts, unchanged, is something I’ve only really seen in video games, and something I personally try to avoid. Detailed ambiences don’t just improve the sound of hard camera cuts: it also means that with any smooth camera movement, such as a camera following the player as they walk around, the player can hear themselves moving through the world as each ambience layer swells and twists and pans around them. It’s another one of those small things I believe players can ‘feel’ rather than hear when playing video games, and is another step you can take to help immerse your audience!
So, we already have a bunch of sound emitters set up playing our created ambience assets, which goes a long way in making sure every spot on the map sounds unique. However, using Wwise, and for the purpose of this article Unreal, we can take it even further. Here are some ways we can add extra interactivity to our ambience systems!
One system I use extensively is including an RTPC called “CameraHeight”, which can affect basically every single ambience asset in the game. By manually setting this RTPC value based on camera position, or using audio volume actors to automate this, we can use this RTPC to shape and morph ambiences based on elevation. An obvious use case is to boost birds and attenuate insects the higher the camera is. I also find it very effective to add filter and pitch controls to various 2d layers (such as room tone and wind) in order to subtly change the tone of the ambience bed. The sound of wind at ground level will typically be full of high frequency content such as grass, trees, and bushes rustling in the wind: whereas this will become less prominent when we move further into the sky. We don’t have to be strictly realistic with this: we can add layers which have accentuated RTPC curves to help emphasise audio storytelling and carve out differences between otherwise similar sounding locations. I quite like putting quite strong pitch controls on whistling wind layers, and bringing in ambience layers that will only be heard exclusively at certain heights.
Fig 3: Adding volume to the ‘Bird Crow’ Random Container based on the CameraHeight RTPC. The higher the camera is, the louder the birds will be!
Another key system I have used is a ‘CameraShotType’ state group. This is especially useful for cutscenes with hard camera cuts, which were extremely prominent in The Quarry. The idea behind this is to have several states based on the type of camera shot used: for example, “Close Up”, “Wide”, “Low”, etc. I would then use these states to ever so slightly adjust volumes and filters on the global ambience bus. For example, the “Close Up” camera state will bring down the ambience bus by a few decibels, whereas the “Low” camera state will add a slight low pass filter. The trick here is subtlety: I don’t want to make huge sweeping mix changes, just little adjustments that will aid the ‘cinematic’ style of ambiences audibly hard cutting on each camera cut.
Fig 4: The CameraShotType state affecting the ambience actor-mixer. Different camera shots have different subtle effects on the entire ambience bus.
I previously mentioned briefly the idea of using audio volume actors to control RTPCs automatically. To clarify, you can place some invisible hitboxes in the level which can control RTPCs and states based on the camera or player’s position within them. For example, creating a huge audio volume actor spanning the whole level, and setting the CameraHeight RTPC from 0-100 based on the camera's position within the actor, is a good way to automatically adjust the ambience’s elevation. We can use this technique in other areas too! A basic trick using state changes is to place these actors under open shelter when it’s raining, and we can use these to trigger states that filter the rain sounds. If the level is set outside and in strong winds, then we can add audio volume actors that surround walls, buildings, and wind breaks which filter and tame wind layers in the 2d ambience by using RTPCs that change depending on how close you are to them.
To summarise, I simply try to think of any way that I can add dynamics and interaction to the ambience systems: and when I have an idea in mind, there is usually a fairly simple way to implement this with Wwise and Unreal. Are there any controls or actions that the player can take in game that could potentially result in something happening in the ambience, no matter how subtle? If a player has a flashlight and shines it directly up into a dark area of a cave - maybe we can add some sound effects of bats flying away! If there is a storm coming soon, we can attenuate the wind levels briefly to simulate the ‘calm before the storm’! Some games even break the fourth wall with this kind of dynamic ambience: for example, in Black & White, the game secretly scans your computer for your first name, and if you are playing the game past midnight, it will play some creepy whispers of your actual name in the background of gameplay. Hats off to whoever thought of that!
Step 3: Bending The Rules
So far, these Wwise implementation tricks have enabled us to add extra detail to our ambiences, which is all well and good, but the whole point of sound for media in the first place is to help tell a story! So, on top of adding all of these extra details and sweeteners to the ambiences to increase realism, we can use the same tips and tricks to bend reality and support the emotions we’re trying to evoke.
As an example: we have spent a lot of time focusing on birds and fauna so far, and have built up a strong foundation of several wildlife emitters containing relevant, geographically correct birds at the correct time of year and day. However, the sound of wildlife, and especially birds, can elicit particular emotional responses in the audience which we can use to our advantage. Typical birdsong is typically thought of as happy, serene, and calming: whereas specific birds like crows and ravens are often associated with death. Loon calls are generally used in unison with somewhere mournful or creepy, and owls are an effective yet overused way of instantly telling the audience that it’s night time. There are all kinds of different emotional responses linked with different bird types: so have a think if there are any particular bird calls that elicit the relevant emotional responses you’re trying to subliminally incept. We can then use some of the Wwise techniques I’ve mentioned to take this to the next level. If a player is walking happily through a summer forest, surrounded by blissful bird song, and the story takes a sharp emotional turn and they’re now fighting or running from evil scary monsters: turn the birds off! There will be some weird juxtaposition if you’re fighting something scary whilst a beautiful blush of robins are singing away. You can do this suddenly, where birds immediately and audibly fly away as soon as the first gun is fired, or we can allow birds to fade out slowly as they realise something dangerous is in the area (perhaps even before the player does, to suggest something is afoot!). If the player sees something in the distance synonymous with death, such as the evil lair of the big final boss, you can sneak in an ominous call from a crow, raven, or vulture. This is a storytelling technique famously used on The Simpsons: a caw from a crow is heard during every single establishing shot of the nuclear power plant: the place where Homer Simpson works to support his family, or to speak more metaphorically, the place that killed his dreams of working in a bowling alley. We can be less grounded in reality now: the goal is to add interactions to the ambience systems that can subliminally influence the players emotions to make the game more engaging, interesting, and therefore enjoyable.
Fig 5: Adding an RTPC which slowly mutes the ‘Bird Finch’ Random Container based on a new RTPC called MonsterProximity. As danger approaches, the usually happy-sounding finches will gradually get quieter.
The same goes with wildlife! Have you heard how terrifying fox calls are? They give me shivers when I hear them walking home late at night - so why not trigger some spine-tingling fox calls in the distance of a particularly scary level? Adding occasional scutters and calls of spiders, critters, and weird-sounding animals as randomised 2d or 3d spots will make a horror-game player think they are surrounded by unexpected dangers, keeping them on edge. This doesn’t really work if you’re triggering sounds from cute animals such as rabbits, sparrows, and cats: but it can be very creepy if you’re setting off the sound of the buzzing flies, scuttling spiders, and the threatening calls of other animals (authors note: please do not threaten any animals to record the sounds they make!).
We can also use ambiences to subconsciously guide players to their locations. Just like how game artists use creative lighting techniques to show the player where to go next or draw attention to any hidden secrets, we can use ambiences to achieve the same effect. I personally like blending in subtle hybrid drones/room tones that get progressively creepier and more unsettling the further a player ventures into a scary location, such as a basement. This doesn’t have to be done with ambient drones though: by making use of audio volume actors, we can dynamically bend and shape our ambiences so that different layers that elicit certain emotional responses are enhanced or muted, the closer a player gets to a certain area. For example, if you are slowly travelling through a cave where something dangerous is waiting for you at the end, we can enhance the elements like water drips, creepy crawlies, and low rumbles, whilst removing wind whistles, suggesting you are getting deeper into the system and further away from familiarity and safety. We can also guide players to secrets in the level with 3d spots: for example, in The Quarry, we placed a raven cawing nearby every single collectible ‘tarot card’, which have been placed in the level by the ghostly Eliza, who, in turn, has a raven ‘familiar’ in her cabin.
Finally, using hand-placed ambience sweeteners is a nice way to add the cherry on top of the already-complex ambience system that we’ve created. Despite having a million audio sources and interactive variables, sometimes there are certain story beats or camera shots which need some special attention to achieve the desired emotional impact. Taking a leaf from audio post, creating and implementing one-shot ambience sweeteners during key story beats is a simple yet effective way of enhancing storytelling. If a player enters a spooky haunted building for the first time, triggering a whistling gust of wind that echoes through the house will immediately communicate to the player that they should be aware that this new area is creepy, desolate, whilst potentially holding some secrets. Alternatively, if the camera slowly pans to reveal something originally out of frame, then adding a well placed sweetener on reveal helps tell the player something about what is being revealed. For example, a slow reveal that shows an ominous tower in the distance, could be paired with a creaking bit of metal, a ghostly whisper, or one of the wildlife calls I mentioned earlier. A camera pan that reveals a big destructed hole in the roof can be paired with a gust of wind that rattles the foundations to the building to suggest the place is slowly falling apart. By only revealing these ambient sounds when the player can see what they are originating from, we can help the player link these two things stronger: whether that is ‘that tower in the distance is scary and should be feared’ or ‘this building has clearly been here a long time and is dangerously unstable’.
Conclusion
That’s everything from me! Despite the fact I’ve been talking about ambiences for so long, I’m sure I’ve hardly scratched the surface of what some audio designers are doing with ambiences in their games. Hopefully this blog post has encouraged you all to explore and experiment with some cool new ambient ideas, and hopefully you can negotiate the extra time in your game's budget to implement some of these things! I would love to hear about any interesting ambience systems you have set up or have heard - so I encourage you to share these in the comments below! Otherwise, I’ll just have to trigger a layer of crickets.
댓글