Putting Cats in Boxes - A Post-mortem


Hey folks!

I’m slowly recovering from the GMTK 2020 Jam (I love jams but I always forget how much they take out of you!), and I believe I’ve restored enough cognitive function to do a write up about Put Cats in Boxes, what my goals for the project were, the development process and how the final project aligns with the original vision and what I set out to accomplish. Hopefully this insight will help future jammers be better prepared for future jams or at the very least be interesting to anyone who's curious about the process of game development or jams.

Prior to the theme, I had one completely tangible goal even early on; no matter what, finish the project. That sounds obvious on the face of it, but it's a bit more complex than that. By ‘finished’, I didn’t mean a super polished game with lots of fancy effects or highly intricate mechanics but I also didn’t mean just submitting something that was unplayable or super buggy. I didn’t even necessarily mean something that was fun! Here, I’m defining finished as:

  • A fully functional program, not just the gameplay but all menus as well.
  • All necessary aesthetic assets: meaning if it is a functional feature, it needs necessary art & sound assets
  • Relatively bug-free (relatively being the operative word. More on this in a bit)

So a little background on myself and why I set these ground rules: I’ve been a professional game developer for a little over a decade now (check out some of my previous work at www.adriansandoval.net if you’re curious, hashtag ShamelessPlug) and these outlined traits are the core of what makes any software be they  games or otherwise, ‘shippable’, meaning getting it packaged and on store shelves. Obviously you want to make a game fun too, especially if you’re the game designer on a team of people, but getting it to the point where it's a usable product is incredibly hard to do in and of itself. This is especially true of game jams, where the scope of your project has to be cut to the absolute bare minimum in order to make the deadline, and doubly so if you’re working primarily by yourself, and double that again if you're learning a new skill set. For myself, yes I'm a professional game dev but most of that time has been in a producer/designer capacity - I’ve only been programming for about three years, and working with C# in Unity for only one of them. Completing this project would mean my first completed project in Unity, itself a totally worthwhile goal to attempt.

When the theme of ‘Out of Control’ was announced, I admit I was a little overwhelmed by that one. It seemed like a big topic and the most obvious things - such as messing with player controls - didn’t appeal to me at all; the kinds of gimmick that completely turn me off of games that use them. I admit, this was the part I labored over the most and I can only imagine the things that might have gone into Cat in Boxes if I could’ve had those first few precious hours of brainstorming back. Eventually I began talking it over with my girlfriend and, a long with a bit of inspiration on the GMTK discord where a user posted a picture of their cat blocking their keyboard, the cat theme became the one we started to explore. The first idea that was thrown out pretty quickly was an adventure style puzzle game where you had to ‘guess’ different cats' specific personality quirks to figure out how to get them into a specific spot. I liked the creativity of it but it seemed like it’d be mostly a guesswork game given the limited time frame, but it did get me to envision putting a cat in a box and them quickly jumping out.

I quickly made a cat in Pyxel - I’ve been learning pixel art alongside coding and I can be semi-decent at it with enough time - but my girlfriend is a much better artist and wanted to touch it up, which eventually lead to her doing so many ‘touch ups’ of my animation to get full credit for the art (she’s making a game you should check out, by the way), while I brainstormed the vision of the game:

  • A game where you have to put a pre-requisite amount of cats in a box while they are constantly jumping out. Number of cats would get greater each level.
  • It starts fairly simple but a number of modifiers would happen - the cats inside the box start moving it, cats struggle and get free while you're holding them, etc.
  • Fairly early on, cats would be able to leave the play area (jumping out a window, escaping in a vent, etc.). If there are less cats on the playfield then the goal you needed to hit, the game would end.
  • Cats would have a number of states to feel more real and make the game more interesting - go to sleep, rush around that house, jump on furniture, y’know, things cats do.
  • Treats would appear so you can keep the cats in the box a little bit longer.

The bullet points you see above is what I call ‘the dream’; a vision of what the game could be, and what I felt could be possible within my time limit. But in order to achieve the goal of something shippable, it was necessary to start with the absolutely bare minimum to make a functional game in case I wouldn’t be able to fit everything I wanted to. I had to be able to move a cat, and put it in a box.

That part wasn’t super complicated, and in the future I might do a video post-mortem and we can take a deeper look at the Unity project and code, but I got it to where the cats were able to be picked up, dragged around, falling and walking around pretty quickly. From there, getting a couple in and to jump out of the box also wasn’t too much of a struggle. However, the getting the animation of them jumping out of the box to play correctly such as hopping out like a cat and not getting stuck in mid air, going back into the box indefinitely, continuing their original behavior upon leaving… just all of these permutations that had to be constantly tweaked and then retweaked as I added new details and features.

By the time I reached Saturday night (I’m on the east coast of the US, so there were about 18 hours left to go in the Jam by this point), I had a mostly functional, not super buggy game where there was a prerequisite goal to hit that would increment and add more cats after each successive goal… in other words, I had a game. a skeleton of the original vision, but still a game (or if you prefer professional business-y type terminology, a minimum viable product). But I also didn’t have any menus and no music or sound or any code relating to sound - both of which were going to be a considerable time sink.

So I stuck to my guns and got to work on sound and the menu over new features or adding polish. I’m estimating that sound and menus on their own took about 7 - 8 hours on their own, which basically left time for bug fixes, itch submission and a little bit of sleep somewhere in between.

Despite my goal, it's hard to not be a LITTLE disappointed not every feature could make it into the game, especially as a game designer by trade. In particular, the lack of a fail state makes the game feel a little more like a toy than my initial intention. Even with cat states being limited to stopping and walking, having to rush to make sure a cat doesn’t get out while a bunch of cats jump out of the box would have added so much to the frantic feeling of the game.

That said, Put Cats In Boxes met the goal I was looking to achieve. It’s fully functional and doesn’t have any critical bugs. That doesn’t mean it’s bug free, mind you - in particular, I couldn’t crack the bug that causes the box’s shake code to kind of freak out when the box is also moving along the ground, at least in time for the jam. But the bug free goal was strictly critical errors, crashes, significant slowdown and other things that would affect play. In truth, good QA is a huge undertaking that no game jam can accomplish perfectly - even if you have one person who is testing around the clock, filling out tickets and passing them off to the programmer, you also have to account time for fixing those bugs as well, so having relatively stable code for a jam is a laudable accomplishment in and of itself.

The goals I set out for myself were highly personal, and applicable to my career as a game dev. That being said, being able to see your full vision and then compartmentalizing it to its smallest point is a useful skill for a game designer and developer no matter if you’re a student, hobbyist, or professional that with adequate time and resources, can help you get something in the hands of players faster. As for this jam, I delivered my first fully functional and complete Unity project, and I didn't have to crunch to do it - which is very cool.

… I almost ended that last sentence by saying it was ‘out of control’ but thought better of it. I hope you’re all proud of me. If you got something out of it or have a question or comment about my process or the game, leave it below and I’ll respond where I can. As a thank you for reading all of that, please enjoy this cat animation that didn’t make it into the game. Ah, what could have been.


Files

CatBoxesFinal.zip Play in browser
Jul 12, 2020

Leave a comment

Log in with itch.io to leave a comment.