需要知道的是,不同的球员在不同的位置,延迟也是不同的。自然,因为网络抖动,即使玩家A和玩家B同时按下同一个操作,也可能因为网络延迟导致不同的结果。比如,A和B同时向服务器发送数据,A需要10 ms,B需要20ms,因此,A在服务器中领先于B。

游戏延迟是什么原因(游戏延迟原因)(1)

  所以,如果服务器收到一个数据包,立即发送给其他所有客户端,比如发送给C的数据包需要90ms,而B发送给C的数据包只需要50ms,就有

游戏延迟是什么原因(游戏延迟原因)(2)

  表示“不”

  服务器端-

  因为C的网络延时或抖动,用了10 90=100ms,C实际接收A操作帧变成了100ms。

  B -

  服务器端-

  因为C的网络延时或者抖动,用了20 50=70ms,C实际接收B操作帧变成了70ms。

  然后,服务器收到的信息是操作A先于操作B,但是到了玩家C,就变成了操作B先于操作A。

游戏延迟是什么原因(游戏延迟原因)(3)

  这就会导致一个非常致命的情况,就是比赛结果都不一样。这个游戏怎么玩?而且如果每个玩家都有一个操作,会让服务器广播一次数据包,对网络带宽也是一个巨大的挑战。此外,由于网络环境问题,B操作的网络数据包可能会被网络丢失。所以,一个被广泛使用的方法是,一个游戏客户端可能以更低的延迟发送同一个数据包,比如一个操作向服务器发送三个数据包,只要其中一个数据包能被服务器接收到,就不会对游戏产生太大影响。

  所以游戏的同步机制其实是这样的,服务器会实际框定游戏操作。我们假设这个帧的粒度是100ms。

,