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

游戏卡顿白皮书 › L1 客户端游戏进程

过度外推(航位推测) Over-extrapolation / dead reckoning

原因 ID cg-extrap · 主责 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

数据包没到的这段时间,按最后的速度继续显示移动,发现猜错后再纠正回去。

起因 数据包接收中断,按最后的方向和速度继续移动 → 结果 实际上对方已经停下或转向 → 画面表现 对方角色往前走了好一段,又突然被挪到真实位置,或者穿墙而过。数据包到达间隔忽长忽短时,会反复冲到前面又被拽回,移动时像在颤动

症状
瞬移, 一卡一卡
因素
丢包, 抖动
谁会遇到
只有我
何时出现
偶尔随机
负责方
主责 研发团队·客户端开发
研发团队要做的事
设定外推时长上限(例如 200~250 ms),猜错时平滑收敛。
数值参考
速度为 6 m/s 时,只要错 300 ms,位置就会偏差 1.8 m。
监控图上
偶发随机尖峰 · 外推时长、位置校正距离
查看位置
记录用外推绘制其他角色的时长,以及新数据包到达后修正位置的距离
确认依据
每次数据包中断,外推时长都没有上限地拉长,之后的校正距离达到几 m
排除依据
外推时长很短仍出现瞬移,说明丢包、延迟本身过大,查线路和路由一侧
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    下一张快照没按时到达时,按相同方向和速度继续移动的外推经常出错,所以要设上限(Unity 默认 20 tick,60 Hz 下约 1/3 秒)
  2. Peeking into VALORANT's Netcode Riot Games
    用推测填补晚到或缺失的数据,一旦猜错就会与服务器不一致,角色会跳一下,或像滑行一样被校正

相关原因

同一层:L1 客户端游戏进程

其他层中同样导致“瞬移”的原因

查看含图示和实验的原卡片