要約

  • MistyJungleは闘獣棋(Jungle)向けの古典的なRustエンジンで、動かせる限り最強のオープンソースエンジンに対しW11-L2-D187、約+16 Eloを記録した。
  • 4駒の厳密なテーブルベースと800局面中779局面で一致し、勝ち/引き分け/負けの誤りはゼロだった。
  • 効くと思っていた2つの改良は外れた。学習評価値は手作り評価に一度も勝てず、探索の葉でのテーブルベースは約13 Eloの損だった。
  • 公開された終盤データベースは4駒で止まっており、ゲーム全体は未解決のままである可能性が高い。

私はMistyJungleを作った。7×9盤のボードゲーム、通常JungleやAnimal Chessと呼ばれる闘獣棋のための古典的なRustエンジンだ。 MistboardでMistyJungleと対局できる。アルファベータ探索、手作りの評価、繰り返し処理を用い、対局版にニューラルネットワークは入っていない。

10月7日更新:MistyJungleはもうMistboardで最強の闘獣棋ボットではない。9月、自己対局ネットのKataGo-AnimalChessが200局で82-0、引き分け118でこれを破り、最上位の座についた。MistyJungleは今、その下のやさしいボットだ。

結果は小さいが本物だ。動かせる限り最強のオープンソースエンジンに対し、200局でW11-L2-D187、引き分けの多いゲームで約+16 Elo。さらに4駒終盤の指し手は厳密なテーブルベースと一致し、勝ち/引き分け/負けの誤りはなかった。効くと思っていた2つの改良、学習評価値と探索の葉でのテーブルベースは効かなかった。仕事をしたのは古典的探索だった。

作ったもの

小さなUCI風プロトコルを備えた単体のRustエンジンで、コマンドラインからも、PyO3経由でPythonからも使える。強さは時計ではなくノード予算で決まるので、同じ局面ならどのマシンでも同じ手を返す。

構成は定石通りだ。反復深化つきのネガマックス・アルファベータ、Zobristトランスポジションテーブル、駒取りと巣への侵入に対する静止探索、PVSと後期手削減を伴うキラー/ヒストリーの手順序付け、そしてその下に、駒得、巣への競走、罠、水、機動力を評価する手作り評価がある。この手順序付けと枝刈りの磨き込みは、固定ノード予算で測って+49 Eloの価値があった。

学習による補正が何かを足せるようになる前に、評価は正確でなければならない。闘獣棋は駒の価値が支配的だが、鋭い例外だらけだ。鼠が象を止め、罠にかかった駒は序列を失い、巣へ一歩踏み込めばゲームは終わる。

仕様

各陣営は7×9の盤に8匹の動物を持ち、相手の巣に踏み込むか、全駒を取れば勝ちだ。ルールは地域によって異なるので、どの規則集かが重要になる。私は2026年6月時点のMistboardのルールを使い、そこでは狼が犬より上位だ(逆にしている資料もある)。そのうち1つのルールはその後変わった。虎は川を縦方向にのみ跳べるとしていたが、これは英語版Wikipediaに由来する読み方で、中国語のルール集(TencentのQQ游戏、Leidenのページ)では虎にも獅子と同じ跳躍を認めている。Mistboardと MistyJungle 0.0.6は2026年9月に中国ルールへ切り替えた。この記事の対局は旧ルールの下で指されている。

捕獲序列、強い順

象
獅子
虎
豹
狼
犬
猫
鼠

各動物は右側のものを取れる。鼠は象も取れる。相手の罠にいる駒は序列ゼロとして扱う。

単純な序列による捕獲を超えて、3つのルールがこのゲームの戦術を作っている。

  • 鼠は象に勝つが、陸上に限る。 最弱の駒が最強の駒を取る。ただし岸を越えての捕獲はできないので、水に入った鼠は他の鼠以外のすべてから安全だ。
  • 獅子と虎は川を跳び越える。 水に入れるのは鼠だけだ。大型のネコ科は代わりに川を丸ごと跳び越えて対岸へ渡る。横向きにも縦向きにも跳べるが、水中に鼠がいると跳躍は妨げられる。
  • 罠にかかった駒は序列を失う。 各巣の周囲3マスが罠だ。そこに立った敵の駒は序列ゼロに落ち、鼠でさえ何でも取れるようになる。

遊べる盤つきの完全なルール:mistboard.com/rules/jungle。

結果

強いエンジン同士がほとんど引き分けるゲームでの、わずかな優位:

テスト 結果
オープンソースのベンチマーク、200局 W11-L2-D187、約+16 Elo
探索の磨き込み(手順序付け、PVS、LMR) +49 Elo、ペア方式の自己対局、p = 0.008
4駒テーブルベースとの照合 779/800が一致、WDLの矛盾0件
5駒と6駒 8倍深い探索に対して99%超(代理指標であって証明ではない)
探索の葉でのテーブルベース W37-L40-D3、約-13 Elo
残差型ニューラル評価 最良で約-70 Elo

測りにくかったのは+49の方だ。実力の近いJungleエンジン同士は引き分けが多すぎて勝率では判定できないので、ペアにして先後を入れ替えた自己対局(すべての序盤を両側から指し、新しい探索を旧探索にぶつける)と、決着局に対する符号検定を使った。

