BLOG

2016.09.02Minecraftでプログラミング

マインクラフトでpythonプログラミングをするための5つのステップ

Mods

みなさま、こんにちは。以前からやってみようと思っていて、なかなか手が出ていなかったもので、Minecraft でのプログラミングがあります。調査のために何度か触ってはいたのですが、もとがゲームなのもあり、ゲームの領域から脱出できないなあ、ということから、なかなか手が進んでませんでした。ただ、小学生には結構人気が高く、ご質問等もいただくこともあるので、ブログにて少しまとめてみたく思います。実際に本教室のコースに取り入れていくかどうかはまだ検討中なのですが、あくまでまずはやってみました、という観点でご覧下さい。


1.環境の準備


ステップ1 PC版のソフトの購入


まずは環境を準備する必要があります。今回対象とするのは、PC版のマインクラフトです。PC版のマインクラフトは、販売されているもので下記のWebページから購入することが可能です。サポートされているプラットフォームは、Windows, Mac, Linux など、いろいろな環境に対応しています。また、こちらの方がご存知の方も多いでしょうが、PlayStation, Wii U, Xbox などのビデオゲーム機、iOS、Android などにも対応しています。また、Raspberry Pi 上でも動作するフリー版の Minecraft Pi というものもあります。ただ、今回対象とするプログラミングをする場合、PC版をご用意ください。Raspberry Pi版でもプログラミングは可能ですが、これは違う機会に解説いたします。


https://minecraft.net/ja/


Webサイトでクレジットカード支払をするとライセンスが取得でき、ログイン用のIDパスワードが入手できるはずです。購入が終わるとダウンロードできますので、指示に従ってインストールしてください。そして、とりあえず1回起動して動作することを確認してください。Javaを用いて作られているので、Java環境がインストールされていない場合は、Javaもインストールしてください。


ステップ2  Minecraft Forge のインストール


製品そのままのMinecraftではプログラミング用の受け口はないのですが、拡張してあげることで対応することができます。拡張するモジュールのことを Modと呼んでいますが、このModをインストールしていく必要があります。このModを管理するためのソフトウェアが、Minecraft Forge です。Forge のインストールに関しての情報はいろいろな方がWebページにて紹介しております。


http://minecraft-diary.jp/blog-entry-1247.html


このForgeのrecommended をインストールしてください。私が確認したのは、1.7系のものなのですが、1.10などのバージョンにも次に示している Raspberry Jam Modは対応しているようなのでそちらでも良いかもしれません。


ステップ3  Raspberry Jam Mod のインストール


Minecraft 1.8に対応した Raspberry Jam Mod という拡張モジュールをインストールします。下記のWebページからダウンロードしてください。


https://github.com/arpruss/raspberryjammod/releases


このページの中の、latest releases の mods.zipならびに、python-scripts.zipをダウンロードします。mods.zip の中にある該当するバージョンの jar ファイルを下記のディレクトリ以下におきます。


/Users/ユーザー名/Library/Application Support/minecraft/mods (Macの場合)

C:¥Users¥ユーザー名¥AppData¥Roaming¥.minecraft¥mods (Windows の場合)


ステップ4 再び起動してみる


ファイルを置いた後に起動します。起動した時にProfileが Forge になっていることを確認し、play をクリックします。無事に起動できた場合、ボタンにModsというボタンが追加されています。これをクリックしてください。


Minecraft Launcher


すると、Minecraft Pi API というModsがインストールされているのが確認できるはずです。これがあればOKです。


Mods


ステップ5  MCPI のインストール(2019/6/15追記)


最後に Python のライブラリ mcpi をPythonのライブラリパスに見える場所に置きます。

先程ダウンロードした、python-scripts.zip の中にある、mcpi というディレクトリを

Python のライブラリの中に置きます。


ライブラリパスの調べ方ですが、pythonをとりあえず起動していただき、

下記のように書いていただければ、出力されます。



$ python3
>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
'/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
'/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
'/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
'/usr/local/lib/python3.7/site-packages']
>>>


この中の一つの場所にディレクトリごとコピーしてください。

私の環境では上記の様になりましたが、環境によって異なりますのでご注意ください。


Hello World


