背景:《王者荣耀》是由腾讯游戏开发的一款运营在Android、IOS平台上的MOBA类手游,属于多人联机在线竞技类游戏,于2015年11月26日在Android、IOS平台上正式公测,上线以来受到广大手游玩家的热爱,但是经常出现卡顿现象,对游戏性能有一定影响。
登录阶段
问题分析:与一般游戏相同,在启动阶段APP会检查版本是否有更新,这些过程都是HTTP过程,端口为80或8080,APP在获取实际地址后,再次并发多个请求进行更新包下载,下载的3分钟内,数据传输为HTTP;更新过程是一个HTTP多进程下载过程。打开游戏前几分钟的更新、签到等过程全部是HTTP过程,游戏前几分钟的更新、签到等过程全部是HTTP过程,伴随大量DNS过程,未建立80/8080/443端口外的TCP连接。
解决办法:针对王者荣耀的初始阶段可以采用已有的网页或视频优化手段,评估方法按照网页和HTTP下载评估即可。
开局阶段
问题分析:在游戏等待界面,有一些80端口的TCP握手和拆链,没有传数据,估计是游戏自身的一些测试,涉及了多个IP,但没有游戏连连接,游戏建立的TCP长连接,心跳包和实时UDP数据都来自其中的某一个其中,TCP长连接除了部分数据传输,每隔3s进行一次类似心跳包的发、收和反馈过程,收发数据包大小相同为56字节。
解决办法:游戏开局后,HTTP过程基本没有,数据交互采用TCP连接与UDP流的方式,对于UDP分组的优化目前还没有专门的feature;但UDP作为普通数据业务,像修改SR、DRX周期,DNS、TCP等措施都能一定程度的减少时延。
战斗阶段
问题分析:从玩家的角度及投诉的情况看,玩家更加注重游戏中的时延,游戏中时延优化归根到底是对上述一条TCP流及两条UDP数据传输的优化,优化的结果直接反映到检测网络的心跳包时延上;而这3条数据流主要特点是小包密集型,同一IP服务器UDP与TCP同时进行,游戏过程TCP与UDP端口随机。
解决办法:TCP数据与服务器交互和心跳包处于同一个流,UDP数据交互在同一服务器上,心跳包客观衡量了游戏交互时间。从UE侧周期的心跳时延,开启QCI3的预调度功能,能够有效降低空口时延,对游戏时延优化较大。
案例总结:王者荣耀在游戏过程中不卡顿,最低要求时延必须<150ms,该背景下无线时延点全程时延的比例就较大,优化空口时延对游戏的整体感知将效果显著。
王者荣耀优化调整参数一览表