The Road to v16 - Zeepkist Devlog Part 1
Zeepkist Devlog
Hey everyone!!
If you've been following along on the Discord you may have been keeping track of some recent developments!
You might also have noticed some small updates recently containing mostly bugfixes, a lot of which are actually things I fixed for the next update but decided to already make available right now because they're so helpful!
So I thought it might be fun to make a series of news post development logs to keep everyone up-to-date on what I'm working on!
Namely, I'm working on:
Zeepkist Version 16
If you've been keeping track of Zeepkist's version numbering you might realize we're currently still on Version 15, but Patch 66. That's quite a large patch number!
For a small history on Version 15, here's a couple of relatively big changes it contained:

- v15p0: Ctrl-Z
- v15p8: Purple neon & more block primitives
- v15p10: Fog + Glass Fixed
- v15p16: New spectator camera modes
- v15p25: Feather Forcefields

- v15p34: Server Update
- v15p35: More Server Update
- v15p36: More More Server Update
- v15p38: The Soap Update
- v15p55: Faster Startup Loading

All that while I'd been planning the Zeepkist v16 update, constantly just-not-getting-to-it. But now that's about to change!
Zeepkist v16 will be a big update, and I intend for it to lift Zeepkist out of "Alpha" and into "Beta". I'm planning to bump up the price of Zeepkist as well, seeing as Zeepkist today is a very very different game than it was back when Zeepkist v1 first launched.
So, time for the devlog! The first part will be about FMOD.
FMOD
There's one big thing that makes Zeepkist still feel a little bit "in-development", and it's the fact that Zeepkist's sound is quite lacking.
There's no music in-game, except from the main menu, there's only a handful of sound effects, and everything combined makes the whole soundscape feel really unfinished. (And Zeepkist by extension).
The why of that is two-part:
- Making sound effects and music is hard
- Actually implementing sound effects was also hard
The first makes sense: Recording clean audio isn't easy, finding the right sounds isn't easy, and making music isn't easy. This doesn't need a lot of explanation, but it's also something that can be overcome with effort, creativity, and a bunch of microphones.
The second one is more complex, and it boils down to one crucial flaw within Unity:
Unity only supports one sound listener.
This means that 3D sound can only be interpreted from one 3D location. Which is fine if you have a game with one local player. However Zeepkist supports 4-player split-screen, which means Zeepkist needs to support 4 different audio listeners.
My solution for this was a wholly custom sound framework that would calculate the distance between sound events and player cameras, and interpolate the sound's volume from that.

It works, but it's completely unscalable.
Every single new sound I added required me to dive into the codebase to manually add API endpoints to my audio system.

What this meant was that any time I had to add a sound, it came with a huge amount of busiwork that really discouraged me from even starting on it. On top of that, I was planning to switch to a better system down the line anyway, so any effort I would put into it would go to waste.
And that's not even to mention complex sound effects such as changing wind volume and pitch based on Zeepkist velocity, which took even more work and tweaking and effort.

With v16, I'm finally upgrading to the better system I'd been planning to switch to all that time.
FMOD!

FMOD is a third party audio framework which completely bypasses Unity's inbuilt system, and comes with a fully-fledged Digital Audio Workstation designed specifically for videogames.
It's used by small indies and big studios alike, and just about everyone I talk about it has nothing but praise for it.

FMOD also includes something they call "parameters", which are values that can be changed from in-game, and changes how the sound framework plays sounds.
For instance, the "wind" sound effect has a parameter called "speed", which is tied to sound volume and pitch all controlled from the comfort of FMOD itself. I don't have to code a single line of code for it, everything happens inside of FMOD and I just need to click and drag some things.
Another thing I love is the "multi-track event" or something like that. What it means is that I can assign multiple audio source files to a single audio event. From Zeepkist I can simply say "Hey FMOD play me a collision!" and then FMOD randomly picks one of the collision sound effects to play for me.
Again, zero programming required. It makes audio work blazingly fast.

It also has a complete mixer-routing system in-place which allows me to assign audio events to specific groups which can have their volumes individually adjusted. Again all from inside FMOD without a line of code in sight.
The only code I type is "FMOD please do X or Y" and the rest happens automatically.

Needless to say this whole thing makes it a LOT easier to add sound effects to Zeepkist, and shifts the entire burden to recording the sound effects themselves. It's basically a 50% decrease in effort at this point, and makes the whole game audio thing a lot nicer to work with.
I'm very excited to be using this a lot more :)
The End
That's it for this devlog!! I hope you enjoyed the little behind-the-scenes insight and I hope all of you are as excited for Zeepkist Version 16 as I am!!
If you want to be even more up to date on Zeepkist development, you can join the Discord!
Happy Zeepkisting!!