コンテンツにスキップ

CABT Engine の使い方とローカルシミュレーション

更新日: 2026-06-17

先に結論

  • CABT の対戦制御は cg.gamebattle_start(), battle_select(), battle_finish() が基本。
  • 探索用の分岐シミュレーションは cg.apisearch_begin(), search_step(), search_end() を使う。
  • Kaggle 風の見た目確認は kaggle_environments.make("cabt")env.render(mode="html") が入口。
  • ただしサンプル notebook は cg-lib/kaggle/input/**/cg-lib から読み込んでいるため、ローカルでは cg-lib の所在を自分で渡す必要がある。

公式ドキュメントで確認できたこと

1. 対戦制御 API

公式 docs の game module には次がある。

  • battle_start(deck0, deck1)
  • 60 枚デッキ 2 つで対戦開始
  • 返り値は (Observation | None, StartData)
  • battle_select(select_list)
  • 合法手 index のリストを渡して 1 ステップ進める
  • battle_finish()
  • 対戦終了と後片付け
  • visualize_data()
  • 現在の盤面の可視化用文字列を返す

出典:

  • https://matsuoinstitute.github.io/cabt/game.html

2. 探索 API

公式 docs の API Overview には次がある。

  • search_begin(...)
  • Observation を起点に探索状態を生成
  • search_step(search_id, select)
  • 選択を 1 ステップ進める
  • search_end()
  • 現在の探索を終了
  • search_release(search_id)
  • 特定の探索状態を明示解放

出典:

  • https://matsuoinstitute.github.io/cabt/

3. Kaggle 風の HTML 可視化

公式 docs の Getting Started には次の最小例がある。

  • from kaggle_environments import make
  • env = make("cabt", configuration={"decks": [deck, deck]})
  • env.run([agent, agent])
  • env.render(mode="html")result.html に保存

このため、Kaggle 上で見るような確認方法は「動画」よりも「HTML リプレイ / ビジュアライザ」と考えるのが正確。

出典:

  • https://matsuoinstitute.github.io/cabt/

notebook から読み取れたこと

リポジトリ内の reinforcement-learning-and-mcts-sample-code.ipynb では以下の前提で動いている。

  • sys.path.append(glob.glob('/kaggle/input/**/cg-lib', recursive=True)[0])
  • from cg.api import ...
  • from cg.game import battle_start, battle_finish, battle_select

つまり、cg-lib は PyPI 依存ではなく、Kaggle Input として配布されている可能性が高い。

このリポジトリに置いたサンプル

sample/ に次を追加した。

run_local_battle.py

  • cg-lib があるローカル環境向け
  • CABT の battle_* API を直接呼んでランダム対戦を 1 試合回す
  • --cg-lib /path/to/cg-libCABT_CG_LIB_PATH でライブラリ位置を指定可能

render_kaggle_html.py

  • Kaggle Notebook か、kaggle_environmentscabt 環境が入っている環境向け
  • result.html を生成する

ローカルでのおすすめ手順

  1. Kaggle Notebook で公式 sample notebook を開く
  2. /kaggle/input/**/cg-lib の実体を確認する
  3. ローカルへ持ってこられる場合はそのパスを CABT_CG_LIB_PATH に設定する
  4. uv run python sample/run_local_battle.py --cg-lib /path/to/cg-lib
  5. 見た目確認が必要なら、Kaggle 側で uv run python sample/render_kaggle_html.py

未確認 / 未解決

  • cg-lib の再配布可否
  • Kaggle 以外での kaggle_environments.make("cabt") の導入可否
  • HTML ビジュアライザがローカルでもそのまま再現できるか

この 3 点は、実際に Kaggle Notebook 側で配布物を確認して詰める必要がある。