The forest ambience is made up of a bed of ambient wind and birds that I recorded out on a quiet field. This sound is a 2D loop that covers the entire area of the forest.
I wanted to make the wind in the trees sound realistic so for this I decided to have them be 3D emitter sounds that I would place on top of the tree areas and would cover a spherical area around them. I created a simple loop of wind and leaves that had no variation and in Wwise used an RTPC curve to modulate the sound. Using an LFO with randomised frequency and depth, I modulated both the volume and low pass filter over time. This gives the effect of the sound rising and falling naturally as wind does.
Spread is a function in the positioning tab of Wwise that affects how sounds are attenuated. Throughout the project I used this function to simulate realism in how sound acts. When you are far away from a sound, you hear the direction that it is coming from in a 3D space. As you get closer to it, this positioning perception will lessen and it will sound more stereo.
In this case, as you walk along the path, you hear the wind sounds coming from the trees themselves. As you walk towards the trees, the sound envelopes you and becomes stereo.
In a blend container with the trees, are some scattered bird sounds. I created a random container full of different bird sounds with randomised pitch and volume and then used the position editor (seen above) to select some positions that the birds could trigger in the stereo field. These different positions will randomly cycle, simulating bird sounds coming from different trees around the player.
I wanted to create a serene summer atmosphere around the pond. To achieve this I created a loop of lapping water that I placed around the pond for coverage; this can only be heard when very close to the water.
To supplement this, I created a loop of a cicada using an LFO modulated wavetable within Serum. To give this sound some randomised movement in game, I used a similar method to the LFO affecting the RTPC on the wind. However this time I modulated the frequency of a peaking filter effect with a slow LFO.
As the game has 3 distinct areas, the ambiences for each need to be suitable and unique. The game also needs to have the ability to seamlessly switch between each zone in a natural way. If the sounds were to instantly switch between each other, it would sound jarring and unnatural so I needed to find a way to achieve this.
I first thought of have the ambiences be inputted into the games as emitters that would have a spherical shape of attenuation. While this could have worked, the shape of my level meant that circular audio zones could not cover the entire map sufficiently.
Next I decided to have the sounds be 2D emitters with no attenuation, meaning that they are always heard in stereo. I tried to use States in Wwise to switch the ambiences as the player walked through trigger boxes, which worked relatively well. This however did not full achieve the seamless switching as States can only be either on or off, no in betweens.
Finally I decided to try blend containers in Wwise for this purpose. I could set a range of values and have place my sound files onto the graph in the order that they will appear in the level. As seen in the image above there are 3 blocks for the tomb, the cave and the forest respectively. When the areas overlap, they create crossfades which will turn down one at the same rate that the other turns up. I now needed to attach these values to my game so that the fades can be triggered by the player.
For Unreal Engine to talk to Wwise and control the ambience, a game parameter must be created. In this case I created one with a maximum of 20,000, a minimum of 0 and a default of 18,945. These figures relate to the units within my game from the start of the level to the furthest away point.
The above set of nodes are found within the Level Blueprint, which is the blueprint that houses the entire game world. From the Event Tick node it travels into the SetRTPCValue node. This is a Wwise specific node that will send game parameters and data into Wwise so that Game Parameters can be controlled.
The green wire named Value is calculating the distance in 2 dimensions from the furthest point away in the tomb, to the player. This number is then sent into Wwise and changes the LevelProgression parameter.
As you can now see from this blend container, the LevelProgression value will continually update as the player moves through the level. The crossfade points are at the boundaries of each ambience zone and soothly fade into each other in a realistic manner.