Edited at

PySC2 - StarCraft II 強化学習環境を構築してみる(Windows 10)


PySC2のインストール

Windows 10でDeepMindのPySC2のミニゲームを動かすまでのメモです。StarCraft IIのゲームは20GBぐらいのサイズです。そのため、標準のインストール先("C:\Program Files (x86)\StarCraft II")にインストールできない人もいるのではないでしょうか。Pythonを触っていないと環境変数の設定でハマる可能性があるため、本記事を参考にしてください。


Pythonのインストール

Anacondaを使用します。以下のサイトからPython3.x系のWindowsのインストーラーをダウンロードしてインストールしてください。

https://www.anaconda.com/distribution/#download-section


StarCraft IIのインストール

StarCraft IIのインストールは以下のサイトからになります。右上の「PLAY FREE NOW」からインストールできます。ゲーム自体は20GBぐらいになりますので、私はEドライブにインストールしました。

https://starcraft2.com/en-us/

私のインストール先:E:\Games\StarCraft II


Pythonの環境作成

スタートメニューから、「Anaconda Prompt」を実行します。condaコマンドで新しい環境を作成します。

(C:\Users\kenta\Anaconda3) C:\Users\kenta>conda create -n py36 python=3.6

(C:\Users\kenta\Anaconda3) C:\Users\kenta>activate py36

新しい環境を作成したら、activateコマンドで新しい環境に変更します。

(C:\Users\kenta\Anaconda3) C:\Users\kenta>activate py36


PySC2のインストール

pipでインストールします。

(py36) C:\Users\kenta>pip install pysc2


ミニゲームのインストール

GitHubのPySC2からミニゲームをダウンロードします。

https://github.com/deepmind/pysc2

README.mdに書かれている以下のURLからzipファイルをダウンロードします。

https://github.com/deepmind/pysc2/releases/download/v1.2/mini_games.zip

ダウンロードしたzipファイルを展開する前に、StarCraft IIのインストール先にフォルダ(ディレクトリ)を作成します。

(py36) C:\Users\kenta>e:

(py36) E:\>cd \Games\StarCraft II
(py36) E:\Games\StarCraft II>md Maps

Mapsフォルダにzipのミニゲームを展開すると、Mapsフォルダは以下のようなファイル構成になります。

(py36) E:\Games\StarCraft II>cd Maps

(py36) e:\Games\StarCraft II\Maps>tree /F
E:.
└─mini_games
BuildMarines.SC2Map
CollectMineralsAndGas.SC2Map
CollectMineralShards.SC2Map
DefeatRoaches.SC2Map
DefeatZerglingsAndBanelings.SC2Map
FindAndDefeatZerglings.SC2Map
MoveToBeacon.SC2Map


事前設定されたミニゲームの実行

部分的な課題を学習するミニゲームを実行してみます。


PySC2の環境変数設定

StarCraft IIのインストール先をカスタマイズした場合は、PySC2の環境変数を設定する必要があります。ここで注意しないといけないことは、ディレクトリを'\'ではなく'/'で設定することです。また、'"'で囲まないようにしてください。

(py36) E:\Games>set SC2PATH=E:/Games/StarCraft II

(py36) E:\Games>echo %SC2PATH%
E:/Games/StarCraft II


マップの確認

既知のマップのリストは以下のコマンドで確認することができます。

(py36) E:\Games>python -m pysc2.bin.map_list


ミニゲームの実行

ミニゲームは以下のコマンドで確認することができます。

(py36) E:\Games>python -m pysc2.bin.agent --map BuildMarines

s2client-protoのprotobufとのやり取りも表示されます。

https://github.com/Blizzard/s2client-proto

BuildM.PNG


他のミニゲームを実行するには

ミニゲームのmap引数は以下から選択できます。

BuildMarines

CollectMineralShards

CollectMineralsAndGas

DefeatRoaches

DefeatZerglingsAndBanelings

FindAndDefeatZerglings

それぞれのミニゲームは以下の動画を参考にしてください。

https://youtu.be/6L448yg0Sm0


ラダーマップを使う場合は

以下のサイトからダウンロードして、Mapsフォルダに展開します。使い方はミニゲームと一緒です。

https://github.com/Blizzard/s2client-proto#downloads