In short

  • KataGo-AnimalChess, an AlphaZero-style net for Dou Shou Qi published by hzyhhzy and Kouza, beat MistyJungle 82-0 with 118 draws over 200 games: score 0.70, about +150 Elo.
  • Same wall-clock per move on one machine: 1,000 visits against 5 million nodes. It won as either colour and never lost.
  • The match could not be fair until Mistboard’s tiger jumped the river sideways like the lion, as the Chinese rule sets have it. That rule shipped first.
  • That wins the jungle row on the challenges page: KataGo-AnimalChess becomes the Jungle bot on Mistboard, with their names on it.

MistyJungle is the Dou Shou Qi bot on Mistboard: alpha-beta search over a three-term hand evaluation, 5 million nodes a move, no net. In June it beat the strongest open-source engine I could run by about 16 Elo, and the challenges page has offered its seat to any engine that beats it at the same budget since.

While sweeping GitHub for jieqi work last week I found a stronger opponent I had missed: KataGo-AnimalChess, hzyhhzy’s retarget of KataGo’s self-play training to jungle, with a trained net shipped inside Kouza’s Dandelion GUI. The June search missed it because the engine lives on a branch of a repository named KataGomo; nothing in its name says jungle.

One rule had to change first

Their tiger jumps the river sideways as well as lengthwise, the same leap as the lion. Mistboard’s did not: it jumped lengthwise only, a reading that comes from English Wikipedia’s article and, as far as I can find, nowhere else. Tencent’s QQ游戏 rules, Leiden University’s Dou Shou Qi page and KataGo’s source all give the tiger the lion’s jump. A match between a net trained on one rule and an engine playing another measures the rule, not the engines.

So the rule changed. Since 21 September the tiger on Mistboard jumps both ways, in the kernel, the bot, the analysis engine, the rules page and the puzzles (one material puzzle the new jump refutes was withdrawn). The change only adds moves, so every earlier game stays legal as played. The Wikipedia article now notes the variant too.

The match

Two hundred games, colours alternating, the Mistboard kernel as referee: den entry, capture-all and stalemate as wins, threefold repetition and 200 plies without a capture as draws. Each engine only proposed moves; an illegal proposal would have forfeited the game, and none came.

The budgets were matched on wall-clock on one machine, about two seconds a move each: MistyJungle at its shipped 5 million nodes on one thread, KataGo at 1,000 visits on four threads with the b10c384 net from Dandelion 4. Both engines search by budget rather than by clock, so the games played on Modal are the games either would play here. KataGo’s loop rule was switched off so the referee’s repetition rule governed both sides.

  Wins Draws Losses Score
KataGo as red (100 games) 44 56 0 0.72
KataGo as black (100 games) 38 62 0 0.69
Total 82 118 0 0.705

Every decisive game ended by den entry; every draw by repetition. The median game ran 127 plies. The 95% interval on the score is 0.67 to 0.74, which is roughly +125 to +180 Elo. The challenge asked for 0.55.

All 200 games are in a study on Mistboard, eight named ones first. A short one, game 67, with KataGo as black: its tiger crosses the west lake sideways at ply 54, the move the old rule forbade, and walks into the den 36 plies later.

The shortest win as red, game 138, 81 plies:

What it is

KataGo-AnimalChess is stock KataGo, the Go program, with the board and rules swapped for jungle and the self-play loop run as is: 400 visits a move in self-play, a 10-block, 384-channel net trained by SGD on two GPUs, rules randomised across the variants the GUI supports so one net serves all of them. The training scripts and configs are in the branch; the repository’s own estimate for reaching top strength in a small game is under fifty dollars of compute. The weights are inside the GUI download, with no separate release and no stated licence.

Against that, MistyJungle’s evaluation is material, distance to the den and a trap penalty. It held its own against classical opponents, and a learned residual on top of it did not help. This is the usual result: a net trained by self-play beats hand-tuned search, and in a drawish game it wins the games that can be won and loses none.

They won the seat

The jungle row on the challenges page reads won, with their names on it, and KataGo-AnimalChess becomes the Jungle bot on Mistboard. The engine is open source and the net ships with their GUI, so serving it is a build, not a request: a GTP bridge in the server, a Linux binary of the AnimalChess branch, and a visit budget the site can afford per move. MistyJungle keeps the seat until that lands, and the analysis board stays on it for now. The challenge stays open against the holder: beat KataGo-AnimalChess at the same budget over 200 games and the seat is yours.

The match harness (a bridge between KataGo’s GTP and the kernel; KataGo’s board is the left-right mirror of ours) is jungle-katago-match.ts in the Mistboard repository, and the 200 game records are here.