作者:程绪超

团队:腾讯移动品质中心

导语

不论你是或不是一个游戏玩家,最近吃鸡类游戏的火热度可见一斑。而我所在的项目团队要来干这件大事了,因为我们要实现 PC 端网游加速这回事,第一个目标就是绝地求生。

于是,就有了接下来我这学习网游加速的一连串效应。包括要知道吃鸡是什么?网游加速的原理是什么?都有哪几种网游加速?加速的评测指标有哪些?实际测试过程的测试方法应该如何应对?蹭着吃鸡游戏的火热度,本文主要围绕以上几个问题出发学习网游加速进行总结,希望对有吃鸡加速有兴趣的小伙伴有一些帮助。也特别感谢过程中给我提供技术指导帮助的开发同学。

一、吃鸡的由来

吃鸡实际上出自《绝地求生》游戏中的一句祝贺台词,当你击杀其他玩家获得第一的时候,屏幕上就会有一句话出现 “大吉大利,晚上吃鸡”。其实在外服的英文原版是 “winner winner,chicken dinner!”

而这句台词最早则是来自于一部电影《决胜 21 点》。在电影中那个年代的赌城拉斯维加斯,价值 1.79 美元的鸡肉饭是每一个赌场的标配,而当时标准赌局胜利的战利品是 2 美元,恰好够吃一顿鸡肉饭。

现在大家知道为啥叫吃鸡了吧。吃鸡类的游戏种类也繁多,PC 端和手机端都有,主要都是大逃杀类。PC 端一般特指《绝地求生大逃杀》,而移动端主流的,包括光荣使命(腾讯),荒野行动(网易),小米枪战(小米),丛林法则(霍尔果斯蓝鲸网络科技)等等。而网络游戏种类繁多,创意无限,且不说这里的吃鸡,总有一款会是你的菜。

个人的喜好是不固定,但有一点,想要顺畅的玩游戏可是所有玩家的共同目标。而由于网络的不稳定,在网络游戏中,你的心情可能会有坐过山车一般的跌宕起伏:从发现敌人的窃喜、到瞄准敌人的紧张、到扣动扳机的微笑、到卡顿之后的被爆头!人生大起大落得太快,实在是太可气了。通过网游加速来保障网络流畅和稳定实在是太重要了。

二、 一起来熟悉网游加速

1、网游加速的目的

网游加速的目的是为了让个人用户能够快速地连接到游戏服务器,让用户游戏更流畅。常用的衡量指标如下:

(1)网络延迟(delay)

它定义为信号从网络的一端 (如玩家客户端) 到另一端 (如游戏服务器) 所花费的时间。基于网络延迟,游戏卡顿情况可以简单分为以下级别:

(2)丢包率(Loss Tolerance 或 Packet Loss Rate)

它定义为测试中所丢失数据包数量占所发送数据组的比率。计算方法是:“[(输入报文 - 输出报文)/输入报文]*100%”。丢包率与数据包长度以及包发送频率相关。通常,千兆网卡在流量大于 200Mbps 时,丢包率小于万分之五;百兆网卡在流量大于 60Mbps 时,丢包率小于万分之一。

(3)每秒传输帧数 FPS(frames per second)

它定义为画面每秒传输的帧数,可以理解为屏幕的刷新率,通常不低于 30 帧/秒。但达到 60 帧/秒以上,人眼就分别不出来了,也就是说 60 帧/秒和 200 帧/秒在人眼看来是完全没区别的。一块高性能的显卡有助于数据帧的处理。

其它描述网络性能的指标还包括,速率、带宽、网络带宽积、吞吐率等。

2、网游加速的原因分析

在国内,网游加速的原因分为两类。

第一类是由于不同网络运营商间的壁垒造成的。

中国大陆拥有包括电信、联通、移动、科技网等九家互联网网络运营单位以及数百个跨省经营的互联网接入服务提供者。不同网络运营商之间的壁垒导致游戏服务器可能放置在与玩家不匹配的网络节点上,从而增加了数据交互的时间成本,导致玩家在充分的软硬件配置后还可能会频繁出现游戏卡顿现象(如图 1 所示)。

