ObjectDeliverer

ObjectDelivererは、Unreal Engineプロジェクトでのデータ通信を簡単にするためのライブラリです。TCP/IP、UDP、WebSocket、共有メモリ、ファイルへの書き込みと読み込みなど、複数の通信方法に対応しています。C++とBlueprintの両方で全機能を利用できます。

ObjectDeliverer最大の特徴は、通信方法を切り替えるときもコードをほとんど変更しなくてよいことです。Startに渡すプロトコルを差し替えるだけで、送受信の処理はそのまま使えます。たとえばTCP/IPで組んだ通信をUDPへ切り替える変更は1ノードで完了します。プロトタイプ段階で複数の通信方式を比較するときに特に有効です。

通信処理は非同期で行われるため、メインスレッドをブロックしません。受信したデータはイベントで受け取ります。

最初に確認したいこと読むページ
まず1本、通信を完走させたいクイックスタートでTesterアプリとTCP/IP通信する
プラグインの導入手順と購入前の動作確認を知りたいセットアップで導入とサンプル・Testerアプリの利用方法を確認
どのプロトコルを選べばよいか知りたいユースケースで目的別の選択表を確認
ノードの入出力とイベントを調べたいBlueprint APIリファレンスで公開APIを確認

基本用語

用語説明
ObjectDelivererManager通信全体を管理するオブジェクト。Startで通信を開始する
Protocol通信方式。TCP/IP・UDP・WebSocket・共有メモリ・ファイルなどから選択する
PacketRuleパケット分割ルール。1メッセージの境界をどう扱うかを決める
DeliveryBox送受信データの変換方法。バイト配列以外にJSONやUTF-8文字列を選べる

ObjectDelivererの構成を示します。ObjectDelivererManagerがProtocol・PacketRule・DeliveryBoxを組み合わせて通信します。

    flowchart LR
	  BP["Blueprint / C++"] --> M["ObjectDelivererManager"]
	  M --> P["Protocol(通信方式)"]
	  M --> R["PacketRule(分割ルール)"]
	  M --> D["DeliveryBox(データ変換)"]
	  P --> NET["相手側アプリケーション"]

ObjectDelivererでできること

  • 複数の通信プロトコルのサポート(TCP/IP、TCP/IP+TLS、UDP、WebSocket、共有メモリ、ファイル、リフレクション)
  • プロトコル間の簡単な切り替え
  • パケット分割ルールの選択(FixedLength、Terminate、SizeBody、Nodivision)
  • 送受信データの自動変換(バイト配列、UTF-8文字列、JSON)
  • 非同期通信(メインスレッドをブロックしない通信)
  • C++とBlueprintの両方で全機能を利用可能
  • 独自のProtocol・PacketRule・DeliveryBoxの自作にも対応

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

  • プロトタイプ段階で複数の通信方式を試して比較したいプロジェクト
  • Unreal Engineと外部アプリケーション(可視化ツール、シミュレーター、計測プログラムなど)の間でデータを送受信したいプロジェクト
  • 同じプロトコル設定のまま、Windows、Mac、Linux、iOS、Androidで動かしたいプロジェクト
  • Blueprintを中心に開発を進めたいプロジェクト

Epic Games公式スポットライトで紹介されました

ObjectDelivererがEpic Gamesの公式スポットライト記事で紹介されました。自動運転車両テスト用シミュレーターにおいて、シームレスな通信の実現に重要な役割を果たしています。

シミュレーターの開発における次の段階では、Unreal Engine と物理的な自動車の間で双方向に情報を送る方法を考案する必要がありました。そのために、Espineira 氏は ObjectDeliverer プラグインを使用しました。これによってサーバーへとつながるブループリントが提供され、データの送受信が可能になります。

Epic Games スポットライト : 自動運転車のテスト用のハイブリッド リアルタイム シミュレーター

基本的な使用手順

  1. プラグインを導入してObjectDelivererを有効にします。
  2. Create Object Deliverer Managerでマネージャーを作成し、変数に保存します。
  3. Connected・ReceiveDataなどのイベントをバインドします。
  4. StartにProtocolとPacketRule(必要に応じてDeliveryBox)を渡して通信を開始します。
  5. 終了時はCloseを呼び出します。

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

対応環境

Unreal Engine対応バージョン

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

プラグインバージョン対応UEバージョン
v1.9.1UE5.5 - 5.8
v1.9.0UE5.5 - 5.8
v1.8.0UE5.4 - 5.7
v1.7.0UE5.4 - 5.6
v1.6.1UE5.4 - 5.6

対応プラットフォーム

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

現在の主な制約

  • 共有メモリのProtocolはWindowsでのみ使用できます。
  • UDPにはパケット再送機能がないため、ネットワーク状況によってはデータが届かないことがあります。
  • TLS(v1.9.0以降)・WebSocket(v1.7.0以降)など、バージョンによって追加された機能があります。使用中のプラグインバージョンを確認してください。
  • 詳細な制約と注意点はデータ形式と運用を参照してください。

販売とライセンス

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

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

よくある質問はFAQにまとめています。TLSの証明書やプロトコル選択など、ObjectDelivererに関連する項目を確認できます。

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

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

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