ドキュメント その他

よくある質問

これはチートツールですか?どのバージョンに対応していますか?AI は何を見て、何ができますか?プログラミングができなくても使えますか?……

これはチートツールですか?

いいえ。AI の研究と娯楽のための開発用インターフェースで、あなた自身が正規に所有するクライアントでのみ使用します。ローカル、LAN、または自分で立てたゲームで、コンピューターや他の AI と対戦するためのものです。Battle.net やアンチチートを備えたサーバーでは使用できません。人間同士の対戦を対象とした機能も一切提供しません。詳しくは 利用範囲 を参照してください。

どのゲームバージョンに対応していますか?

現在は Warcraft III 1.27(The Frozen Throne)のみに対応しています。1.24 〜 1.28 は同じエンジン構造で、複数バージョン対応(バージョンごとのシンボル表の選択、シグネチャによるフォールバック、起動時セルフチェックによる機能一覧の生成)は ロードマップ の P4 フェーズで行います。1.29 以降のバージョンと Reforged は別のエンジンのため個別の対応が必要で、現時点では対応を約束していません。

ゲームファイルを変更しますか?

いいえ。ランタイムはゲームの実行中に注入され、ディスク上の Game.dll やその他のゲームファイルは変更しません。複数起動する場合も、オリジナルの War3.exe ランチャーをそのままコピーしてリネームするだけです。ゲームデータ(ユニット表など)はあなた自身のゲームから抽出し、コードと一緒には配布しません。

AI には何が見えますか?

プロプレイヤーが知りたいことはほぼすべてで、50 ms ごとに更新されます。

  • 全プレイヤーのゴールド、木材、人口。全ユニットの位置、HP・マナ、現在のオーダー、攻撃中の相手、レベルと経験値。
  • ヒーローとユニットのスキルレベルと残りクールダウン、かかっているバフ、インベントリ。
  • 各建物が訓練 / 研究 / 建設 / アップグレードしている内容と進捗、人口不足で止まっているかどうか。
  • 地面のアイテム、樹木、マップの通行可能 / 建設可能グリッド、スタート地点、ゲーム内時刻(昼夜)。
  • イベントストリーム:ユニットの出現と死亡、1 回ごとのダメージ(攻撃者、攻撃タイプ、アーマー適用前のダメージ)、キル、生産完了、ヒーローのレベルアップ……
  • エンジンに直接問い合わせることもできます。ある操作がいま可能か、不可能ならその理由。あるテクノロジーのレベル。ある地点が見えているか。金鉱の残量。コンピューター対戦相手がどこへ兵を向けようとしているか。

その上で SDK は、戦闘ステータス(相性、アーマー、攻撃/防御アップグレード)、「倒すまでに何秒かかるか」、地上の経路探索も計算して提供します。すべての API は API カタログ を参照してください。

AI は何ができますか?

プレイヤーができる操作はほぼすべて可能です。移動、アタックムーブ、指定目標への攻撃、停止、ホールドポジション、パトロール、地面攻撃、採集、修理、建設(配置場所の自動探索あり)、訓練 / 研究 / アップグレード、キャンセル、スキル習得、スペル使用(ユニット対象 / 地点対象 / 対象なし)、ラリーポイント、ヒーローの蘇生、アイテムを拾う / 使う / 捨てる / 渡す / 売る、購入、Call to Arms。Shift キュー、ウェイポイントに沿った行軍、1 体のワーカーによる連続建設。さらにゲーム速度、一時停止、頭上の吹き出しも使えます。すべてのコマンドにレシートがあります。

プレイヤーの操作に加えて、ゲーム画面に自分のパネルや注釈を描くこと(キャンバス)や、シングルプレイでマップ作者が使える 1291 個の JASS 関数を呼び出すこと(JASS チャネル)もできます。

RPG / カスタムマップでも使えますか?

使えます。RPG マップを選び、インスタンスに「コンパニオンのサンプル」スキームを設定すれば、ゲーム開始後はあなた自身がプレイし、そばには一緒に戦い、回復してくれ、話し相手にもなる AI の仲間がついて来ます。RPG コンパニオン を参照してください。g.map_data でマップのカスタムユニットの名前を読み取れます。JASS チャネル ではユニットの生成、同盟の設定、パネルの表示などができます……どう遊ぶかはあなた次第です。ワールドを変える操作はシングルプレイでのみ使えます(マルチプレイでは同期ずれが起きます)が、キャンバスはマルチプレイでも安全です。

プログラミングができなくても使えますか?

使えます。クイックスタート に従って環境を整え、LLM で Bot を書く を読んでください。あなたは普段の言葉で戦術を説明し、LLM がコードを書きます。動かして問題があれば、エラーメッセージやゲーム内で見た現象を伝えて修正させます。

Python しか使えませんか?

SDK は Python です。ランタイムと外部プログラムの間にあるのは共有メモリのプロトコル(W3P)だけなので、Windows の共有メモリを読み書きできる言語なら何でも接続できます。もっと手軽なのは ゲートウェイ(WebSocket / JSON)です。JS、C#、Go、Rust、ブラウザのページ、別のマシン上のプログラムから同じ API を呼べます。LLM の Agent は MCP に直接つなげます。

どの LLM が一番いいですか?

コードを書ける主要なモデルならどれでも使えます。大切なのはモデルではなく、正しい資料を渡すこと(マニュアル + api.json + サンプル 1 つ)と、API カタログに存在するメソッドだけを使うよう指示することです。ゲーム中のリアルタイムな判断(アドバイザー、セリフ)はレイテンシに敏感で、ローカルの MoE モデルが良い結果を出しています。LLM をアドバイザーに と 頭上の吹き出しとローカルモデル を参照してください。

ゲームが重くなりませんか?

ワールドステートの 1 回の収集は、ゲームスレッド上で中央値 0.5 〜 0.9 ms(ユニット 100 〜 120 体)で、50 ms ごとに 1 回です。コマンドはゲームスレッド上で 1 件あたり数マイクロ秒、キューの 1 回の処理には 4 ms の時間予算があり、終わらなかった分は次回に回すので、ゲームを止めることはありません。ゲームへの呼び出しはすべて例外保護されており、Bot がクラッシュしてもその陣営が止まるだけで、ゲームを巻き込んで落とすことはありません。

複数のゲームを同時に起動できますか?

できます。runtime/farm.py がマルチインスタンスを管理し、インスタンスごとに番号が付きます。起動と停止は Farsight コンソール で行います。Bot は --inst N で指定したインスタンスに接続します。

2 つの AI を対戦させられますか?

同じゲームで player チャネルを 2 本開けば(--player 0 / --player 1)AI 対 AI になります。ローカルモードでの公平性は取り決めに頼ることになります。レフェリー、視界フィルタリング、所有権チェックを備えた正式な対戦は アリーナ(P6 フェーズ)で行います。

Mac / Linux に対応していますか?

現在は Windows 10 / 11 のみに対応しています。

ライセンスは?

ライセンスは正式版と同時に公開します。サードパーティのコンポーネントはそれぞれのライセンスを保持します(例:MinHook は BSD-2)。AMAI は独自ライセンスのため、その派生データはプロジェクトと一緒には配布せず、インストール時に AMAI の公開リポジトリから取得して生成します。

問題はどこに報告すればよいですか?

正式版のリリース後に問題報告の窓口を開設します。報告の際は、インスタンス番号、python -m openwar3 status の出力、再現手順を添えてください。まずは デバッグとパフォーマンス で解決できないか確認してみてください。