Flat Earth Postmortem - Audio

Flat Earth is a simple, storybook-ish RTS game with a physics element to mix things up. We knew we wanted to lean into more of a calming aesthetic than our usual absurdity (see: ALL the Rude Bear games). So beyond just making a game that worked mechanically, we also wanted the music to be tied in closely with what was happening in the game world.
Vocal Music
Alex came up with the idea of having vocals in the music - singing about how happy the villagers were to live in this big grand world. I think the phrase he used was along the lines of "indie darling music about the grandeur of the earth." Something cheerful, naive, maybe a bit pretentious, but definitely good-natured. That's not a style of singing and writing that I'm particularly strong in, but I figured I'd give it a go.
I've done a few vocal entries in past Ludum Dares, but usually being able to hide my vocal shortcomings behind layers of effects and distortion. Since we wanted it to be calming and natural sounding, I actually had to take time to sing things better than I usually do. It's always uncomfortable to strip away some of the processing that I usually use to make things sound better, it feels a bit more exposed, but I'm happy with how it turned out. I also tried to embrace some of the naivety and sing songs about friends being happy, which feels super weird for a guy who tends to write more depressing music, but I think really fit the tone of the game that we were going for.
Audio Programming
I also did a tiny bit of audio programming to allow the events in the music and game to be synchronized together. I've done a few audio-driven games in past Ludum Dares and usually over-engineered the audio side of things. The audio sequencing piece was a last minute addition (within the last hour of the jam), that Alex outsourced to me. Since there wasn't much time I landed on a super-simple solution that kinda fit the simplicity of the music itself. Instead of having multiple audio files to transition between, I just exported the soundtrack as a single file and marked several transition points in the music as variables in the code. To take advantage of those transitions it was just a SUPER simple matter of checking audioSource.time (with a bit of a buffer to protect against silence cutting in).
void Update()
{
if (audioSource.time > currentLoopEnd - 0.05f)
{
audioSource.time = nextAudioLoopStart;
callback();
}
}Super simple. Adding a few more conditions allowed for us to loop sections as needed, trigger state changes on certain sections completing, and really end up with a result that felt unified and cohesive.
Check it out!
I've participated in a lot of Ludum Dares over the years - at least one entry in every event since LD27 (and several times doubling or even tripling up). And, while I've had a few less-than-stellar submissions, I'm usually pretty happy with the results. I've been teaming up with @alexrose since 2014 and @bitsandcrafts since 2018. We've made a lot of crazy stuff together and put out some games that I'm proud of. This time around, however, it might be some of our best work. We'd love it if you'd check it out.
Source: ldjam.com archive
Next postFlat Earth Postmortem - Audio (part 2)