UniversalSerial

UniversalSerialは、Unreal EngineでArduinoやマイコンとのシリアル通信を行うためのプラグインです。Blueprint(ビジュアルスクリプト)だけでハードウェアとの送受信を構成でき、C++のコードを書く必要はありません。

UniversalSerial最大の特徴は、Windows、Mac、Linuxの各OSが持つシリアル通信用APIを直接利用していることです。プラグインの導入だけで動作し、追加のドライバーや外部ライブラリのインストールは不要です。

受信処理はバックグラウンドスレッドで行われるため、ゲームのメインループに負荷をかけません。受信したデータはイベントで受け取ります。

最初に確認したいこと読むページ
まず1本、通信を完走させたいクイックスタートでArduinoとの送受信を完走する
導入手順と購入前の動作確認を知りたいセットアップで導入とTesterアプリの利用方法を確認
データ形式やポートの選び方を知りたいユースケースで目的別の選択表を確認
ノードの入出力とイベントを調べたいBlueprint APIリファレンスで公開APIを確認

基本用語

用語説明
シリアルポート1ビットずつ順番にデータをやり取りする通信口。USB接続のマイコンなどが該当する
ポート名OSがシリアルポートを識別する名前。WindowsはCOM3、Mac/Linuxは/dev/以下
ボーレート1秒あたりの通信速度。対向デバイスと同じ値を指定する
SerialPortManagerシリアル通信全体を管理するオブジェクト。InitializeとOpenで通信を開始する

UniversalSerialの構成を示します。SerialPortManagerがポートの設定・送受信・イベントの通知を担当し、OSのAPIを経由してデバイスと通信します。

    flowchart LR
	  BP["Blueprint / C++"] --> M["SerialPortManager"]
	  M --> OS["OSのシリアルAPI"]
	  OS --> DEV["Arduino / マイコン"]

UniversalSerialでできること

  • 利用可能ポートの自動検出(Get Available Serial Ports)
  • 通信可能なシリアルポートの自動特定(v1.3.0以降。候補ポートを順に試し、最初に通信可能なポート名を返却)
  • シリアル設定のカスタマイズ(ポート名、ボーレート、データビット、パリティ、ストップビット、フロー制御、書き込みタイムアウト、受信バッファサイズ、DTR、RTS)
  • 3種類のデータ送受信方法(バイト配列、UTF-8エンコードされた文字列、16進数UTF-8エンコード文字列)
  • 文字列送受信のための区切り文字設定(送信時に区切り文字を自動追加、受信時に区切り文字で文字列を復元)
  • DTR/RTS信号の実行中の切り替え
  • バックグラウンドスレッドでの受信処理(ゲームスレッドに重い負荷をかけない)
  • C++とBlueprintの両方で全機能を利用可能

このようなプロジェクトにおすすめします

  • Arduinoやマイコンと連携するIoTプロジェクト、インタラクティブアート
  • ゲーム内の演出を現実世界のデバイス(センサー、ボタン、モーターなど)と連動させたいプロジェクト
  • Windows、Mac、Linuxで同じBlueprint構成のまま動かしたいプロジェクト
  • Blueprintを中心に開発を進めたいプロジェクト

基本的な使用手順

  1. プラグインを導入してUniversalSerialを有効にします。
  2. Serial Port Managerを作成し、変数に保存します。
  3. Connected・Data Receivedなどのイベントをバインドします。
  4. Initializeでポート名と通信設定を指定し、Openで通信を開始します。
  5. 終了時はCloseを呼び出します。

具体的な手順はクイックスタートで説明します。

対応環境

Unreal Engine対応バージョン

UniversalSerialのプラグインバージョンごとの対応状況は以下のとおりです。

プラグインバージョン対応UEバージョン
v1.3.0UE5.5 - 5.8

対応プラットフォーム

区分プラットフォーム
ターゲットプラットフォームWindows, Mac, Linux
開発プラットフォームWindows, Mac, Linux

動作確認環境

プラットフォーム検証したOS
WindowsWindows 11 24H2
MacmacOS Sequoia 15.5
LinuxUbuntu 24.04 LTS

現在の主な制約

  • 対応プラットフォームはWindows、Mac、Linuxです。AndroidとiOSには対応していません。
  • プラグインは各OSのAPIを直接使用しています。そのため、古いオペレーティングシステムでは予期しない動作が発生する可能性があります。購入前にTesterアプリで動作を確認することをお勧めします。
  • ObjectDelivererとの連携プラグイン(UniversalSerialOD)は現在提供を一時中止しています。詳細はユースケースを参照してください。
  • 詳細な制約と注意点はデータ形式と運用を参照してください。

販売とライセンス

UniversalSerialはFabで販売しています。本製品は、Fabで購入・取得した際に適用されるEpic Gamesのライセンス条件に基づいてご利用いただけます。GitHub版は提供していません。

購入前にシリアル通信の動作を確認できるTesterアプリをダウンロードページで公開しています。詳細はセットアップを参照してください。

レビューをお寄せください

このプラグインをご利用いただきありがとうございます。Epic Games Fabストアでのレビューは、今後の開発の大きな励みになります。ぜひご感想をお聞かせください!

Fabストアでレビューを書く