Total freedom can be both a blessing and a curse. When we decided that CIPHER ZERO would have a dynamic soundtrack, everything was on the table. Songs could change as much as we wanted them to, any in-game action the user took could potentially affect the score, and we even opted to mix the songs in-engine to allow us to dynamically change effects like volume, reverb, and filters on-the-fly.
On the other hand, we gave ourselves an endless amount of rope to hang ourselves with. Rather than pre-assembled musical passages, the actual musical content in the project files are hundreds of short, looping clips. Dozens of tracks per song needed to be put together by hand and played back in real time in order to create an actual score. This was one of the larger responsibilities I had as an engineer - I was handed the mixer board and had to become the game’s DJ (or the “Technical Composer”, as I ended up calling myself).
When a song could be anything you wanted, where do you even start? When each song has its own mood and characteristics, what unique considerations does it need when hooking it up to gameplay?
General Approaches
While every song ended up being its own challenge, we did land on some relatively-universal approaches that could be applied to each one. Generally, we wanted every song to start off relatively spacey, quiet, and ambient in order to ease players into the world they just discovered. As they progress through the biome, we would slowly evolve the song until it became more lively and complex, and gradually introduce more memorable melodic and rhythmic hooks.
We put most of the more obvious changes to the songs at the end of each puzzle set, both to divide the song into more discrete “chunks”, but also to act as a reward for players completing the set. (You solved a bunch of puzzles, so you get to hear new music!).
Some songs like Road and City also have a “victory” state that’s only active in the environment immediately after finishing a puzzle set, to really emphasize the player’s accomplishment. We still used more subtle changes as players make progress through a single given puzzle set, as some sets are long and we didn’t want things to get too repetitive.
The title screen, biome view, and puzzle set states usually sound pretty different from each other, no matter the song.
Aside from the progress gained from completing puzzles, the number of actions the player could make that the music could respond to was actually pretty limited. We could respond to tiles being toggled, incorrect solutions being submitted, and that’s pretty much it. You can hear both of these actions influence the music in most songs - toggling lots of tiles in quick succession will often introduce a layer or instrument that eventually fades back out if you leave the grid state still for a little while. Submitting an incorrect solution will occasionally cause an immediate change in the song’s instrumentation that will eventually go back to normal as well. We even had the technical capability to change the song depending on how close you were to the correct solution (specifically, the percentage of rules satisfied by your current combination of tiles), but we ended up not using this option.
At the end of the day, CIPHER ZERO is a puzzle game which requires players to focus, so while we wanted the music to be noticeable, it couldn’t be too attention-grabbing to the point of being distracting. We did our best to try to avoid this in two ways:
- First, we made sure to keep the loudest parts of each song relegated to when you’re in the environment itself and outside of puzzles. When you go back into a puzzle set, we strip things back a little or use a more spacey, reverb-y mix to make the music feel less in-your-face.
- Second, we implemented some logic to gradually remove tracks from the busier sections of a song with the more incorrect solutions you submit, the assumption being that you’re struggling a bit and a more quiet score will give you more space to think. Try it yourself - when you’re super close to finishing a biome, submit a bunch of incorrect solutions and listen to how the song changes!
A puzzle that has a very layered soundscape by default…
…will become much more stripped-back if the player is struggling with it.
Each song: its own world
However, universal approaches only went so far when it came to implementing each of the songs. Every song had its own mood and assortment of instruments, and each corresponding biome had its own atmosphere and amount of content. As such, there wasn’t a one-size-fits-all solution to how the songs would change over time – plus we didn’t want things to be too predictable. With all that out of the way, I’d like to talk about the specific ways I went about doing the “technical composition”, or assembly, of all of the individual clips into a dynamic, structured score – for each of the songs!
Lake
Lake was one of the first songs to be implemented in-game and it was also probably the easiest. It’s by far the most ambient song in the game, which made my job a bit simpler because I didn’t have to do as much, and it’s a good representation for our methodology for the game’s dynamic music as a whole.
The beginning is sparse and quiet, the middle has a noticeable shift in tone and gradually transitions towards something, and the end brings out the main melody and adds it to all of the layers in the song. Because it belongs to the first (and shortest) biome the player explores, this progresses quickly compared to the other songs. I hope that makes the changes more noticeable to new players and leaves them looking forward to what the rest of the soundtrack could be like!
From a quiet start…
…to a lively finish.
My favorite little touch to this song is in the end state where, once the main melody finishes a couple loops, it goes away for the third loop to give the instruments underneath it more focus. Sometimes all it takes is the addition or removal of a single track to dramatically change the mood of the song, so I looked for opportunities for variation like this wherever I could.
Farmland
When our composer Will delivered the demo for Farmland, it sounded way more intense than expected for a puzzle game soundtrack! It had these loud, chopped-up drum loops, a super-aggressive synth bassline, and an almost wall-of-sound approach to the layering. In other words, it sounded awesome, but if we just slotted that into the puzzle gameplay it would feel out of place, to say the least.
I’m all for going unexpectedly hard in a soundtrack, but as we mentioned before, we needed to exercise some restraint to avoid giving players a headache while they’re wracking their brain trying to figure out a puzzle they’re stuck on.
A real barn burner!
So the goal became this: I’m going to start the song off as ambient and stripped-back as I can, then gradually move towards that final bombastic state as the player approaches the end of the biome.
The start of the song is unassuming enough that I didn’t think anyone hearing it for the first time would have had any idea where it would eventually end up! I especially love the creepy pad chords you’ll hear in the biome after finishing the first puzzle set. While the world of Cipher is beautiful, there’s also something quite spooky about it, being alone in a world with no one else, so I was more than happy to emphasize those uncomfortable feelings whenever I could.
To me, the “big moment” happens shortly into the third puzzle set: suddenly this ascending synth bass riff bursts in out of nowhere and the vibe of the song shifts dramatically. I deliberately timed this moment after the player has finished a few easy puzzles because I wanted it to grab their attention and give them the sense that they’re now working towards something big.
Halfway through the Farm, the buildup begins.
From here, the song slowly builds and builds, getting gradually louder and busier as you get closer and closer to the end of the biome. The tension doesn’t let up until you finally finish the last puzzle, you head back to the environment, and at long last the song drops into that final state. Nothing in the game has sounded this triumphant or energetic prior to this point, so I hope players feel really satisfied when they hear it.
Powerplant
The first draft of this song was very similar to what you’ll hear in the first half of its biome: super desolate, not very melodic, and driven almost entirely by these industrial-sounding percussion loops. It worked great as the start of a song, but if we had stayed in that section throughout the entire biome, it would have been far too repetitive. It wasn’t until later that Will came back with an updated demo for the song that sounded completely different. Suddenly it had all of these ominous chords, dramatic rising synth arpeggios, and an incredibly dark-sounding reprise of the game’s main theme. Rather than throwing out what we had before, I saw this as an opportunity to stitch the two versions of the song together.
The environment that Annie assembled facilitated this approach incredibly well: in the first half of this biome, the titular power plant isn’t even visible, but as soon as those giant cooling towers come into view, the song shifts over into its more dramatic and synthetic-sounding portion. It works both compositionally and thematically! Call it a happy accident.
The song shifts when the power plant comes into view.
This song might also hold the record for the greatest number of changes within a single puzzle set. The last set in the Powerplant is a super-long gauntlet that, for most players, will be the biggest challenge they’ve faced thus far, so I put the whole final stretch of the song into this set and introduced a new layer every puzzle or two to keep things constantly evolving. It really made that set feel like a “boss battle” to me, and what game isn’t improved by having boss battles?
The Dark Souls of… nevermind.
Road
Road was a difficult song to get right. The composition of it was deliberately repetitive - constantly building tension until the “victory” state you get upon completing a puzzle set finally resolves it with a big, satisfying chord change.
Because there wasn’t as many sections to switch between, Will and I leaned more heavily into dynamically modifying the effects and mixing compared to the other songs. As you move through each puzzle set, we map the values for the low-pass and high-pass filters on certain instruments to your normalized position in the set, so that the closer you are to the end, the more the sound of the mix opens up. It’s pretty subtle if you’re not aware of it, but if you transition from the first puzzle in a set to the last, the difference is night and day!
The mix sounds quite different at the start of a puzzle set compared to at the end.
Another thing unique to this song was its use of “radio samples” which, in actuality, are just clips taken from each of the other songs in the game, with modified tempos and keys to not sound too jarring. You can hear these as you move to different spots on the Road, and while you’re inside certain uncompleted puzzle sets, the clips are all scrambled up. I accomplished this simply by triggering a random clip at a short-but-also-random time interval. It’s a very trippy but surprisingly listenable effect when all of the clips are the same tempo.
Five different “radio clips” rapidly alternate in the background. Can you recognize any?
Even with these unique dynamic elements, I still felt like the song got too repetitive inside puzzles. To help with this, I added a “break” to the song that occasionally triggers if the main section has looped enough times. This section was heavily inspired by the version of the song Will had created for the game’s official soundtrack. It’s a really nice moment of clarity, and I feel like it’s even occasionally helped me solve some puzzles I was stuck on! Sometimes you just need a noticeable change in the soundtrack to help reset your brain and push through whatever it is you were hung up on.
Suburbs
While this is one of the most complex songs in the game, it wasn’t too difficult for me to put together because I was pretty much just copying the structure that Will had come up with for the song’s demo! This one is a lot more linear compared to the others, with four distinct sections that directly lead into each other. You’ll eventually get the full loop once you’re far enough into the biome, but prior to that, each section will loop back to the first section instead of the following one if you haven’t gotten far enough to “unlock” the next section.
This more linear approach to the song’s structure has its advantages and disadvantages.
Like I mentioned above, it makes implementing the song a lot easier because it provides a clear blueprint and removes most of the experimentation I had to do in order to assemble the more freeform songs. Having the sections automatically switch between each other also keeps the song from getting repetitive, as it’s constantly changing even if the player just sits on the same puzzle indefinitely.
On the other hand, this does mean that the song reacts to the player’s actions less than other songs. Having a couple songs like that in the game isn’t so bad in practice though, as varying the amount of control the player has over the music is just another type of variety.
An excerpt from Section A. The ice cream truck jingle is part of the song, of course.
City
City was another tricky song that ended up going through a lot of iterations. It has a gorgeous atmosphere that perfectly matches the sparkling, illuminated city under the starry skies, but it’s also pretty repetitive without much in the way of chord changes. City also happens to be one of the longest biomes in the game, so it needed enough changes to keep it engaging throughout its entire duration.
To accomplish this, I employed a lot of techniques used in previous songs. I gradually introduced new sections and cycled them automatically like I did for Suburbs, I added a break that triggers every so often like I did for Road, completing a puzzle set triggers a “victory” state also like Road, and the layers for each section gradually get expanded upon the further you get into the City.
The City starts out more sparse, and the song does too.
The hustle and bustle is slowly introduced.
There’s a dramatic shift at the end of the City, both visually and musically. Without giving away too many details, I knew I could use the dynamic music system to drastically change the mix and trigger different clips in a chaotic and glitchy-sounding way, and I decided to go for it. The first version of it was a bit too overwhelming so I had to pull it back somewhat, but it still should leave quite an impression.
Moon
This is the last song that you’ll hear in a biome, the last song that Will composed, and also the last song that I assembled the in-game version for. Needless to say, it conveys a lot of finality! I’d like to let this song speak for itself, so you’ll have to get there to experience it for yourself.
One small step for man…
That’s a wrap!
Assembling each of these songs was a monumental undertaking. When the pieces for each song are so scattered and the parameters are so loose, it took a ton of time to implement them, from the time needed to experiment and figure out my approach, to the lengthy process of actualizing said approach. Each song also had to go through many iterations and lots of polish to reach the state they’re at now.
Were we overly-ambitious? For sure. But needless to say, I’m extremely proud of where the music ended up in the end. There are tons of games out there now with dynamic scores, some with even more layers and complexity than CIPHER ZERO, but I can’t think of another score that uses as many different techniques and approaches that we ended up using. We wanted our soundtrack to be dynamic in a unique way that would elevate the experience of playing the game, and I think we succeeded. I really hope you enjoy listening to it.