ゲームラグ白書 › 一部のユーザーだけに起きる問題
消滅通知の欠落(ゴースト) Missed despawn (ghost entity)
原因ID pt-ghost · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
逆に「消えた」という通知を取りこぼすと、すでに死んだか去ったNPC・プレイヤーが自分の画面にだけ残ります。
なぜ 死亡・退出・視界外への移動の通知が失われるか、順序が入れ替わる → すると クライアントはそのオブジェクトがまだいると判断 → 画面では 叩いても反応しないモンスター、すでに抜けたプレイヤーが立っている
- 症状
- 表示されない・ゴースト
- 要因
- パケットロス
- 誰に起きるか
- 同じPCの片方のクライアントだけ, 自分だけ
- いつ
- ときどきランダムに, 人が集中したとき
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- サーバー:定期的に「今見えているリスト」を送る。クライアント:リストにないオブジェクトは削除、動くはずのオブジェクトの更新が長い間なければ非表示にする。
- グラフでは
- 不定期なスパイク · クライアントにだけ残ったオブジェクト数
- 確認箇所
- サーバーが送る「今見えているリスト」とクライアントが持つオブジェクトリストを比較してクライアントにだけあるオブジェクトを数え、消滅通知の送信・受信ログをオブジェクトIDで照合
- 該当する場合
- ゴーストの消滅通知をサーバーは送ったのにクライアントに受信記録がないか、消滅が出現より先に届いて順序が逆転している
- 該当しない場合
- サーバーの見えているリストにもそのオブジェクトが残っているなら、サーバー側のオブジェクト整理漏れ。同じIDで新しいオブジェクトが現れた直後なら、オブジェクトIDの再利用による混同
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- Actor Relevancy in Unreal Engine Epic Games
関連性がなくなった動的アクターはクライアントから削除される - Object visibility (Netcode for GameObjects 2.5) Unity
オブジェクトを隠すと、そのクライアントはオブジェクトをdespawn・削除
あわせて読みたい原因
同じ層:一部のユーザーだけに起きる問題
同じ症状(表示されない・ゴースト)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る