見出し画像

StarCraft IIではじめる強化学習

StarCraft II

「StarCraft II」は世界中で人気のリアルタイムストラテジーゲームです。
資源の生産とユニットの製造を行いながら勢力を広げる、陣取りゲームになります。

AIエージェントは、フレーム毎に素早い行動を行うことができますが、勝利の一因となるのは速度だけではありません。資源やユニットをマルチタスクで管理し、それらのスコアを最大化する必要があります。
これは、Atari環境よりもはるかに複雑な環境になります。

StarCraft II API

StarCraft II APIは、StarCraft IIを外部ソフトウェアから制御するためのAPIです。開発元であるBlizzard社が提供しています。
このAPIは、次のようなソフトウェアを開発するための機能を提供します。

・スクリプトボット
・機械学習ベースのボット
・リプレイ分析
・人間のプレイを助けるツール

PySC2

PySC2は、エージェントがStarCraft II環境(SC2環境)から観察を得たり行動を送信したりするためのPythonインターフェースです。DeepMindが提供しています。内部的に、「StarCraft II API」が使われています。

PySC2のインストール

PySC2をインストールするには、次のコマンドを実行します。

pip install pysc2

StarCraft II(ゲーム本体)のインストール

StarCraft IIのゲーム本体をインストールします。

◎Windows / MacOS
Battle.netから通常どおりゲームをインストールします。
デフォルトのインストール場所を使用することで、PySC2は最新のバイナリを見つけることができます。インストール場所を変更した場合は、環境変数「SC2PATH」にインストール場所を指定してください。

◎Linux
Linux版は、Blizzard社のドキュメントに従ってインストールします。
インストール場所は~/StarCraftII/とします。それ以外にインストールする場合は、環境変数「SC2PATH」にインストール場所を指定してください。

StarCraft IIのフォルダ構成

フォルダ構造は次の通りです。すべてのプラットフォームで同じです。
ただし、存在しない場合はフォルダをいくつか作成する必要があります。

◎標準のフォルダ構成
・StarCraft II/
 ・Battle.net/
 ・Maps/
 ・Replays/
 ・SC2Data/
 ・Versions/

Mapの入手

PySC2には多くのMapが提供されています。
StarCraft IIを実行する前に、Mapとして利用する「Ladder Map」(通常マップ)と「Mini Game」(ミニゲーム)をダウンロードしておく必要があります。

Ladder Map
Mini Game

ダウンロードしたら、自身の/Starcraft II/Maps/に解凍してください。解凍パスワードはリンク先に書いてある通り"iagreetotheeula"で、これを利用することで、「AI and Machine Learning License」に承諾したことになります。

・StarCraft II/
 ・Maps/
  ・Ladder2019Season1
  ・mini_games

ランダムエージェントによるSC2環境のプレイ

ランダムエージェントによるSC2環境のプレイを実行するには、次のコマンドを実行します。Mapはmini_gamesのCollectMineralShardsを指定しています。

python -m pysc2.bin.agent --map CollectMineralShards

これによって、ランダムエージェントの行動を示すUIが表示され、
エージェントがどのような環境でどのような行動を採っているかを視覚化できます。

人間によるSC2環境のプレイ

人間によるSC2環境のプレイを実行するには、次のコマンドを実行します。

python -m pysc2.bin.play --map CollectMineralShards

サンプルエージェントによるSC2環境のプレイ

ゲーム内のタスクの1つであるミネラルを収集するように、スクリプト化されたサンプルエージェントを実行するには、次のコマンドを実行します。

python -m pysc2.bin.agent --map CollectMineralShards --agent pysc2.agents.scripted_agent.CollectMineralShards

この記事が気に入ったらサポートをしてみませんか?