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

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

Windows
MacOS
Linux

2_3.png

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

レプリケートされた Multicast 関数は 実行時の木箱のステートの保存処理をしなかったので、サンプル 2.2 は失敗しました。そのような場合は、レプリケートされた変数を使ってみるのが自然な解決方法かもしれません。

このサンプルでは、RepNotify boolean を使って木箱が開いているかどうかを保存してみます。もう一度、クライアントを青いリングの外に置き、サーバーに木箱を起動させます。クライアントが右へ歩いた後、どうなりますか?クライアントには、木箱が開くのが見えますが、サーバー上で過去に実行されたゴールドエフェクトの再生も見えます。

木箱がクライアントとの関連を再び持つようになると、クライアントは変更をレプリケートされた変数へ渡し、対応する RepNotify 関数が呼び出されます。残念ながら、クライアントが認識するの変数が変更されたことのみであり、変数が既に正しく変更されていることをを知る方法がないため、このような特別なケースに対応するには不十分です。

ブループリントの詳細

BP_Relevancy_Replication_RepNotify ブループリントのイベント グラフで、OnChestTouch はオーバーライドされて RepNotify 変数が設定され、それは下の方にあるコメント欄に表示されます。

2_3_Eventgraph.png

以下は、変数 bChestOpened が更新されると呼び出される OnRep 関数です。

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

木箱が関連するようになると、クライアントは更新値を取得できるようになりますが、同時にクライアントは、かなり前にサーバー上で完了しているはずのゴールド パーティクル エフェクトを再生してしまうことになります。これは望ましくありません。

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