ゲームラグ白書 › L1 クライアントのゲームプロセス
過度な外挿(デッドレコニング) Over-extrapolation / dead reckoning
原因ID cg-extrap · 主担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
パケットが届かない間は最後の速度のまま動かし続けて見せ、外れていたと分かると元に戻します。
なぜ パケットの受信が途切れ、最後の方向・速度のまま移動させ続ける → すると 実際には相手は止まっていたか、方向を変えていた → 画面では 相手キャラクターがしばらく進んでから本当の位置へ一気に移されたり、壁をすり抜けたりする。パケットの到着間隔がばらつくと、先に進んでは戻されるのを繰り返し、震えるように動く
- 症状
- ワープ, カクつき
- 要因
- パケットロス, ジッター
- 誰に起きるか
- 自分だけ
- いつ
- ときどきランダムに
- 担当
- 主担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- 外挿時間の上限(例:200〜250ms)、外れたときは滑らかに収束させる。
- 数値の目安
- 速度6m/sなら、300ms外れるだけで1.8mずれます。
- グラフでは
- 不定期なスパイク · 外挿時間、位置補正の距離
- 確認箇所
- 他のキャラクターを外挿で描画した時間と、新しいパケットが届いた後に位置を修正した距離を記録
- 該当する場合
- パケットが途切れた区間ごとに外挿時間が上限なく延び、その後の補正距離が数mに達する
- 該当しない場合
- 外挿を短く打ち切っているのにワープするなら、パケットロス・遅延そのものが大きいため、回線・経路側を確認
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- Interpolation and extrapolation (Netcode for Entities 6.5) Unity
次のスナップショットが時間どおりに届かないとき、同じ方向・速度で動かし続ける外挿は外れやすいため上限を設ける(Unityのデフォルトは20ティック、60Hzで約1/3秒) - Peeking into VALORANT's Netcode Riot Games
遅れたり欠けたりしたデータを推測で埋めて外れると、サーバーとずれてキャラクターが跳んだり、滑るように補正されたりする
あわせて読みたい原因
同じ層:L1 クライアントのゲームプロセス
同じ症状(ワープ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る