2.2 - ネットワークの関連性 [パート 2 - 関数をレプリケートする方法]

ネットワーク機能のサンプル レベルの概要、2.2:ネットワークの関連性 (パート 2 - 関数をレプリケートする方法)

Choose your operating system:

Windows

macOS

Linux

2_2.png

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

このサンプルでは、レプリケートした Multicast 関数を使って木箱のビヘイビアをネットワーク化してみます。木箱は相互作用時に Multicast 関数を呼び出し、それにより全てのクライアントに対して木箱が開くビジュアル再生を行うという考えです。

ただし、関連性に関する問題をお見せするため、至近距離ではネットワークと無関係となるようにこの木箱を変更してあります。クライアントを青いリングの外側におくと、木箱は見えていてもクライアントとの関係がなくなります。では、サーバーを木箱に移して起動し、クライアント上で何が起こるか見てみましょう。クライアントは全く変化がありません!そのはずです。木箱はまだクライアントと関連がないからです。クライアントを青いリングの中へ移すと、木箱が関連を持つようになります。さて今度はどうでしょう?何も起こらないままです。おかしいですね。

この方法の問題点は、木箱の更新に関わるアクションの全てがレプリケートされた関数によって送られている点です。関連性を行う関数コールをクライアントが受け取っていないので、木箱を開く操作は実行されません。

ブループリントの詳細

お気づきだとは思いますが、 BP_Relevancy_Replication_RPC ブループリントのイベント グラフはサンプル 2.1 から派生したものに若干の修正がされています (このサンプルに対する関連性の距離をお見せするためにリングが作成されています)。まず最初に、OnChestTouched 関数がオーバーライドされ、新規の Chest Touch Multicast Event が呼び出されます。 Chest Touch Multicast Event がサーバー上で呼び出されます。イベントは Multicast に設定されているので、すべてのリモートのマシンにイベントをレプリケートします。

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

Chest Touch Multicast Event それ自体は、木箱を開き関連するエフェクトの再生処理をする Open Chest Play Gold FX を親ブループリントから実行します。

ただし木箱が関連していない場合、以下の画像のように、クライアントはこの部分のスクリプトの実行に失敗します。

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