游戏实时联网,插值问题



我最近一直在考虑实时、快节奏游戏的网络。似乎如果您正确插值,那么命中计算是在玩家 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 看到,但假设客户端预测,他会实时看到自己。是我的逻辑有缺陷还是这没什么大不了的?

我发现这是对相关问题的答案。不确定这是否适合作为答案,但我无法发表评论。

最新更新