OmniGRPC

OmniGRPCは、Unreal Engine 5のBlueprintからgRPCサーバーと通信するためのプラグインです。基本的な通信機能はBlueprintだけで組み立てられるため、C++のコードを書く必要はありません。

通信内容が書かれた.protoファイルをContent Browserへ取り込むと、Blueprintで使用できるStruct、Enum、Service Assetが自動生成されます。生成されたデータをノードへ接続することで、サーバーの機能を呼び出せます。

製品名の「Omni」には、1つの通信処理を複数のプラットフォームで使えるようにするという意味を込めています。Full Editionでは、Windows、Linux、macOS、Android、iOSで、同じ.proto、生成アセット、Blueprintを使えることがOmniGRPC最大の特徴です。

最初に確認したいこと読むページ
Blueprintから実際に通信してみたいクイックスタートでGUIサーバーへLoginを実行
手元の.protoを使いたいセットアップでアセット生成とMethodの選択を確認
実装中にノードの使い方を調べたいBlueprint APIリファレンスで入出力とイベントを確認

エディション(Free Edition と Full Edition)

OmniGRPCには、無料のFree Editionと、すべての機能を利用できるFull Editionがあります。どちらのエディションも、Blueprintだけで通信を作れる点や、.protoの取り込みからUnary RPCの実行までの手順は共通です。

Free Editionは、Windows(Win64)でOmniGRPCを試し、Unary RPCを本番品質で利用するためのエディションです。Full Editionでは、Streaming RPC(Server Streaming/Client Streaming/Bidi Streaming)、Server Reflectionによるインポート、Health Checkが利用できるほか、Windowsに加えてLinux、macOS、Android、iOSでも同じBlueprintを動かせます。

機能Free EditionFull Edition
.protoの取り込みとStruct/Enum/Service Assetの生成○○
Unary RPC○○
TLS/mTLSによる暗号化、アクセストークン、Metadata○○
タイムアウト、キャンセル、自動再試行、接続状態の確認○○
Server Streaming/Client Streaming/Bidi Streaming−○
Server Reflectionによるインポート−○
Health Check−○
対応プラットフォームWindowsWindows/Linux/macOS/Android/iOS

Free Editionは無料で提供しているエディションであり、基本的にテクニカルサポートの対象外です。サポートが必要な場合は、Full Editionをご利用ください。

Free Editionで作ったプロジェクトは、Full Editionへそのまま移行できます。生成されるStruct、Enum、Service Asset、Blueprintノードの名前は両エディションで共通のため、アセットやBlueprintを書き換える必要はありません。プラグインをFull Editionへ置き換えるだけで、Streaming RPCや新しいプラットフォームを利用できます。

このドキュメントでは、Full Editionでだけ使用できる機能に、次のマークを付けています。Full Edition のみ マークがない機能は、Free Editionでも使用できます。

OmniGRPCの基本的な処理の流れを示します。.protoから生成したアセットとBlueprintは、対応するすべてのプラットフォームで共通して利用できます。

    flowchart TB
	  subgraph Build["1. アセットを生成"]
	    Proto[".protoファイル"] --> Import["Content Browserへインポート"]
	    Import --> Assets["Struct / Enum / Service Asset"]
	  end
	
	  subgraph Logic["2. Blueprintで通信"]
	    Config["Channelを設定<br/>Host / Port / TLS"] --> Call["Call gRPCノード"]
	    Assets --> Request["Requestを作成"]
	    Request --> Call
	    Call --> Result["Response / Statusを処理"]
	  end
	
	  Call <-->|gRPC通信| Server["gRPC Server"]
	  Result --> Shared["同じアセットとBlueprintを共通利用"]
	
	  subgraph Platforms["3. 対応プラットフォーム"]
	    Shared --> Supported["Windows / Linux / macOS(Apple Silicon / Intel)<br/>Android / iOS"]
	  end

基本用語

言葉このドキュメントでの意味
.protoサーバーへ送るデータ、受け取るデータ、呼び出せる機能が書かれたファイル
Serviceサーバーが提供する機能をまとめたもの
MethodLoginやGetUserなど、Serviceに含まれる1つの機能
Requestサーバーへ送るデータ
Responseサーバーから受け取るデータ
Channelサーバーとの接続を管理するオブジェクト
RPCサーバーのMethodを呼び出す通信
Streamingデータを複数回、連続して送信または受信する通信

「Omni」が表すマルチプラットフォーム対応

Full Edition のみ

5つのプラットフォームすべてへの対応は、Full Editionで利用できる機能です。Free Editionの対応プラットフォームはWindows(Win64)のみです。

OmniGRPC(Full Edition)では、プラットフォームごとに通信処理を作り直す必要がありません。たとえば、Windows向けに作ったService AssetとBlueprintを、基本的にそのままAndroidやiOSでも利用できます。

区分対応プラットフォーム
PCWindows(Win64)、Linux、macOS
モバイルAndroid、iOS
macOSの対象CPUApple Silicon(arm64)、Intel(x86_64)
共通で使えるもの.proto、生成アセット、通信Blueprint