图 1——加速器使得玩家在不同运营商的骨干网之间找到最佳连接路径,从而有效减少网络延迟。

第二类是由于游戏服务器在境外,使得玩家需要跨境进行数据交互。

其网络延迟不仅仅受限于国内的网络壁垒,还受限于地理空间上的跨越和国际网络间的管制,如国内长城防火墙。

中国国际网络出口有四个:北京 (华北区)、上海 (华东区)、广州 (华南区) 和香港,而不同的国际网络出口对应着不同的国际骨干线路。

国际网络出口的理论延迟如表 1 所示。从北京和上海的国际出口都无法直接访问新加坡、马拉西亚和澳洲的东西部,而是需要借助华南区的国际出口。表 1 说明从中国大陆连接到美国东西部都得超过 120ms,远大于正常游戏的要求 (少于 90ms)。同时也发现,从国内访问香港、台湾、韩国、日本、新加坡和马来西亚的网络延迟在正常游戏可接受范围之内。因此,为有效降低网络延迟,一种是玩家获取网游加速服务,从客户端直连到合适的国际端口,减少国内网络壁垒的影响,而另一种则是游戏公司在世界范围内布置区域服务器,为玩家提供最低的访问延迟。而如何有效降低国内访问国外游戏服务器的网络延迟是一个综合性问题(如图 2)。

表 1——中国大陆国际出口的理论网络延迟

图 2——如何有效降低国内访问国外游戏服务器的网络延迟是个综合性问题

3、网游加速的基本原理

网游加速器主要是在骨干网发挥作用。为了提升网络互联速度,网游加速器厂商专门搭建或租用了高带宽的双线机房,架设多个节点服务器,编写网络加速器客户端,借助节点服务器来高效完成玩家的跨网连接游戏服务器请求。网络加速器客户端能够自动识别用户的网络线路类型 (电信或联通),自动选择速度最快的节点服务器进行数据转发,从而达到数据加速作用。

网游加速可以采用两种方式来实现。

一种是 ***。

它需要部署双线服务器作为加速节点,用于电信和联通之间的自动快速切换。客户端通过加速服务器自动选择速度最快的服务器。它需要拨号连接到服务器并获取一个虚拟 IP 地址,通过修改路由表的方式,将指定进程的网络访问路由到虚拟 IP 上,而其余地址仍经过原默认路由途径访问。

另一种是代理服务器。

它通过部署 SOCKS5 代理服务器作为加速节点,使得客户端能够自动选择最快的代理服务器作为当前的转发节点。在客户端,该方式主要采用 LSP 技术,在用户的主机安装分层协议。当在游戏客户端调用 connect 函数(或 WSAConnect 函数)试图连接游戏服务器时,LSP 将该连接重定向到代理服务器,并采用 SOCKS5 协议规范与代理服务器进行数据协商,由代理服务器来连接真正的游戏服务器,最后将游戏服务器的数据原封不动转发给用户或将用户的数据原封不动转发给游戏服务器。通用的实现海外游戏代理加速的框架如下图 3 所示:

图 3——访问海外游戏采用代理加速的原理

关于更详细的网游加速的原理以及技术实现可以在网络上搜索,基本都有详细介绍。

三、如何测试加速效果

下面重点讨论电脑管家游戏加速业务是如何实现吃鸡加速,包括技术方案实现框架,测试方案,测试指标,以及目前的不足。在具体讨论之前,先说下产品形态,如下左图是加速器的初始界面,用户可以选择游戏(绝地求生),选择区服后,点击一键加速进入加速状态,如下右图。

1、实现框架

游戏加速的网游加速主要是通过代理加速。依据代理加速的基本原理,需要依赖 LSP 注入以及部署 socks5 服务器来实现如下图 4。

图 4——游戏加速的代理加速框架(通用模式)

2、测试方案

依据上面的实现框架需要从加速器的产品实现和加速器的效果两个维度进行测试。

