使命召唤 现代战争

Call of Duty: Modern Warfare

怪物猎人 世界

Monster Hunter World

荒野大镖客 救赎2

Red Dead Redemption 2

打个联机游戏,为什么你的网络老出岔子?

作者 箱子   编辑 箱子   2019-12-11 10:27:49

也许每名玩家都饱受过延迟和掉线之苦。

  那些喜爱对战、共斗的玩家,经过这么多年的磨练,想必早已对稀奇古怪的网络问题见怪不怪。考虑到国内复杂的网络环境,以及运营商本身服务端的设置,如果用户不进行对应调整,联机游戏和线上游戏的体验往往不怎么顺畅。但围绕防火墙、带宽、网络提供商、地理位置等元素,每一种麻烦似乎都有个殊性。

  比如《怪物猎人 世界》刚刚发售时,掉线的情况屡见不鲜,又比如让《最终幻想14》玩家深感钻心之痛的错误代码 —— “90002”和“2002”。让人困惑的是,它们是否有共通的成分?有没有一套一劳永逸的解决“公式”?若是从网络工程师的角度出发,专业人士又会如何审视这些问题?

物理的极限

  “首先,所有玩家在联机的时候都存在一个物理延时问题,这个是所有人避免不了的,大家都距离很远,不管玩家和玩家之间,还是玩家和服务器之间都会存在这种问题。比如你玩美服的时候,相当于围着地球绕了半圈,从中国到美国,裸光纤都是 10000 公里以上,你就是乘着光速跑也要 100ms+。”

  在向奇游联机宝的工程师请教时,对方抛出了最为基础的前提:传输延迟。

  100ms 换算过来是 0.1 秒,尽管看起来很短,但对于某些强对抗的游戏而言,玩家已经能感受到明显的区别了。表现为 FPS 游戏里的命中检定失败,或是动作游戏里该躲的技能躲不开。如果传输的时间超过 200ms,往往还会伴随着无法访问网络的情况。

中国联通的网络路径图

  若是路径和介质固定,再排除环境干扰,那么传输延迟基本是恒定的。可以依据光、电信号的传输速度,以及有线的光纤铜缆,无线的各种制式算出具体数值。但距离越长,意味着两台计算机间可能会出现更多的节点和硬件,其中还涉及到数字信号和电信号的转换。要是简单的来分类,可以说产生了“处理延迟”。

  事实上,玩国服游戏也觉得“卡”,很大程度上都是“处理延迟”的锅。在工程师们的眼中,跨运营商联机时的复杂网络路径是个大问题:

  “游戏数据包从用户侧到服务器会经过很多的中间设备,这些中间设备可能在不同的运营商,如路由器、网关、交换机等等,可以理解为快递的中转站。不同运营商到同一个服务器的路由路径很可能是不一样的,比如,电信用户玩上海的服务器,从用户直连上海,但是移动的用户玩相同的服务器,可能需要绕道广州再到上海,延时就增加了。”

  对于消费者来说,网络路径中设备的转发能力是个未知数。如果运营商在硬件上偷工减料,那么封装、解码的时间肯定更长。简单的拿路由器来举例,网络高峰期拥堵的时候,来不及转发的数据包就在缓冲队列里待着。其中有很多猫腻,按照规则,可以让 IP 优先级高的先走,映射到服务里就是卖 VIP 用户。

红色为低延迟队列,VIP 先走

  至于饱受诟病的外服联机,工程师表示,在距离更远、路径更复杂,以及上述这些前提条件都存在的情况下,数据包会七绕八绕的来到国际端线:

  “第一个问题就是连不上游戏,很大可能是大量丢包或者流量被阻断了,阻断的原因就太多了,各种问题。在连接国际端线时,常见的部分流量被认为是翻墙流量,直接阻断,另外到部分国外 IP 或者地区的流量太大,会被限速,因为国际带宽是有限的,不可能让所有人都敞开用……举个例子就是白天你访问 R 星平台下《大镖客2》,白天下载速度很快,能跑到 10~20m,晚上下载就变成龟速。”

  而在所知的范围内,北京(华北区)和上海(华东区)的国际出口,没法直接访问东南亚和澳洲的部分地区,就要绕道广州(华南区)和香港。


下一页:难缠的联机方式

| (249) 赞(362)
箱子 点赞狂魔

原来小丑就是我。

关注
点赞是美意,打赏是鼓励

评论(249

跟帖规范
您还未,不能参与发言哦~
按热度 按时间

总贡献榜