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

ゲームラグ白書 › L1 クライアントのゲームプロセス

過度な外挿(デッドレコニング) Over-extrapolation / dead reckoning

原因ID cg-extrap · 主担当 ゲーム開発チーム・クライアント開発

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

パケットが届かない間は最後の速度のまま動かし続けて見せ、外れていたと分かると元に戻します。

なぜ パケットの受信が途切れ、最後の方向・速度のまま移動させ続ける → すると 実際には相手は止まっていたか、方向を変えていた → 画面では 相手キャラクターがしばらく進んでから本当の位置へ一気に移されたり、壁をすり抜けたりする。パケットの到着間隔がばらつくと、先に進んでは戻されるのを繰り返し、震えるように動く

症状
ワープ, カクつき
要因
パケットロス, ジッター
誰に起きるか
自分だけ
いつ
ときどきランダムに
担当
主担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
外挿時間の上限(例:200〜250ms)、外れたときは滑らかに収束させる。
数値の目安
速度6m/sなら、300ms外れるだけで1.8mずれます。
グラフでは
不定期なスパイク · 外挿時間、位置補正の距離
確認箇所
他のキャラクターを外挿で描画した時間と、新しいパケットが届いた後に位置を修正した距離を記録
該当する場合
パケットが途切れた区間ごとに外挿時間が上限なく延び、その後の補正距離が数mに達する
該当しない場合
外挿を短く打ち切っているのにワープするなら、パケットロス・遅延そのものが大きいため、回線・経路側を確認
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    次のスナップショットが時間どおりに届かないとき、同じ方向・速度で動かし続ける外挿は外れやすいため上限を設ける(Unityのデフォルトは20ティック、60Hzで約1/3秒)
  2. Peeking into VALORANT's Netcode Riot Games
    遅れたり欠けたりしたデータを推測で埋めて外れると、サーバーとずれてキャラクターが跳んだり、滑るように補正されたりする

あわせて読みたい原因

同じ層:L1 クライアントのゲームプロセス

同じ症状(ワープ)を起こすほかの層の原因

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