绝地求生:躲进掩体后仍被打死,到底是怎么回事?

大家玩《绝地求生》时一定有很多千奇百怪的成盒方式,骑摩托摔死,被轰炸区炸死,这种情况我们可能就付之一笑,收拾心情下一把。但是有些死法是非常气的,比如明明我进了掩体,为啥对面还能打死我?为啥明明我先开的枪,他一转头就把我秒了!大家都会觉得是延迟造成的,今天我正好找到了一个半科普类的讨论帖,其实除了服务器延迟,还有一种数据会影响大家的游戏体验,为大家翻译了一下,帖子来源于Reddit。

那么什么是Tick?

Tickrate是指服务器每秒钟读取游戏的状态次数,简单点说,就是服务器的有效帧数。复杂点说,游戏世界里面,所有的行为都不是像现实世界一样连续的,而是通过尽可能快的刷新状态来模拟出真实的连贯效果,每一个状态就是一个tick。

在20tick的服务器,有个敌人从如图的位置跳下,刚好经过1~3这块区域,而你用AWP开枪射击。如果你瞄准的位置是在下图的2上,那么你的这一枪是会被判定为未命中的,只有瞄准1或3才可以命中。即使这三个点的位置没有任何问题,都是在敌人的下落轨迹上。

而在128tick的服务器中,不论瞄准的是1、2还是3,都可以被判定为命中。

《绝地求生》这个游戏是典型的小作坊产品,虽然游戏性极高但是技术上的劣势非常明显,最致命的就是小公司服务器延迟和本身代码tickrate带来的致命缺陷。《CSGO》 tickrate官匹64 社区服务器128 ,《彩虹六号》tickrate 平均60,《战地1》等各大对战平台主流游戏基本都是 100以上。暴雪的《守望先锋》之前只有20,后来被全球玩家骂,赶紧改成60,以便保持电竞的公平。《绝地求生》一直以来赚了十几亿美元,却迟迟不敢公布tickrate数据,但还是有玩家查出来,平均 17 pps!!换句话说,即便是网络延迟极低,这个tickrate问题不解决,还是会大量出现你近距离扫射敌人,敌人三团绿色血雾,但看回放,对面还是满血打死了你这种情况这样的游戏一旦上升到竞技比赛,会造成巨大的裁判分歧。

Q:为什么PUBG在tickrate那么低的情况下还是可以玩呢?

之所以PUBG这个游戏在如此low的 tickrate(PS:tickrate是指服务器每秒钟读取游戏的状态次数,简单点说,就是服务器的有效帧数。复杂点说,游戏世界里面,所有的行为都不是像现实世界一样连续的,而是通过尽可能快的刷新状态来模拟出真实的连贯效果,每一个状态就是一个tick。那么我们常说的64tick和128tick也就不难理解了,在你仔细观察时,128tick的服务器的移动判定会比64的更精确,但同时对CPU的要求也更高下还能运行,主要是因为PUBG的判定方式与其他fps类游戏存在根本性的差异。在Counter Strike(CS)这款游戏里,玩家的每一个操作都会向服务器传输一个数据包,然后服务器会检测数据的误差并修正,类似于武器精度误差和玩家移动误差。这也意味着,稍有一点数据不同步,就会产生你一梭子弹打人身上没把他打死的情况,这是fps游戏研发过程中最大的一个问题。在你将准星移动到对手身上点下左键开火的时候,有一帧的传递出现失误,你射出的子弹可能就打在空处了,玩家的命中判定是同时提交到服务器和客户端两个地方处理的,如果有一点微小的不同步,可能只有10ms的误差,都有可能导致客户端中子弹没击中对手的情况。

但是在PUBG中,情况恰恰相反,这个游戏的判定都是由客户端单方面完成的。因为在由100名玩家的绝地岛上,PUBG服务器完成与cs同样级别的认证是完全不可能的,所以pubg的tickrate只能那么低!不管你怎么跟reddit的网友怎么瞎扯,这种技术在目前是不能可能实现的。PUBG的系统只会做出一次判定,在你开枪的一瞬间,客户端会直接判定你的子弹能否通过障碍击中对手,如果你的子弹碰到了障碍物不能前进,然后它会发出指令取消该射击命中判定。判定命中与否的hitbox(Hitbox是3D游戏中用于判定物体命中、物体碰撞等情况的物理模型)只存在于在客户端上。尽管服务器可以跟踪玩家的位置,但是它只用于接受数据,它是不会去判定数据的。

Q:我有次缩在墙后面还是被打死了,这显然是tickrate的锅!

A:你说的情况确实是存在的,tickrate会造成一定的延迟,而更高的tickrate是会降低游戏的延迟的。实际上低tickrate所造成的的延迟远远不及玩家与服务器的链接延迟,可以说影响是微乎其微的。如果你的延迟是100ping,你对手也是100ping,此时链接延迟对你的影响大概是低tickrate的2-4倍。即使服务器是以60 tickrate的标准下运行,你可能还是会死在那,可以说造成你死亡的根本原因可能是因为你的链接延迟太高了。客户端有个延迟补偿的功能,就好比说你发出开枪指令,但是你有0.2秒的延迟,系统会在0.2秒后判定你开枪,并补偿你0.2秒的开枪时间,同理你可能在0.2秒前躲进了掩体,而实际上在数据里,你还站在原地,你就狗带了。考虑到大多数延迟玩家,关闭延迟补偿并不是一个好的做法,tickrate有影响,但是没有那么明显,我只是想说不要把所有的锅都甩给tickrate。

Q:怎么解决问题呢?

A:加强高延迟补偿机制可以说是一种围魏救赵的办法,现有技术上提高tickrate是不太现实的做法,尽量让链接延迟所造成的影响最小化。ping值才是破坏你们体验的罪魁祸首!

尽管tickrate影响不大,不过有时对枪失误你可以用tickrate去忽悠一哈你的队友,甩个锅不是美滋滋?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180129A0R5XM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券