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

遊戲 Lag 白皮書 › L1 用戶端遊戲程式

過度外插(dead reckoning) Over-extrapolation / dead reckoning

原因 ID cg-extrap · 主要負責 遊戲開發團隊(用戶端開發)

在含圖解與實驗的完整版中開啟卡片 →

封包沒來的期間,照最後的速度繼續顯示移動,等發現猜錯再拉回來。

為什麼 收不到封包,就照最後的方向與速度繼續移動 → 於是 實際上對方已經停下或改變方向 → 畫面上 對方角色走了好一段後一下子移到真正的位置,或穿牆而過。封包抵達間隔忽長忽短時,會反覆衝過頭又被拉回,看起來像在顫動

症狀
瞬移, 卡頓
因素
遺失, 抖動
誰會遇到
只有我
何時
偶爾隨機發生
負責單位
主要負責 遊戲開發團隊(用戶端開發)
遊戲開發團隊要做的事
設定外插時間上限(例如 200~250ms),猜錯時平滑地收斂到正確位置。
數值參考
以 6m/s 的速度移動時,只要猜錯 300ms 就會偏差 1.8m。
圖表上
偶爾隨機飆高 · 外插時間、位置校正距離
查看位置
記錄以外插繪製其他角色的時間,以及新封包到達後修正位置的距離
符合的跡象
每次封包中斷的區段,外插時間都毫無上限地拉長,之後的校正距離達到數 m
不符合的跡象
外插很短就停止、卻仍出現瞬移時,是封包遺失或延遲本身太大,要查線路與路由
確認方式
需要遊戲伺服器/用戶端的 log 與指標

出處

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    下一個快照沒有準時到達時,沿同一方向與速度繼續移動的外插經常猜錯,因此設有上限(Unity 預設 20 tick,60Hz 下約 1/3 秒)
  2. Peeking into VALORANT's Netcode Riot Games
    用推測填補晚到或遺失的資料,一旦猜錯就會與伺服器不一致,角色會跳動或像滑行般被校正

相關原因

同一層:L1 用戶端遊戲程式

同一症狀(瞬移)在其他層的原因

查看含圖解與實驗的完整版卡片