PythonでMalmoを試してみた Windows編

Malmoとは

マインクラフトで人工知能を育てる「Project Malmo」、MicrosoftがGitHubで一般公開
Microsoftが3月に「Project AIX」としてプライベートプレビューを開始した「Minecraft(マインクラフト)」で人工知能(AI)を訓練するプロジェクト「Project Malmo」を一般公開した。GitHubからmodとコードをダウンロードできる。
ITMediaニュース

というわけでこれをチュートリアルのテストコードの動作確認まで試します

環境

  • Win7 64bit
  • Python2.7 32bit64bit環境が必要でした
    マインクラフトは普通に購入したのインストールしてあったけど不要っぽい?

環境構築

基本的には公式のドキュメント通り
https://github.com/Microsoft/malmo

各プラットフォーム向けの実行環境をダウンロードする

下記から各プラットフォーム向けのものをダウンロードする
https://github.com/Microsoft/malmo/releases

各プラットフォームで必要な環境の構築
Windowsの場合は下記を参考に構築する
https://github.com/Microsoft/malmo/blob/master/doc/install_windows.md

7-zip

インストールするだけ

FFMPEG

公式から64bit版のexeをダウンロードしてからC:\FFMEPG\ffmpeg.exeとか適当なところに配置してパスを通す

1> ffmpeg -version
2'ffmpeg' は、内部コマンドまたは外部コマンド、
3操作可能なプログラムまたはバッチ ファイルとして認識されていません。

パスが通ってないとこうなる
コマンド・プロンプト起動時に読み込まれるので環境変数の編集前に開いてたなら開き直すこと

1> ffmpeg -version
2ffmpeg version N-80129-ga1953d4 Copyright (c) 2000-2016 the FFmpeg developers
3built with gcc 5.3.0 (GCC)
4...

って感じなら問題なし

CodeSynthesis

http://www.codesynthesis.com/products/xsd/download.xhtml
ここからxsd-4.0.msiをダウンロード・インストール
インストール時のオプションは特に変更しなかった
パスを通すってオプションだけチェック入ってるか確認しておくこと

Python

公式から落としてパスを通すだけ
※64bit版をインストールして下さい

その他メモ

1ImportError: DLL load failed: %1 は有効なWin32 アプリケーションではありません

32bit版のPythonから起動しているとimport MalmoPythonの時点で上記エラーが出ます

1ImportError: DLL load failed: デバイスの準備ができていません。

64bit版のPythonから起動して上記エラーが出る場合はPCを再起動したら直りました

JDK

Javaの公式からJDKをダウンロード・インストール

1C:\Program Files\Java\jdk1.8.0_91\bin\

辺りにあると思うのでパスを通す
ついでにJAVA_HOMEという環境変数を作って変数値を

1C:\Program Files\Java\jdk1.8.0_91

にする

Microsoft Visual Studio 2013 redistributable

下記からインストール
https://www.microsoft.com/en-us/download/details.aspx?id=40784

環境構築終わり

実行

Minecraftの起動

まずMalmo用のマインクラフトを起動する
一番最初にダウンロードしたzipを展開して

1> cd Malmo-0.14.0-Windows-64bit/Minecraft
2> launchClient.bat
3ログがズラー

で最後に起動すればおっけー
初回は結構時間かかります

Microsoft Visual Studio 2013 redistributable入れ忘れててビルドエラーでコケた

サンプルスクリプトの実行

もう1個コマンド・プロンプトを開いて

1> cd Malmo-0.14.0-Windows-64bit/Python_Examples
2> python run_mission.py

クライアント側で実行されてたら成功
あとはチュートリアルやれば良いと思うのである程度まとまったら記事にします

サンプル実行メモ

Minecraft内で視点移動が出来ない
チュートリアルのPDFのTipsに解決方法が書いてありました
Enterで視点移動の有効/無効を切り替えられます