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 スポットライト : 自動運転車のテスト用のハイブリッド リアルタイム シミュレーター
基本的な使用手順
- プラグインを導入してObjectDelivererを有効にします。
Create Object Deliverer Managerでマネージャーを作成し、変数に保存します。Connected・ReceiveDataなどのイベントをバインドします。StartにProtocolとPacketRule(必要に応じてDeliveryBox)を渡して通信を開始します。- 終了時は
Closeを呼び出します。
具体的な手順はクイックスタートで説明します。
対応環境
Unreal Engine対応バージョン
ObjectDelivererのプラグインバージョンごとの対応状況は以下のとおりです。
| プラグインバージョン | 対応UEバージョン |
|---|---|
| v1.9.1 | UE5.5 - 5.8 |
| v1.9.0 | UE5.5 - 5.8 |
| v1.8.0 | UE5.4 - 5.7 |
| v1.7.0 | UE5.4 - 5.6 |
| v1.6.1 | UE5.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に関連する項目を確認できます。