このプロジェクトについて
Generals.io Botsは、JAX上でPythonにより書かれた、generals.io戦略ゲームの高性能シミュレータであり、強化学習研究を目的としています。エージェントの訓練と評価を行える高速で関数的な環境に加え、エージェントを稼働中のgenerals.ioサーバーへ配備するためのツールを提供します。
プロジェクトが説明する主な特徴:
- 大規模並列処理のためのベクトル化vmapサポートを備えた、完全にJITコンパイルされたJAXシミュレータ。
- 不変状態と再現可能な軌跡を特徴とする純粋関数的設計。
- generals.ioサーバーへのライブ配備サポート。
- ゲームの可視化とエージェント挙動のデバッグのための組み込みGUI。
インストールはリポジトリをクローンし、pip install -e . を実行して行います。READMEは、シミュレータが現在のゲームルールに従っており、10,000件のランク戦をリプレイした結果、毎ターン後にgenerals.io自身のエンジンと一致したと主張しています。
はじめに: GeneralsEnvクラスはグリッド寸法と打ち切り上限を受け取ります。reset呼び出しは自動リセットプールと初期状態を返します。エージェントはact(observation, key)インターフェースを実装します。READMEではRandomAgentとExpanderAgentを例として示しています。ゲームループはプレイヤーごとの観測を取得し、行動をスタックして環境をステップさせ、事前生成されたプールから自動リセットします。ベクトル化の例では、共有プールとバッチ化された状態を用いて、jax.vmapで多数の環境を並列実行する方法を示しています。
環境は1v1、N人フリーフォーオール、チーム戦をサポートします。チーム戦では、味方のセルへ移動すると軍が集約されセルが移転します。将軍を捕獲すると、犠牲者のセルが軍を半減して移転し、そのプレイヤーが脱落します。チームは全ての将軍が倒れた時のみ敗北し、最後まで残ったチームが勝利します。視界はチーム内で共有され、観測には味方セル、味方領土数、味方軍数が含まれ、対戦相手フィールドは敵チーム全体をまとめて対象とします。
観測は、軍、将軍、城、山、所有/相手/中立/霧セル、霧中の構造物、領土数と軍数、タイムステップ、味方フィールドなどのフィールドを公開します。as_tensor()ヘルパーは最初の14フィールドを(14, H, W)テンソルにスタックし、任意で味方チャネルを追加します。行動は5つの整数の配列です: パス、行、列、方向、分割。compute_valid_move_maskヘルパーは合法手を(H, W, 4)マスクとして返します。
配備ではgenerals.remote.autopilotをエージェント、user_id、lobby_idと共に使用し、稼働中のgenerals.ioサーバーへ接続します。READMEには、Matej StrakaとMartin Schmidによる2025年のarXiv論文「Artificial Generals Intelligence: Mastering Generals.io with Reinforcement Learning」のBibTeX引用が含まれています。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.