LoginSignup
3
2

More than 5 years have passed since last update.

Unityの obstacle-tower-env の実行環境を準備する(Mac)

Last updated at Posted at 2019-02-02

はじめに

https://create.unity3d.com/obstacletower の Obstacle Tower の環境構築(Mac)メモです。

環境

  • PC: MacBook Pro (Retina, 13-inch, Early 2015)
  • OS: macOS Mojave(10.14.3)
  • pipenv: version 2018.11.26
    • pipenv は brew install pipenv などでInstallできます。

Setup On Mac

https://github.com/Unity-Technologies/obstacle-tower-env を参考に準備していきます。

ディレクトリとPythonの準備

ml-agents が python3.6のみのサポートなので、python3.6を使います。

mkdir obstacle_tower
cd obstacle_tower
pipenv --python 3.6

Install Requirements

必要なライブラリをまとめてInstallしておきます。

pipenv install jupyter tensorflow gym Pillow

Unity ML-Agents v0.6

GitHubから直接Install。

pipenv install 'git+https://github.com/Unity-Technologies/ml-agents.git#egg=ml-agents&subdirectory=ml-agents'

Install Environments

obstacletower_v1_osx

UnityアプリのOSX用をDownloadして unzipします。

curl -LO https://storage.googleapis.com/obstacle-tower-build/v1/obstacletower_v1_osx.zip
unzip obstacletower_v1_osx.zip
rm obstacletower_v1_osx.zip

Clone & Install obstacle-tower-env

ここの notebookは後でOpenしたいので、一旦LocalにCloneしてから install します。

git clone git@github.com:Unity-Technologies/obstacle-tower-env.git
pipenv install -e obstacle-tower-env

現在のDir構成

ここまでの手順で、以下のようなDir構成になります。

% tree -L 2
.
├── Pipfile
├── Pipfile.lock
├── obstacle-tower-env
│   ├── LICENSE
│   ├── README.md
│   ├── banner.png
│   ├── examples
│   ├── obstacle_tower_env.egg-info
│   ├── obstacle_tower_env.py
│   └── setup.py
└── obstacletower.app
    └── Contents

Getting Startを実行する

obstacle-tower-env/examples/basic_usage.ipynb を使って環境がSetupできているか確認ができます。


まず、jupyterを起動します。
obstacletower.app の PATH をnotebook中で指定する必要があるので、 PRJ_ROOT という環境変数に現在のDirのPATHをセットしておきます。
※ 例では、obstacle-tower-env/examples/ObstacleTower に展開しておけとなっているけど、後々使うことを考えるとそこに配置したくはないので。

PRJ_ROOT=$(pwd) pipenv run jupyter-notebook

ブラウザが立ち上がると思うので、 obstacle-tower-env/examples/basic_usage.ipynb を開きます。


obstacletower.app の PATHを指定する部分を書き換えます。

env = ObstacleTowerEnv('./ObstacleTower/obstacletower', retro=False)

import os
env = ObstacleTowerEnv(f'{os.environ["PRJ_ROOT"]}/obstacletower', retro=False)

という感じで。

あとは、そのまま実行していけば、動くと思います。
全体的には こんな感じ になります。

image.png

さいごに

Linux上にHeadlessでSetupしたかったのですが、xvfbだとopenglが動かないとかなんとかで一筋縄にはいかなかったです。
このドキュメント によると、AWS上でも動くはずなので、頑張ればできるとは思うのですが、、、1日くらいかかりそうな予感がするので、まずは簡単な環境から...

3
2
3

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
3
2