The Sound Of The Game
Noises.
We hear them, we love them. There might be exceptions to those two statements I just made but we will not be entertaining that today.
Because today I wanted to dive into a system I have recently created for 900down.
Hear Me Out
Sound has a lot of uses in games, but when making a horror game it becomes even more important. 900down isn't meant to be the scariest game ever (it is an Action-Horror game after all), but that doesn't mean sound becomes any less of a priority.
I want the game to have a strong atmosphere, oppressive and sprawling. To achieve this I will be using ambient sounds. When you're just standing around in The Gutter, you will be able to hear the hum of nearby machinery, the ventilation supplying precious air to the depths, and strange noises that are certainly not taking kind to your continued presence.
Now you could just slap down a sound playing object in the game and consider the job done, but I wanted to go a step further. A single looping sound is not terrible, but it's only one step above silence. I had an idea, not a new or unique one, but an idea that didn't seem super difficult to implement.
Going To The Source
The Source Engine. A legendary piece of technology created by Valve Software and used in many of their games. Half-Life 2 and its episodes, Team Fortress 2, Portal, Counter-Strike, all that and more. Source has a lot of features that are really cool, but one that is often appreciated but rarely talked about is Soundscapes.
Soundscapes are an evolution on ambient sounds. Rather than just being a single looping noise, they are comprised of a series of noises that are are both looped and played as one-shots, and those noises can even be placed to emit from specific areas. As a result of of this, they pretty much erase the possibility of a player recognizing the loop and breaking immersion.
An example of the Soundscapes in Half-Life 2
Soundscapes are a super cool feature that I've always loved, but I don't really feel like you hear anything like it in most games. The engine I use, Godot, doesn't have soundscapes in it, but I'm a programmer. One that runs on spite as I've stated on this blog before but I can do things.
So you know what? Why not? If I like soundscapes so much why don't I just make a soundscape system myself.
The Sound Of The Scape
The first plan of attack is simple, decide what I will want for this system and how to best implement it. Thankfully those answers are very simple for me. I want a system that plays a looping sound, and has the option to play one-shots at random intervals. I also want to make it so soundscapes only play in specific areas, so a large cavernous area doesn't sound the same as a tight hallway. Finally I want to make sure that there is no way two soundscapes can be playing at once.
And that is all I feel I need for this project. I didn't even care to implement the feature of being able to play different sound sources with the soundscape, since I'll just be doing that manually.
In Godot, there are a lot of Nodes1 that do a whole host of things. One of these nodes is called an Area3D, which detects when an object enters it and then can execute code. So if we want our noises to play when the player enters an area, obviously we start with an Area3D

This is what my soundscape's setup looks like. There are two empty spots, one where we can add a looping sound for the main background noise, and then a spot where we can add our "Foley" sounds. After those two are settings to make it so the soundscape stops when the player exits the Area3D radius, or if it continues until another soundscape is encountered. There is also the "Silencer" option, which turns off any soundscapes currently playing.
Next are the Foley settings. One, we can choose if this soundscape even plays Foley or if it is just the background looping noise. Next are the minimum and maximum time between Foley sounds playing. For the Foley noises in my soundscape, they are set to play in a range of time between these two numbers. This works to make sure that the timing is not consistent, breaking the chance of the player discovering the repetition.
Here are a few videos showing off the soundscape system. You can hear the Foley sounds in the first one, and how the system can switch between different soundscapes when the player enters different areas. There currently isn't a smooth fading between the different soundscapes, admittedly I've had trouble coming up with a system for it that works. Regardless I am very happy with this system. I think it does a great job of adding atmosphere to the game without the repetition a simpler implementation would have had.
Well that was a mouthful but I'm happy to have written it out. I hope to make more focused devlogs like these rather than the general updates that I used to post with Skag Malibu. So I don't have a specific date for when the next one will pop up.
Until then, thank you for reading.
To grossly simplify, a node is what the engine calls objects in most cases↩