Advent of Code and Game Design.

This year I learned about Advent of Code, and decided to play!

I have no interest in competing with others, especially in terms of who can code faster, and even less if that means waking up at 6 AM my time – but I thought I’d have fun, and get the chance to showcase some neat Swift code on my devlog by sharing my solutions.

I’m not sure why “coding challenges” always end up being about algorithm design and computational complexity. I’ve noticed the same thing when I participated in Italy’s IOI, back in high school. These aspects are pretty marginal in day-to-day software development, at least for me.

They’re not my strong suit nor my favorite part of coding – I’m all about making code readable, maintainable, and pretty – but I still enjoy them.

And yet, 17 puzzles later, sunk cost effect and all, I decided to stop playing!

The solutions frequently turned out not to be particularly interesting for the devlog, and trying to keep them compact enough to fit in a screenshot, while being readable enough to be educational, quickly became unmanageable.

But most importantly, I was no longer having fun solving the puzzles themselves; it started to feel like work. And when I asked myself why, I realized it’s the same issue I have with a lot of contemporary —

Puzzle Design

I really enjoy deductive reasoning, so when a new puzzle game based on that comes along, I’m excited to check it out. But so, so many times I end up dropping out, because:

A lot of puzzle games use spatial reasoning as a difficulty supplement.

A good example of this is Baba Is You, a game in which the rules themselves are puzzle elements that can be moved around and recombined on a 2D map. At first, the challenge is figuring out how to combine the tools you have by thinking outside the box. But as the levels get harder, their maps get bigger. And while the deduction part never goes away, more and more of the challenge ends up being about figuring out how to get from A to B, or how puzzle elements are related spatially – and not logically.

This isn’t a problem per se, and Baba Is You is a great game for sure, but different players enjoy different challenges. If you have aphantasia like me, spatial reasoning can become so hard it’s near impossible, and using it to solve a puzzle is so frustrating it takes all the fun out of it. Which is why I can love action-platformers while hating metroidvanias – they’re similar genres, but the latter requires you to navigate a space, which I can’t do to save my life. You can imagine how I felt about The Messenger and its (spoilers!) twist.

So it’s pretty annoying when a game draws me in with deduction puzzles, but then gradually becomes more and more about spatial reasoning; but that’s exactly what happened with Advent of Code.

Most of the first 10 puzzles required little to no spatial reasoning. But lately, seemingly every time you open one up you are confronted with one of these:


Almost all recent puzzles involve a 2D space of some kind. The above is the example “map” which number 14 is based on. It’s the most egregious example because it not only asks you to move objects in a space, but to rotate that entire space as well; which is tantamount to torture for someone like me.

I stumbled on a post by Advent of Code creator and puzzle designer Eric Wastl, where it is implied that the puzzles are supposed to be in increasing difficulty. I had no idea! To me difficulty was all over the place, because, for each puzzle, the spatial reasoning requirements weighed more than all others combined.

The post also talks about how making puzzles is really hard; that’s definitely true, and I sympathize! I’ve been designing a sequel to Agency for a while now, and I know firsthand how meandering an endeavor it can be.

I don’t want to imply that AoC’s puzzles are bad – in fact, a lot of them were a ton of fun even for me and my weird brain, and you should check them out! I’m only explaining why they aren’t for me, while pointing out a trend I’ve noticed in a lot of recent puzzle games.

Injecting spatial reasoning is a popular way to design advanced puzzles, but it’s by no means the only way.

In Return of the Obra Dinn and The Case of the Golden Idol, you reconstruct complex events with deduction alone. In Chants Of Sennaar and 7 Days to End with You, you translate unknown languages from context clues. Fire Emblem ramps up the difficulty by increasing the number of tactical options at your disposal, while reducing the number of mistakes you can afford to make. Sudokus and Nonograms get harder with larger grids, but they remain pure logic puzzles.

These games can get pretty involved, while still being enjoyable by people who dislike spatial reasoning. But how do we find them, tell them apart, when they’re all just “puzzle games”? I have an idea, but we’d have to broaden the discussion to —

Game Design

I’ve given this a lot of thought, and I believe that, on a fundamental level:

A game can be defined by listing the skills it tests.

When we make games, I think it’s crucial we decide what we want to be on that list, and keep it in mind throughout development.

If a game intends to test one set of skills, but then evolves and ends up testing another, it becomes a different game. The result often feels messy or unfocused, and leaves its players feeling alienated or betrayed.

This holds true even when the final design only adds to its original skill list. It’s tempting to value variety in games, but it comes at a cost: the players who will love a game must love all the ways it tests them.

We can think in these terms when we talk about games, as well. Games that test similar skills can be grouped into categories that are far more meaningful than the genres we’re familiar with, such as “horror” or “adventure”.

If we called Metroidvanias action/navigation/memory – which incidentally is close to what they are called in Japan – we’d have a much better idea of what their play experience is like.

If Advent of Code used this framework, it would call itself a deduction/spatial reasoning game, and this article wouldn’t exist :)

If this post resonated with you, you’ll probably enjoy my very intentionally deduction/lateral thinking game, Agency.