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

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

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 ChestPlay Gold FX を親ブループリントから実行します。

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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback