Here's my long overdue post mortem.
My game: Blank Page
Final results (Compo)
Overall: 15th (4.1 average from 47 ratings)
Fun: 38th (3.9 average from 47 ratings)
Innovation: 1st (4.656 average from 47 ratings)
Theme: 2nd (4.567 average from 47 ratings)
Graphics: 287th (3.2 average from 47 ratings)
Mood: 221st (3.226 average from 44 ratings)
I'm very happy about this, especially considering this was my first game jam.
In this post I'll mainly cover how I did ideation, design and development during the compo.
Before the compo
This was a good time of the year to have a compo because it was scheduled to start 8am local time at the beginning of a three day long weekend. I didn't schedule anything else that weekend.
I wanted my game to be web-first (playable in a web browser) and ideally be written in TypeScript because I like the type safety. I was considering using Phaser for the game engine.
The compo
At the start of the compo I began brainstorming ideas. Before long, I realised that the theme "you start with nothing" was applicable to nearly all games, so it was very open-ended. You could build a Minecraft/Factorio spinoff or some RPG and that would technically satisfy the theme. But I didn't want to build a regular game. Ideally, it should be something with a stronger-than-normal emphasis on starting with nothing.
I liked the idea of starting with literally nothing: a completely empty webpage. No UI and no instructions. Nothing. This reminded me of games such as A Dark Room and Candy Box 2 where you start with a minimal UI, so I decided to go in that direction. I also liked Candy Box 2's charming ascii art, so decided to do that too. It was also easier for me to draw because I hadn't practiced creating my own game art in ages.
But what should happen next? I spent a long time trying to think of ideas. It was like the "blank sheet of paper" problem described in the rules page. I found that linked Wikipedia page relevant, so I made it the next step in the game progression. From there I brainstormed ways to manipulate the characters to make stuff happen and unlock more things. It was turning into a very weird and abstract game.
But an overly weird game can be annoying or even unplayable. I knew I could make it less weird by giving it internal consistency. I figured that a minimalistic, grid-based puzzle game would be suitable for this. So it became a game where you start with with knowing nothing of what it's about or even how to play. You had to figure it out. Additionally, I liked the idea of exploration: starting with nothing visible, then that small part of the page, then gradually uncovering more of the map. (More adherence to the theme.)
It was almost three hours in when I began setting up the project. By then I had decided that I didn't need a graphics library. It was enough to use just plain HTML, CSS and JavaScript (but transpiled from TypeScript).
From there (and throughout the rest of the 48 hours), I tried thinking of game mechanics – ways to explore, ways to progress, things to unlock and things that would add challenge to a puzzle game. First I thought of the click-to-remove letters and the expanding dot (.). Then the expanding +. Then the "beacons" (those numbers you need to light up), which were useful for dividing the map into separate challenges (or levels).
Due to the exploratory aspect of the game, I challenged myself to fit the entire thing on one grid. I also wanted to make it impossible to get into an unwinnable state. I added "powers", initially as a way to undo moves. Later, I made it a design rule that each (non-passive) power should add some new possibility to the existing space. For example, the slider (@) makes you use the walls differently.
I found it quite difficult to think of suitable new mechanics or powers. The slider idea happened at the nine hour mark. Twelve hours in, I came up with the idea of an "anti-beacon" (0) that you had to avoid, but I didn't have many ideas for new mechanics after that. Towards the end I thought of a weird tower defence idea, but didn't have enough time to implement it. [See Appendix 1]
Apart from coming up with ideas, I spent most of the time writing code and doing level design. My file structure was a mess. I didn't modularise it very well; one of the files was 700 lines of code + hacks. But it had types and only needed to be maintainable for two days. Level design took a lot of effort too. Due to my constraints of one map and no unwinnable states, the map became very complicated to design. I wanted the progression to be increasing in difficulty, and had to be careful to not make parts unintentionally skippable. I found it helpful to make a separate annotated version of the map for my own reference.
Regarding progression, I wanted to introduce the player to new mechanics gradually. In accordance with the theme, I aimed to do it with minimal UI – without an explicit tutorial or instruction manual on how to play. (I was inspired by certain games that did this well. [See Appendix 2]) Even the entry page was deliberately terse.
Overall, it was an interesting challenge that encouraged me to push my limits. I had some doubts along the way but managed to produce something playable and complete enough to be a game.
Thanks to everyone who gave my game a chance. And thank you for reading.
Appendix
1: Crazy tower defence / race idea:
* Each race has a endpoint, which is a tile on the map. There are also several start points for allied and/or enemy racers.
* The player is able to prepare the map (by manipulating walls) and then start the race.
* When the race starts, all the racers attempt to reach the endpoint via the shortest path clear of walls.
* So the player should prepare by arranging walls in a way that gives allied racers an advantage and enemy racers a disadvantage.
2: A game that's good at conveying the rules with less words: Mega Man X
https://youtu.be/8FpigqfcvlM