Godotでフィジカルコンピューティングする冴えたやり方(概要編)―ゲームエンジンと現実世界をつなぎたい―

冴えたやり方(諸説あり)

Godotアドベントカレンダー2025の17日目の記事です、ちょっと遅刻...!

qiita.com

(一般的なGodotユーザー向けの内容ではないですが、ニッチな記事こそWebに書く意義があるということにします)

ゲームエンジンから現実世界に物理的に干渉したい

さて、たとえばインスタレーションなどやる時に、映像と現実世界をインタラクティブに繋ぎたいシーンがあります。 インタラクティブな映像作品というと、GodotやUnityなどのゲームエンジンを使うのが良さそうですが、現実世界に物理的に干渉したいとなると敷居が上がります。

ハードルになる要素は3つ

①現実世界に置くセンサーやボタン、モーターなどのアクチュエータをどうするか? ②それらのコントローラーをどうするか? ③それらとどうやって通信するか?

①はやりたい事によって無限の組み合わせがあるので、まずは②と③の話です。

ホントは技術的なところまで書きたかったんですが、年末進行でぜんっぜん間に合わなかったので、特に普段使いしている方法3種類を、用途別に簡単に紹介します。 ちなみに、もちろんGodotアドカレなのでGodotを使うときの話です。

技術選定の基準

よく使う選定基準はこのあたり。これもホントはYES/NOグラフみたいなものを用意したかったんですが...

  • 有線/無線
  • 扱う対象が5V以下/それ以上
  • 数十センチ/それ以上
  • 接続数が1対1/それ以上

無線でやりたい

  • コントローラー:ESP32
  • 通信方式:MQTT
  • 接続数:多接続

こういう用途で手軽に無線となったら、よほど省電力とかパフォーマンスの要求がない限り、ESP32やそれを内蔵した製品(M5Stackなど)が第一候補になります。 少なくともプロトタイプはM5Stackシリーズを使うのが鉄板

そして通信方式は、使い勝手的にも周辺ツールの充実度的にも、今までも何度か話題にしているMQTTがベストだと思います。 Godot側は「MQTT Client」アセットを使います、使い方は以下の記事で。

www.creativity-ape.com

有線&5V以下

  • コントローラー:W55RP20-EVB-Pico(Raspberry Pi Pico互換)+PoEモジュール
  • 通信方式:MQTT
  • 接続数:多接続

W55RP20-EVB-Picoは、イーサネット通信モジュール付きのRaspberry pi pico互換機です。 有線LANを扱えるマイコンの中で最安級じゃないでしょうか。

akizukidenshi.com

そしてPoEはLANケーブル一本で通信も電源供給もできる夢の技術です。 とくにインスタレーションでは、広い空間にデバイスを散りばめたいことが多いと思うので、相性が良いと思います。

さらに、専用のPoEモジュールを使えば、簡単に5V電源を取り出せるので、電源が5Vのセンサーやモーターであればまとめて電源供給できます。

akizukidenshi.com

有線&5Vを超える→W55RP20-EVB-Pico+PoEモジュール+DCDCコンバータ&MQTT

5Vを超える電源が必要な場合は、PoEモジュールの1次側から48Vを取り出してDCDCコンバータで変換してあげれば良いと思います。まだやったことがないので、実験したら追記します。

有線&短距離

  • コントローラー:一般的なマイコン全般(UARTが使えればなんでも)
  • 通信方式:UARTシリアル通信
  • 接続数:1対1

無線/有線LANを使う方式は、拡張性や手軽さという点では優れていますが、最低限IPネットワークに参加できるスペックのマイコンや、アクセスポイントやスイッチングハブなどのハードが必要になります。 1対1の通信、かつ短距離であれば、大抵のマイコンにはだいたい搭載されているUARTシリアル通信を使うのがミニマムだと思います。 Godot側でシリアル通信するには、GdSerialというアセットがかなり良い感じです。

godotengine.org

あとはこれをベースに、GodotにFirmataプロトコル(ArduinoをリモートI/Oみたいに使えるやつ)を移植してくれる猛者が現れることを密かに期待してます。

こんど時間のある時にもう少し整理追記しようと思いますが、ひとまずこれにて!