32
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

無料でMinecraftを始める【OpenAI】【MARLO 2018】

Last updated at Posted at 2018-09-11

ゲーム機はLinuxマシンっていうのがおすすめです。
一家に一台はだいたいあると思います。
あまり聞かないかもしれませんが、3DSにもPSvitaにも劣らない最高のゲーム機です。

Dell_XPS_Laptop_Front-Desktop.png

と適当な茶番は置いといて、AIの研究用にMicrosoft×OpenAIでMinecraftのpythonモジュール(?)を提供してるっぽいのでやってみました。
(万が一ですが、この↑の意味がわからないという人は、タダでマイクラをしようなんて考えは捨てておとなしくソフトを買いましょう)

MARLO 2018

すこし逸れますが、(深層強化学習系を想定した)AIのMinecraftを使ったコンペがあって、一位の賞金は100万円とかだそうです。

marlo.png

これに挑戦するだけ挑戦してみようかと思ってやってみました。

ざっくりですが、依存関係が

gym(OpenAI) <- malmo <- marlo(←これがしたい!)

となっていて、リポジトリはそれぞれ
https://github.com/openai/gym
https://github.com/Microsoft/malmo
https://github.com/crowdAI/marLo

でしゅ。

(これを理解せずmalmoをインスコしようとしていてドブってました)

環境構築

とどのつまり https://github.com/crowdAI/marLo だけに従えばよかったです。
anacondaがrecommendedらしいのでpyenv×anacondaでやりました。
すごく簡単でした&マイクラで普通に遊ぶこともできてびっくり。

開発環境

  • ubuntu18.04
  • GeForce GTX 1060
  • cuda9.0
  • cudnn7
    (下手にdockerとか使う方法を採用するとgpu周りとゲーム画面の描画周りが面倒なのでそこらへんには注意しました)
  • pyenv環境構築済み

Installation

GUIのanaconda(?)ではなくpyenvでanacondaを使うので少しだけ変えています。

$ pyenv install anaconda3-5.2.0 # 最新版のanaconda3
$ pyenv local anaconda3-5.2.0
$ echo ". /home/nama/.pyenv/versions/anaconda3-5.2.0/etc/profile.d/conda.sh" >> ~/.zshrc # あるいは ~/.bashrc等
$ source ~/.zshrc
$ conda create python=3.6 --name marlo
$ conda config --add channels conda-forge
$ conda activate marlo
$ conda install -c crowdai malmo
$ pip install -U marlo
$ python -c "import marlo" # エラーが出ないか確認。
$ python -c "from marlo import MalmoPython" # エラーが出ないか確認。

以上

Single Agent Example

まずマイクラを起動して、pythonからそれを操作する。

マイクラの起動

$MALMO_MINECRAFT_ROOT/launchClient.sh -port 10000

anaconda側で勝手に環境変数"MALMO_MINECRAFT_ROOT"を設定してくれているみたい。
なんか起動までに数十秒かかるのとjavaなんとかで警告が出るものの動いたので良し。

Screenshot from 2018-09-11 16-53-46.png

ちなみに、
普通にゲーム画面をマウスで操作すれば、普通にマイクラができました(合法無料マイクラktkr
利用規約は守りましょう。

最初、視界の操作方法がよくわかんなかったですが、ゲームウィンドウをクリックして選択してEnterキーを推すと、マウスポインターで視界を操作できるようになります。再びEnterキーでマウスの操作を戻せます。

エージェントの操作

#!/usr/bin/env python
# $MALMO_MINECRAFT_ROOT/launchClient.sh -port 10000

import marlo
client_pool = [('127.0.0.1', 10000)]
join_tokens = marlo.make('MarLo-MazeRunner-v0',
                          params={
                            "client_pool": client_pool
                          })
# As this is a single agent scenario,
# there will just be a single token
assert len(join_tokens) == 1
join_token = join_tokens[0]

env = marlo.init(join_token)

observation = env.reset()

done = False
while not done:
  _action = env.action_space.sample()
  obs, reward, done, info = env.step(_action)
  print("reward:", reward)
  print("done:", done)
  print("info", info)
env.close()

実行すると、

2
{}
reward: 0
done: False
info {'has_mission_begun': True, 'is_mission_running': True, 'number_of_video_frames_since_last_state': 3, 'number_of_rewards_since_last_state': 0, 'number_of_observations_since_last_state': 1, 'mission_control_messages': ['<?xml version="1.0" encoding="UTF-8"?><ping/>'], 'observation': {'yawDelta': -0.5, 'nextSubgoal': {'XPos': 43.5, 'YPos': 227.0, 'ZPos': 1.5, 'description': 'MazeSubpoint_2'}}}
reward: 0
done: False
info {'has_mission_begun': True, 'is_mission_running': True, 'number_of_video_frames_since_last_state': 3, 'number_of_rewards_since_last_state': 0, 'number_of_observations_since_last_state': 1, 'mission_control_messages': [], 'observation': {'yawDelta': -0.5, 'nextSubgoal': {'XPos': 43.5, 'YPos': 227.0, 'ZPos': 1.5, 'description': 'MazeSubpoint_2'}}}
reward: 0
done: False
info {'has_mission_begun': True, 'is_mission_running': True, 'number_of_video_frames_since_last_state': 3, 'number_of_rewards_since_last_state': 0, 'number_of_observations_since_last_state': 1, 'mission_control_messages': [], 'observation': {'yawDelta': -0.5, 'nextSubgoal': {'XPos': 43.5, 'YPos': 227.0, 'ZPos': 1.5, 'description': 'MazeSubpoint_2'}}}
reward: 0
:
:

まあ自分はjupyter派なので

pip install jupyter
jupyter notebook

でこんな感じ

Screenshot from 2018-09-11 17-03-55.png

(エージェントの行動が情緒不安定すぎるw)

でした。

以上っ!

注意点

  • デフォルトではconda activate marloをしたディレクトリでしかminecraftを起動できなさそう
  • jupyterを使うときは、conda activate marloをしたディレクトリで。

最後に

動かない、ここ違うだろ等々あったらコメントください

\def\textlarge#1{%
  {\rm\Large #1}
}
\def\textsmall#1{%
  {\rm\scriptsize #1}
}

(あと精一杯小声で)
  $\textsmall{い い ね ほ ち い}$

32
19
1

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
32
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?