Github: https://github.com/deepmind/pysc2
PySC2 – スタークラフトII学習環境
PySC2は、スタークラフトII学習環境(SC2LE)のDeepMindのPythonコンポーネントです。 これは、 Blizzard EntertainmentのStarCraft II Machine Learning APIをPython RL環境として公開します 。 これは、DeepMindとBlizzardの協力で、StarCraft IIをRL研究のための豊かな環境に発展させます。 PySC2は、RLエージェントがStarCraft 2とやり取りし、観測を取得し、アクションを送信するためのインターフェイスを提供します。
私たちは、StarCraft IIをDeepRL研究に使用する動機付けと、その環境を使用した初期の研究成果を概説した添付のブログポストと論文を発行しました。
約
免責事項:これは公式Google製品ではありません。
スタークラフトIIマシンラーニングAPIおよび/またはPySC2を研究に使用する場合は、 スタークラフトII論文を引用してください
pysc2@deepmind.comまでお問い合わせください。
クイックスタートガイド
PySC2を入手する
PyPI
PySC2を入手する最も簡単な方法は、pipを使うことです:
$ pip install pysc2
これにより、必要なすべての依存関係とともにpysc2
パッケージがインストールされます。 virtualenvは依存関係を管理するのに役立ちます。 また、pipをアップグレードする必要があるかもしれません: pysc2
インストールが機能するには、 pip install --upgrade pip
。 古いシステムで走っているなら、 pygame
依存関係のためにlibsdl
ライブラリをインストールする必要があります。
Pipはいくつかのバイナリをあなたのbinディレクトリにインストールします。 pysc2_play
は、 python -m pysc2.bin.play
へのショートカットとして使用できます。
Git
代わりにgitでPySC2をインストールすることもできます。 最初にPySC2 repoをクローンし、依存関係とpysc2
パッケージをインストールします。
$ git clone https://github.com/deepmind/pysc2.git
$ pip install pysc2/
スタークラフトIIを手に入れよう
PySC2は完全なStarCraft IIゲームに依存し、3.16.1以上のAPIを含むバージョンでのみ動作します。
Linux
Blizzardのドキュメントに従ってLinux版を入手してください。 デフォルトでは、PySC2はゲームが~/StarCraftII/
に存在することを期待しています。 このパスを無効にするには、 SC2PATH
環境変数を設定するか、独自のrun_configを作成します。
Windows / MacOS
Battle.netから通常どおりゲームをインストールします。 初心者モードでも動作します。 デフォルトのインストール場所を使用した場合、PySC2は最新のバイナリを見つけます。 インストール場所を変更した場合は、 SC2PATH
環境変数を正しい場所に設定する必要があります。
PySC2は、Python 2.7+または3.4+を実行しているMacOSおよびWindowsシステム上で動作するはずですが、Linuxで完全にテストされています。 他のシステムとの互換性を高めるための提案やパッチを歓迎します。
地図を入手する
PySC2には多くのマップがあらかじめ設定されていますが、プレイする前にSC2 Maps
ディレクトリにダウンロードする必要があります。
ラダーマップとミニゲームをダウンロードし、 StarcraftII/Maps/
ディレクトリに展開します。
エージェントを実行する
エージェントを実行して環境をテストすることができます。 UIはエージェントのアクションを表示し、デバッグやビジュアライゼーションの目的に役立ちます。
$ python -m pysc2.bin.agent --map Simple64
デフォルトではランダムエージェントが実行されますが、必要に応じて他のエージェントを指定することもできます。
$ python -m pysc2.bin.agent --map CollectMineralShards --agent pysc2.agents.scripted_agent.CollectMineralShards
2つのエージェントをお互いに実行することもできます。
$ python -m pysc2.bin.agent --map Simple64 --agent2 pysc2.agents.random_agent.RandomAgent
エージェントのレース、相手の難易度などを指定するには、追加のフラグを渡すことができます。 --help
を使って実行すると、変更できるものが表示されます。
人間としてゲームをプレイする
主にデバッグに使用されるヒューマンエージェントインタフェースがありますが、これを使用してゲームをプレイすることもできます。 UIはかなりシンプルで不完全ですが、ゲームの基本を理解するだけで十分です。 また、Linux上で動作します。
$ python -m pysc2.bin.play --map Simple64
UIでは、ヒット?
ホットキーの一覧を表示します。 最も基本的なものは、終了するF4
、再起動するF5
、再生を保存するF9
、ゲームの速度を制御するPgup
/ Pgdn
です。 それ以外の場合は、マウスを使用して選択を行い、キーボードを左のコマンドに使用します。
左側は基本的なレンダリングです。 右側はエージェントが受け取るフィーチャレイヤーで、色分けされているので、私たちにとってより有用になります。 コマンドラインフラグを使用して、RGBレイヤまたはフィーチャレイヤのレンダリングとその解像度を有効または無効にすることができます。
リプレイを見る
エージェントを実行して人間として再生すると、デフォルトで再生が保存されます。 次のコマンドを実行すると、その再生を見ることができます:
$ python -m pysc2.bin.play --replay <path-to-replay>
これは、地図がゲームによって見つけられる限り、どのリプレイでも機能します。
同じコントロールがゲームをプレイするように動作するので、 F4
をpgup
て終了し、 pgup
/ pgdn
をpgdn
てスピードをコントロールします。
--video
フラグを使って再生のビデオを保存することができます。
地図を一覧表示する
マップは環境に認識される前に構成する必要があります。 次のコマンドを実行すると、既知のマップのリストが表示されます。
$ python -m pysc2.bin.map_list
テストを実行する
プルリクエストを提出する場合は、テストがPython 2と3の両方に渡されていることを確認してください。
$ python -m pysc2.bin.run_tests
環境の詳細
環境がどのように設定されているかの詳細な説明については、観測とアクションスペースが動作し、 環境文書を参照してください 。
ミニゲームマップ
この論文で参照されているミニゲームのマップファイルは、 pysc2/maps/
下に格納されていpysc2/maps/
が、 $SC2PATH/Maps
インストールする必要があります。 上記のダウンロード手順に必ず従ってください。
マップは、 pysc2/maps/
Pythonファイルで設定されます。 設定では、プレイヤーや時間制限、ゲーム結果やカリキュラムのスコアを使用するかどうか、その他いくつかのものを設定できます。 マップの詳細と独自の設定方法については、 マップのドキュメントを参照してください 。
リプレイ
リプレイを使用すると、ゲーム中に何が起こったかを確認することができます。 あなたがプレイしたときに各プレイヤーが作った行動や観測結果を見ることができます。
Blizzardは、梯子に載せられた多数の匿名化された1v1リプレイをリリースしています。 自分のサイトでリプレイファイルを取得する方法については、手順を参照してください。 自分のリプレイを確認することもできます。
リプレイは、そのゲーム中に行われた観察およびアクションを得るために再生することができる。 観察は要求された解像度で行われるため、人間が実際に見たものとは異なる場合があります。 同様に、アクションは人間の画面上の別のピクセルを反映する可能性のあるポイントを指定するので、我々の観測では正確には一致しないかもしれませんが、かなり類似しているはずです。
リプレイはバージョンに依存するため、3.16.1または3.17バイナリで3.16リプレイが失敗します。
完全なゲームで、またはpysc2.bin.play
リプレイを視覚化することができます。 あるいは、 pysc2.bin.replay_actions
を実行すると、多くのリプレイを並行して処理できます。