When I first started Catalyst, I was working on a PvP multiplayer shooter. Around the half year point of development, I was beginning to realize just how much I didn’t know about completing and releasing a game.

I had a lot of experience in building and release software, but games exist with a different set of goals. They’re far more subjective than building an app or tool that solves a problem.

Brainstorming some different approaches I could take to solve this problem, I decided to pivot to a smaller, more casual project. This could allow me to bridge the gaps in my knowledge with a much smaller investment of time.

# Getting a little help from my friends

A close friend of mine, Dan Taylor, who I had worked with on a few projects before volunteered to help where he could. Over the next 2 1/2 months, I would be focused full-time on the game with Dan helping with game design, art and music.

As the game progressed, a mutual friend of ours, Griffin Dziok, joined on to help with some level design and play-testing.

# Initial character concepts

We needed to start figuring out what kinds of characters were going to populate the game. It was decided early on to have the character designs, particularly the bull, to feel a bit “softer”. Dan was recently hooked on Animal Crossing and wanted to take a stab at modeling characters in a similar style.

Early character concepts
Dan’s initial concepts were even more "toy-like".

# What time period is this?

The game takes place in the early 1900s, which may not be immediately obvious. Eagle-eyed players may notice the designs of the products in the shop draw direct inspiraton from products of the time.

A far more obvious cue is the main menu which was inspired by silent film title cards.
A far more obvious cue is the main menu which was inspired by silent film title cards.

# Dan nailed the music

Dan is a man of many talents and one of those is music production. My initial plan for this game was to use era-appropriate public domain music with some bsic tweaks. Dan took it a step further and made an original set of songs that sampled the tracks I had picked out.

To this day, the music remains one of my favorite parts of the project.

# Getting distracted by neat unnecessary ideas

Sometimes as a developer, we can get distracted by the different things we could do, rather than what we should do. This can lead to a lot of wasted time/effort on something that doesn’t actually make the end game more fun.

An example of this for us was active ragdoll. Initially the assumption was that having the characters also be physically based would save time on animations and make the game feel more dynamic. The reality is that it created a lot more work and was a constant source of problems.

You can see the AI's pathfinding getting stuck due to the rigidbodies.
You can see the AI’s pathfinding getting stuck due to the rigidbodies.

# Never underestimate the importance of play testing

Just because something makes sense to you or your team doesn’t mean it’s going to make sense to everyone. It’s easy to fall into the trap of assuming that something will be clear because it exists in similar games.

Even our play-testers who frequently play a large variety of games missed out on important aspects early on. Therefore we were continually having to tune our UI, sounds, level designs, and animations to reinforce the intended behavior of the game.

The biggest improvement we made from play test feedback was adding prompts for when you can both interact and grab items. In earlier builds, only the former was presented. We noticed several early players being confused on what they could grab and when they could grab it.

One of the best design choices we made.
One of the best design choices we made.

An example of where we failed was the stock room. In each level there’s a backroom area with different flooring from the rest of the level. In it new products will spawn whenever a product is sold, broken, or stolen. It’s purpose is to provide new items for restocking shelves, a mechanic that ultimately was lost on the majority of players.

We tried a few solutions like smoke clouds when items respawn, repositioning the stock room to be more obvious, adding a sign above the stockroom, etc… Most players will eventually figure it out, but it’s a mechanic that should have been more clear from the start.

# That’s not what the player should be doing

At one point we were going to have the thieves only be certain species of animals like pigeons, rats, and raccoons. This lead to a bizarre situation in play testing, where the player would see a pigeon and then immediately follow them around the store and ignore all other tasks.

This hindered gameplay and had an uncomfortable parallel to profiling. We tried a couple different fixes, like reducing the penalty on stolen items or decreasing the reward for catching a thief. Nothing really stopped this type of player behavior, so we just made all animals potential thieves.

# Customers were procedurally generated at first

I created a full procedural system that would pick the customers that would come into the shop. The species, goal, and timing was all driven by this system, stemming from an initial seed value (which I added for internal testing purposes).

As we continued to play test and tune the game, having customer behavior be random every time was horribly frustrating. You either got a stage that was too easy to clear or impossible… As we neared release we decided to pick a seed for each stage that felt like a good balance and then set the goal post based on our own playthroughs.

# I modeled so many small objects…

Modeling a shop in a game sounds like a fun idea until you realize how many objects you need. To add insult to injury, the birds-eye view of the game means each detail is going to be small unless you really exaggerate the proportions for readability.

There were even more made, though some didn't wind up in the final build.
There were even more made, though some didn’t wind up in the final build.

Over the course of three weeks I modeled, unwrapped, baked, and textured over 50 objects. In hindsight I should have reused more meshes with different textures, but I opted to have every object be fully unique if possible.

So many minor details noone will ever notice.
So many minor details noone will ever notice.

# Easter eggs and secrets

Being a huge fan of hidden details and secrets in games, I put a number of them in this game. Some are more obvious and are more globally recognizable, while others are personal and nods to friends and family.

One such example is the newspapers. This one uses a 1918 issue of Seattle Times covering the epidemic at the time. A fitting pick since we were in lock down due to COVID-19 during development.
One such example is the newspapers. This one uses a 1918 issue of Seattle Times covering the epidemic at the time. A fitting pick since we were in lock down due to COVID-19 during development.

# Nearing the end of development

About a week before release, Dan put together this charming trailer.

# Releasing the game

The game was initially released with a price tag of $5 on Itch. Some friends and family bought it as a show of support, but that was about it. At the time of writing, it has 95 downloads and 6 ratings/reviews.

We really should have been more aggressive with the outreach and promotion of the game. Even though the development timeline was short, posting progress updates about it on Twitter or Reddit as we were making it might have helped get some people giving us feedback.

Post-launch I had tried reaching out to a few YouTubers and posted free keys on a few subreddits and forums to get some kind of engagement. There were a couple of people on Reddit who took the offer, then it was completely silent.

At this point we decided to make the game free to play in hopes that over time people might discover it and give it a try.

# Oops, last minute bug

For those playing the game today, you may find that it’s impossible to get 5 bells on the first level. Our bad on that…

Thankfully, we didn’t want to players to deal with having a negative score. This means you can intentionally knock items off the shelf in the beginning of any level without penalty, only to pick them up and put them away for the points. This exploit is unfortunately necessary to fully complete the game.