为了解决网络延迟,厂商都使出了什么手段?

星灭山上一白妖

作者:星灭山上一白妖

发布于2022-05-25 16:02:31 +订阅

       这段时间有关英雄联盟季中冠军赛中RNG被迫重赛的消息,已经成了网络上的一个热梗。

       即便风波已经过去,但这次拳头赛事官方的安排显然无法让人买账。如果你现在去看比赛就会发现,往往某一边出现重大失误,导致局势向一边倾倒之后,弹幕往往都会以“不公平!不公平!”、“重赛!重赛!”来调侃(LCK队伍失误时,这类弹幕最多)。

       之前的采访中也有强调,职业选手在游戏中,网络波动幅度达到10ping以上,他们就已经有比较明显的感觉,而如果ping值太高,就会很大程度上影响选手们的操作。毕竟在线下比赛中,ping值最多也都只有个位数而已。

       正是在这样的情况下,由于赛事官方表示线下参赛队伍的延迟达到了50ping左右,出于赛事公平的考虑,以RNG重赛三场作为处理办法。国内观众不满归不满,但这件事终究以RNG又一个3/0画上了句号。

       但延迟这个问题,显然是事件中大家关注的焦点。

       或者说,很多人因此开始讨论的一个话题是,网络延迟真的有那么大影响吗?

       我相信对大部分对战游戏玩家来说,答案都是肯定的。

       网络延迟对于众多网游玩家,尤其是FPS玩家而言,应该是一件相当熟悉并且让人感到痛苦的事情。延迟稍高的时候,可能只是会出现略微的卡顿,这时对于菜鸟(比如我)层面的对局来讲,尽管稍有影响,但游戏体验整体还是可以接受的(100毫秒以下就是电竞)。

       可对于顶尖大佬而言,在游戏里往往都是见面分生死的节奏,这略微的卡顿,很有可能就是自己输掉对枪的主要因素。如果自己的网络延迟一直很高,那么必然会让玩家感到苦不堪言(最多偶尔将对手“卡死”几次)。

       为了确保赛事抑或是普通玩家游戏对局的公平性,尽可能地降低游戏延迟,就成为了这些赛事举办方,抑或是游戏厂商需要着重考虑的一个问题。

       不可否认的是,网络延迟这个现象是客观存在的,尤其是在玩家身处全球各个地区的情况下,即便你的网络状态再好,地理位置带来的物理延迟是无法避免的。

       这也是强调线下赛事公平性的原因,RNG更是由于线上参赛惹了一身麻烦。但在疫情爆发后,线上赛逐渐成为了不少游戏职业赛事的主流。去年英雄联盟的季中冠军赛就被取消,变成了所谓的季中杯赛,在LPL(中国大陆赛区)LCK(韩国赛区)之间展开。因为双方距离较近,物理延迟不会太过影响选手们的操作。

       同样的例子,还有已经举办很长一段时间线上赛的守望先锋联赛(OWL),由于这些OWL战队分布在全球的天南地北,为了减少网络延迟带来的影响,选择按区域划分了东西部赛区,西部赛区是欧美战队之间的较量,而东部赛区便是位于中韩两国这些战队的较量。

       但东西部赛区的比赛打完,两边的队伍终究得碰面的,这时候该怎么办?答案是西部赛区的战队前往夏威夷,和东部赛区的队伍完成后续比赛。赛事官方经过判断后,认为延迟最高不会超过90ms——可以说,为了降低延迟好好举办一场比赛,大伙真的是用尽了一切手段。

       当然,这些都是从职业赛事的角度出发,尽可能降低网络延迟追求公平。普通玩家的要求相对可能会更低一些,但由于自身网络状况波动等原因,总会遇上几次网络延迟超高,并且半天都没改善的情况。

       针对这种情况,很多游戏里都设定了所谓的延迟补偿机制,尽可能让玩家在网络延迟不同的情况下,仍能拥有比较公平的竞技环境以及流畅的游戏体验。

       游戏中强调的延迟高以及卡顿,直观反映就是ping值过高。所谓的ping,就是玩家从客户端将数据包发送到服务器然后重新返回的时间。

       “敌人走到你面前,瞄准击中敌人。”

       在这个过程中,敌人走到你面前这件事,用了对方一半ping的时间上传到服务器,再经过你的一半ping时间后,服务器将数据发送给你的客户端。然后下一瞬敌人出现,你进行射击,经过你一半ping时间后,这次射击被上传到服务器,然后经由服务器判定此次射击是否有效。

       即便敌我两个人的ping完全相同,仍然会耗费一个半ping的时间来处理数据。当然,在低延迟状态下,这个过程带来的差异几乎感受不到。

       但如果两人的ping值差距过大,那么差异就会相当明显。这就是为什么“卡”的时候,你明明射中了敌人却并没有奏效——因为你射击的敌人,是用了对方一半ping时间,将自己的位置数据上传到服务器,然后又用了你一半ping的时间传输给你。

       由于你的延迟过高,服务器给你发送数据包更慢,在你接收到数据并射击的时候,敌人实际上已经溜之大吉了。为了尽可能解决这个问题,就出现了所谓的延迟补偿。

       用CS:GO中你击杀一名敌人这个过程来举例。

       当你开启延迟补偿这个机制之后,你向自己看到的敌人进行射击,“你开枪”的这个信息便会被立即传到服务器,而延迟补偿机制会开始推算你究竟在哪个时刻开的枪——这个过程的延迟会被服务器回溯,然后检查“你开枪”这个数据包发出来的情形,经过运算后,服务器判定你成功击中目标,然后这个事件得到更新,在你的一半ping时间后,你才能得知目标被击中的消息。

       有的玩家表示自己在开启延迟补偿后,会出现敌人跑过去,然后再倒地的乌龙,甚至有时会出现自己明明没打到他,但敌人却被击中的现象。

