ゲームラグ白書 › 一部のユーザーだけに起きる問題
視界登録の順序の乱れ Interest-management race on enter/leave
原因ID pt-aoi-race · 主担当 ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
キャラクターが視界グリッドに登録される瞬間と、NPCがグリッドのセルを移る瞬間が重なると、そのNPCの出現通知が漏れることがあります。
なぜ 入場・チャンネル移動・テレポートの処理とNPCの移動が同じ瞬間に重なる → すると 「新たに見えるようになったオブジェクト」の計算からそのNPCが漏れる → 画面では 特定のNPC数体だけが表示されないか、すでに去ったNPCが残っている
- 症状
- 表示されない・ゴースト
- 要因
- パケットロス
- 誰に起きるか
- 同じPCの片方のクライアントだけ, 自分だけ
- いつ
- 移動中・マップ切り替え時, ときどきランダムに
- 担当
- 主担当 ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- 視界の更新を1つのスレッド・1つの順序で処理、定期的に「見えているリスト」全体を合わせ直す。
- グラフでは
- 不定期なスパイク · サーバーの見えているリストとクライアントのオブジェクトリストの差分数
- 確認箇所
- サーバーに、視界グリッドへの登録、オブジェクトのセル移動、出現・消滅通知の送信をティック番号とともに記録し、定期的にサーバーの「見えているリスト」とクライアントが持つリストを比較
- 該当する場合
- 漏れたNPCが、そのキャラクターの入場・テレポート処理と同じティックにセルを移っており、そのNPCへの出現通知の送信記録がない
- 該当しない場合
- 出現通知は送ったのにクライアントが受け取れなかったか破棄したなら、伝達側(入場直後に集中する出現情報の欠落、ロード中に届いた出現通知の破棄)。いつも同じNPCだけが漏れるなら、フェーズか表示オプションの違い
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- Replication Graph in Unreal Engine Epic Games
MMORPGなどはワールドをグリッドに分けてセルごとにアクターのリストを持ち、クライアントがいるセルを基準に送信 - Actor Relevancy in Unreal Engine Epic Games
関連性は接続ごとに判断し、関連しなくなったアクターはクライアントから削除される
あわせて読みたい原因
同じ層:一部のユーザーだけに起きる問題
同じ症状(表示されない・ゴースト)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る