commandcenter 、StarCraft: Broodwar と StarCraft 2 の両方をプレイできる StarCraft AI ボットです。
commandcenter 、BWAPI と Blizzard の StarCraft II AI API を使用して C++ で作成されています。両方の API の周囲に多くのラッパー関数が提供されており、これにより、同じソース コードを介して両方のゲームで同じ機能を実行できるようになります。これは、メモリアル大学のコンピューター サイエンス助教授であり、AIIDE StarCraft AI コンペティションの主催者である David Churchill によって書かれています。
commandcenter UAlbertaBot のアーキテクチャに基づいており、独自のボットをすばやく変更、操作、構築できる使いやすいアーキテクチャであることを目的としています。ボット自体にはハードコーディングされた戦略や戦術はあまり含まれていませんが、あらゆるレースに対して独自の戦略を実装するための良い出発点となります。
commandcenter現在、次の機能を提供しています。
commandcenter最終的には UAlbertaBot のすべての機能を備えているはずですが、その機能の多くは現在完成していません。以下は、間もなく実装される予定の、現在commandcenterに欠けている機能の最新リストです。
StarCraft BW: StarCraft: Broodwar バージョン 1.16.1 と BWAPI がインストールされている必要があります。
StarCraft 2: ボットを実行するには、StarCraft II の最新の製品版がインストールされている必要があります。ボットで使用するいくつかのマップもダウンロードしてインストールする必要があります。マップは https://github.com/Blizzard/s2client-proto#downloads から入手できます。このページには、zip ファイルからマップを抽出するためのパスワードが提供されていることに注意してください。
ボットには、BotConfig.txt という名前の構成ファイルが付属しており、このファイルでビルド順序を変更したり、さまざまなデバッグ情報を画面に出力したり、いくつかのボット パラメーターを設定したりできます。ファイルの「Strategies」セクションで複数のビルド順序を定義し、ボットが特定のレースをプレイするときにどの名前付き戦略を実装するかを選択できます。ビルド順序のユニット名は大文字と小文字が区別され、ゲーム内でスペースを含めずに正確に表示される必要があります。 KiteWithRangedUnits オプションなど、構成ファイル内の一部のオプションは現在実装されていません。
この構成ファイルは JSON 形式であり、適切な形式の JSON でないとボットは実行されないことに注意してください。ボットが正しく実行されるようにするには、構成ファイルがcommandcenter .exe と同じディレクトリに存在する必要があります。 JSON 構文にエラーがあり、それを自分で見つけることができない場合は、オンラインの JSON 検証ツールを使用してチェックできます。
デフォルトでは、 commandcenter .exe を実行すると、ランダム レースと組み込みの SC2 Easy AI のランダム レースとして再生されます。 「BotRace」および「EnemyRace」オプションを使用して、設定ファイルでどのレースがプレイされるかを変更できます。 「MapFile」オプションを指定して、どのマップを再生するかを変更することもできます。 MapFile オプションは StarCraft II マップ ディレクトリに相対的なものであり、デフォルトでは StarCraft_Install_Directory/maps/ にあり、有効なマップ ファイルを指定しないとボットは実行されないことに注意してください。
ボットがクラッシュしたり、その他の厄介な動作をした場合は、ボットをより安定させるまでしばらくお待ちください:)
これらの手順により、SC2 API を構築してインストールし、それをcommandcenterに含めることができるはずです。 aba2d3813571c344090f3de5b58a5c912cd5acb3 については正常にテストされているため、以下のインストール手順が機能しない場合は、そのバージョンの SC2 API をチェックアウトしてください。
$ git checkout aba2d3813571c344090f3de5b58a5c912cd5acb3 .
そして指示を繰り返します。
$ git clone --recursive https://github.com/Blizzard/s2client-api && cd s2client-api
$ mkdir build && cd build
$ cmake ../
$ make
# Assuming that you are located in the 'build' directory
# after you finished the previous step
$ cd ../
# Install SC2 API headers
$ sudo mkdir -p /opt/local/include
$ sudo cp -R include/{sc2api,sc2renderer,sc2utils} /opt/local/include
$ sudo cp -R build/generated/s2clientprotocol /opt/local/include
# Install protobuf headers
$ sudo cp -R contrib/protobuf/src/google /opt/local/include/sc2api
# Install SC2 API libraries
$ sudo mkdir -p /opt/local/lib/sc2api
$ sudo cp build/bin/{libcivetweb,libprotobuf,libsc2api,libsc2lib,libsc2protocol,libsc2utils}.a /opt/local/lib/sc2api
$ git clone https://github.com/davechurchill/commandcenter.git && cd commandcenter
$ cmake .
$ make
UAlbertaBot のアーキテクチャに精通している場合、 commandcenterのロジックは非常に似ています。最大の違いは、マップや基地位置などに関連する情報がグローバルにアクセスできなくなったことです。このデータは現在、メインの CCBot クラス内に存在しており、そのクラスのインスタンスへの参照を介してアクセスする必要があります。このため、 commandcenterのほとんどのクラスにはボットのメイン CCBot オブジェクトへの参照が含まれており、そこからすべてのゲーム関連の情報、観察、クエリを作成できます。
詳細な開発ガイドは間もなく公開される予定ですが、アーキテクチャが非常に似ているため (ビルド オーダー プランナーと戦闘シミュレーターを除く)、現時点では UAlbertaBot wiki を参照してください。