top of page

Audio Movement Randomisation in Unreal and Godot

  • Nick Lee
  • Apr 14
  • 3 min read

At the Game Audio Symposium in 2025, whilst I was busy volunteering at the event, I did also get free access to all of the talks I could make it to. One of which was a really interesting talk by Francesco Del Pia, Daan Hendriks and Harry Nixon on their work Still Wakes The Deep. Not to go into spoiler territory for the game, but throughout the game, a technical sound system is working away, playing randomised metal creaking/groaning sounds at random positions. Using some interesting chance logic driven by overlapping shapes (if I remember correctly) the team brought the environment, literally, to life.


Since that talk I knew I wanted to look into how to recreate some randomisation in Unreal. So, this year I finally thought I'd give it a go. I talk about the process in a video I uploaded to YouTube, but to summarise:


I started out looking at Splines, as shown in the video, and moving a sound along that spline. It took a good bit of trial and error, as most things do, but I realised that using the spline with a timeline would allow me to have a sound (represented by a ball) play at a random distance along a spline. This system allows me to play a sound along any shape I want, meaning I could also randomise the positions of each spline point if needed. But, to come up with a use example, I thought of a rat moving along a pipe (strange one, I agree).


In a pivot from the use of a spline, I decided to move a sound around by setting it's position in the world. Starting this one off, I created what I called a SoundBall, where the sound will move a random distance and direction from itself, either in perpetuity or as many times as I want it to move. Then, to keep it within a certain space, I created a Ball in a Box blueprint, where, using any shape as a container, the sound would be essentially stuck inside a box, "bouncing" off the container walls. I tried to replicate the use-case in Still Wakes The Deep, where some metal groan sounds randomly move around a ship. The other example was what I call Stuck, where someone or something is stuck inside a box, steps towards a wall, bangs against it and then goes back to the centre to start the loop again.


Then, instead of finding more examples of ways to apply these audio systems, I instead decided to try and recreate these systems in Godot. This was just to test that my GDScript skills hadn't completely been erased by the use of Blueprints. After a little adjustment period, I found that I can work through the complicated parts of the systems logically by thinking about how they worked in Unreal. After doing so, I added a few extra movement features to the systems, such as controls over movement and timing amounts.


For a bit more detail on these systems check out my video here:


As with anything, even writing about the process here, I am still thinking of ways to improve such a system as well as some more examples. So I've just added them to my to-do list and will keep working away at the system in the future. However, I am always open to any feedback or ideas on how to improve this system, or even examples you can think of, so please comment or get in contact if so.


As a personal update for my blog, I am still working away on False God which I'll be talking about in another blog post soon. Thanks for reading!

 
 
 

Comments


bottom of page