如何修复服务器和每个客户端之间的ping?

时间:2014-02-08 01:43:12

标签: networking language-agnostic

我有一台服务器用于非常有竞争力的游戏,涉及金钱。为了使游戏公平,每个客户端必须具有相同的ping。显然,我不能让每个人都有一个短暂的ping。因此,唯一的解决方案是将其固定为高:例如,200ms是可以接受的。

问题是,我如何强制 ping为200ms?为了使其工作,我必须知道我应该多少延迟发送数据包 - 为此,我必须知道客户端的ping。因此,如果ping是60ms,我只能为提供的数据添加140ms的延迟。问题是:我只能通过询问来知道ping,并且客户端可以谎言<​​/ strong>,告诉我他的ping高于它并让我更早地发送数据包。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你无法修复ping,它可以一直改变。如果您的客户启用了在ping发现期间,它会显着影响结果。

但也许您不必延迟发送数据包。也许它足以延迟接收或分析它们?这可能会更容易,您只需知道何时发送相应的数据包

还有其他选择:许多在线射击游戏使用称为“unlagged”的功能。客户端发送他的射击和服务器的坐标,根据当前的ping(比方说80ms)计算目标是否会在80ms前被击中。如果是这样,目标被视为命中。但这当然会引入一些像受害者通过墙壁射击的文物。

答案 1 :(得分:0)

通过“ping”我假设你的意思是“网络延迟”,这是可变的并且完全在你的控制之外。你的问题没有意义。