Nobody designed this game. I wrote a grammar of placement games, generated two thousand random rule sets, had a Monte Carlo player play each one against itself, scored the games for balance, decisiveness, drama and skill, and read the survivors. This is the one I chose, played by hand and named. The opponent below is the same search, running in your browser.
A win is one stone that touches groups adding up to five: two pairs and a single, or three pairs. A threat must be blocked, but the blocking stone must itself be safe, and a cell next to one of your own pairs is poison. Games end either in a six or in a squeeze, when every remaining cell would make somebody a three.
The grammar: a board (square 6 to 10, 4- or 8-connected, hex rhombus, or hexagonal), a placement rule (anywhere, must touch a stone, must touch an enemy, may not touch a friend, or gravity), a capture rule (none, custodial, flip, or surround), win and lose conditions (n in a row, connect sides, group of n, n captures), a rule for a full board, and one or two stones per turn. Hex, Gomoku, Yavalath, Othello, Connect Four, Pente and Atari Go all live in it, and they were scored alongside the random rule sets as controls.
Each rule set was played against itself by UCT Monte Carlo tree search, and the games were measured the way Cameron Browne's Ludi did in 2008: balance between first and second player, how often a game is decided, how much a strong search beats a weak one and a random one, how uncertain the outcome stays, how often the lead changes, how the tension moves in the last third, and game length. Hard gates on balance and skill, a weighted sum for the rest.
| stage | rule sets | games each | search per move |
|---|---|---|---|
| screen | 2000 | 24 + 12 | 150 playouts |
| refine | 80 | 80 + 40 | 500 |
| climb | 20 parents, 128 children | 24 then 80 | 150 then 500 |
| final | 12 + 3 controls | 60 + 30 | 1000, tactical |
Final round, scored with the tactical search described below:
| # | score | black wins, of decided games | strong beats weak | rules |
|---|---|---|---|---|
| 1 | 0.904 | 53% | 100% | 9x9 square board (8-connected); players alternate placing one stone; a stone must touch an enemy stone; enemy groups with no free neighbour are removed; win: 5 in a row; full board: last to place loses |
| 2 | 0.839 | 48% | 90% | yavalath (control): hexagonal board, 5 on a side; players alternate placing one stone; win: 4 in a row; lose: 3 in a row; full board is a draw |
| 3 | 0.816 | 52% | 100% | hexagonal board, 5 on a side; players alternate placing one stone; enemy groups with no free neighbour are removed; win: 6 in a row; full board: last to place loses |
| 4 | 0.794 | 55% | 100% | hexagonal board, 5 on a side; players alternate placing one stone; enemy groups with no free neighbour are removed; win: connecting two opposite sides; full board: last to place loses |
| 5 | 0.784 | 55% | 100% | 8x8 hex rhombus; players alternate placing one stone; win: connecting your two sides; lose: 3 in a row; full board: most stones wins |
| 6 | 0.784 | 55% | 100% | 8x8 hex rhombus; players alternate placing one stone; win: connecting your two sides; lose: 3 in a row; full board: last to place wins |
| 7 | 0.775 | 47% | 97% | gomoku9 (control): 9x9 square board (8-connected); players alternate placing one stone; win: 5 in a row; full board is a draw |
| 8 | 0.751 | 52% | 90% | hex7 (control): 7x7 hex rhombus; players alternate placing one stone; win: connecting your two sides; full board is a draw |
| 9 | 0.750 | 45% | 70% | Couplet: 9x9 square board (4-connected); players alternate placing one stone; win: a group of 6; lose: a group of 3; full board: last to place wins |
| 10 | 0.720 | 52% | 80% | hexagonal board, 5 on a side; players alternate placing one stone; enemy groups with no free neighbour are removed; win: 3 captures; lose: 3 in a row; full board: last to place loses |
| 11 | 0.602 | 42% | 67% | 9x9 square board (8-connected); players alternate placing one stone; enemy stones sandwiched in a line are removed; win: 8 captures; lose: a group of 4; full board: last to place loses |
| 12 | 0.475 | 55% | 57% | 8x8 hex rhombus; players alternate placing one stone; enemy stones sandwiched in a line are removed; win: a group of 10 or connecting either pair of opposite sides; full board: last to place loses |
| 13 | 0.463 | 54% | 57% | 8x8 hex rhombus; players alternate placing one stone; enemy stones sandwiched in a line are removed; win: a group of 12 or connecting either pair of opposite sides; full board: last to place loses |
| 14 | 0.389 | 50% | 92% | 8x8 square board (4-connected); players alternate placing one stone; enemy stones sandwiched in a line are removed; win: 6 in a row; full board: most stones wins |
| 15 | 0.000 | 58% | 23% | 9x9 square board (8-connected); players alternate placing one stone; enemy stones sandwiched in a line are removed; win: 8 captures; lose: a group of 3; full board: last to place loses |
The screen running, the final ranking, the hand game that chose it, and the search playing itself out to a squeeze. 104 seconds, sound from the moves.
watch on YouTube · the Short · Couplet on itch.io
The search did not pick Couplet. In the final round it came ninth of fifteen, below all three published games I entered as controls: Yavalath second, Gomoku seventh, Hex eighth. That is the honest result of the experiment, and it is the right way round: a scoring function that ranked my afternoon’s find above Yavalath would be telling me what I wanted to hear. The rule set that won is a 9x9 game where every stone must touch an enemy stone, surrounded groups are captured, and five in a row wins. I played it and found it busy rather than deep, and its placement rule leans on the loophole below, since the first move touches no enemy at all. Several high scorers were loopholes: under "a stone may not touch a friendly stone" the engine falls back to allowing any cell once no legal cell remains, and those games are really two games glued together. Random-playout search was also fooled by Couplet itself. Random play makes threes constantly, so the search learned that pairs are dangerous and never built any, and I beat it in eleven moves on my first try. The fix was tactical playouts (take a win when you see one, avoid an immediate loss) and a two-ply check at the root, and that version won ten games out of ten against the old one at a third of the playouts. The final scores use it; the earlier stages did not. The name is mine: I searched for an existing "Couplet" board game and found none, but I could not query BoardGameGeek directly, so treat that as unverified. And the day lost about four hours to my own mistakes: background jobs dying with the session, playouts that cycled forever in capture games, and a final round whose worker pool killed node with an illegal-instruction fault twice, once with nothing saved. The scores above are real, but the last three rule sets were scored one process at a time after the pool died, and each of those three ran clean on its own, so the fault is in how I drive thirty workers, not in any game.