Inkfield is a territory-capture game: you drive a line out from your home block, loop back, and everything enclosed becomes yours. Your own trailing line is lethal until you close it, and so is everyone else's.
It shipped unplayable twice before it shipped.
What "unplayable" meant, precisely
At speed parity with the rivals, an attentive player making zero mistakes died in 23 rounds out of 24. Zero self-kills. Zero edge deaths. Twenty-three deaths to a rival crossing their line.
Every fairness assertion we had was green. The round was losable, which is what we had asserted. It was also, in practice, unwinnable, which we had not.
The number that named the bug
The death rate told us almost nothing. A high death rate is what a hard game looks like, and it is also what a broken game looks like. There is no way to tell them apart from one number.
What separated them was recording why each death happened:
{edge: 0, self: 0, rival: 23}
That is not "hard". A player who never touches a wall and never crosses their own line is playing well. If they are still dying every round, the difficulty is not coming from anything they control.
Measure the cause, not the rate. One line of breakdown turned a vague "this feels hard" into a specific claim about rivals, and pointed the fix at the right system.
Why it could not be tuned away
Here is the arithmetic. Over a long round with several rivals moving continuously, the probability that somebody eventually crosses your line approaches 1, no matter how well you play. Skill delays it. Skill does not prevent it.
That means no amount of nudging rival speed or aggression fixes the shape of the problem — it just moves the round at which you lose. The fix had to change the arithmetic:
- Rivals run at two-thirds of your speed, not parity.
- Three of them, not five.
- The hunter only commits to a line that is both close and long, so it stops chasing everything.
- Home block is five wide, because a loop that returns one cell wide of a three-wide square misses and kills you for it.
Measured after: careless play survives a median 44 ticks, attentive play 456. That is a 10x skill gradient, which is what we wanted the whole time.
The second time it was unplayable, it was the controls
Then a player told us the line "draws itself" and it was "very hard to control". That sounds like taste. It was three numbers.
Speed: 12.2 cells per second. The whole board crossed in 3.3 seconds. At that rate you cannot place a loop, you can only react to having already overshot.
A reverse press was silently dropped. The input was a drag delta: move your
finger fourteen pixels, it turns once, then re-anchors. And a press straight
backwards hit a return and did nothing at all. You pressed, nothing happened,
and nothing told you why. That single line of code is what "hard to control"
meant.
The win condition was 50% of the field, while the best policy this game has ever been measured with peaked around 6%. Half was not a target, it was a number nobody would ever see — which left dying as the only way a round could end, and made every round a loss regardless of how well it went.
Fixes: half speed. Point-to-steer, re-aimed every tick, where pointing back along your own line turns you off that axis instead of being swallowed. A 20% target with a progress bar and a notch on it, plus a clock. Wins went from 0 in 24 to 5 in 24 with the skill gradient intact at 11x.
The rule we took from it
Never let an input do nothing. If it cannot be obeyed, do the nearest legal thing instead. Silence reads as the game being broken — which is exactly what was reported, by someone who was right.
And the assertion that was lying to us
Worth noting how the original suite stayed green. We deleted the rule that a line kills whoever drew it — the entire game — and all 16 assertions still passed. Careless play still died at the board edge often enough to satisfy "the round is losable", and the survival gradient survived too.
A statistical assertion about an outcome cannot see a rule removed if anything else produces that outcome. The core rule now has its own direct test: walk a loop onto your own line, assert you die, and assert it is recorded as your own doing.
Play it: Inkfield · how to play
Related reading: three ways a suite passes with the rule deleted · every repair rung fired at once