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

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

Choose your operating system:

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

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

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

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