我最近一直在考虑实时、快节奏游戏的网络。似乎如果您正确插值,那么命中计算是在玩家 2(p2(之前发生的状态上完成的,当射手是玩家 1(p1( 时,从玩家 2(p2( 的角度来看
。数据包首先进入采用 p1.ping/2 的服务器,然后服务器根据 p1.interp + p1.ping/2 前发生的游戏状态计算它。该计算的结果被发送到玩家2,玩家2稍后只能看到它p2.interp。由于所有三个方面处理事情所需的时间,它加起来更进一步。
player1 server player2
| | |
.------|_1.............actual.....|.....game state......|
| | | ^ |
|intrp |_2 | | |
| | | | |
`----->|_3----ping/2 | | |
`------|_4----ping/2 |
`------5_|-------.
| |
6_| intrp|
| |
7_|<------‘
请原谅我糟糕的ASCII艺术技巧,但我无法抗拒。
(我回到家,我安装了Windows,我看到它在这里看起来有多糟糕,但希望你们明白(
假设 ping 为 50 毫秒,插值时间为 100 毫秒,则得出的总和超过 250 毫秒。这意味着玩家 2 在过去大约 250 毫秒内被玩家 1 看到,但假设客户端预测,他会实时看到自己。是我的逻辑有缺陷还是这没什么大不了的?
我发现这是对相关问题的答案。不确定这是否适合作为答案,但我无法发表评论。