
一、问题的起点:数据永远不够多人游戏里,远程玩家的位置是从服务器收到的。假设同步频率是 20 Hz,也就是每 50 毫秒来一个包。但你的客户端以 144 帧渲染。两个包之间有 7 帧没有数据。这 7 帧的位置,你只能猜。猜出来的结果经常是这样:对面玩家在拐角处冲出去一截,然后被"拉回来"。你瞄准的是他冲出去的位置,打空了。这就是外推。它不是某个高级技巧,它是所有实时游戏都必须做的事,因为数据永远不够——快照频率不可能无限高,而显示必须连续。1.1 外推无处不在除了网络位置预测,外推还出现在:网络位置预测 快照之间补齐渲染帧 VR 重投影 补偿渲染到显示的延迟 动画边界采样 时间轴两端超出定义域时的取值 TAA / 运动模糊 用上一帧的像素外推到当前帧位置 帧生成 / 插帧 没有未来帧可用时从已有帧往前推看起来是五个不同领域的技巧,底下其实是同一件事:在数据覆盖不到的地方求值。二、插值与外推:误差结构上的本质差异这两个词经常被混用,但它们的稳定性差了一个量级,原因不在实现,而在数学结构。插值:在已知数据之间求值 ●━━━━━?━━━━━● 已知 求这里 已知 两侧都有约束,答案被夹住了 外推:在已知数据之外求值 ●━━━━━●━━━━━● ? ? ?