Taps can be unreliable inside this app's built-in browser. For the full experience, use its menu to open this page in your browser.
Skip to content

The Fastest Way to Score Was to Lose

A devlog by Neeraj Kotwani, who builds every game on Elipar.

A score is a promise: play better, get a bigger number. Three separate games on this site broke that promise in production, and in each case the honest-play tests passed cleanly first. This is about the test I should have written instead.

898 points for stepping on a mine

Minesweeper pays per square you uncover, with a penalty for each wrong flag. Reasonable. Then I ran the one experiment I had not run: uncover nothing at all, plant flags on thirty perfectly safe squares, and deliberately step on a mine.

On hard, that scored 898.

Blowing yourself up was the most efficient strategy in the game, and it was faster than playing. The cause was one integer doing two jobs. Each square has a state: 0 hidden, 1 uncovered by the player, 2 flagged. When you lose, the board reveals every mine — and the reveal code wrote those squares as state = 1, because visually that is exactly what it wanted: an opened square. But 1 is also the value the scoring function counts and pays for. So the losing animation handed the player points for every mine on the board, plus every flag they had got wrong.

The fix is not arithmetic, it is vocabulary. End-of-game reveals now have their own values — 3 for a mine shown at the end, 4 for a flag that turned out to be wrong — which render identically and are structurally incapable of being counted as progress. The same payload now scores 0, and there is a regression test that does nothing but replay it.

Not playing was maximally efficient

Circuit Link is a ten-board wire puzzle. Its score rewarded efficiency: a par figure, minus the moves you spent. The bug was in the par. It summed the wire count of all ten boards regardless of how many you actually solved, while moves was the only term that could pull it down.

So the optimal play was to make no moves. Pressing SKIP ten times scored 2680, beating an honest, flawless run at 2568. Had I enabled the global leaderboard a day earlier, the top of it would have belonged to people who mashed a button for four seconds.

Now a separate counter accumulates the par of boards genuinely completed, so every term has to be earned. The ranking became monotonic in actual skill, which I checked by measuring the whole ladder rather than one case: skip everything 0, half the boards 900, a full clear with deliberately wasted moves 1468, an efficient full clear 2568 — unchanged, so honest scoring did not regress.

Every winner scored exactly the same

The third one is quieter and, I think, the most interesting. Haunted Castle and Derelict Station scored one hundred points per artefact collected. No exploit, no way to cheat it. It was still useless.

The escape gate only opens once every artefact is found, so at the single moment the win can fire, the collected count is provably always the total. Every player who finished got an identical score. The leaderboard was a list of the same number, carrying no information about who played well. A formula does not have to be exploitable to be broken — it only has to fail to distinguish.

Both now add a time bonus, so a fast escape beats a slow one. And because the run start is recorded once rather than per level, dawdling through an early level costs you too.

The cap that makes losing worth something

The opposite mistake is worth naming. In Ludo Dash I wanted captures to pay a little even in a defeat, so a long fighting loss is not worth zero. But captures are dice-driven and effectively unbounded, so a lucky losing game could out-score a win — which is the same broken promise from the other direction.

There is now a cap on how many captures can score, chosen so the arithmetic holds: the best possible loss reaches 850, and the worst possible win starts at 1100. That constant is not decoration, it is the thing keeping the ordering true, and it has an assertion of its own.

The part worth taking away

Every one of these games had tests. They all played the game the way I play it — sensibly, trying to win — and they all passed. The failure was not coverage, it was imagination.

So for anything with a score, I now write the cynic's test alongside the player's. Four questions, and they take minutes:

What does doing nothing score? It should be zero. What does losing on purpose score? It should not beat trying. Do two different performances score differently? If every winner ties, the number is decoration. Can the best failure beat the worst success? If so, the ordering is wrong however good the average case looks.

These are cheap to write and they fail loudly. The Minesweeper case is the one that convinced me: it took one deliberately stupid four-line test to find a 898-point hole that a dozen sensible ones had walked straight past. And the moment a score becomes a leaderboard, this stops being a polish issue — it decides whether the board measures anything at all.

All four games are free and instant in a browser: Minesweeper, Circuit Link, Haunted Castle and Ludo Dash. No download, no account.

We use cookies to keep games running and, once ads are live, to show relevant content. See our Privacy Policy for details.