伝統的なプログラミング学習の最初の一歩は、Hello Worldです。これは、どの言語や環境であっても、まずは Hello World という文字列を出力してみて動きを確認するというものです。Minecraft Pi API にも、当然おなじみのサンプルとして用意されています。先ほど、ダウンロードしていただいた、python-scripts.zip をどこか適切な場所で展開してください。すると、たくさんのサンプルファイルとライブラリ (mcpiディレクトリにあるファイル群)が出てくるはずです。サンプルファイルの中に helloworld.py というファイルがあるはずです。このファイルを見てみましょう。



import mcpi.minecraft as minecraft
import mcpi.block as block
import server
import sys
mc = minecraft.Minecraft()
mc.postToChat("Hello world!")
playerPos = mc.player.getPos()
mc.setBlock(playerPos.x,playerPos.y-1,playerPos.z,block.DIAMOND_ORE)


さて、いきなりソースコードを表示されても私は無理です、という方、多いかもしれません。Pythonの文法などを知らないとわからないのはごもっともですが、なんとなくわかっていただけるように、まずはどのような処理をしているか解説してみます。


1行目から4行目の記述は、ライブラリを読み込むための記述です。ライブラリとは、スクラッチの記事などでも少し触れていますが、あらかじめ用意してある機能などのことです。Pythonに限らず多くのプログラミング言語では、いろいろな人が使いやすいツールを作っており、それを利用することで一から自分で書かなくてもすぐにその機能が使えるようになっています。ただ、その機能は最初から使えるわけではなく、「今からこの機能を使うので、よろしく」とシステムに教えてあげる必要があります。それが、ライブラリの読み込みと思ってください。1行目と2行目は、先ほどダウンロードしていただいたマインクラフト用のライブラリ、3行目と4行目はpythonをインストールすると合わせてインストールされる標準的なライブラリです。今回の内容を試す上では、あまり詳しく知らなくても影響はないので詳しい説明は省略します。

そして、5行目で、mc という変数に対して minecraft.Minecraft() を代入しています。これは、専門的に書くとminecraft というクラスがライブラリの中に定義されていて、そのクラスのインスタンスを呼び出したということなのですが、平たく言えば、Minecraft Pi のコマンドを使うための準備をした、ということです。この行以降で、mc という変数を使ってコマンドを使えば、Minecraft のソフトと通信をすることができます。

次に、6行目が注目の Hello World を表示するためのコマンドを呼び出しています。postToChat というコマンドを使うと、“で囲まれている部分の文字をゲームの中で表示することができます。そして、7行目ではプレイヤの位置情報を取得しています。これは、詳しく書くと、minecraft というクラスの中に定義されている、プレイヤを表しているplayer というクラスがあり、player の中で定義されている getPos というコマンドを呼び出すと、その位置が取得できるというものです。playerPosという変数は、x、y、zという3つの座標値が含まれています。これを使って、8行目でプレイヤの場所からy-1 だけずれた場所に、ダイヤモンドのブロックを置くというコマンドを実行しています。Minecraft でいう座標軸の向きは、x方向、z方向が平面、y方向が高さ方向になります。そのため、y-1 にブロックを置くということはプレイヤの下にブロックが置かれます。



$ python helloworld.py


さあ、実際にコマンドラインで打ち込んでみましょう。コマンドを打ち込む前にはかならずゲームを開始した状態で、コマンドプロンプトで、該当するファイルを指定して pythonを起動してください。コマンドが実行されるとまち状態になるはずですので、その時にゲームに戻っていただければコマンドが実行されます。


Hello world


Hello world と表示されているのがわかると思います。


Diamonds


また、したにブロックとしてダイヤモンドのブロックが埋め込まれています。これが確認できれば成功です。


2. まとめ


今回は、マインクラフトでpythonプログラミングをするための最初のステップについて紹介しました。Pythonをインストールしていないと最後のところは試せないので、本当はpythonをインストールするところを書くべきかもしれませんが、他で色々書かれているものを参考にインストールしてみていただければと思います。

次回以降でもう少し実験的に試してみる予定です。お楽しみに。




東京都文京区小石川と本駒込で小学生、中学生、高校生を対象としたプログラミング&ロボット教室を開校しています。コース概要のページで説明しております。創造性や協調性などこれからの時代に必要となる素養を育てるコースです。ご興味ありましたらぜひお問い合わせください。


お問い合わせはこちら!


問い合わせをする

INFORMATION無料体験会・ワークショップ・ご案内

     

春の無料体験会

無料体験会を実施します。ぜひ一度ご体験ください!

プログラミング&ロボット教室 授業運営パッケージ

弊社で実施している授業を取り入れたい方々向けに提供しています。