Iris では、Unreal Engine (UE) のレプリケーション システムにいくつかの新しい概念が導入されています。 このページでは、Iris レプリケーション システムの構成と操作について言及する際に、頻繁に使用される用語について説明します。
用語集
- Actor Replication Bridge (アクタ レプリケーション ブリッジ)
アクタ レプリケーション ブリッジは、レプリケーション ブリッジ インターフェースを実装します。 アクタ レプリケーション ブリッジは、アクタとアクタ コンポーネントからレプリケーション プロトコルとレプリケーション インスタンス プロトコルを構築します。 また、プロパティからステート データをポーリングし、必要な従来のコールバックを発行するコードも実装します。
- Changemask (変更マスク)
変更マスクは、レプリケートされたデータのダーティネスを追跡するために使用されるビット配列です。 Iris は次の 2 つの方法で変更マスクを使用します。
すべてのレプリケーション ステートは、変更されたメンバーのローカルでキャッシュフレンドリーな追跡のために使用されるインライン ストレージを備えています。
レプリケーション システムは、レプリケーション プロトコルのすべてのレプリケーション ステートに対して、結合された変更マスクを保持します。
- Data Streams (データ ストリーム)
Iris ではデータ ストリームは、汎用レプリケーション システムにおけるデータ チャネルに相当します。 データ ストリームはデータのシリアル化を担います。 また、データ ストリームを使用することで、さまざまな種類のデータに対して特定のデータ デリバリの保証を実装することもできます。
- Fast Array Replication Fragment (高速配列レプリケーション フラグメント)
高速配列レプリケーション フラグメントは、高速配列レプリケーション ステートの所有オブジェクトです。 これは、高速配列用のレプリケーション フラグメントの特殊な実装です。
- Net Bit Stream Reader (ネット ビット ストリーム リーダー)
ネット ビット ストリーム リーダーは、メモリ バッファからのビットの逆シリアル化を効率的に行います。
- Net Blob (ネット ブロブ)
ネット ブロブは、オブジェクトでレプリケートできる要素の基本クラスです。 現在のところ、Iris 自身の外部でこれを利用するものはないものの、デバッグ データや RPC など、ほとんどのタイプのデータやイベントを送信するのに使うことができます。
- Net Ref Handle (ネット参照ハンドル)
ネット参照ハンドラは、NetGUID (ネットワークグローバル一意識別子) に似た概念で、サーバーとクライアントの両方におけるオブジェクトの一意の識別子です。 ネット ハンドルは、以下のオブジェクトの参照に使用されます。
静的にアドレス指定可能なオブジェクト
レプリケート済みオブジェクト
- Net Ref Handle Manager (ネット参照ハンドル マネージャー)
ネット参照ハンドル マネージャーは、すべてのネット オブジェクトに内部 ID とステート ストレージを割り当てます。
- Net RPC (ネット RPC)
標準 RPC を処理するために特別に実装されたネット ブロブ。
- Net Token (ネット トークン)
ネット トークンは、必ずしもネットワークに直接関係しないが、サーバーとクライアント間で通信できるようにする必要のあるさまざまなタイプのデータのためのネットワーク オブジェクトです。
ネット トークンとして表される要素の例:
文字列
データ ブロブ
パッケージ
トークン データをクライアントに伝達するには、ネット トークン データ ストリームを明示的に使用するか、起動時にロードするか、シリアライズ時にエクスポートします。 リモート側のすべてのトークンのステータスをネット トークン マネージャーにクエリすることができます。
- Object Reference Cache (オブジェクト参照キャッシュ)
オブジェクト参照キャッシュは、レプリケートされ、静的に命名された
UObjectへの参照を格納します。 これは、NetGUID キャッシュおよびクライアント パッケージ マップと同様に機能します。- Property Replication Fragment (プロパティ レプリケーション フラグメント)
プロパティ レプリケーション フラグメントは、プロパティ レプリケーション ステートの所有オブジェクトです。
- Property Replication State (プロパティのレプリケーション ステート)
プロパティ レプリケーション ステートは、現在の反射システムとやり取りするために使用される動的なレプリケーション ステートです。
- Replication Record (レプリケーション レコード)
レプリケーション レコードは、レプリケーション ライターからの実行中のデータのリストです。 レプリケーション ライターの重要な点は、すべての実行中のデータを追跡することです。 これは、データが失われたり配信されたりした場合に、適切かつ効率的に対処できるように、行われます。 レプリケーション レコードは、デリバリ通知を保留している実行中のデータを含むすべてのオブジェクトのリンクリストを保持します。
- Replication State
レプリケーション ステートは、ネットワーク上でレプリケートまたは送信される必要のあるデータを含む構造体です。
- Replication State Descriptor Builder (レプリケーション ステート記述子ビルダー)
レプリケーション ステート記述子ビルダーは、反射データに基づいて、サポートされるすべての型のレプリケーション ステート記述子を作成します。
- Replication System Internal (レプリケーション システム内部)
レプリケーション システム内部はレプリケーション システムの内部インターフェースで、Iris の内部コードにのみ公開されます。
- Typed Replication State (型付きレプリケーション ステート)
型付きレプリケーション ステートは、すべてのメンバーと内部メンバーにアクセサを持つ構造体に基づくレプリケーション ステートで、各メンバーのダーティネスを追跡するビット フィールドとともに、所有するネット オブジェクトの ID を格納します。
- ネット オブジェクト
ネット オブジェクトとは、ゲームプレイ コードでインスタンス化されたレプリケート オブジェクトの内部的なネットワーク表現です。 ネット オブジェクトは、一意のネット参照ハンドルと内部インデックスに関連付けられています。
- ネット トークン データ ストリーム
ネット トークン データ ストリームはネット トークン データをシリアル化します。
- ネットRPCハンドラ
ネット RPC ハンドラは、受信した RPC の作成と処理に関わるロジックを処理します。 たとえば、ネット RPC ハンドラは、アクタが RPC を呼び出すうえで引き続き有効であるかどうかを特定します。
- レプリケーション インスタンス プロトコル
レプリケーション インスタンス プロトコルは、オブジェクト インスタンスごとに作成されます。 これは、インスタンスに対するすべてのレプリケーション フラグメントの配列であり、ゲームプレイ コードとレプリケーション システムの間でステート データが交換されるときは常に使用されます。
- レプリケーション システム
レプリケーション システムは、ゲームプレイ コードで Iris と対話するための主要なインターフェースです。
- レプリケーション ステート記述子
レプリケーション ステート記述子では、次を含むレプリケーション ステートのすべての側面を記述します。
内部表現と外部表現のメモリ レイアウト。
ステートの各メンバーをシリアル化する方法。
必要な操作。
- レプリケーション データ ストリーム
レプリケーション データ ストリームは、レプリケーション データのシリアライズとデシリアライズを担います。
実装は次の 2 つの部分に分かれています。
レプリケーション リーダー
レプリケーション ライター
- レプリケーション フラグメント
レプリケーション フラグメントは、レプリケーション ステートを所有するオブジェクトです。 レプリケーション システムとゲームプレイ コードの間でデータをやり取りするには、レプリケーション ステートを所有オブジェクトにバインドする必要があります。 レプリケーション フラグメントは、レプリケーション ステートのこの所有オブジェクトの役割を果たします。
- レプリケーション ブリッジ
レプリケーション ブリッジは、ゲームプレイ コードとネットワーキング コードの間でデータを転送します。 レプリケーション ブリッジは、ゲームのタイプ固有のインターフェースを提供し、データからレプリケーション プロトコルとレプリケーション インスタンス プロトコルを作成する機能を持ちます。 また、レプリケーション ブリッジは、レプリケーション システムからの要求に応じて、アクタやその他のサポートされているタイプなどのゲームプレイ オブジェクトをインスタンス化する役割を果たします。
- レプリケーション プロトコル
レプリケーション プロトコルは、オブジェクトのデータをレプリケートする方法を定義します。 レプリケーション プロトコルは、レプリケートされるデータを記述するすべてのレプリケーション ステートの配列です。
- レプリケーション ライター
レプリケーション ライターは、すべての接続について、すべてのレプリケートされたオブジェクトのステートの追跡と、シリアル化を担います。
これには以下が含まれます。
次に基づくレプリケーション データのスケジューリング
優先順位。
スケジューリングの優先順位。
レプリケートされたオブジェクトのレプリケーション ステータス。
依存関係
サブオブジェクト
シリアル化
- レプリケーション リーダー
レプリケーション リーダーは、入力されたデータを担う内部システムです。 レプリケーション ブリッジを使用して、逆シリアル化とステート アプリケーションを制御します。