한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

ゲームラグ白書 › 一部のユーザーだけに起きる問題

ロード中に届いた出現通知の破棄 Spawn messages dropped before the client is ready

原因ID pt-loading-drop · 主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発

図と実験のあるメインページでこのカードを開く →

ゾーンに入るとすぐにサーバーが周囲のNPCの出現通知を送りますが、クライアントがまだマップを読み込んでいる最中なので、その通知を破棄してしまいます。

なぜ サーバーが入場処理の直後に周囲のオブジェクトの出現通知を送信 → すると クライアントはロード中でメッセージハンドラーがまだないため、通知を破棄 → 画面では サーバーは送信済みとして扱い、再送しない。視界から外れて戻ってくるまでNPCが表示されない

症状
表示されない・ゴースト
要因
パケットロス
誰に起きるか
同じPCの片方のクライアントだけ, 自分だけ
いつ
接続直後・メンテ明け, 移動中・マップ切り替え時
担当
主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
クライアント:ロードが終わったら「準備完了」を送る、またはロード中に受け取ったパケットを保管しておいて処理。サーバー:「準備完了」を受け取ってから周囲の情報を送信。
数値の目安
同じPCで2つのクライアントが同時にロードしたり、ロードする側がバックグラウンドウィンドウだったりすると、CPU・ディスクを分け合ううえに処理も制限されるため、そちらのロードが数倍長くなることがあります。サーバーの入場処理が速くなっても、同じバグが表に出ます。
グラフでは
一部だけ高い · クライアントごとのロード時間、ロード中に破棄したメッセージ数
確認箇所
クライアントがロード中に受け取って破棄したメッセージの数・種類とロード完了時刻を、サーバーが出現通知を送った時刻と比較。同じPCで2つのクライアントを同時にロードするか、ロードする側をバックグラウンドウィンドウにすると再現しやすい
該当する場合
表示されないNPCの出現通知をサーバーは送っており、到着時刻がロード完了前で、その時間に破棄したメッセージ数が増えている。ロードが長い側のクライアントでだけ起きる
該当しない場合
出現通知がロード完了後に届いているのに表示されないなら、基準スナップショットの欠落かオブジェクトIDの再利用による混同。サーバーがそのNPCの通知をそもそも送っていないなら、視界登録の順序の乱れか、チャンネル・フェーズの違い
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. NetworkConfig class (Netcode for GameObjects 2.5) Unity
    SpawnTimeout:まだ生成されていないオブジェクトのメッセージは保留し、時間内に生成されなければ破棄
  2. Actor Relevancy in Unreal Engine Epic Games
    関連性がなくなったアクターはクライアントから削除され、再び関連すると新たにレプリケート

あわせて読みたい原因

同じ層:一部のユーザーだけに起きる問題

同じ症状(表示されない・ゴースト)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る