1.5 - 関数のレプリケーション

ネットワーク機能のサンプル レベルの概要、サンプル 1.5:関数のレプリケーション (リモート プロシージャ コール)

Choose your operating system:

Windows

macOS

Linux

1_5.png

サーバー クライアント の両側から見るために、 [Play] ダウンリストで、 [Number of Clients (クライアント数)] フィールドを 2 に設定します。

変数だけでなく、関数コールもレプリケートすることができます。 Replicated Function Calls (レプリケートされた関数呼び出し) Reliable (信頼できる) あるいは Unreliable (信頼できない) のいずれかに設定できます。レプリケート可能なコールは発生が保証される一方、信頼できないコールは渋滞の間に取り下げられます。表面上の外見を処理するレプリケートされた関数のほとんどは、ネットワーク サチュレーションを避けるためのものなので信頼できません。

レプリケートされた関数は大きく 3 つのタイプに分けられます。 Multicast Server Client です。Multicast 関数は、実行され、その後自動でクライアント側に順送りされると、サーバー上で呼び出されます。Server 関数はクライアントによって呼び出され、サーバー上でのみ実行されます。Client 関数はサーバーで呼び出され、所有しているクライアント上でのみ実行されます。

Server レプリケーション関数および Client レプリケーション関数には、 Net Owner を持つアクタ上でのみ使用できる追加制限があります。アクタがプレイヤー コントローラーであるか、またはプレイヤー コントローラーにより所有される場合、アクタはネット オーナーを持ちます。例:プレイヤー コントローラにより所有されるポーンは、Server レプリケーション関数または Client レプリケーション関数をその上で実行することができます。

このサンプルでは、ボタンを押すことでトリガーされた表面的なイベントを Multicast 関数が処理します。

ブループリントの詳細

BP_Button_Multicast ブループリントのイベント グラス (いくつかの図に分解されています) では、残りのスクリプトが Switch Has Authority ノードを使ってサーバー上でのみ実行されるのに対し、 Overlap Events がどのようにサーバー側とクライアント側の両方に発行されるのかが最初の図で分かります。

クリックしてフルサイズで表示

ボタンを押下 または ボタンを解除 すると、カスタム イベントが呼び出され、それは Multicast に設定されているので、全てのクライアントに対して発行され、イベントを開始したプレイヤーアだけでなく、全員がカスタム イベントに続くスクリプトを見ます。

ボタンが押下されたイベントをクリックしてフルサイズで表示

ボタンが解除されたイベントをクリックしてフルサイズで表示

ボタンが押下 / 解除されると、インゲームでは、サーバー側とクライアント側の両方にトリガーされたイベントが表示される結果となります。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル