Hi everyone, we’re Cosmic Adventure Squad and we’ve been doing game jams for over 10 years! You may have seen or played some of our previous games such as Deepest Sword and Game Name. We’ve been asked by a few people to share some of our processes and thoughts for how we made It Was All For The Tuna, our LD52 entry.
It Was All For The Tuna is a chill fishing game where you play as Toro the cat and you’re tasked with catching Tuna to feed the citizens of NekoTuna.
Play the game here: https://ldjam.com/events/ludum-dare/52/it-was-all-for-the-tuna
This is part 3 of a 3-part post-mortem taking a look at how we approached developing the game. In this part I'll be discussing the Audio and Audio System in the game!
Part 1
| Part 2
| Part 3
Audio
https://www.youtube.com/watch?v=3XzqEv9vpao
The song is hosted on SoundCloud with free download as well
Brainstorming and Inspiration
We spent the first evening doing idea brainstorms , and one of the concepts that stuck was a fishing game where you'd compete against other fishers and upgrades would affect pollution in the world. This lent itself to a really interesting idea for me - what if the song could seamlessly shift into a "corrupted" version of the main theme?
Usually, I compose music after we’ve come up with more concept art and even some gameplay, so it’s heavily inspired by visuals and gameplay. I usually try make the music fit to the existing visuals+gameplay, but this time I wanted to try to do the reverse and come up with music early enough to help inspire visuals+gameplay instead. By the end of day 1, I’d come up with the music sketch for the main theme, and added in a makeshift waves track to complete the feeling for the main part of the game.

I loved games like Skies of Arcadia where the world theme would seamlessly add in layers to its overworld music as you approached certain towns to add a cultural flavor to the airspace. In modern games, I've seen this come up in Age of Empires IV where choosing a civilization in the lobby would add in unique layers that flavor the main theme. In older games like Megaman X, an intro riff of a song would play once you enter a stage and then loop after that point. In Octopath Traveler, the pre-boss-battle music is crafted to loop until the player gets past the dialogue then triggers a transition piece into the main boss battle loop, and it's amazing.
https://youtu.be/b7Zc3f8cPnU?t=284
(at 4m41s he discusses how the transition occurs, or 7:20 if you wanna just hear it work, but definitely pan around if you haven't played!)
I figured I could take from each of these pieces of inspiration and craft a song where a melody or harmony could open the path to transitioning the background music to different chord progressions and eventually swap out the melody altogether! It'd be like a Ship of Theseus in music form! This needed a much more custom audio system using Unity’s Mixer and using much different approaches to audio than we’d done in the past.
Audio System
I had these goals for the audio system:
- Crossfading tracks and gradual volume control
- Ability to have “Layered Music” objects - multi-track songs with controllable volume-mixing through script.
- Queueing tracks that would start when the previous song ends (ex: could use it to create an “intro” section that only plays once then a main loop, or to queue a new song that plays once the previous one has ended). In the best case, we could have a live playlist system.
I was able to finish implementing the audio system (enough to use the minimal features of it!):
- Tracks and volumes ease in
- We had up to 4 simultaneous tracks playing at once: the main piano theme, 2 harmony layers, and the ambient waves layer, and they were controlled through script: as you upgrade your boat, different layers fade in. As a nod to the pollution / “getting away from nature” idea, the waves track is actually loudest when you first start the game but gets quieter as you upgrade the boat! It’s probably an often-missed detail and I blame a certain bug for it :expressionless: , but it’s there!
- We didn’t really get to use the queue-track feature; I wanted to use it for the “corruption” mechanic or seamless transition between ending/restart, but ran out of time to craft the song for it.
Scoping
Saturday was a friend’s wedding, so I went. To try to make up for the time, I drank coffee throughout the entire reception (5 cups!). When I got home, I stayed up the whole night and got my first pass through the audio system LOL.
The pollution idea went out of scope, so I ended up using one of the music sketches for reharmonizing the main theme into corruption as the ending theme.
Implementing and bugfixing the audio system took up a lot of my time, so the main music theme is almost exactly the original sketch. It’s still cute and relaxing, but it’s definitely a bit rough! I had a variation/”bridge” part I’d sketched out (so maybe it’d have more of an AAB or AABB loop then the AA loop it has right now - that is, if you feel like there isn't enough variation, that's because I didn't get to create/add it in time!) 😓
I barely had time to make SFX. At one point I made fft! sounds into the mic and that became the fishing rod throw. Now you can’t unhear it!
The cutscene dialogue text is generated from https://acedio.github.io/animalese.js/ - pretty handy tool :)
Audio Balancing Issues
Some of the big things that haunts me in this project are the audio balancing issues. I created the audio tracks assuming they'd be at a certain volume, but 2 main things threw everything out of whack:
- NORMALIZED AUDIO - This is an option that we've almost always turned on in prior projects. It adjusts your audio according to the peak volume of the audio file ~~so that it's on a similar loudness to the other audio~~. For sound effects (especially when exported or generated from different tools/sources), it's great. When you have a music track that's supposed to be quiet... it overturns the intended balance and makes it extremely loud. If you feel like the chiptune tracks in the Jam version were loud... they are, and it's not intended :weary:

- Unity WebGL Volume - For some reason it feels like the WebGL build's volume came out way louder than the builds we were testing with offline. It had me playing around 5-10% on volume in web when I'd be playing at 90% volume offline. Hopefully we'll figure out what's behind this or a workaround by next time.
Overall
I'm pretty happy with what we came out with! I’m proud of how the game looks and plays (seriously, a fishing mechanic that isn’t a quick time event!), and I think we managed to hit the relaxing feel we were going for!
For me with audio, I feel like there definitely could have been more polish from the asset/musical standpoint (I created a system that lets me do what I want, but I didn't create the content for it! oops! :sweat_smile: that's scoping for you) but I’m pretty hyped about the audio system that came out of it! With the things I learned from implementing it this time, we can do almost all the functionality I've wanted to have for a long time with our games :grin: