The Adventures of Cat Bat

Overview

The Adventures of Cat Bat was made over the course of 72 hours for Ludum Dare 44 with the theme “Your Life is Currency”. The player takes the role of the Cat Bat, a creature that is both a cat and a bat. The game is a short, rogue-like adventure with minimalist graphics and 8-bit sound. I went with a vampire theme, as a big goal of the game was to gather life points and use them to your advantage. This was my first game jam, and I learned a ton from the experience.

Gameplay

My main design goals for the game were random dungeon generation and fast, simple, high risk gameplay. I incorporated the theme of the jam into the game by making the player’s lifeforce (hearts) and currency the same. So in order to buy upgrades, the player must sacrifice some of their survivability. This led to an interesting dynamic of balancing the player’s health and power.

The game has randomly generated shops that spawn every so often that the player can spend their life points at to get upgrades. Additionally, though, players can come across chests that will give upgrades for free. These chests are rare, but encourage the player to fully explore the level.

Combat is straightforward. The player starts off with a melee attack and has the option to get a gun upgrade later on. I decided to go with this simple system to make upgrading seem more impactful and necessary. The player will start off feeling weak, but will get stronger by upgrading their abilities. I built the upgrades with a focus on increasing movement and base combat abilities. Attack speed, a dash upgrade, and more range are a few examples.

A shop room.

A shop room.

I decided to build three unique levels for the game. Once I had the system in place for generating a level, adding a new level was just a matter of drawing the art for it and creating the enemies to go inside of it. I had one unique enemy for each level. I felt this was a good amount since players would get through the levels fairly quickly. Since the game could be completed so quickly, I decided to make the enemies very strong so the player would be forced to upgrade themselves. I also included a final boss into the game as the final test of the player’s mastery. I initially did not plan on adding a final boss, but the end of the game felt lackluster without one. The player needed something to do at the end of the game to contribute to their effort in getting that far.

The crypt area.

The crypt area.

Art & Sound

I had a lot of fun making the art and sound for this game. I went with a simple 1-bit color palette with the additional color red to emphasize certain things. I wanted to make sure that every level felt very different, so I drew up different themes for each one. The first is a cavern area, the second is a mushroom forest, and the last is a spooky crypt. To further emphasize the difference in each level I made a unique soundtrack for each one. The songs are all simple tunes but have a certain mood to them that I hoped would match each level’s atmosphere.

I made it a very high priority to have sound effects in the game, as I feel like it is one of the most important parts of immersing the player in the world. I tried to have sounds for as many things as I could. While they are all simple 8-bit sounds, I feel like they add a lot to the experience of the game.

My favorite track from the game, the boss theme.

What I learned

This game was made in GameMaker Studio 2. I chose it because it was what I had the most familiarity with at the time and that it is good to use for a simple game like this. If I were to go back now and choose a different engine, I would use Unity because it is less of a hassle to use and has built in Web GL support.

Before this game, I had very little experience with random generation. I learned that it’s pretty hard! My system picked a random number between 1 and 4, and would generate a room upwards if it chose 1, to the right if it chose 2 and so forth. There was also a check for where the room was previously generated, that way it wouldn’t stack a bunch of rooms on top of each other back and forth. This didn’t stop rooms from stacking on top of each other though, as the rooms would only check the very previous room that generated and not any others, so it would sometimes stack on top of a different room. I was able to solve this by checking if two rooms collided and removing one of them if they did. In all honesty the system was very finicky and difficult to work with. If I had more time I would have come up with a better system—perhaps one that uses a grid data structure and places rooms in each cell of the grid—but given the amount of time I had during the game jam it was sufficient.

A zoomed out view of a randomly generated dungeon.

The crypt area.

Reception

The game has received generally good feedback with a few common complaints. One issue that players have is that the health currency system can sometimes not seem worth it. Since the game is pretty difficult, it can be hard to maintain your health and also have enough health to buy upgrades as well, so some players did not try to buy upgrades. I feel this system could work really well with just a few tweaks. Maybe make health drops more common, or make enemy attacks more predictable so players can learn and keep their health more easily.