#memo

indiedev太郎

マルチプレイのメモ

公式のラーニングやりましょう
Blueprint Multiplayer | Unreal Engine
Unreal Engine | マルチプレイヤー シュートアウト


以下箇条

全体編

・クライアント独自の物(所有権が与えられた物)として、PlayerControllerを渡される

・PlayerControllerには自分のPlayerStateの参照が入っている

・パーシスタンとレベルのロード完了、GameModeでクライアントの参加申請(Login)が通ってプレイヤーコントローラーが作成される、ここでPlayerControllerのBeginは走ってしまうけど、このまだログインシークエンスの途中なので、サーバーとやり取りするような処理はちょっとよくない
→代わりにGameModeでOnPostLogin関数をオーバーライドすることで、PlayerControllerが確実に生成されている段階が取れる、ここからPlayerController内のイベントを発火できるので、それをBeginやInit的に使用すると良い


レプリケート編

・文字をレプリケーションするとき、FNameは圧縮されてないので控える

・replicatedUsing=関数名 指定子で、その変数に変数があった際に指定関数をサーバークライアントそれぞれで実行
ReplicatedUsing | Unreal Engine
BPでこれやるときはRepNotifyを指定して、"OnRep_変数名"関数を作る
Unreal Engine | ブループリントのマルチプレイヤー機能


HUDを何処で作成するか
プレイヤーコントローラーがユニークなので、そこで作成すればよさそう
このときリッスンサーバーではプレイヤーコントローラーが複数個あるため、そのままではHUDが多重に描写されてしまう
SwitchHasAuthorityマクロに続いて、IsLocalPlayerControllerのboolを見れば、操作しているPlayerControllerかどうかわかるので、その先で処理を行うようにする
https://i.gyazo.com/92fd3bfd6d6d29d4de6ff79e4ca09059.png