2023-11-11

Every year, on the night when we gain an extra hour by turning the clocks back, a few people decide to utterly squander that hour by participating in the "0 hour game jam." You start one hour before the clock ticks backward (in our case, 1:00 am on Nov 5), and you end the second it rolls over (again, 1:00 am on November 5). Voila: you've made a game in zero hours!

This year, I joined several of my fellow PIGSquadders in earning this most questionable of game dev merit badges. You can see all our games here; mine is Zero Hour Peggle," made in PICO-8.

Here's what I learned.

Use Tools You Know Well

Like, really well. Pick an engine you can use in your sleep, cuz that's pretty much what you'll be doing. Even for night owls like me, 1 am is a pretty rough time to start coding. Now is not the time to learn something new. Save that for summer slow jams.

For me, this meant using PICO-8. While this conferred some advantages, chiefly, being able to programmatically generate all my art, it also had some major disadvantages, like having to roll my own physics. But that's fine, you don't need physics to make a Peggle-like! Definitely nothing's going to be bouncing around at angles, or changing velocity, or...

aw, beans.

Have a plan

Now is not the time for pantsing. Know what you want to make and how you intend to get there. I went ahead and set Liquidream's lovely PICO-8 cheat sheet as my desktop wallpaper (another PICO-8 advantage: the entire API fits on a napkin), and looked up and jotted down the formula for calculating circle collisions. This isn't cheating and you can't convince me otherwise. I made sure PICO-8 still ran on my machine and that I remembered how to build and export a finished game. This served me well. I'm not gonna call anyone out, but I definitely heard wails of despair in the discord from people who, at 1:58 am, discovered they didn't know how to make a web build.

Scope like you've never scoped before

Yes we say this every jam, but this time, hoo buddy. Nothing like having zero hours to really give you a new definition of "minimum." I'm actually really pleased with how much I was able to implement; it's ugly and it doesn't feel very good, but it's totally playable! You can lose and, theoretically, win!

It's easy to get bogged down taking a feature from "extant" to "not a complete embarrassment." For example, my "level generator" plops 20 pegs randomly on the screen. I spent enough time on it to make sure the pegs were in bounds and then moved on. If I'd had another hour, I would have added in the logic that makes sure none of them overlap, but you know what? I had zero hours. Sometimes pegs overlap. MOVING ON.

(I may be nerdy, but I am not "trigonometry at 1 am" nerdy. I did the quickest and dirtiest math to handle how the ball bounces off a peg, and while it's not technically broken, it also doesn't feel good. I think the bounce is really the heart of a fun pegglelike, so given another hour, this would be the first thing I'd address.)

Recruit allies

Doing something questionable on your own is a bad decision; doing something questionable in a group is a story. While I don't recommend actually working with someone on a zero-hour game unless you are really, very, extremely comfortable making games with them, I very much do recommend jamming alongside other jammers. We had 8 or so folks in a discord voice channel, all sharing our screens even though no one had time to look at them. The vibes were immaculate, by which I mean completely unhinged. There's no energy quite like late-night, impending-deadline, zero-stakes energy. "But they'll distract me!" You say. Yes. That will happen. But be real, you're not coming out of this with a good game either way. Embrace the chaos.