(1)基于产品实现的测试方案

按照我们的测试分析思路模型《这样的测试过程管理事半功倍》文章中介绍,从功能测试、耦合分析、专项测试、第三方分析,风险点这 5 个维度思考。代理加速需求相对于其它需求,UI 表现是次要,重点是技术实现。这里重点说明如何测试代理加速的成功与否,以及它的专项测试,包括接口测试、稳定性测试、兼容性测试,如下图所示:

图 5——代理加速专属测试项

围绕提升 EP 工程生产率的思路,测试过程中需要考虑到测试效率的提升。我们使用了测试程序,测试工具和测试左移的思路。

1)测试程序

由于我们的主要能力是实现海外游戏的加速,实际上是客户端向海外服务器连接的加速能力,在前期的测试过程可以使用测试程序替代游戏,由开发同学配合实现,节约环境准备的时间(推荐 TCPUDP 调试工具,支持发送数据包)。

2)测试工具

监测 lsp 注入写注册表时机以及网络行为可以使用 procmon 工具;监测 LSP 注入成功可以使用 procexp 工具。此外,Windows 的任务管理器里面的资源监视器可以监测 TCP 包的网络延迟,也可以自己编写个小工具计算;网络命令 tracert 或者使用 besttrace 工具可以查看路由转换;而日志工具应该是每个业务都会有的,这里主要要求开发在代码关键位置必须打印日志。

3)测试左移

从研发过程的各个阶段采取对应的策略来保障风险左移。具体的测试左移不在本文详述,TMQ 的专题吧里面有很多的干货。

(2)基于加速效果的测试方案

围绕核心网游加速的评测指标,我们的代理加速业务目前主要观测延迟和丢包率。延迟的时间计算包括 3 段,第一段是客户端访问接入节点的延迟,第二段是加速通道的延迟,第三段是访问海外服务器的延迟(海外服务器访问游戏服务器的延迟可以忽略)。

除了以上两个主要维度,还会考虑加速过程的网络稳定性,直接影响用户体验。关于加速效果的稳定性,这里的稳定性不是程序稳定性,而是网络的稳定性,用户在游戏过程中可以一直保持加速在线。这个数据比较主观,目前主要是通过设定一些玩家体验来界定。后面可以通过监控上报数据来观测异常后及时处理。

此处,我们还会进行前期的外团测试来保障我们新产品上线前的质量,避免出现一些严重的问题导致影响用户体验。如注入模块操作不当导致用户无法上网,或是导致游戏掉线,游戏崩溃。

四、总结及展望

提升网游的流畅度是提升网游质量的第一步,关系到玩家的体验。按照目前吃鸡游戏的火热度,拥有好的加速能力无疑提升了我们的产品在游戏侧用户的口碑。而目前的市场已经存在多个加速器占据很大的份额,我们如何做到后来者居上,还需要共同的努力。而作为测试人员这样一个小小的螺丝钉,除了保障产品的质量,也可以站在用户的角度思考如何能提升我们的加速口碑。

我觉得可以从以下三个方面思考:

一是搭建更多的节点服务器,为玩家提供更高质量的服务。

二是做好数据监控,及时发现用户问题,解决用户问题;及时优化现有方案进行加速能力优化。

三是针对特殊用户,如校园网,中小运营商如何加速也是需要考虑的点。

当然不止于这些。我们可以做的细节点还很多。等到后续收费功能上线后,直接影响金钱,更要高度关注。

综上,本文主要介绍了网游加速的目的,网游加速的原理,以及代理加速的测试方案。内容比较粗浅,随着后续代理加速能力的丰富,相信对这块也会有更多的心得。文中如有描述欠妥的地方,欢迎大咖指正。

网游加速是怎么回事你 get 到了吗?腾讯网游加速正式免费试玩中,小伙伴们可以来电脑管家体验,欢迎吐槽。

关注微信公众号:腾讯移动品质中心 TMQ,获取更多测试干货!


↙↙↙阅读原文可查看相关链接,并与作者交流