WritingEngineering

Every level in the Journey is solvable, and we can prove it

Hand-designed puzzle levels have a quiet failure mode: some of them cannot actually be won.

The Journey is 240 levels: twelve issues of twenty, published like a monthly magazine. Each level gives you a board with stones on it, a set of target cells to clear, and a fixed queue of pieces in a fixed order. Clear the targets before the queue runs out.

That fixed queue is the interesting constraint. In the endless mode the game can always deal you something helpful. In a Journey level it cannot: the pieces are decided in advance and identical for every player. Which raises the obvious question: how do you know the level can be beaten at all?

Plenty of puzzle games do not know. Levels get hand-designed, playtested a few times, and shipped, and every so often a player finds one that is genuinely impossible. We wanted a stronger guarantee than “nobody complained yet”.

Solvable by construction

The generator does not design a level and then check it. It designs a level by solving it.

It lays down the stone pattern for the issue’s twist, marks which cells are targets, and then plays the level forward with a greedy solver. The pieces the solver actually used, in the order it used them, become the level’s queue. So the queue is not a guess at what might work; it is a transcript of a run that already worked.

Then two small “slack” pieces are appended to the end. Three stars means finishing without needing them.

The gauntlet

Solvable-by-construction is necessary and not sufficient. A level can be technically winnable and still be terrible: winnable only by the exact line the generator found, or winnable in one move, or impossible to open because the first rack of three does not fit.

So every level from Issue Nº2 onward goes through a gauntlet before it ships:

  • Structural checks. Targets are a subset of the stones. No line is already full at the start. The opening rack has a legal placement. The two slack pieces are there.
  • A replay under real dealing. The solver plans against the whole queue at once, but a player sees three pieces at a time. The line is replayed under the real rack-of-3 rules to confirm it survives that.
  • No one-move wins past level 3.
  • A real-rules search. A depth-first search under the actual game rules, with a budget of 1.2 million nodes, has to find a win. This is the check that matters, and it earns its keep. It is what caught level 17 of Issue Nº1.
  • A Monte-Carlo win rate. The level is played thousands of times by a simulated player, and the resulting win rate has to land near the level’s intended point on the difficulty curve.

The generator samples up to 24 valid candidates per level and ships the one whose measured win rate best fits the curve. That last step is why the difficulty creeps honestly instead of being hand-tuned: median win rate falls from about 0.43 in Issue Nº1 to about 0.09 in Issue Nº12, and nobody typed those numbers in.

The hint had to be exact too

Once you know every level has a winning line, a lazy hint becomes indefensible. If a player pays coins for a hint and it suggests a move that leads into a dead end, the game has actively taken something from them.

So the Journey hint is not a heuristic. It runs an iterative-deepening search over a bitboard representation of the fixed queue and returns the first move of a shortest winning line. A paid hint never walks you into a position you cannot win from, and it never costs you your three stars.

If the search finds that no line exists from where you are, because of something you did several moves ago, the game says so, and says it for free rather than charging you for the bad news.

Why bother

Because the alternative is a game that occasionally lies to you. A level you cannot beat, or a hint that leads nowhere, is not a difficulty spike; it is a bug that feels like your fault. Puzzle players are unusually willing to blame themselves, which is exactly why it is worth being certain.

240 levels, every one of them provably winnable, every hint provably safe. It is a lot of machinery for a game about dropping blocks into a grid. It is also the part we would not ship without.