A Blokus investigation
Blokus is a game about running out of room. Play it enough and you notice something uncomfortable: when one player fits every last piece, someone across the table is usually stuck holding a fistful of them. So is it zero‑sum — must somebody lose — or could all four players empty their hands at once?
I love this game, and I met it the perfect way. My mom taught pre‑kindergarten, and one day a four‑year‑old brought Blokus in for show‑and‑tell. A game simple enough for a room of preschoolers — cover your corner, join your own color only at the corners — and still this good.
That’s the pull I can never resist: the same one in Conway’s Game of Life, or in a brain — a few dead‑simple rules that somehow bloom into something rich and surprising. (And the colors don’t hurt.)
So I bought it, and my friends and I have played it ever since. Which is where the rabbit hole opens — with one small thing you can’t un‑notice after enough games.
Four players, four colors, one shared board of 400 squares. Everyone gets the same 21 pieces — every distinct shape you can make from one to five squares: a single square, a domino, the two trominoes, five tetrominoes, and all twelve pentominoes. That’s 89 squares of piece per player.
The rules are almost nothing, which is what makes the game deep. Three of them do all the work:
Your very first piece must cover your own corner square. Each color grows outward from one of the four corners.
Two pieces of your color may meet corner‑to‑corner (left), but never edge‑to‑edge (right). Your territory advances diagonally.
Against other colors there’s no such rule — you can press flat up against them edge‑to‑edge. Blocking is the whole game.
Play proceeds around the table, each player adding one piece a turn, until nobody can place another. Because you may only extend from your own diagonals while everyone else is free to wall you off, the board fills in an organic, contested sprawl — and it almost never comes out even.
And here’s the thing you feel after a dozen games with friends: the player who manages to place all their pieces usually did it because someone else got strangled — walled off with half a hand still to play. Triumph on one side, a pile of orphaned pentominoes on the other. It reads like a zero‑sum game.
But does it have to be? Could all four players place every last piece in the same game — nobody strangled, nobody left holding blocks?
Before worrying about the rules, ask the dumbest possible version of the question: is there simply room? Four hands of 89 squares is 356 squares of material, dropped onto a board of 400. That leaves 44 to spare. Forget corners and colors for a second — just shove each player’s blocks into their quadrant:
So space is never the problem. Everyone’s pieces fit on the board four times over with room to spare. If the game is a fight, it’s the rules doing it — the corner‑only growth, the walling‑off — not any shortage of squares.
Which sharpens the question into something you could actually chase: is there a legal arrangement — every piece placed, every rule obeyed — where all four players go out? A game with no loser at all. Call it a perfect game: 84 pieces down, 356 squares filled, 44 empty.
Does such a thing exist? Before writing a single line of code, we did what anyone would: we searched the internet. And someone had already been there.
The photograph that started it
It exists.
Every piece placed. Every rule kept. All four players out. The 44 empty squares (outlined) pulled into one tidy hole dead center. Nobody lost.
Our square‑for‑square reconstruction. Discovered and posted by u/benhobby, r/oddlysatisfying, 2022 — see the original photo →
So the answer to the raw question is yes: everyone can win. Blokus is not zero‑sum by necessity. That should have been the end of it — a satisfying fact, filed away.
Instead it was the beginning. Because once you sit with this particular board for a minute, you start to notice things about it. It isn’t just perfect — it’s suspiciously perfect. And the first thing you notice is that if you turn it a quarter turn, nothing changes at all.
Sit with benhobby’s perfect game for a minute and two things surface. The first is just how tightly it packs. Each color lays down its full 89 squares; the four interlock so completely that the only empty space — all 44 squares of it — pools into a single clean hole at the dead center. Not scattered crumbs around the edges. One hole.
The second is impossible to unsee once you’ve seen it. Turn the whole board a quarter‑turn, and nothing changes.
One arm, pinwheeled. Blue is red rotated a quarter‑turn; green a half‑turn; yellow three‑quarters. Four copies of one 89‑square shape, spun about the center — and together they are the entire board.
This is four‑fold rotational symmetry. Rotate the board 90° and every red square lands exactly where a blue one was, blue onto green, green onto yellow, yellow back to red. It’s a true rotation, not a mirror — the pieces keep their handedness, so it spins like a pinwheel rather than reflecting like an inkblot.
Which is both a gift and a trap.
A gift, because it shrinks the problem to a quarter of its size. If a perfect game has to look like this, you don’t place 84 pieces — you place 21, one player’s worth, and let rotation stamp out the other three. That shortcut is what made everything after it possible.
A trap, because it smuggles in an assumption we wouldn’t think to question for a long time: that a perfect game has to be a pinwheel at all. Hold that thought — it takes us the rest of the story to earn it back. First, we had to teach a computer to build one.
The symmetry isn’t just pretty — it’s leverage. If a perfect game has to be a pinwheel, three of the four players are pure bookkeeping: nail down red’s 21 pieces and rotation stamps out blue, green, and yellow for free. So we never asked the computer to solve a four‑player game. We asked it to solve one — with a single extra rule, that red may not overlap its own rotated copies — and let the pinwheel do the rest.
That collapses an 84‑piece search into a 21‑piece one. Which pieces first? The obvious way — the way you’d do it by hand: big pieces first. Drop the awkward pentominoes while the board is wide open, and save the monomino and dominoes to trickle into whatever nooks are left at the end.
We assumed this from the very start and never argued about it; it’s just how a person packs a suitcase. Only much later did we notice it wasn’t actually required — merely easier. File that away. It becomes a pattern.
The search itself is unfussy: grow red outward from its corner, piece by piece; when a line of play paints itself into a corner, abandon it and re‑roll from a fresh random ordering. Do that enough, and…
…it works. Three perfect games the solver turned up, each opening on a different piece — every one a legal pinwheel, every one nobody‑loses.
A perfect game was no longer a rare artifact from the internet; it was something we could manufacture on demand. Which quietly swapped one question for a bigger one. Not does a perfect game exist — but how many are there, and are they all just the same idea in a different coat?
With games pouring out of the solver, the instinct is to sort them. But by what? Two features did most of the work of telling one perfect game from another.
The first is the opener — the single piece a player drops to start. It’s a surprisingly strong fingerprint: so much of a game’s character is set by that first commitment in the corner.
The second is what the game does with its 44 empty squares. In benhobby’s game they pool into one hole dead center. Most perfect games aren’t so tidy — the emptiness breaks apart and scatters (always symmetrically, four‑fold about the center). So we tagged every game by how much of its void sits in a central hole versus how far it disperses.
The same 44 empty squares (outlined), three ways — from one clean central hole, to a central pool with a few escapees, to no hole at all: the emptiness dispersed in small symmetric clumps.
Signature in hand — opener plus empty‑structure — we did what you do with a big pile of data. We made heatmaps. For every square on the board: how big is the piece that usually covers it?
And there it was — a clean, satisfying pattern. The big pieces hug the walls; the little ones fill the middle. It has the look of a law of Blokus.
Except. We had told the solver to place big pieces first, and our early pile of games leaned hard on a handful of openers. Either of those could manufacture exactly this picture. Were we discovering something about the game — or just taking a photograph of our own heuristics?
Broken out piece by piece, the bias is blunt: the opener we reached for most has saturated its start square.
That was the tell. Nearly every game in the pile started the same way, so that one piece’s footprint bled into everything downstream. We weren’t photographing Blokus — we were photographing a habit. The cure was easy to name and slow to do: stop letting a few pieces dominate the opening. Find a perfect game for every legal opener, so the sample couldn’t play favorites. First, though, we needed a solver we could trust to find them all — and that took some tuning.
Twenty openings, not twenty‑one. There is one piece that can never start a game: the cross. To open, a piece has to cover your corner square while staying on the board — and the cross, turn it however you like, always leaves an arm hanging off the edge.
So the census was a list of twenty. For each legal opener, we’d pin it as red’s first piece and set the solver hunting for a complete pinwheel around it. Twenty little searches; twenty perfect games — if we were lucky.
We were not, at first, lucky.
Most openers gave up a perfect game quickly. But one or two dug in — the search would grind and grind and surface nothing. That’s when we stopped treating the solver as a black box and started watching it think.
Here’s roughly how it worked. Grow red from the corner, one piece at a time, always trying the largest unplaced piece first. Each placement opens fresh corners to build from; pick one, descend. When it hits a spot where the next piece won’t legally fit anywhere, back up and try a different placement. And — the important part — if a whole line of play drags on too long without reaching a full solution, abandon it, throw the board away, and start over from a freshly shuffled order.
A saved trace of one search: how deep it got, over time, with every cliff a fresh restart.
That “bail and restart” reflex turned out to be the whole ballgame, and it hid a handful of knobs:
Tuning them was part universal, part superstition. Restart too eagerly and you never let a good line finish; restart too late and you waste minutes flogging a doomed one. And oddly, the sweet spot wasn’t always the same — some openers just wanted a bigger budget, or simply a different seed, before they’d cough up an answer.
With the twenty openers finally in hand, we got greedy and asked the harder version: fix the first two pieces, and solve for every pair. Now it was a real grid, and it showed us honest variability — even tuned, some cells fell in seconds while others fought for minutes. Filling the whole matrix took a few hours, and a few stubborn pairs only cracked later, when we came back with a bigger budget or a luckier seed.
It worked. But “a few hours” to fill a grid — in a search we’d already sweated to optimize — was a quiet warning. If we ever wanted to go bigger (three openers, four, the whole space), the language itself was going to be the bottleneck. Which is exactly the wall we hit next — and exactly the wall a different one would blow straight through.
MATLAB is a wonderful place to think. It is a miserable place to run a billion‑node search. Everything that made the prototype quick to write — the interpreter, the friendly built‑in‑everything — is dead weight when the real work is one tight loop you run a trillion times. Each piece placement dragged overhead we didn’t need.
So we rewrote the solver in C. Same algorithm, same heuristics, same corner‑growth and restart logic — just down against the metal. Then we ran it, and didn’t believe the clock.
It’s a lesson every programmer learns and re‑learns: when the inner loop is cheap and you run it enough, the language’s constant factor is the runtime. A 250× constant, compounded across a search that visits billions of dead ends, is the whole distance between “come back tomorrow” and “run it again, differently, right now.”
And “run it again, right now” changed the character of the work. The two‑opener matrix collapsed from hours to seconds. We pushed to three fixed openers, then four — sweeps that would have been geological before — and turned out perfect games not by the hundred but by the many thousand.
Which finally let us do the honest thing we couldn’t afford earlier: sample fairly. Every opener equally represented; the piece order shuffled at random instead of forever biggest‑first; a big, balanced heap of games with none of our habits baked in. Then we re‑made the heatmaps.
The edge‑hugging pattern — the one that had looked like a law of the game — melted away. It was never about Blokus. It was an artifact of how we’d sampled: too few openers, always the big pieces first. Shake the data out evenly and it simply evaporated.
A small, chastening win: we’d built a machine fast enough to catch its own bias. And with a solver this quick and this trustworthy, a different kind of question finally felt within reach — not how the perfect games vary, but whether they had to look the way they did at all.
Here’s the assumption we’d been standing on the entire time, finally said out loud: every perfect game we had ever made was a pinwheel — because our solver only ever made pinwheels. It placed red and spun the rest. We had never once asked whether a perfect game could be anything else.
So we asked. Does a perfect game have to be symmetric at all?
The cleanest answer is one counterexample. We took the pinwheel, opened a free‑placement editor, and by hand peeled a few pieces loose and rebuilt one corner differently, then another. The result breaks every symmetry and keeps every rule. A perfect game does not have to be symmetric. The pinwheel was a habit of our tools, nothing more.
It felt faintly like cheating — reaching into a finished game and rearranging it rather than solving a fresh one. But it worked, and it pointed at a method.
If you can perturb one finished game into another, you can do it a thousand times. Peel a piece, set it down somewhere else legal, and the 356/44 count takes care of itself — every nudge lands on another perfect game. A random walk through the space of solutions that never solves the hard part from scratch.
Three asymmetric perfect games from the same walk, picked to be as unlike one another as possible.
A plain walk drifts, but it stays in the pinwheel’s gravity — the quadrants keep echoing. So we gave it a target: a score for how much of the board still matches its own quarter‑turn, and a search that drove that score down, hunting deliberately for un‑symmetry.
It punched well past what drifting alone could manage. Then we went after the deepest layer of the symmetry: the opening pieces. In every pinwheel, all four players start on the same piece. Did they have to?
One rung at a time — two different openers, then three — we reached four: a legal perfect game where every player begins on a different piece. Even the very first move doesn’t have to match.
One honest footnote. Every asymmetric game here was reached — perturbed out of a game we already had. Building one from a blank board, with no symmetry to lean on, is genuinely hard: our from‑scratch searches stall around 68 of 84 pieces, and even an industrial constraint solver drowns on the connectivity requirement. Which says something quietly deep — a truly independent perfect game is rare. That’s exactly why it’s so satisfying to hold one.
So symmetry is optional. But it isn’t all-or-nothing — between the rigid pinwheel and no symmetry at all sits a whole menagerie nobody had visited. Could a perfect game match itself under a half-turn only? Under one mirror? Under both mirrors at once?
Yes, yes, and yes. One generalized solver later — place one or two free colors, force the rest to be their images — every candidate symmetry fell in seconds, most on the first try. The half-turn game below is the same problem that stalled our early solver for good; the rebuilt machinery walked through it in a fifth of a second.
The five symmetry families a perfect game can belong to, each with a verified specimen. The tighter a symmetry couples the four colors, the easier the game is to find.
And that’s the whole zoo — five families, provably no more. The missing candidates are the diagonal mirrors, the axes through two corners, and they aren’t missing for lack of trying. A diagonal axis pins a corner in place, so it maps that corner’s color onto itself, piece by piece: all 21 placements would have to be their own reflections. The humble domino already can’t do it — its reflected twin always lands somewhere else. Fifteen of the 21 pieces fail the same way, and one failure forbids the family.
A strange corollary falls out for free: since no game can equal its own corner-axis reflection, every perfect game is chiral — it and its mirror image are always two different games.
Then we bred a thousand games of each family and let them argue. Three things came back.
Across the five families the 44 holes migrate step by step toward the middle — the inner-board empty rate climbs C1 → Cs → C2 → D2 → C4, half again higher at the pinwheel end. And turns pull harder than mirrors at every rung.
We assumed a mirror axis would be a scar line of gaps. Backwards: along the seam every piece packs against its own reflection, guaranteed to interlock — half the emptiness of the surrounding interior, with the straight pieces meeting their own twins there at 2.5× chance.
The way a color chains to itself — small rigid pieces (the squares, the T’s, the short bars) holding hands corner-to-corner — is statistically identical in all five families. Global symmetry never reaches down into the local grammar of packing. What does change is who touches whom across colors: mirrors make pieces kiss their own doubles; the pinwheel keeps every copy in its own quadrant.
We started with a nagging feeling at a game table and ended somewhere we didn’t expect: everyone can win, symmetry is optional, even the opening pieces are free. Along the way we knocked over every “surely it has to be this way” we could find. A few are still standing.
Everything asymmetric we have was perturbed out of a game we already owned. No method we’ve tried builds one cold — the mix of exact packing and connectivity defeats greedy search and constraint solvers alike at this scale. A solver that finds an asymmetric perfect game from an empty board is the real prize, and it’s still out there.
His board pools all 44 empties into one maximal central hole. We suspect that configuration is forced to be a pinwheel — that if you insist the emptiness gather perfectly in the center, symmetry tags along whether you asked for it or not. We haven’t proven it. And a cousin question underneath: can the 21 shapes even pack that central region in more than one way, or is the packing itself unique?
Before any of this — the solvers, the speedups, the sweeps — one person sat down and found a perfect game of Blokus by hand, and posted a photo. Given how hard the machines find it, that is a genuinely remarkable act of patience and insight. We’d love to know how benhobby did it.
But the question we opened with has an answer, and it’s a good one. No — Blokus is not a game where somebody has to lose. All four players can empty their hands at once, in far more ways, and stranger ones, than the single tidy pinwheel that started us off. The rest is still being counted.
From Brian Sciences: more projects and research.