锁步协议

2020-10-17 12:42:28

跳转到导航跳转搜索锁步协议是对等架构多人游戏中先行作弊问题的部分解决方案,在这种情况下,作弊客户端延迟自己的操作以等待其他玩家的消息。[1]客户端可以这样做,就好像它们正在遭受高延迟;传出的数据包是通过附加实际发送数据包之前的时间戳来伪造的。

为了避免这种作弊方法,锁步协议要求每个玩家首先宣布一个承诺(例如,动作的散列值);这个承诺表示一个动作,该动作:

一旦所有参与者都收到承诺,他们就会透露他们的行动,并与相应的承诺进行比较,以确保承诺确实是已发送的行动。[2]。

由于所有玩家都必须等待所有承诺到达,然后才能发送他们的动作,因此游戏的进度与延迟时间最长的玩家一样慢。虽然这在以回合为基础的游戏中可能不会引起注意,但实时在线游戏,如第一人称射击游戏,需要更快的反应。

这可以通过限制玩家宣布他们的行动的时间来获得。如果在这段时间内没有发送任何动作,其他玩家不会向该玩家宣布他们的动作,并忽略任何来得太晚的动作。

为了克服简单锁步协议的明显缺点,存在该协议的异步变体,其中玩家在不与其他玩家进行任何协商的情况下及时前进,直到存在玩家之间的交互为止,称为锁步模式。该模式可以由玩家周围的特定区域(例如球体)来定义,在该区域中,游戏世界可能会受到玩家的影响。

例如,只有当两个玩家周围的影响区域相交时,才会发生这样的交互。

“弓箭手”是马克·特拉诺(Mark Terrano)和保罗·贝特纳(Paul Bettner)为“帝国时代”(Age Of Empires)制定了步调一致的协议。