Over the last five years I’ve released over a dozen small games in a genre I’ve been calling “avoiders”: short, arcadey mini-games about avoiding obstacles in claustrophobic spaces. The design lineage from my other games is obvious, but it's distilled down.

My first game Love. Lots to avoid here.

I love avoiders because they’re easy to make, but still meaty and engaging to design and play. They’re the closest I’ve found to a gamedev equivalent of sketches - a piece you can bang out in an afternoon that might end up being one of your favorite things you’ve made, something I’ve always loved about making music.

They’re also good exercises to hone the crunchier craft aspects of making games, and I’ve learned a lot of practical techniques from them that I want to try and share here.


Making a new avoider

My template for avoiders I start from, containing a player and a single hazard.

First, I make a player. This starts as a square I can move around with the arrow keys. Then, I usually try to add some kind of novel movement - by adding momentum, gravity, oscillation, “tank controls”, what have you.

Next, I add hazards that move around and threaten the player. I categorize hazards in two ways: spawning vs. persistant, and player-aware vs. player-indifferent, which combine to make a total of four types.

Combining different types of hazards often results in effective patterns. A player-aware hazard that chases the player is easy to avoid, while player-indifferent hazards can often be ignored if you’re standing still; mix the two, and the chasing hazard will force the player to move and engage with the other hazards.

Once I’ve gotten a player and some hazards for them to avoid, I’ll tune the difficulty as high as I can to where it still feels fun; personally, I like each attempt to average around 10 to 30 seconds. Avoiders should demand the player’s attention; they’re games that push you to the razor edge of immediate experience and try to induce a state of no-thought, much like dancing, sex, or drugs at their best. So they should be difficult.

But there’s also some opportunity for narrative here…


Difficulty ramping

Difficulty ramping - i.e., controlling how the difficulty of the game changes over time - is one of the many secret sauces available to an avoider. Some flavors:

Pacing is everything in games, and mixing and matching these techniques lets you create very unique arcs for each playthrough. CAR ARTIST has my most sophisticated ramping, so I’ll describe it in depth to give a concrete example.

So the overall difficulty curve for CAR ARTIST looks like this:

This is nice, pacing-wise! The shallow curve created by the player’s slow initial speed allows the first five or ten seconds to serve as a tutorial for the player to get their bearings; the sawtooth shape creates rising and falling action that’s more narratively engaging than a linear increase; and the appearance of the big cars create memorable “oh shit” moments while continuing to raise the difficulty over time to accommodate skilled players.

There's also one more subtle element to CAR ARTIST's pacing: as you can see in the screenshot above, the big cars eventually knock over the traffic cones and increase the size of the playfield, slightly mitigating the increase in difficulty that comes with their arrival. I like this because it both curbs the difficulty curve, keeping it in reasonable bounds longer, and makes the texture of play itself a little more dynamic.


Letting fate decide

There’s another approach to difficulty ramping that’s less engineered and just as effective, albeit with a very different flavor: pure randomness. In an angel dances in the sparks of a bonfire (aka angel game), a timer spawns two sparks, then resets to a random interval between one and zero. The result is uneven, unpredictable clumps of sparks - sometimes massive, dense waves, sometimes a sparse handful. This feels very different! It isn’t fair, but it’s fun. It tells a different story every time.

One of the millions of possible difficulty "curves" for angel game

Contrast this to CAR ARTIST, which strives for consistency - a “competitively viable” experience that’s challenging in roughly the same way each time. There’s randomness in the placement of spawned hazards, but their chaos is diffused, both by volume and speed and more directly by design (hazards are programmed to have a ¼ chance of being aligned with the player along one axis).

Neither approach is better, but they feel very different to play. The fun of CAR ARTIST comes from slowly learning and overcoming a designed challenge; angel game is about defying unfair odds. For me, a high score in CAR ARTIST feels more validating, but I find angel game hooks itself deeper in my brain. Humans like stories, and angel game has more to tell.


Addendum: On Treaters

I originally wrote this article in April of 2025. Since then, I've made three games - Jungle Jumperz, WASP NEST, and minnow - in a subgenre of avoiders I've been calling treaters. Treaters are like avoiders, but instead of your score being determined by how long you stay alive, it's based on how many treats you pick up; the treats themselves are just objects that randomly spawn one at a time.

I really like what treats do the design space of avoiders. They act as the opposite of hazards; rather than something you avoid, they're something you actively seek, and I'm finding the inherent tension between the two introduces more more interesting risk/reward dynamics than avoiding can provide on its own.

They also give the player more autonomy over the pace of the game, because it's up to them how quickly they pick up treats, rather than just surviving at the steady pace of the timer. This fixes one of the fundemental design problems of avoiders, which is that the first ten or so seconds are often not that exciting once you're skilled, because the hazard count is low and you're just waiting it out. Now, the periods of low risk allow for more aggressive treat collection, pushing the skill cap much higher.

Honestly, I think I'll probably make treaters exclusively from now on. They're just that much more fun! And I think there's some interesting experiments you could do with making treats more complex - e.g. what if they moved? What if they interacted with hazards? What if they actively avoided YOU? Lots to play with, and I'm excited to keep messing around.