Koku: A Void Antβ€”Post-Submission/Pre-Results Postmortem


Koku: A Void Ant
Getting a new ability... there's also a frog!

First Game Jam = Completed!

πŸŽ‰πŸŽ‰πŸŽ‰ Woo! πŸŽ‰πŸŽ‰πŸŽ‰

At the end of the day, Koku: A Void Ant is a success for me since I submitted a game to Godot Wild Jam & it is playable. There are bugs, aside from Koku, but it is fully playable. Unless you download the Mac executable, but I had no clue that compatibility mode on Mac caused GPU Particle Effects 2D to just crash any game. The shame is I have a MacBook at work I could have tested on, but I did not take it home for the submission period.

I wanted to use this devlog to talk about my experiences, both as a beginner game developer and Godot user and first-time game jam participant. Hopefully this post illuminates my process

The Goal: Come Original

I had two goals:

  1. Finish a game and submit it.
  2. Everything would be created by me and no one else. I could watch tutorials to figure out coding solutions and read StackOverflow/GitHub comments, but no copy and pasting was allowed. And font... I could use an external font. That's just not happening in one week to my satisfaction, but anyone who makes a font for a game jam instantly earns my respect.

So yeah, all code, art, and audio had to be original. No big deal. It was time to plan this sucker out.

The Best Plan? Any Plan!

The theme announcement hit and I immediately started thinking about ideas. Just any ideas: I had heard from game jam veterans on the internet that having a clear idea and genre vastly improves your chances of successfully finishing the project. My mind: racing. My browser: 30 plus tabs open. My ideas: terrible. But then while looking at a thesaurus page, I saw the word avoidant and chuckled. A Void Ant... that' funny. No, it's stupid, right? Some has to have made a game out of that, right?

Interestingly, no one had. There is a cute little e-zine on itch.io with the same name, but that seemed to be about it. And it made a lot of sense for a small Metroidvania platformer.I ran it by my partner and a friend, both of whom loved the idea and said go for it. Doubt quickly set in. From what I understand, Metroidvanias are not the easiest game genre to execute, especially for one person planning to do every single asset, aside from the font, from scratch.

But the heart wants what the heart wants: I desperately wanted to make a Metroidvania: my compromise was to make it truly bite-sized. A tasty bite that was as close to a "vertical-slice" as possible... okay, maybe one or two layers shy of a true vertical slice!

Let's Get Organized

Recently, at the suggestion of a friend, I've been trying out Notion. I like it, all things considered, although I miss the open source Obisidian sometimes. But managing my own repository for my notes had gotten cumbersome, especially on my phone. Notion is just easier and low friction is important to actually staying organized.

To keep things simple, I made broad buckets that would cover all necessary components. But a lot of the specific details I left to implementation; things like, how the parallax background would come together, exactly how each room would look, or perhaps the task of making a specific tileset.

The idea was simple: broadstrokes -> fine details -> if you hit roadblocks, break them out.

My Game Dev Project Planner board on Notion

A quick preview of my project planner board on Notion

And honestly, this is where things got really interesting for me: I started this document out and then proceeded to just check-in on it once or twice a day, making updates as needed. But mostly, I just moved fluidly forward. I hit no true roadblocks; rather I hit roadbumps that forced me to slow down and learn something new. Some ideas were frustrating to execute or create, but it was never meaningfully hard. So let's talk about how and why I executed certain parts of this project.

But Why Pixel Art?

I don't have a scanner bed or a Wacom tablet and 3D is scary.

All joking aside, I have the most experience with pixel art; not that I'm great at it, but I at least have some fundamentals down and know how to use Aseprite. And possibly my favorite part of this project was that I really learned how to be more of an Aseprite power-user. Like, Jesus F#*%ing Christ, how did I not know how powerful the shading brush can be? Koku looks good largely because of how powerful Aseprite is as a tool.

That being said, it could look A LOT BETTER. What do I mean? Here's a list and it is not exhaustive:

  • I do not like Koku's run animation.
  • I ran out of time for a specific dash animation.
  • Koku should be more expressive. He's too static. He didn't have to be Bubsy levels of expressive, but come on. He could look at the camera at least.
  • The frog's jump is mediocre at best.
  • While I love the dixie cup sky, it doesn't really match the rest of the style. Same with the weird stalactite columns in the caves.
    • Interestingly, the stalactite effect was achieved by basically overloading the the blur and displace effects on the columns, then shading them. It looks kind of like fake 3D? Again, it does not fit with the rest of the art, but I was having too much fun trying a weird experimental technique.
  • The cave tileset is too boring, but that's what PointLight2D is for, amirite?
  • The rainbow "pellets' are sooooooo static. Personally, I think spending some time on shaders could solve this, but it's hard to say.

None of this is to say I'm not proud of my work, but I'm painfully aware of where I could improve. The good news is that most people seem to like the art overall, so that's a win!

My biggest advice to someone following in my footsteps: try to emulate Void Door instead of my game. The art style is infinitely better, extremely clean, and (while requiring a touch more skill) would ultimately be less work in the long-run. I ended up spending way more time than I care to admit on the tilesets and placing them into the word than I should have.

