#memo

indiedev太郎

プレイヤー名の表示、参加者一覧の取得

https://i.gyazo.com/1bc48631950e8f0b26b3b92e735410bb.png

・ゲーム参加直後はログイン処理がある
・ゲーム開始時クライアント側では、あるはずの変数やインスタンスがちゃんと存在している保証はない

参加者一覧は、各クライアントで、レベルにあるPlayerStateをイテレーターで名前やらPingを取って表示したら良いのだけれど、例えばこれをゲーム開始直後に生成してしまうと、サーバーから人数分すべてのPlayerStateを受信出来ているかどうかが確実ではないなど、ちょっと表示を行う処理のタイミング考えないと行けない
単にDelay置いても良さそうだけれど、100%ではないので、もう少し堅牢な設計がやりたい

よくわかるフロー図
https://i.gyazo.com/9a91f68a0078cf8467241711ce42a372.png

プレイヤー上部の名前表示には、そのプレイヤーのPlayerStateと、そのプレイヤーのログイン初期化処理が終了していることが必要で、自分のフローでは、PlayerPawnのスポーン完了をログインフェーズの最後としている
なので、"PlayerStateのAPawn* ControlledPawn変数が値を受け取った瞬間 = 当該ユーザーのログイン、初期化処理が完全に終了したことを、クライアントで認識した瞬間" であるので、"OnRepControlledPawn関数が発火する = 当該ユーザーの情報に安全にアクセスできる"という感じでやっている

なんかもう少し処理を単純にできそうだけれど、とりあえずこれで安定している