データ

終盤と解決の現状

小さな終盤は後退解析で解け、優れた判定役になる。Van Rijnとvisは2013年にLeidenで4駒を解き(犬と狼を入れ替えるLeiden方式の下で)、それより大きな公開結果は私の調べた限り見当たらない。私のエンジンは800局面中779局面で厳密な4駒の指し手と一致し、WDLの矛盾はなく、5駒と6駒では8倍深い探索に99%超で追随した。

その4駒データベースが今も最前線であり、その先の壁は解法技術ではなく保存容量だ。問題は盤面だ。めくり闘獣棋の16マスに対して63マスあるので、駒を1つ足すたびに十数マスではなく約60の空きマスに置けることになり、各段階のサイズは約5倍速く増える。めくり闘獣棋の5駒は私のノートPCで2.8 GBに収まるが、闘獣棋の5駒はおよそ7 TBになる。初期戦力の半分にあたる8駒以上はデータベースとしては手が届かず、16駒の全体ゲームについて前向きの証明を持つ者もいない。闘獣棋は4駒まで解決済みで、その上は未解決であり、今後もそのままである可能性が高い。

2026年9月27日訂正:以前の版では最前線を7駒としていた。この数字は2019年の論文中の引用に由来するが、確認するとLeidenの別のゲーム「Jungle Checkers」に関する論文を指していた。

探索の葉で読み込むテーブルベースも棋力には何も足さなかった(約-13 Elo)。収まるサイズでは探索がすでに答えを見つけているし、役に立つサイズのものは出荷できない。ただし、めくり闘獣棋の実装から得た注意点がある。そこでは同じ実験が最初は無効果に見え、後になってバグを隠していたと分かった。あのテーブルは距離なしの勝ち/引き分け/負けだけを保存しており、WDLのみの葉ではすべての勝ち手が同じ評点になるため、エンジンは勝勢の終盤を決めきらずに永遠に維持できてしまう。テーブルにDTM(詰みまでの手数)を加えたことで、あちらの決めきりは直った。Jungleでの葉の参照もWDLのみだったので、-13の一部はテーブルベースが葉で無用だという話ではなく、同じ現象かもしれない。未検証であり、いずれにせよ古典エンジンはこの参照なしで出荷する。

学習評価値

これはアーキテクチャではなくデータで行き詰まった。残差ネット(手作りのスコアに有界の補正を足すもの)はラベルを直すにつれて-470から約-70 Eloまで伸びたが、手作り評価には一度も勝てなかった。ラベルが最も弱いのは、まさにネットが助けを必要とする場所だった。引き分けの多い自己対局では駒得の振れが過小にしか現れず、厳密なテーブルベースのラベルは小さな終盤しか覆わず、探索スコアのラベルはすでに持っている探索の模倣をネットに教えるだけだ。

AlphaZero

こちらはまだ未着手の課題だ。Jungleでの本格的なAZの積み上げは走らせていない。隣接する半棋(Banqi)でのAZのリスク軽減試験は基準を通過しなかったが、それは別のゲームであり、Jungleに対するAZを否定するものではない。Jungleは決定的かつ完全情報で偶然手番の開示がなく、より扱いやすい土俵だ。安価な段が負の結果で、古典エンジンがすでにベンチマークに勝っていたので、これは棚上げにした。

対局例

マッチはほとんど引き分けだったが、決着局は優位の形を示している。まず巣への圧力、次に駒得だ。盤面は決め手の近くから始まるので、序盤は戻って見てほしい。6局すべてがMistboardのスタディにある。これらは2026年9月までMistboardが用いていた、虎は縦方向にのみ跳べるルールの下で指された。

MistyJungle(黒)が駒得を築き、赤の巣に獅子を入れて決める:

もう1局の黒勝ち。罠まわりの交換のあと、最後の駒がd1に到達する短めの締め上げ:

駒数を数えるだけでは足りない理由を示す赤の勝ち。MistyJungleは駒を損しながら巣への競走に勝つ:

保存された中で最長の勝局。赤が283手かけて押し切り巣に到達する:

1手800万ノード、各手約5秒でのエンジン同士の対局。長い互角の戦いで、赤が40手にわたり1駒の優位を守り、それを換金して獅子を黒の巣へ歩かせる:

さらに劇的なのは、同じく800万ノードでのミラー対局だ。赤は黒に象、獅子、虎を残させ、駒の点数で16点も遅れながら、その戦力が効いてくる前に鼠を巣へ走らせて勝つ。このエンジンが実際に何を最適化しているかを最も明確に示している:

結論

MistyJungleは古典的な探索エンジンであり、動かせる限り最強のオープンソースエンジンに対して、狭いが計測された優位を持つ。強さを動かしたのは地味な作業だった。正しいルール、固定予算での計測、先後入れ替えのテスト、探索の磨き込み、そして終盤の検証だ。テーブルベースは判定役としては優秀だったが葉では役に立たず、最初のニューラルの段は手作り評価に負け、本格的なAlphaZeroの積み上げはまだ未着手の課題だ。

参考資料: