Galway Game Jam 10 offered either “extinction” or “insomnia” as a theme. Which would you choose? I chose “extinction”. I made a broken game, designed to make you feel horrible and think about extinction. A terrible game about being a cat in 1894.

These themes were oddly miserable in tone. Using such a theme adds an extra challenge and makes you get a little philosophical! Such gamejam themes can make really interesting games that would never otherwise exist. This is one of the reasons I adore gamejams.

Aside from my initial feelings about the kind of dark themes, the fun nature of a gamejam framed it as a creative challenge. In fact, it was a very laid back and productive gamejam for me.

Okay, let’s make a fun PICO-8 game about extinction!

Getting an idea together

I took an about 15-20 minutes to wander around and ponder the theme, sort of indirectly. Extinction. I made a cup of tea… tea in the west of Ireland… trade… colonialism… extinction. Aha!

Actually, while the process wasn’t exactly like that, the idea did sort of pop into my head after I sat down with said tea, a pen and paper and thought about it for a while. Occurrences of species extinction due to human habitation and expansion popped into my mind. You know, like the Dodo, or more recently the White Rhino.

However, one case of extinction, in particular, was lent itself well to a game-oriented narrative. The lighthouse keeper’s cat who (allegedly) singularly exterminated a species of bird on an island.

Though I don’t recall where I first heard the tale, I took note. After scribbling some other game ideas, I kept returning to the first idea again and again. It was likely the best idea I could think of: A game about a notorious cat. So I did a spot of research to learn more.

As it turns out, this unstoppable cat was called Tibbles and, as mentioned, was infamously responsible for making an entire species of flightless bird extinct on a small island off the coast of New Zealand. A story so crazy it already sounds like a game.

Scientists named the bird species after the assistant light-house keeper (Lyall) who brought the bird to the attention of the scientific community. That’s nice of them.

While the prominent tale told about the extinction of this flightless bird ("Lyall’s wren") tells how 19th-century lighthouse keeper’s cat singularly exterminated the entire species, the true cause of the extinction was later investigated and determined to be many feral cats on the island. It is thought that a pregnant cat was brought to the island, escaped from the owner and gave birth in the wild.

Many things can be taken from that. Let’s make a list! * The effects of European imperialism and expansion, * The notion of species extinction as a consequence of human actions. * The fact that cats can reproduce so rapidly it’s actually quite alarming. And how pet-ownership really has some serious effects for the irresponsible owner, as well as nature in general. But, for a gamejam game, I don’t really want to get into all this.

I only want to go with the more compelling tale of Tibbles the Extinctrix, destroyer of birds, because it is simple and lends itself to a simple structure that we are all familiar with in games: player kills things. You play as the cat, now go kill all the birds. I could also highlight extinction this way.

So, having decided to make some weird cat and bird game based on a story that leans into species extinction caused by human expansion, we need to get started by coming up with a name. I used “Folly” as a working title for the project (one of many). Names are difficult to get right, luckily we can change them easily. I jumped to the next task: making the game using PICO-8.

Making the game in PICO-8

I did not put myself under a lot of pressure, allowing myself to chip away at the task ahead at my own pace. This approach worked a treat! I took the time to take breaks, getting up to walk around a bit, get drinks or snacks, talking with other people at the jam and helping out the organisers a bit when I could. There was a chill, relaxed atmosphere at Galway Game Jam 10 that was very welcoming. All while getting things done.

Code-wise, I used broad strokes at first; getting the shell of the game together before getting in any deeper. With a menu, game and end screen together, you get a clear sense of progress and a scaffold to work with. Then I got to work on gameplay.

The majority of the gamejam went into working on the gameplay. It was simple and straightforward, but I had never done it to this degree before. I had to re-learn a bunch of maths from school that I apparently studied like 15 years ago! And I spent a good chunk of time figuring out just how to do things within PICO-8 and it’s arbitrary limitations.

Collision detection? I guess circles are the easiest thing - you just need to find two circle’s centre points, get their distance and see if it’s less than their combined radius. Pythagoras’s Theorem rocks.

Learning maths is much easier when you can apply it in a real way and see the results!

Trying not to rush I made the experience more relaxed, but as a result, it meant that my solo endeavour was not fully realised. Did I do my best? Maybe. In any case, I certainly had a balanced approach, and I am more than happy about that.

My efforts had a broken prototype ready by the deadline. Was it perfect? Nope. Was it complete with everything I wanted? Nope. But it was a game, and it was on-theme - two crucial takeaways.

People could very quickly pick up the game and, within a few seconds, figure out what to do. They were engaged for the most part, especially when it came to chasing down the final bird.

Finally, I feel the craft of game making is slowly becoming assimilated into my brain. Like learning any other skill I suppose. Good job little neurons!

What did I learn?

  • Coding under a lot of pressure nearing the end of a gamejam entices me into taking shortcuts that I would otherwise be more careful to avoid.
  • Lua and PICO-8 have some significant differences, which are a lot of fun to implement.
  • The PICO-8 camera offsets the game world. This reminded me of how Futurama’s Planetary Express delivery spaceship engines work (yes, my brain’s pop culture references are ancient now).
  • Dave Ryley showed me some neat little trick involving Lua’s Boolean logic.

Dave showed me a nice and simple way to set default parameters using Lua’s Boolean logic. It is one of those ways of doing something that seems quite obvious once you encounter it, though it may not be the first way you do this. I previously had a way of doing the same thing in a more round-about fashion. Little things like this give you a sense of progress in real life that is akin to a Role-Playing Game skill progression tree. It makes me want to learn more! Let’s write it out here so you can enjoy that feeling too if you haven’t already been doing this in Lua. Say you are checking the passed function parameter/argument for its type, to see if it exists, and then setting a default value - you might write something like this:

function my_function( parameter )
if ( type(parameter) ~= type('') ) parameter = 'default'
-- code... --

You can easily check the parameter exists and set a default value with the following Boolean logic:

function my_function( parameter )
parameter = parameter or 'default'
-- code... --

Looks a lot prettier to me. If nothing is passed to the my_function then parameter will be nil - one of the two ‘falsey’ values in Lua (the other being false). The or keyword will then return the ’truthy’ default on the right-hand-side, assigning it to the variable parameter on the left. Now we can work with it cleanly within our function. I applied this little check quite liberally in my PICO-8 code and it feels more robust for it. Thanks Dave!

An Unexpected Feeling

Going solo was the only option available, as I was about 4 hours late to the event and people had already made teams. However, this is the first time I felt fully capable of the task ahead. This unfamiliar feeling of calmness and confidence in my ability to deal with gamedev challenges is what defined the event for me. I was at ease. And it really helped! Let’s see if I can explain this feeling a bit more.

Not only did being calm and collected help with the making the game, but it was evident when chatting with people during little breaks or whatever. Maybe those interactions helped me to clarify that feeling.

It felt good. I felt like I belonged there, making a little prototype game thing. I didn’t judge myself harshly at the idea-phase, I just went and did it. Whenever I implemented something, I noticed that I was not saying “this is not good enough” to myself. Instead, I was telling myself “that thing is implemented now, what next?”. There was a much more practical approach to my self-talk.

Not Planning

I didn’t plan. Sound’s a big mistake, yes? Actually, it kind of is.

Doing a gamejam solo, I didn’t need to spend time figuring out who has to do what. I already had to do everything! A gamejam is a very concise period of time, and it had already started. Spending precious time making a detailed plan felt a little too wasteful to me.

We already know that game projects tend to get delayed and cost more than expected. Or rather, planned. Production plans show time again that we humans are terrible at planning. The details of reality escape our puny brains. Plans then to underestimate time dealing with unknown quantities such as new game engines, libraries, bugs and the time spent figuring out features you’ve never developed before. Plans also generate a sense of pressure, which can be very useful, but I know that I will be putting myself under a lot of pressure anyway. So it was more of a quality-of-life decision to allow myself to go at my own pace.

I also didn’t know ahead of time exactly what needed to get done. Without a plan, I worked at whatever task had priority within the moment. If you keep aiming for a simple, single-level prototype, you get a solid idea of what the next thing you need to do is. While you are in the middle of making something, the priority of tasks can become fuzzy and lost, so taking those breaks really helped me gain perspective. Working from a scheduled plan could potentially cut down the number of breaks without sacrificing that productivity from perspective.

Planning to Plan

Now that I have a clearer idea of what you even would want to put into a game, and how long it took me to implement those things, I feel more prepared to make a plan for the next gamejam. You have all the time in the world to figure this stuff out before a gamejam. I guess it’s called pre-production for that reason. It might be a little odd figuring out the schedule without a game idea, but you can adjust for that on the day.

Using PICO-8, my approach will likely look something like this list in my next gamejam solo endeavour:

  • Game idea - select for simplicity and practicality
  • Coding
  • the “Basic shell” of the game - menu view, game view, end-game view
  • Collision detection
  • Gameplay - go for the most basic implementation
  • The win / lose condition for your game
  • Art
  • player / player character
  • other entities / enemies / non-player characters
  • the environment
  • game art for verbs (attack swipes, graphics that indicate some meaning)
  • Sound Effects
  • for verbs / actions
  • for environment/atmosphere
  • Music
  • Simple animations (reduce the need for hand-drawn ones if possible)
  • Game title art
  • Polish & bug fixes
  • Polish gameplay, what can I add to make it more interesting/fun/challenging?
  • Fix bugs! (or damage control them for the gamejam-version)
  • Screenshots & Gifs of the game - Most people’s first impression. Make it count!
  • Upload to / gamejam site.

I suppose that’s just a list of tasks, not really a plan. It needs more work!

Let’s Play

Unfortunately, Dave had to leave before we could get started with our traditional gamejam Let’s Play video. When we get to play them I’ll probably make a new post.

-- Edit – We made the Let’s Play of this at the following 1GAM Galway meetup. Enjoy!: