Offline Games - No WiFi

Why every level in these puzzles is guaranteed solvable

There is one bug a puzzle game cannot recover from: a level that cannot be finished. Every other problem costs you a player’s patience. That one costs you their trust — because from the inside, an impossible level and a level you are simply not clever enough for look exactly the same.

So the rule for the puzzle games in this app is that unsolvable levels have to be impossible by construction, not caught later by testing. Here is what that means in practice.

Levels are generated, not drawn

Hand-authoring 500 sliding-block puzzles is a bad use of a life, and hand-authored sets tend to share the author’s blind spots. So a generator builds candidates instead — but a generator on its own makes the problem worse, not better, because it will happily produce boards nobody can finish.

The generator therefore does four things before a level is allowed to exist:

  1. Build a candidate. Place the pieces, the walls, the obstacles.
  2. Solve it exhaustively. A breadth-first search over every reachable board state. If the goal state is not in that set, the level is thrown away. This is a proof, not a spot check.
  3. Grade it by the solution, not the picture. The difficulty is the length of the shortest solution and how many distinct pieces have to move — not how full the board looks.
  4. Reject near-duplicates, so a difficulty tier isn’t twenty variations of the same idea.

Only then does it get written out and shipped inside the app.

Why a crowded board isn’t a hard board

This is the most counterintuitive thing that fell out of building it. Bigger, busier boards are not automatically harder. Measured against a full search, the hardest puzzle on a 6×6 board takes 23 moves; going up to 7×8 raises the ceiling to 43 — but an 8×8 board comes back down to 32.

Past a certain size, every extra square is somewhere for a blocking piece to go. Randomly generated large boards come out at a median of about two moves, against nine for a small one. Size raises the ceiling; it does not climb it. Getting near that ceiling takes a search that deliberately hunts for the hard arrangements, which is a slower and much more interesting problem.

Why the hints are always right

Every level ships with its optimal solution attached, which is what proves it solvable in the first place. It would be tempting to use that stored solution as the hint system — and it would be wrong, because it is the solution from the starting position. The moment you move anything, it no longer applies.

So hints in Parking Jam don’t replay it. They re-run the solver against the board as it is right now. That costs a little more work at the moment you tap the button, and it buys something worth far more: the hint is always a legal move, always the shortest way out from where you actually are, and it works from positions the generator never saw.

The trade-off

Doing it this way means levels are fixed at build time rather than made up on your phone. You get a set that has been reviewed as a whole, a difficulty curve that someone has actually looked at, and a device that never spends a frame solving a puzzle instead of drawing one.

Offline Games - No WiFi

Parking Jam, Block Fill and Color Connect ship more than 1,500 levels between them — every one generated, searched, and proved finishable before it shipped.

More from DCZT