本页尚未翻译,当前显示英文版本。
显示其他玩家
其他玩家不做预测,只做显示。 你每隔一段时间收到他们的状态,在两次状态之间补画中间过程。这里出错的代价是一次肉眼可见的抖动,而不是一条命,所以它有自己的一套声明,不与预测共用。
显示模式由声明决定
对于不属于你的实体(entity),由房间(room)声明如何填补到达状态之间的空档:在已有状态之间插值,或者从最新状态继续外推。这是实体上的一项声明,所以每个客户端的做法都相同,不会因渲染器由谁实现而不同。
插值延迟同样由声明给出。 要平滑地显示其他玩家,就得让显示稍微滞后,滞后多少由声明决定。你按游戏类型调整这个数值。
外推会停止,而不是凭空编造
外推窗口由声明给出,超出窗口后,实体不再显示为移动状态,而不是继续按猜测移动。无限外推会让玩家瞄准一个从未出现在那里的目标,而且玩家察觉不到;画面明显卡住,反而是可以恢复的失败。
为什么它与预测自身移动分开
三种预测机制的权威方和出错方式各不相同。如果三者共用一个概念,调整其中一个就会悄悄改变另外两个。
| 机制 | 运行于 | 出错时的后果 |
|---|---|---|
| 预测自身移动 | 客户端 | 一次校正,重放并平滑 |
| 显示其他玩家 | 客户端 | 一次肉眼可见的抖动 |
| Lag Compensation | 服务器 | 有人死得不公平 |
也正因为这样划分,才有只包含这一种机制的 observer 预设:观战者没有自己的输入需要预测,给它配置预测参数,配置的是它根本不做的事。