<Multi Player②>
①弾の発射音が出ない
上記内容を修正する際、「Spawn projectile」の音を鳴らすところを MultiCast で実行させていますが、
Run on Owning Client で実行しても同じ挙動になると考えています。
この場合、サーバー側でも実行する必要性とは何になりますでしょうか。
②弾が同期されない
またこちらでも、弾の発射処理を Run on Server で実行させていますが、
理屈的には MultiCast でも実現可能ではないかと思いました。
(こちらは MultiCast で実装しても期待動作にはなりませんでした)
MultiCast では期待どおりの結果にならなかったのはどうしてでしょうか。
RPCの理解のためにご回答頂けるとありがたいです。
>①弾の発射音が出ない
MultiCastで実装する必要があります。
MultiCastはサーバーから全クライアントにメッセージを送ります。
Run on Owning Clientはアクターを所有してるクライアントで実行されます。
>②弾が同期されない
MultiCastで実装するとクライアントの弾が同期化されないと思います。
MultiCastはサーバーから全クライアントに送るメッセージですのでクライアント側でMultiCastが呼ばれると自分のクライアントしか呼ばれないので同期化されないです。 https://docs.unrealengine.com/ja/Gameplay/Networking/Blueprints/index.html
このドキュメントで詳しい説明がありますので参考すればいいと思います。
>①弾の発射音が出ない
私のローカル環境では、同一端末上で画面を分割しているため、問題なく感じている (2P側で発射の際、発射音が出る) だけで、複数端末で実行した場合は、アクターを所有してるクライアント側の端末でしか音が反映されない (2P側の端末で発射の際、2P側の端末でのみ発射音が出る) ということになるのでしょうか。
上記の仮定が正しければ Run on Owning Client を使用しない理由に納得できるのですが。
「同一端末上で画面を分割している」というのは、
添付した画像のように1台のPC上でという意味となります。
(例:プレイヤーA ⇒ AさんのPC、プレイヤーB ⇒ AさんのPC)
反対に「複数端末で実行した場合」というのは、2台以上のPCでという意味で考えています。
(例:プレイヤーA ⇒ AさんのPC、プレイヤーB ⇒ BさんのPC)
複数端末の場合発射音以外の弾、キャラクターの動きの同期化は正しく同期化されてますか?
私の環境ではPCが1台しかないため現象は確認しておりません。
再度、質問内容を整理させていただきます。
弾の発射音が出ない (PCが1台の場合)
MultiCast :プレイヤーB側で発射して、AさんのPCで音が出る。
Run on Owning Client:プレイヤーB側で発射して、AさんのPCで音が出る。
弾の発射音が出ない (PCが2台の場合)
MultiCast :プレイヤーB側で発射して、AさんのPCで音が出る。BさんのPCで音が出る。
Run on Owning Client:プレイヤーB側で発射して、AさんのPCで音が出ない。BさんのPCで音が出る。
このような違いが生じるため、MultiCastで実装する必要があったという解釈でよろしいでしょうか。
おっしゃった通りです。
PCが1台の場合、MultiCastが呼ばれたらクライアント、サーバ全部実行されますので音が2回出ると思います。