跳到主要内容
实时游戏

本页尚未翻译,当前显示英文版本。

显示其他玩家

其他玩家不做预测,只做显示。 你每隔一段时间收到他们的状态,在两次状态之间补画中间过程。这里出错的代价是一次肉眼可见的抖动,而不是一条命,所以它有自己的一套声明,不与预测共用。

显示模式由声明决定

对于不属于你的实体(entity),由房间(room)声明如何填补到达状态之间的空档:在已有状态之间插值,或者从最新状态继续外推。这是实体上的一项声明,所以每个客户端的做法都相同,不会因渲染器由谁实现而不同。

插值延迟同样由声明给出。 要平滑地显示其他玩家,就得让显示稍微滞后,滞后多少由声明决定。你按游戏类型调整这个数值。

外推会停止,而不是凭空编造

WHAT ARRIVES their state, at intervals WHAT YOU DRAW a smooth path through what arrived, held a little behind carried on stopped not invented
状态每隔一段时间到达;你在它们之间画出平滑的路径,下一个状态没来时,运动就停下

外推窗口由声明给出,超出窗口后,实体不再显示为移动状态,而不是继续按猜测移动。无限外推会让玩家瞄准一个从未出现在那里的目标,而且玩家察觉不到;画面明显卡住,反而是可以恢复的失败。

为什么它与预测自身移动分开

三种预测机制的权威方和出错方式各不相同。如果三者共用一个概念,调整其中一个就会悄悄改变另外两个。

机制运行于出错时的后果
预测自身移动客户端一次校正,重放并平滑
显示其他玩家客户端一次肉眼可见的抖动
Lag Compensation服务器有人死得不公平

也正因为这样划分,才有只包含这一种机制的 observer 预设:观战者没有自己的输入需要预测,给它配置预测参数,配置的是它根本不做的事。