Arsen is our sound guy. He's amazing. On his first project, we gave him some verbal explanations of the sound we wanted, followed up by one or two audio references and the very next day, he had something almost in place that was nearly perfect.
Here's his write up about his process, along with an accompanying YouTube tutorial video.
You can find more tutorials from as on our page and we'll continue adding more as time fits.
The first audio task I tackled on Grimmstar was the sound of the engines. It was a particularly important sound because it not only helped set the tone/aesthetic of the game, but also because the player will be hearing it for a large percentage of play time. While making the tutorial video, I thought it would be best to approach it as simply as I could by answering just one or two questions. The video, for me, ended up being broken down into two main categories: How it was done and Why it was done.
The default engine loop sound is comprised of 8 seamless loops, with an engine kick up and engine power down event played over it. The goal for the loop was to break it into different parts of the frequency spectrum so that 1. the sounds didn’t fight too much, and 2. the parts could be interchangeable in case the player upgrades their engines or we re-used these sounds in other engine assets in game. The engines powering up and down needed to be something quick and recognizable, but not too fatiguing when used over and over.
For the engine loop sound design process, I used audio recordings, Reaktor, and various plug-ins to create the sounds I wanted for the base element. I ended up using sounds from actual rocket launches, synthesized elements that sounded like actual rocket launches, and finally, synthesized elements that sound like ‘BWAAAAAAENNOUNGHG”. The powering up and down layers for the engine were made with straight forward psycho-acoustic cues in mind. Synths being pitched up with some doppler effect when engines kick on and then pitch going down when the engines slow down. These are also punctuated with kick drums and other samples, for another layer of beef and transient continuity. When all these sounds come together, it should register a recognizable impact in the game. Luckily, our middleware solution should take care of turning that into something usable.
In our case, FMOD took care of mixing these sounds and giving them dynamic parameters that could be modified in-engine. By default, the 8 sounds that comprise the loop are full frequency and quite loud. FMOD takes care of mixing these by using everything from simple filter sweeps and volume automation, to more complex pitch shifters and reverb wet/dry signals. By default, the engines idling should be quite tame, and not too noticeable. This was achieved by making two audio states that the engines could be in (0-full thrust) and interpolating between the two (with a little finesse and massaging to not make it a direct linear movement). The idle sound is heavily filtered, with a lot of the synth elements turned down in volume, while the full thrust sound opens all of these sounds up and added effects like distortion and reverb really push the larger than life effect. This “Thrust” parameter is being manipulated by the game engine and was already available through blueprints (to me) as a 0-1 float, so making the audio connection to in-game parameters was relatively simple.
On the unreal side of things, we needed to hook up the engine loop as always active, and then when the player presses the ‘forward’ or ‘backward’ button to trigger the engine and power up and down sound, respectively. Most of this work was piggy-backing off already existing structures and blueprints that made the player behave the way they should. Once this was plugged in, we had a good basis for the engine sound, but a small element remained to make the whole thing come together.
“The sound should be realistic, not cartoony or sci-fi” would become my mantra when developing sounds for Grimmstar. Luckily, I always had great references for what we were trying to emulate. From actual anti-aircraft weaponry references, to specific shuttle rocket launches, there was always a good direction in terms of audio.
The main problem with these sounds is they are far too fatiguing to be used in a game. I developed a simple system to alleviate that by setting up a timer that counted to 5 anytime the forward or backward thrust button was pressed. After being pressed the system would apply a sweeping low-pass filter (plus other super special audio secrets ®) to whatever the sound of the thrusters were in in their given state. This gives us many distinct and unique combinations of audio based on where the player has their thrusters set, and ultimately gives enough variation to make the engines feel living and dynamic.
This engine system as you hear in the video is not in its final mixed state, but the core sound is there, and a great place to start mixing from.
Stay tuned for the next audio dev vlog, which will cover procedural music generation, i.e. space is large and writing that much linear music is crazy pants.