Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

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

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 関数です。

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

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