この記事は2分で読めます。
色々あるので一部ぼやかして書いてます。
はじめに
AWS の Lambda と API Gateway を使って Minecraft と外部サービスを連携させてごにょごにょ色んなことをやってみた話を簡単にまとめました。
Minecraft は全世界でもっともプレイヤー数の多い人気ゲームですが、アプリ自体は旧世代のアプリケーションなので現代のサービスと連携して有効利用しようと思うとそれなりに工夫が必要になります。Steam や Discord との連携機能も無ければ、Web からのアクセスもできなければ、サーバコンソールからでも Minecraft 専用のコマンドが必要になるという勝手の悪いゲームです。ついでに公式のサーバにはヘルスチェックやトラップも備わっていないので Minecraft サーバは壊れたところで自動では何もできません。
ということで何とかします。
やったこと
Lambda と API Gateway を使ってバニラの Minecraft を外部サービスと連携させます。プラグインも Mod も要らないので公式のバニラサーバでも実装できます。
外部サービスからコマンド発行したい場合は API Gateway を介して Lambda を起動させればよいです。逆にバニラの Minecraft サーバからはログ監視しかすることがないので、検知したログを使って Lambda を起動させます。
あら簡単、これで Minecraft を API 化して操作したり、ワールド内の見える化ができます。
とりあえず双方向にサーバコンソール以外のインタフェースを提供してあげただけですが、サーバレスなのでサーバコンソールに馴染みの無い人でもメンテナンスできて良いね、というだけです。
これだけだとほとんど意味は無いんですが、これで某クラウドでやってるような Web ベースの管理者機能を作ったりアプリを充実させれば、マイクラとホームページを連動した遊びができたり、自前のマイクラホスティングサービスを提供したりとかもできるんでしょうね。
まとめ
ゲームとかアプリって使う側からはインフラの事なんて何も見えないから、インフラの何が大変なのか全く理解してもらえないけど安定稼働させようとすると実は大変なんですよね。でも大変なものを大変なまま放っておくとずっと大変な環境から抜け出せないし、新しいことにチャレンジする時間もできないから、こういうところを少しずつ自動化したりシステム化して息を抜く努力をしてる訳ですね。
これでワンオペのオペレータでも簡単に四六時中マインクラフトと添い寝できますね(?)。