2

我最近一直在为实时、快节奏的游戏建立网络。看来,如果您正确插值,则命中计算是在从 player2(p2)s 点超过 (p1.interp+p2.interp+p1.ping/2+p2.ping/2) 之前发生的状态上完成的查看射手是 player1(p1) 时的情况。

数据包首先到达接受 p1.ping/2 的服务器,然后服务器根据 p1.interp + p1.ping/2 之前发生的游戏状态计算它。该计算的结果被发送到 player2,稍后只能看到它 p2.interp。由于所有三个方面都需要时间来处理事情,因此它会进一步增加。

    player1            server             player2
       |                 |                   |
.------|_1.............actual.....|.....game state......|
|      |                 | ^                 |
|intrp |_2               | |                 |
|      |                 | |                 |
`----->|_3----ping/2     | |                 |
                  `------|_4----ping/2       |
                                    `------5_|-------.
                                             |       |
                                           6_|  intrp|
                                             |       |
                                           7_|<------‘

请原谅我糟糕的 ASCII 艺术技能,但我无法抗拒。
(我回到家,我安装了 Windows,我看到这里看起来很糟糕,但希望你们能明白)

假设 50 毫秒 ping,100 毫秒插值它给了我们超过 250 毫秒的总和。这意味着 player2 在过去大约 250 毫秒被 player1 看到,但假设客户端预测,他实时看到自己。我的逻辑有缺陷还是这没什么大不了的?

4

1 回答 1

0

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

于 2012-05-08T16:51:06.287 回答