LoginSignup
4
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-08-11

PySC2のインストール

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

Pythonのインストール

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

StarCraft IIのインストール

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

私のインストール先: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

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1