延迟补偿技术以及带来的相关后果
一般情况下,游戏中高延迟的表现,可能都是大家在多人游戏中经历过的,或是可以简单理解的。如:高延迟的玩家在游戏中表现的不是正常的运动而是两点之间的瞬移;高延迟玩家可能对低延迟玩家的位置出现误判。
但以上的现象显然已近无法解释目前现在大多数游戏的高延迟现象了,因为现在很多使用专用服务器的多人PVP游戏,会在游戏服务器中增加延迟补偿作为补偿高延迟玩家的机制。而正是这种机制,往往会让游戏呈现另外一种景象。下面我们带大家简单地了解一下延迟补偿的具体运行原理。
很多使用专用服务器游戏,首先会在游戏服务器中设置一个进行延迟补偿的阈值,比如说,如果服务器检测到玩家传来的数据延迟在100ms以上,那就开始对其信息处理进行“补偿”。
补偿机制简单的工作流程是,服务器在接收到高延迟玩家的数据之后,在做出判定之前,会把相应游戏的游戏世界环境“倒回”之前一段时间再做判定。
具体可以射击游戏为例,假如玩家1的延迟是50ms,玩家2的延迟是100ms,玩家2在自己的游戏中射击并准确地击中了垂直于自己视角的跑动中的玩家1,玩家2射击的信息传输经过50ms到了游戏服务器,这时服务器则要根据目前玩家1的情况对玩家2的射击是否击中做出判定,但在这50ms期间,玩家1的位置数据恰巧已经在服务器中更新了两次,这时就极有可能玩家1在服务器中的位置信息已经脱离了玩家2子弹打中的位置。
在没有延迟补偿的情况下,玩家2也很可能最终从服务器那里得不到击中玩家1的最终反馈。而在有延迟补偿的情况下,服务器会在判定玩家2射击是否击中玩家1时,会自动将玩家1在游戏服务器中的“位置(实际上是Hitbox,具体这里可以简单地理解为玩家在服务器中的位置)”退回到之前一段时间,如果在这个例子中服务器的延迟补偿恰好是50ms,那么这里服务器会判定玩家2恰巧是已经击中了玩家1。
也正是由于延迟补偿这一机制只在服务器中“拉回”低延迟玩家的“位置(Hitbox)”并不改变低延迟玩家在游戏中的实际模型位置,所以,其在这种情况下,会很容易让低延迟玩家在躲到掩体后依然受到伤害。如下图:
其实,这一奇怪的现象也让很多玩家误以为对面玩家是在开挂。至于游戏开发商为什么要在游戏中设置延迟补偿这一折衷机制,大家可以在这里看V社关于这一机制的解释(9.游戏涉及中延迟补偿的使用)。
另外,现在也出现了一种EA旗下开发商DICE在《战地1》的多人服务器中使用的新机制,简单地说就是服务器会在一定延迟内做少量补偿,超过这个延迟则不进行延迟补偿,玩家需要根据游戏服务器的提示在射击中“打提前量”,如下图:
《起源》总算是为《真·三国无双》这个ip做出了试探性尝试的第一步。
《街头篮球》这款游戏实在承包了很多玩家的青春。
好久没看到这么直白的文字了。