The physics that made the puzzle easy
We wanted a liquid sort puzzle where the liquid actually settles, heavy stuff down, light stuff up, no exceptions. That turned out to be the wrong ambition. The truer the physics, the easier the puzzle got, until a greedy player could clear it in a handful of moves without thinking. The difficulty only came back when we made the bottles different sizes.
What the game promises
Clarify is a liquid sort puzzle. You tap a bottle to lift the top layer off it, then tap another to pour it in. The win condition is boring and good: every bottle ends up holding a single colour. There is no fail state and you can undo forever, so the only thing the game asks of you is the order in which you do things.
The twist is that the order is not entirely yours. The moment liquid lands in a bottle it settles: heavier sinks to the bottom, lighter floats to the top, and a layer can only ever be poured from the very top of its bottle. If you pour something heavy into a bottle that already holds something light, the heavy layer sinks and buries itself underneath, and you cannot reach it again until you clear what is on top of it. That last rule is what makes the game a game at all.
On paper that sounds like it should make the puzzle hard. You have to plan around the settling, the way you plan around gravity in any physics game. We were fairly sure of this. We even had a sentence about it in the design doc, written with confidence. It was the sentence that turned out to be wrong, and I am going to walk through how we caught that.
First version: every bottle the same size
The first prototype used bottles of identical capacity. It was the obvious choice, the one you reach for before you have any reason to doubt it. Same shape, same height, easy to draw, easy to reason about. The board looked clean.
Then we measured it. Our headless solver found optimal paths of two to eight moves on the equal-capacity boards, usually fewer, almost instantly. More telling was the deadlock rate, the share of board states with no legal move left: it came back near zero.
A near-zero deadlock rate should worry you. It meant a bad pour almost always just undid itself, the board never pinched off, and no move had a consequence you could not back out of in one step. We were not solving a puzzle. We were tidying.
Why faithful physics is actually generous
The mistake was assuming the settling rule was a source of difficulty. It is the opposite. When the liquid always settles to the correct place, separation becomes free. The mixed colours were already separated by density the moment they settled. All that was left was to peel the lightest layer off the top of each bottle and park it somewhere with room.
Parking it somewhere was the key word. A light layer poured onto heavier liquid floats on top, so you can always lift it straight back off. On equal-sized bottles there is always somewhere with room, because the board always has a little free space left over. Every layer had a safe place to go and every move had a free retreat. That is why the solver's paths were so short. It was not clever. There was nothing to be clever about.
The fix: make the bottles different sizes
The thing that broke the free parking was capacity. If the bottles are all the same size, any layer can stop anywhere. Once the bottles have different capacities, a layer can only stop in a bottle large enough to hold it. That turns the problem from tidy the board into a packing problem: which bottle does this colour belong in, where does it fit, and does parking it here cost me the room I will need in two moves?
We drew the bottles at different heights so the difference is visible without numbers. A six-unit bottle is tall, a three-unit bottle is stubby. The board in the screenshot above is a real daily level, and the height differences are doing the design work.
The numbers changed a lot. Once the capacities differed, the solver started finding optimal paths in the five to nine range instead of two to eight, and the deadlock rate climbed from near zero into the ten to fifty percent band. That was the first time the game produced a board where a single early pour could quietly strand a colour in the wrong bottle for the rest of the level and make you notice, with a small sinking feeling, that you had to do something about it.
A high deadlock rate sounds alarming, but it is not, because there is no fail state. If you reach a dead end, the honest thing to do is undo or restart, and the game tells you plainly that you are out of moves. The dead ends are the price of the decisions. Without them the moves would not be decisions.
What we ship, and what we measure
Every day the site serves one level that the whole world plays, generated by a seeded rule and checked by the solver before it is allowed to exist, so that the person in Tokyo and the person in Toronto see the identical five bottles and can compare who needed fewer moves to sort the same day's liquid without either of them being able to blame a different seed for the shape of the board. We keep a pool of three hundred ninety nine generated levels, one for each day in the cycle, and the generator refuses a candidate unless the solver proves it is solvable and the optimal path falls inside a band we have measured to be the right shape. The solver runs on a budget of two hundred thousand to four hundred thousand nodes depending on the weekday tier, and if a candidate needs more than that it is rejected and regenerated. We would rather have no level on a day than a level whose difficulty we cannot state as a number.
We run a balance probe across the whole pool and it prints a small table, minimum, average, maximum par per weekday. Right now the pool sits at a minimum of two moves, an average of about five and a half, and a maximum of nine. That is the whole difficulty model, and it fits on one line. A difficulty model that fits on one line is a difficulty model you can defend when a player tells you a level feels wrong, and a model you cannot defend is just a mood.
The rule that survived contact with the solver is the one I would put at the top of the design doc now, replacing the confident sentence: a mechanic that makes numbers move only in your favour is not a puzzle, it is a chore with a timer. The settling physics was real and it was the right thing for the game to have. It just was not where the difficulty lived. The difficulty lived in the one rule that was not physics at all, in the fact that the bottles are different sizes, and that the only thing a player can do about the physics is choose the order in which they accept its consequences.
I keep coming back to how small the fix was. We did not add a new rule. We did not add a second phase, a power up, a fail condition, a timer. We changed one number about one object, and the game stopped being trivial. The most useful thing we did that cycle was not designing the settling. It was measuring the version where the settling was perfect and catching that perfect was also easy.