Benedict Xiangqi: The First Mover Wins 78%, and One Move Is Why
Benedict Chess has no captures. When you move a piece, every enemy piece it attacks from its new square changes color and joins you. You win by turning the enemy king. W. D. Troyka published it in 2002 and named it for Benedict Arnold, who changed sides.
Nobody had put that rule on a xiangqi board, as far as I can find. The Chess Variant Pages index 7,383 games, and its 43 xiangqi-board entries and its dozen conversion entries are disjoint sets; Ludii’s 2,330 games and Fairy-Stockfish’s variant list say the same. The near misses are worth naming, because most of them are one hinge away. Desertion Chess converts by moving next to a piece rather than by attacking it, and keeps captures. Andernach flips the capturer instead of the captured. Cleopatra Chess is Troyka’s own rule restricted to a single piece. And xiangqi’s own flipping games, banqi and jieqi, turn a piece over to reveal what it is, which is a different thing entirely from changing whose it is.
Xiangqi has cannons that capture over a screen, generals locked in a nine-point palace, and elephants that cannot cross the river, so the port was never going to be mechanical. It forced four design decisions with no default answer.
Then I built an engine to find out whether the result was fair, and it is not. The first mover wins 78% of games, against about 55% for ordinary xiangqi. Nearly all of that comes down to a single cannon move available on move one, which is a much more fixable problem than a game that is simply lopsided.
The rule
Move a piece. Every enemy piece it attacks from where it lands joins you.
One thing to notice early: a standing attack does nothing. Only the piece that moved converts, so a chariot already bearing on something has to move again to take it. Threats are made by moving, never by waiting.
Play it
Both sides are yours and there is no engine behind it. It runs the same rules kernel every diagram in this post is checked against, so it cannot allow a move the article says is illegal.
The count under the board is the number the rest of this post keeps coming back to. It starts at zero and does not stay there.
What that does to xiangqi
No endgame, ever. All 32 pieces stay on the board for the whole game. There is no simplification and there are no trades, and tablebases are impossible in principle because the state space never shrinks. Xiangqi endgame theory, which is most of xiangqi theory, does not transfer at all.
Cannons stop declining. A xiangqi cannon needs a screen to capture, so it weakens as the board empties. Here the board never empties, and a cannon is as dangerous on move 80 as on move 3. The fitted values agree: cannons came out at 657 where xiangqi tables put them nearer 450, close enough to a chariot’s 900 to change how you play them.
Advisors and elephants stop defending anything. They exist to guard against captures, and there are no captures. They still block lines and screen for cannons, so they are not useless, but everything they were designed to do is gone.
Games are short and nobody draws. Median 29 plies against 80 to 100 for xiangqi. Across 54 games at the strongest setting there was not a single draw, and there was not one in 6,000 games of uniformly random play either, which is the stronger version of the claim: it is not that good players avoid draws here, it is that the position has nowhere to go except a decision. A game with no material to trade and no endgame to grind cannot run out of steam.
About 28% of legal moves lose immediately. That is the average over 1,696 plies in the games below, and it is worth being precise about, because the average is not the typical position: the median position has 10% of its moves losing, and the mean is carried by a minority of very sharp ones. The mean also climbs, from 24% in the first fifth of a game to 37% in the last. What does not happen is a quiet opening phase to develop in. Even the first fifth averages a quarter of all moves losing on the spot.
Designing the game
The generals still may never face. Xiangqi forbids the two generals from standing on the same file with nothing between them, and I kept it. The alternative is to make the flying general a win condition, which sounds better and breaks: under Benedict only the piece that MOVED counts, so unblocking the file is not a win, and the generals end up facing each other while play carries on until somebody shuffles a general one step along the file to claim it.
Keeping the prohibition costs nothing and produces one thing xiangqi does not have. A piece pinned on the generals’ file cannot be removed by force, because nothing here removes anything, and converting it does not release it either, since a conversion recolors in place. You can win the piece and still not be able to move it. Only a general stepping off the file frees it, so the pin lasts exactly as long as the pinning side keeps its own general there.
Advisors and elephants bind to the region they stand in, not their owner’s. A converted advisor sits inside the enemy palace, and an owner-bound rule freezes it there forever, which is a dead piece and a boring rule. Bound to the palace it stands in, it keeps playing. From the starting array the two readings are identical, because every advisor already stands in its own palace, so the generalisation costs nothing and turns a dead piece into an attacker.
Soldiers bind to their owner, which is the opposite call. A soldier’s forward direction has to follow whoever owns it now, or a converted soldier marches away from its own side forever. Getting these two backwards is the bug that breaks the game quietly.
Draws need a progress clock. With no captures, nearly every move is reversible. Three-fold repetition is not enough on its own, so the clock resets on the only two irreversible events: a conversion, or a soldier move.
Testing it
No existing engine can play this. Pikafish, Fairy-Stockfish and my own fog engine all encode capture rules, and Fairy-Stockfish’s one conversion mechanism (flipEnclosedPieces) flips pieces enclosed by a drop, Reversi-style, which is a different rule.
So: a Rust alpha-beta engine with a transposition table, principal variation search, late move reductions, and quiescence over conversions. Rather than importing xiangqi’s piece values I fitted them by logistic regression on the outcomes of 2,500 self-play games, which beat the values I had picked by hand in a head-to-head match.
I am not going to quote the fitted numbers. An earlier draft did, and read them as measurements of what the pieces are worth, which is more than a logistic regression on 8,000 correlated positions can support: an earlier fit on a quarter of the data produced several coefficients whose signs later reversed. What survives is the ordering it agreed with, that advisors and elephants are close to worthless here, and that one does not need a regression, because it follows from there being nothing to defend against.
The rules kernel is validated in a chain, which matters because everything that went wrong later was in the measurement rather than the rules. A JavaScript prototype was differentially tested against elephantops, the xiangqi library I already use, across 720,947 piece-geometry comparisons with zero disagreements. The Rust engine reproduces that kernel’s move counts exactly to 113 million positions. A TypeScript port reproduces both.
Three results held through every later change, because none of them depends on the engine’s judgment:
| test | result |
|---|---|
| random play against random play, 6,000 games | 50.1% for the first mover, 0 draws |
| unreduced proof search from the array, 20.8 billion nodes | no forced win within 13 plies |
| share of legal moves that lose on the spot | mean 28%, median 10%, over 1,696 plies |
None of those three moves when the engine changes, which is why I trust them more than the win rate.
Is this engine strong enough to judge a game with? It searches about 1.6 million positions a second and gets to depth 8 or 9 in a few seconds. Nowhere near a mature chess engine. It does not have to be.
The three results above do not depend on how well it plays at all. One is a random-move control, one is a proof, one is a count of legal moves. The proof is worth being precise about, because an ordinary search cannot make one: this engine uses late move reductions, which search later moves shallower, so a normal search that finds no win has only shown that it did not look everywhere. Turning reductions and quiescence off and asking the question as a yes/no at the mate threshold does prove it, and that is what the 13 plies above means. And the 78% was checked for the property that matters here, which is whether it moves when the engine gets stronger. It barely does: 77.8% at 300k nodes a move and 75.4% at 2M, a sevenfold range apart, against a sampling error of several points either way.
Stability across engine strength is the test I trust, and on its own it is not enough. An earlier version of this measurement varied games with a six-ply random opening book, got 52.7%, and held it across three engine strengths spanning that same tenfold range. It was stable because the book was spending the very tempo being measured: six random plies throw the advantage away before either engine plays a move, so the result drifts to even whatever the game underneath is like. A broken thermometer reads room temperature in every room. The 78% above uses no book, and takes its variety from evaluation jitter instead.
What more compute would buy is bounded and fairly clear. Bitboards and better move ordering reach depth 12 to 14, which is where I would want to be before saying anything about deep tactics or real opening theory. A learned evaluation is the expensive option and probably the wrong one: two earlier attempts in other variants both saturated short of the handcrafted eval they were meant to replace, and neither failure was about money.
So this post describes the game at club strength. The claims I have kept are the ones that hold at any strength.
The engine, the kernel and the test harness are a few thousand lines of Rust and TypeScript, and they are on GitHub at github.com/brianhliou/benedict-xiangqi along with the 54 games and the full opening table. Every number in this post comes out of cargo run.
One cannon move decides it
The first mover wins 78% of games. Measured on-policy from the starting array with no opening book, with both colors taking the first move in turn: at 300k nodes a move, Red first scores 80.5% and Black first 75.0% over 100 games each; at 2M, 82.5% and 68.3% over 60 each. Both directions are far above even at both budgets, so the advantage follows the tempo and not the color, which is what makes it a fact about the game rather than about my code. Red does look like the better half of the pairing at the higher budget, but 60 games carries about twelve points of error, so I would not read anything into it yet.
Then I measured all 42 of Red’s legal first moves separately, and the diagnosis changed shape.
All 42 legal first moves, 24 games each, sorted by what Red then scores.
| move | Red scores | move | Red scores | move | Red scores | ||
|---|---|---|---|---|---|---|---|
| c1a3 | 0.0% | h1g3 | 25.0% | a4a5 | 41.7% | ||
| e1e2 | 0.0% | a1a3 | 27.1% | g4g5 | 43.8% | ||
| g1i3 | 0.0% | b3b2 | 27.1% | b3b4 | 45.8% | ||
| b3a3 | 4.2% | h3h2 | 29.2% | b3b7 | 50.0% | ||
| b3c3 | 8.3% | b3d3 | 29.2% | d1e2 | 54.2% | ||
| h1i3 | 12.5% | i4i5 | 29.2% | e4e5 | 54.2% | ||
| h3f3 | 16.7% | b3f3 | 33.3% | a1a2 | 58.3% | ||
| b3g3 | 18.8% | b1a3 | 35.4% | h3h7 | 60.4% | ||
| h3c3 | 20.8% | c1e3 | 35.4% | h3h4 | 60.4% | ||
| i1i2 | 20.8% | b3e3 | 35.4% | b3b6 | 70.8% | ||
| h3g3 | 22.9% | c4c5 | 35.4% | f1e2 | 72.9% | ||
| i1i3 | 25.0% | h3e3 | 37.5% | h3h5 | 79.2% | ||
| h3i3 | 25.0% | h3d3 | 39.6% | b3b5 | 87.5% | ||
| g1e3 | 25.0% | b1c3 | 41.7% | h3h6 | 91.7% |
The two best are the same idea: a cannon lifted to the fifth or sixth rank. The three that score nothing are an elephant, a horse to the rim, and the general stepping up the middle.
Red’s first move is worth anywhere from nothing to 92%, and three of the 42 lose all 24 games outright. So the 78% is not “a tempo is worth 78% in this game.” It is “the engine always finds the one strong opening.”
A xiangqi cannon needs exactly one piece between it and its target. Black’s opening position supplies that piece, in the right place, for free. The threat exists because xiangqi’s starting array happens to sit where Benedict’s rule can use it.
Every game it played
All 54 games from the strongest setting, uncurated. The first mover won 46 of them, and the eight it lost are the ones worth opening.
Games do not end because someone blunders. They end because one side runs out of moves that do not lose, and the count of those climbs for twenty plies before anything visible happens on the board.
Using the pie rule to make it fair
The spread across those 42 openings is what makes this recoverable, and the fix already exists in other games.
The pie rule works the way two children divide a cake: one cuts, the other picks. Red plays a first move. Black then chooses whether to continue as Black, or to take over Red’s position instead. That single option changes what Red is optimising for, because playing the strongest opening becomes pointless when Black can simply take it.
So Red is pushed toward the move closest to even, and four of the 42 sit there. Two are the cannon declining its own best square, and the other two are the quietest developing moves on the board.
The cannon steps up one, well short of the fifth rank that does the damage.
The cannon goes all the way in, converting now and giving up the standing threat.
An advisor develops, and vacates d1. The generals' file is in play from move one.
The central soldier: the one quiet developing move that is not a blunder.
Forced onto one of those, the game lands near 50%. Not by damping the advantage down, but by removing Red’s ability to use it, which is a cleaner repair than it sounds. Hex is a provable first-player win at every board size and is played competitively worldwide, entirely because of the swap.
The honest caveat is the sample. Those four numbers come from 24 games each, which is wide enough that I would not rank them against each other, and narrow enough to say the spread from 0% to 83% is real. Confirming that one of them holds near 50% under a proper sample is the open work.
The pie rule fixes fairness without touching sharpness. The losing-move share is a property of the rules, not of who is ahead, so it does not move at all. It makes the contest even. It does not make it calm, and whether that is a game people want to play is a separate question I cannot answer from win rates.
Where it stands
Not shippable as a competitive game. No rated ladder survives the first mover winning three times in four.
That is worth separating from a claim it sounds like. Unfair does not mean unplayable: losing chess is a proven first-player win and is played competitively every day, because the proof took five years and eight machines and runs down lines no human finds. Hex is a proven first-player win at every board size and is played behind the swap. A first-move advantage does not kill a game on its own.
What is different here is depth. This 78% rests on one move you can say in a sentence, lift a cannon to the fifth rank, and an engine finds it every single time. A win that is proven but unreachable is a curiosity. A win that is memorizable is the game.
Two repairs beyond the pie rule are untested. Marking the general instead of turning it, so the defender gets one move to answer, would blunt the cannon threat directly, and converting the attacking piece is already a legal answer. Or move the central soldiers in the starting array, since the threat only exists because Black’s soldier stands where a cannon needs its screen.
What survives either way is the design. Conversion on a xiangqi board gives a game with no endgame, cannons that never weaken, defensive pieces worth nothing, and converted advisors stranded behind enemy lines for good. That held through every version of the measurement, because the rules were the one part I validated four separate ways.
Next is the one-tempo rule: twenty lines in the kernel, and a re-run of a harness that already exists.
The open question is whether Red has a forced win. Everything above is a win rate, which is a statement about two particular engines. The question underneath it is whether the game is a first-player win under perfect play, and that one has an answer that does not depend on how well anything plays.
What I have is a lower bound: no forced win inside 13 plies, proven in 20.8 billion nodes and about half an hour. That rules out a cheap one, and a game whose median length is 29 plies is barely half explored by it.
Two things make this harder than it looks and one makes it easier. Material is conserved, so the state space never shrinks, which means there is no endgame database to build and nothing for a forward search to meet in the middle. Retrograde analysis, the technique behind every solved chess endgame, is unavailable in principle rather than merely expensive. Strategy stealing, the usual way to get an ultra-weak solution out of a symmetric start, does not apply either: pieces move rather than accumulate, so a first player cannot make an arbitrary move and then discard it. What helps is that games are short. The median is 29 plies, and there were no draws in the 54 engine games nor in 6,000 games of random play, so the tree is shallow and sharply terminal, which is the shape proof-number search is good at.
The next rung is 14, and the levers are not more hardware. The proof above splits across Red’s 42 first moves, which parallelises almost perfectly precisely because the answer is no: with no forced win, no branch ever cuts off another, so nothing is lost by searching them at the same time. That got 13 out of one laptop. Splitting two plies deep gives about 1,700 independent jobs, which is the shape that wants a cluster, and proof-number search, which spends its effort on the narrowest part of the proof tree instead of searching uniformly deep, is not implemented at all. That last one is not a hypothetical: it is how losing chess was solved. Mark Watkins ran proof-number search for over five years on eight sixteen-core machines to show that 1.e3 wins for White, which is both the technique this needs and a fair warning about what finishing the job costs.
If someone lands a weak solution, or even an ultra-weak one by an argument I have not thought of, that settles the pie rule question too, because a proven first-player win is exactly the case the swap was invented for. Hex is a proven first-player win at every board size and is played competitively anyway.