图源B站:BV1G44y1V7Sg

       发生这种事件,是因为在延迟补偿状态下,服务器判定你和敌人位置时是建立在惯性上(也就是说它在预判)。服务器传递给你的对方数据,以及传递给对方的你的数据,和实际数据相比都存在延迟。如果你的延迟过高并且开启延迟补偿,在游戏中的直观感受,就是对面的角色好像变宽并且更容易命中了。

       相对来讲,这种惯性预判式的延迟补偿机制,更适用于马里奥赛车竞速游戏——毕竟CS:GO里玩家会经常出现peek身位这样的突变式行动,惯性预测的机制在这时就可能会出现乌龙——你peek一下躲回了掩体,但对面的“高ping战士”才刚刚看到你出现在屏幕上,然后一击毙命。

       相对来讲,由于在赛车类游戏中惯性明显更大一些,同时很难像射击游戏玩家那样出现突然的变相,所以将这个机制套用在它们身上的效果也会更好。即便玩家网络状况不同,部分用户处于高延迟的状态下,但服务器通过及时对玩家的状态进行更新,即便偶尔出现丢包的情况,也能依靠对前后的数据包进行插值计算,呈现出比较流畅的游戏体验。

       当然,有CS:GO等正面例子,同样也会有在延迟补偿机制上做得稀烂的反面例子。最为典型的,就是当年育碧的《彩虹六号:围攻》。而这款曾被萌新和菜鸟戏称为“彩虹六号:围观”的射击游戏,同样也有延迟补偿的设定。

       只是这个机制实在有些太烂了,或者说是“太赖了”。

       具体来说,与《CS:GO》不同,《彩虹六号:围攻》的延迟补偿机制,会导致你的位置数据提交给服务器,服务器传输给敌人的这个过程,拥有比较明显的延迟。而这个延迟也就意味着,你自己在游戏对局中的实际位置,永远会领先于敌人看到的画面,也就是说移动的人始终会先一步看到对方。

       这样奇怪甚至畸形的延迟补偿,配合上这款游戏本身极短的TTK,导致无数“高ping战士”能够轻松干拉秒掉那些架枪的人——因为在你处于不动的状态下,这个延迟补偿机制显然跟你没太大关系。

       两个人的画面看上去也迥然不同:在开启延迟补偿的“高ping战士”的画面里,是自己从掩体后出来后,面前有个菜鸟在发愣,然后一枪秒掉。而这个过程在架枪的低延迟老哥看来,就是突然闪出来个人将自己秒掉,甚至有时候没看到人,自己就已经不明不白的死了。

       补偿机制的缺陷,导致很多人在《彩虹六号:围攻》里动用包括“迅雷减速器(挂在后台下个片)”等各种手段,尽可能地将自己的延迟维持在150-200ping之间,然后就能化身战神,拥有丝滑而又无敌的游戏体验。

       这种事情育碧会坐视不管吗?当然不会,既然我们不会做延迟补偿,那我们就将它删掉——现在的《彩虹六号:围攻》里,已经不存在所谓的“延迟战神”,这也使得情况立即发生反转,低延迟玩家占据绝对优势,“9ping爷”在对局中更是无往不利。在高延迟的情况下,即便你先手开枪打的对面脑袋冒血,但还是会被对面反手秒掉,看一眼回放,甚至会发现对面一滴血都没掉,比如上面这种情况(图源B站:BV1iT4y1v7TA)

       当然,尽管说了这么多,大伙真的在玩游戏的时候,还是尽可能配个状态好点的网络。毕竟不论厂商对于延时是否有一套“平衡”设置,在化身“高ping战士”时,无论对敌人还是你自己,都是一次体验极差的折磨。而平常的排位赛,可不会因为延迟重赛(摊手)。

分享到:

APP精彩推荐

相关资讯
热门资讯
下载APP可查看更多精彩资讯