PythonでMinecraft bot を作るために
動機: PythonでMinecraftのbot作りたい、機械学習とかも使ってごにょごにょしてみたい
結論: 良さげななライブラリが現在開発途中
RikerBot https://github.com/SpockBotMC/RikerBot
以下RikerBotのReadmeより
If you want to build a modern Minecraft bot using only open source technology (not modding the Mojang client, Malmo-style), your only option today is Mineflayer. Mineflayer and all of PrismarineJS are excellent projects, but maybe you're not a NodeJS programmer. RikerBot brings much needed diversity to the Minecraft bot ecosystem.
ここから下は、上の結論に至るまでのごにょごにょ
普通にMinecraftで機械学習するシステムは存在する
- MineRL: minecraftのgym環境(malmo系)
https://github.com/minerllabs/minerl - Craftassist: cuberiteサーバーのプラグインとして
https://github.com/facebookresearch/craftassist
前者こそ求めているものっぽいし、はちゃめちゃ便利なのだけど、そこで学習させたものを外部のサーバーで動かすのが苦労しそうだし、そこまで自由度が高いわけではない
(チャット使ったりもしたいし)
後者は機能てきには前者より多くのことやってそう
だけど、そもそも中身をいじれそうにない(技術力が相当いる)
他にも
- mcpipy: モッドが必要なやつ、bot作成はできない
pythonからブロックを置いたりチャットを打ったりできる
https://github.com/brooksc/mcpipy - mcrcon: マイクラのコマンドが打てるやつ、実はコマンドだけでもかなり色々できる、データの取得とか(コマンドについて: https://minecraft.fandom.com/ja/wiki/コマンド)
https://github.com/Tiiffi/mcrcon
というかそもそも、マイクラのプロトコルって公開されてる
つまり、マイクラはクライアントから自作可能
そして、公式以外のクライアントリストもあった
ただしPython関連のクライアントは現在リストにあるものだと、バグを残したまま開発終了していたり...
基礎部分だけだったり...
それはそれとして、なんとJavaScriptでマイクラのすべてを行えるというプロジェクトを見つける。しかも開発が活発ですでに、はちゃめちゃ高性能
これのPython版がないかと調べたとろ以下のissueを見つける
ソケット通信等を用いて、prismarineを無理やりPythonと連携させるか
もしくは以下のライブラリが開発中との記述
冒頭の結論に戻る
ちなみに、RikerBotの前に開発されていたSpockBotは結構機能が実装されていたっぽいが、放置された挙げ句、依存先のライブラリの更新とかの関係で絶対に修正できないバグで使えなくなってるっぽい