UE4:リッスンサーバーでの通知BPの挙動~足音編~
やっぱり何でもありの複数人対戦ゲーム作りたくなったので少しづつ作るよ。ステージにある武器や魔法スキルや素材を拾って銃乱射したり魔法使ったりクラフトしたりしたいね。召喚獣とか出したいね。協力してくれる人常に募集してるから助けてね。でもこれ結構しんどいね。
— ぶっさん (@Bussan_desu) 2017年8月16日
最近サウンドを入れ始めました。
攻撃エフェクトのマルチのテストを行ないました。サウンドも徐々に入っていい感じです!(作業者:@Bussan_desu(実装),@tekk_private (サウンド)) #UE4 #EpicFriday #ChaosOfWar pic.twitter.com/OqD3FMamoF
— DobullDogsStudio (@DDogsStudio) 2018年2月16日
で、足音をいれるため通知BPを作成し、音を鳴らすことに。
すると、音が複数回なることに気づく。クライアントを3人で行うとクライアントで歩いた際に4重になって音が聞こえる。
調べて見るとデディケートサーバーだとうまくいくらしい。
困っているとそこに
それはね、サーバーとクライアントで実行されるからだよ
— ゆういち (@nullpodesu) 2018年2月13日
なるほど。
— ゆういち (@nullpodesu) 2018年2月13日
問題の箇所を見せてもらえたらさくっとわかりそうな気がしますね。
てことで相談すると、
アニメーション通知はマルチキャストと同じ挙動になるとおもうので、クライアントからサーバーで実行してレプリケートの仕組みを作るか、各々のローカルだけで再生するための通知を出すかを振り分けたら解決するはずです
なるほど・・・・。
早速検証を始めると、サーバー時
クライアント時
全部呼び出されてる。
てことで、アドバイス通りに実装してみると
クライアントでは呼び出され、一瞬喜んだのですがサーバー側だとイベントが実行されない。
サーバー側 ~無~
クライアント側
よしあと一歩!!!
てことで色々とやってみて出来たのがこちら
サーバー側で実行したものをクライアントで実行し、それを再度サーバーだけサウンドを再生するマルチキャストのイベントを呼び出すようにしました。
もう大変・・・。
ゆういちさんありがとうございました。
追記
らりほまさんに検証をしていただきました!
エディターですと音がクライアント分なるそうです。
Node を組んで Listen Server 含む 4 人で Editor で試してみたところ、PrintString は大丈夫なので Node は問題ありませんでした!が、音は Client だと 3 つ鳴りました…。Editor での Simulation だと各 Client に Client 全員分の音が流れ込んでいる気がします…。 pic.twitter.com/7P2GIDc04D
— らりほま (@rarihoma) 2018年2月18日
いえいえー。ちなみに今回のような場合だと、画像のような組み方で同様のことが達成できるかと思います。 pic.twitter.com/pAirWjTvi6
— らりほま (@rarihoma) 2018年2月18日
違った実装方法も教えていただきました。マルチですと物によっては色々と作り方が変わることがあるので臨機応変に適した処理に変えていきたいですね!
らりほまさんにありがとうございました!
以上です。
(製作協力者募集中です)