2019年3月23日、株式会社ライカーズアカデミアの成果発表会にてMiotcraftを発表してきました。

現実世界からMinecraftを操作、またMinecraftの世界から現実世界に影響を与えることができます。
今回は、手元のボタンを押すとTNT爆弾が爆発したり、指定の場所に行くと現実世界のモーターが回るというものを発表しました。

発表の様子

発表用のアトラクションを小学生が作り、主なプレゼンとコーディングは大学生が担当しています。

仕組み

問題解決型基板SchooMyを使用しています。
回路設計をせずに色々なセンサーが使えるので、プログラミングに集中できます。
またArduino互換なので、やりたいことは検索すると大抵出てきます。

とはいえ、Minecraftと繋げている事例はなかったので、2つを組み合わせました。

Python⇔SchooMy

まずはSchooMyにはFirmataというPCとの通信プロトコルが書かれたプログラムを書き込みます。
PC側にはPythonを入れ、PyFirmataというライブラリを使って基板の中のFirmataと通信をします。

下記のサイトを参考にしました。
(やっていくうちに、実際に入れたライブラリはPyFirmataになり、最終的にはpyMataになりました。)

Python⇔Minecraft

Pythonを使うためのMODを入れて、Minecraftプログラミング環境を作ります。
MODを使うので、JAVA版Minecraftしか対応していません。

PythonでMinecraftプログラミングの例は書籍も出てますし、丁寧に解説されているサイトも多いですね。
私は下記を参考にしました。

Minecraftで楽しく学べる Pythonプログラミング

新品価格
¥2,678から
(2019/6/19 06:16時点)

Minecraft⇔SchooMy

あとはこれらをマージさせるだけです。
SchooMyのOUTAにスイッチコネクタンをつないで、下記のプログラムを実行させると、Minecraft上に「Hallo World!」が表示されます。

import mcpi.minecraft as minecraft
import pyfirmata

mc = minecraft.Minecraft()

board = pyfirmata.Arduino("COM3")
button = board.get_pin('d:5:i')
it = pyfirmata.util.Iterator(board)
it.start()
button.enable_reporting()
while True:
    if str(button.read()) == 'False':
        mc.postToChat("Hello world!")
    board.pass_time(1)

あとはMinecraftの世界からLEDを光らせるなりモーター回すなり、動画のように現実世界からTNT爆発させるなり、好きにいじってください!

今後の展望

SchooMyを使ったことがないという方やPythonの開発環境構築をしたことがないという方の為に丁寧にHowToをまとめた記事を書きたいと思っています。
現在、Pythonでプログラムを走らせてからMinecraftの画面に切り替えて、、とやっているので、Minecraftから直接Pythonプログラムを叩く方法も調べないといけないので、まだしばらくお待ちください。

あとそもそもこれ、「Miotcraft」のプロジェクトなので、IoT化させないとゴールではないわけです。
IoT謳っておきながら今めっちゃ有線ですからね!
あかん!
SchooMyのIoT版は出ているので、それを使ってTNTを爆発させるのが当面やっていくことかなーって思ってます。

引き続き当ブログへの応援をよろしくお願いいたします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です