AndroidとiOSでOmniGRPCを利用するには、Androidのネットワーク権限やiOSの通信設定など、各OSに必要なネットワーク機能をプロジェクト設定で有効にしてください。設定後は、呼び出す機能の選択、送信データの作成、受信データの処理に、Windows、Linux、macOSと同じBlueprintを使用できます。

OmniGRPCでできること

  • .protoから必要なアセットを自動生成。 Struct、Enum、Service Assetを手作業で用意する必要はありません。
  • Unary RPCに対応。 データを1回送り、結果を1回受け取る、もっとも基本的な通信方法です。
  • 安全な通信に対応。 TLS/mTLSによる暗号化や、アクセストークンを使った認証を設定できます。
  • 安定した通信を支援。 タイムアウト、キャンセル、自動再試行、接続状態の確認などを利用できます。
  • 3種類のStreaming RPCに対応。 Full Edition のみ データを連続して送信または受信する処理が作れます。
  • 5つのプラットフォームに対応。 Full Edition のみ Windows、Linux、macOS(Apple Silicon/Intel)、Android、iOSで動作します。
  • 同じBlueprintを共通利用。 Full Edition のみ プラットフォームごとに通信処理を書き分ける作業を減らせます。

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

OmniGRPCは、ゲームやシミュレーターから既存のgRPCサーバーへ接続するプロジェクトに適しています。ログイン、ユーザーデータ、クラウド保存、AIサービス、機器の遠隔操作などをUnreal Engineから利用できます。

特に、Blueprintを中心に開発しているチームに適しています。サーバー側の.protoを共有しておけば、通信するデータの項目が変わったときもアセットを再生成して更新できます。

基本的な使用手順

  1. プラグインを導入してOmniGRPCを有効にします。
  2. .protoを取り込み、Blueprint用のアセットを生成します。
  3. サーバーへ送るデータをStructに設定します。
  4. 接続先のHostとPortを指定してChannelを作成します。
  5. Call gRPCノードのServiceを設定し、DetailsのMethod Nameから呼び出す機能を選びます。
  6. 成功時のデータと、失敗時のエラーを処理します。
  7. 通信が不要になったらChannelを閉じます。Full EditionのStreaming RPCでは、先にStreamを閉じてからChannelを閉じます。

最短手順はクイックスタートを、導入方法と生成アセットの説明はセットアップを参照してください。

ドキュメントの読み方

目的ページ
Login RPCの実行手順を確認するクイックスタート
プラグインの導入とアセット生成を確認するセットアップとアセット生成
目的に応じた実装方法を確認するユースケース別ガイド
ノード、クラス、メソッド、型を調べるBlueprint APIリファレンス
型変換、安全な通信、自動再試行を確認するデータ型と運用設定

対応環境

項目対応範囲
Unreal Engine5.6 / 5.7 / 5.8
WindowsWin64
Linuxx86-64(Full Edition)
macOSApple Silicon(arm64)、Intel Mac(x86_64)(Full Edition)
MobileAndroid / iOS(Full Edition)
RPCUnary / Server Streaming / Client Streaming / Bidi Streaming

Free Editionで使用できるRPCはUnaryのみ、対応プラットフォームはWindows(Win64)のみです。Streaming RPCと、Linux/macOS/Android/iOSへの対応はFull Editionの機能です。

利用しているUnreal Engineのバージョンと同じFabパッケージを選択してください。

Blueprintによる実装

通常の利用では、gRPC用のC++コードを生成したり、ゲームのC++モジュールへ追加したりする必要はありません。.protoを取り込む作業から、接続、送信、受信、エラー処理までBlueprintで行えます。

内部では正式なgRPCライブラリを使用しています。Blueprintから扱いやすい形にしているため、gRPCの細かな内部処理を知らなくても利用できます。

現在の主な制約

  • Blueprintで扱える数値の範囲により、uint64/fixed64の大きな値(2^63以上)は保持できません。
  • 生成Struct内のEnumフィールドはByteで保持されるため、値の範囲は0〜255です。
  • google.protobuf.Anyなど、一部の特殊な型にはBlueprint専用の変換がありません。
  • Client StreamingとBidi Streamingでは、開始ノードの戻り値を変数へ保存してから、Send MessageとClose Sendを使います。
  • Insecure接続では通信が暗号化されません。本番環境ではTLSを使用してください。

詳細はデータ型と運用設定にまとめています。

販売とライセンス

OmniGRPCはFabで配布しています。無料のFree Editionと、すべての機能を利用できるFull Editionがあります。利用する目的に合うエディションを選択してください。

本製品は、Fabで購入・取得した際に適用されるEpic Gamesのライセンス条件に基づいてご利用いただけます。利用範囲や再配布条件については、Fabの商品ページとEpic Gamesが定める最新のライセンス条件をご確認ください。

プラグインに含まれるgRPC、protobuf、BoringSSLなどには、それぞれのライセンスが適用されます。関連するライセンス文書はFab配布パッケージに同梱します。