Contents

0036. Space Calling (GMTK2025)

Contents
0036. 2025-08-21 Space Calling (GMTK2025).mp3

It’s game jam time again (or better said: it was)! For the GMTK2025 Gamejam we submitted the game Space Calling (which you can play on itch.io!). One game, four team members, four days. The jam’s theme was “Loop”. Initially, we struggled a bit with the topic, but after a longer brain storm phase and me playing some good old Tyrian (OpenSource port), we opted for writing a rhythm-based vertically scrolling space fighter. The lore is simple: You (the player) are asleep, dreaming of a space journey and everything tries to wake you up. You can read more about the dev journey with Godot in Gesche’s blog.

With this game we wanted to make the music a bit more interactive. The idea was that certain enemy types have their own songs and that the music changes a bit based on where the player is in the game. So I went ahead with a really simple 4-bar 3-chord base for the whole track (C, Eb, F), which loops again and again and again1. Based on that progression I started with a simple bass, some pads (which didn’t make it into the game) and then began writing small themes that could be layered on top of this.

Different enemies / objects got their own theme this time. The music also tries to mimic their movement (or the enemy got its movement pattern from the music, depending on if we created enemy or music first - it’s a game jam after all). During the jam we got more locked in with the “dreaming / wakeup” theme, so I started writing some short adaptations of commonly known smartphone alarm sounds. After I asked everyone in the group to play me their phone alarm, I started adapting them to the chord progression of our main theme (I also added some from memory and some from a very weird “smartphone default ringtone”-YouTube search). This was very fun to do but I could not get these themes out of my head again. The first time I took a longer break from the jam it took me three hours to not have the “modified Sony Xperia alarm sound” playing in my head. Anyway, we chose to use the alarm sound snippets for pop-up notifications during the game to distract the player from their game.

Mixing-wise this was the first time, that I didn’t just export a fully mixed master track for use in a game. I exported Stems instead, meaning that I exported one audio file for each track. These tracks can then be mixed together inside the game, depending on what is currently happening - interactive music! We had two versions for bass and for drums (depending current stage) and then the previously described shorter snippets for enemies and notifications. We also had a game-over alarm sound. Now, in this blog I have one track per blog post, so I had the pleasure to mix everything into one single track, showcasing all the themes that I have written and ending it with the game-over alarm. Feels a bit like making an OST (Original SoundTrack), but in a very limited way.

We played around with Godot’s interactive music classes. Originally we wanted use multiple AudioStreamInteractive - one for each group of music we had. One for the drums, one for the bass, etc. and then define transitions between the individual tracks. The problem was, that we needed to sync the different AudioStreamPlayers. No problem we thought and put the AudioStreamInteractives into one AudioStreamSynchronized. This worked (i.e. produced music) but then there is no way to switch to the next track! We either needed to get a playback of AudioStreamInteractive (which we can’t, as they’re not exposed from AudioStreamPlaybackSynchronized) or find another way to set a parameter on AudioStreamInteractive (which only works if it is the parent stream). So we ended up putting all our music into one AudioStreamSynchronized and adjust the volume as needed. Definitely not as fancy and no native transition support, but it worked well enough and we managed to stay under the 32 stream limit. To correct this shortcoming I opened up a Godot Engine Proposal and submitted a patch.

All in all this was a very fun game jam. Rating-wise we got #437 in Audio2, which is nice, but in the end I got way more out of playing the other participant’s games and talking to them via comments. It definitely motivates me to make more games.

So, this time I didn’t write as many different tracks as for the last game jam, but I ended up writing a much more diverse and interactive music track. Godot itself also has a wide variety of audio effects, which would make interactive music even more interesting, so that’s something I want to look into sometimes in the future.


  1. Because of the topic! Loops! Get it? ;) ↩︎

  2. 437 out of 9597! ↩︎