遊戲 Lag 白皮書 › L1 用戶端遊戲程式
過度外插(dead reckoning) Over-extrapolation / dead reckoning
原因 ID cg-extrap · 主要負責 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
封包沒來的期間,照最後的速度繼續顯示移動,等發現猜錯再拉回來。
為什麼 收不到封包,就照最後的方向與速度繼續移動 → 於是 實際上對方已經停下或改變方向 → 畫面上 對方角色走了好一段後一下子移到真正的位置,或穿牆而過。封包抵達間隔忽長忽短時,會反覆衝過頭又被拉回,看起來像在顫動
- 症狀
- 瞬移, 卡頓
- 因素
- 遺失, 抖動
- 誰會遇到
- 只有我
- 何時
- 偶爾隨機發生
- 負責單位
- 主要負責 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 設定外插時間上限(例如 200~250ms),猜錯時平滑地收斂到正確位置。
- 數值參考
- 以 6m/s 的速度移動時,只要猜錯 300ms 就會偏差 1.8m。
- 圖表上
- 偶爾隨機飆高 · 外插時間、位置校正距離
- 查看位置
- 記錄以外插繪製其他角色的時間,以及新封包到達後修正位置的距離
- 符合的跡象
- 每次封包中斷的區段,外插時間都毫無上限地拉長,之後的校正距離達到數 m
- 不符合的跡象
- 外插很短就停止、卻仍出現瞬移時,是封包遺失或延遲本身太大,要查線路與路由
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- Interpolation and extrapolation (Netcode for Entities 6.5) Unity
下一個快照沒有準時到達時,沿同一方向與速度繼續移動的外插經常猜錯,因此設有上限(Unity 預設 20 tick,60Hz 下約 1/3 秒) - Peeking into VALORANT's Netcode Riot Games
用推測填補晚到或遺失的資料,一旦猜錯就會與伺服器不一致,角色會跳動或像滑行般被校正
相關原因
同一層:L1 用戶端遊戲程式
同一症狀(瞬移)在其他層的原因
查看含圖解與實驗的完整版卡片