Mobility Ability

A void ant avoids dangers? Truthfully, the first thing that came to mind for me was Alucard's Mist Form in Symphony of the Night and how much I always hated how late you got the ability in the game and how little it largely felt useless out of those random moments where you just literally needed it to find a secret or progress.

A Ball Is Born

Enter the Void Ball ability. Half Metroid and half Symphony of the Night. If I had one suggestion to anyone making a Metroidvania, it would be that this ability is way more fun than double jump. Crib this ability in some fashion and use it. Obviously only as it fits. It will not make sense for the next game I am planning and that's okay.

Fun fact: I made the Void Ball ability and then noticed that Koku was a two tile slots wide. A lightbulb flicked on in my head: secret entrances, holy %@*&! that's perfect. And thus hidden caves were introduced to the game.

Dash—Deceptively Simple

Yeah, so the Void Dash is okay. The Void Ball ability felt special and different and fun and flexible and so on and so forth. Void Dash just felt meh. Frankly, I'm probably being too harsh on it, but I do think it didn't get as much spit shine as the ball did. Here's how I could have made it a little more slick:

  • Bespoke dash animation for Koku.
  • Better particle effects on the dash (too similar to void ball)
  • Tuning the speed:length ratio of the dash.
    • This is a game feel thing, but I don't think the dash felt right. This might be the formula I used for curving the acceleration/decceleration of the movement

I reckon veteran game developer could give a TED talk on dash abilities in Metroidvanias—in fact, I strongly suspect that an air dash is just as important as double-jumping in this genre and tuning it is likely even harder.

Special SFX

Songwriting and sound design are usually what I would describe as my strong suite. For the most part, I really think that shines through in this game. Here are some highlights of how I pulled it off:

Audio Gear

Sorry to all the non-gearheads out there, but the gear did a lot of the heavy lifting. All of the sound effects were either from 8-bit drum samples on the AE or analogue synthesis from the Korg or AE's oscillators.

The Gear Used

Korg, MS-20, AE Modular, and pedals

But I'm A "CoMpOsEr"!

Saying you're a composer or that you are composing music sounds pretentious, but at the same time the process is in depth and saying "Oh, I wrote this music for this game" seems like a cop-out. Here's what goes into the process for each song:

  1. What's the mood? How do I want the player to feel?
    1. For example, for the "Hills Theme", it's the first music and sound the player hears after leaving the Void's cosmic cave. I wanted it to be driving and fun without feeling aggressive.
  2. Decide on keys, modes, melodies, chord progressions, meter, pulse, and more.
    1. Mood informs all of these decisions and the smallest decisions.
  3. Adjust equipment to achieve the desired timbres.
  4. Account for motifs or refrains in the game.
    1. For example, the void has a three note refrain that reappears when in the Caves. It was supposed to be more pronounced, but there are only four songs in the game anyway.

This is an oversimplification of the process, but it does distill all the thought that went into each song.

A Loop So Nice...

To keep my workload lower, each song is a sub minute loop. One of them is actually just sixteen seconds! I did this for two rather simple reasons:

  1. Keep the file size small while the audio quality stays high.
  2. The writing process for a looping song, while taking a touch of additional planning, makes sense for the music and performance style.
    1. I played the parts live (the drums were mostly knob twirling, but you get the point) and multi-tracked them.

The end result was great coverage of music for the entire game. The songs all feel fresh and even fairly different all things considered.

(Head)room For Improvement

The audio was good, but here's what I already know I could do better:

  • Cross-fade between rooms. It's a little jarring as things stand.
  • Add SFX for ability and rainbow pellet collections.
  • Separate the Cave theme from the "Approaching the Void in the Cave" theme, so the appearance of the Void motif feels more dramatic/meaningful.
  • In general, just add more SFX. What was there was good, but it just wasn't enough.

Testing, 1, 2, 3...

Finally, the biggest L I took during the entire thing was rushing the end and not doing as much final testing as I should have. There were gut-wrenchingly simple and easy to fix bugs that damaged player experience. Things like being able to accidentally make the player think they were locked in a screen if they clicked the continue button too much and too fast during a cut-scene or when restarting the game not resetting the saved world state to default.

Some of them were more annoying and insidious, like not setting the camera to attach to the game's physics process and leaving a single sprite update function in the standard process for the player. This lead to some players have really awful, terrible, disgusting jitter. I cannot overstate how bad it looked.

The Future?

I'll be patching the game on Sunday evening (05/26/2024) with a large number of fixes and refinements. From there, the question is do I refine the game further or begin work on the next game using lessons learned here? Let me know in the comments below. 

If you read this whole thing, thank you! If you played the game, thank you! I appreciate it more than you could imagine. In the meantime, take a look at the character from my first ever attempt at a Metroidvania from almost a decade ago:

Shiba Inu
Spoiler alert: this isn't the last you'll see of him!

Get Koku: A Void Ant

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.