一、项目背景《穿越火线-枪战王者》(简称:CFM)腾讯游戏在FPS移动领域的重要布局。CFM团队秉承多年来在射击游戏领域的积累,着力打造高品质的FPS手游,“手机端最爽快的射击体验”被广大玩家认可,树立了在移动FPS领域的品质标杆,在公司自有平台和外部渠道,都成功占领FPS领域最大市场份额,其中低端机玩家占比很大,研发团队为了保障用户的体验,需要持续优化客户端性能。
二、技术难点手游客户端性能与传统app有很大区别,并且游戏玩法、技术实现的不同,游戏引擎的差别,游戏的可能出现性能问题的场景以及性能表现差别会很大。另外CFM很大一部分玩家使用的是较低配置的手机,因此性能优化显得尤为重要和艰巨。CFM采用了Unity引擎,Profiler作为Unity官方的性能采集工具,在引擎层面采集数据,数据全面、可靠,但是不能对数据保存,无法进行二次分析。
三、实现方案(一)测试的目标根据手游性能测试团队对腾讯游戏多年的测试经验,测试团队针对CF手游设定了以下性能指标,来检验CF的客户端性能状况。测试工具则采用公司内部运营2年的客户端性能测试工具Cube。
(二)主要测试场景依据CF的玩法,性能瓶颈主要会在多人PVP场景,选取游戏中不同模式下,外网玩家较多的场景进行专项测试。 ①PVP-5V5-竞技模式-团队战(运输船) ②PVP-5V5-竞技模式-爆破战(新年广场) ③PVP-5V5-休闲模式-救世主(生化酒店) ④PVP-16V0-休闲模式-跳跳乐(天空之城) ⑤PVP-4V0-挑战模式-楼兰古墓(困难)
(三)发现问题情况1、内存峰值超标 在低配置的手机上,PSS内存峰值超过警示线350MB :
2、动画剪辑资源超标 动画剪辑资源超过15M的警示线,查看动画剪辑资源大小top20,以及每个资源的生命周期发现,SanTouLong_Boss_Born资源(boss出生纹理)从加载到场景结束一直未释放,并且资源达到了5.7MB,建议项目组进行优化。
3、楼兰古墓流量达到6K/S以上 楼兰古墓场景,平均每秒的流量消耗达到了6.79KB,观察网络流量趋势图在标记区域中,流量持续很高,建议采取有损服务和降低不必要开销。
4、FPS抖动严重 测试过程发现,部分低配置机型FPS波动比较剧烈,图中可以看出疑似卡顿点数量也明显上升,点击FPS曲线上的点发现,大部分卡顿点处都出现了同一个函数,沟通后发现该函数主要功能为采集UDP的丢包数、错误包数以及收发包量,建议去除该函数。
5、组件侧问题导致FPS在部分机型下降5帧 目前大部分游戏内集合了登录、支付、加速等一些组件,这些组件常常会成为影响游戏性能的凶手。
(四)解决方案1、去掉不合理的pool缓存,使用GPU Skinning降低SkinnedMesh的内存消耗,优化后的PSS内存趋势如下,整体下降了20MB。
2、释放不需要使用的动画剪辑资源,并且对资源进行压缩,将该场景的动画剪辑资源峰值降为12.07MB。
3、减少不必要的通信,服务器限帧,楼兰古墓降低到3.92K/S。
4、修改后去掉采集UDP的丢包数、错误包数以及收发包量函数,回复正常
四、最终效果项目上线前的测试阶段,手游性能测试团队累计为《穿越火线:枪战王者》审核了超过10个版本,在上线前持续优化,确保客户端性能始终如一,保障用户稳定体验。优化效果如下: FPS均值 25→30 CPU占比率 38%→20% 纹理资源峰值 31.84M→23.04M Mono内存 36.53M→32.04M
|