近日,WeTest腾讯质量开放平台发布《2016中国移动游戏质量白皮书》(以下简称“白皮书”)旨在最大程度展现2016年度手游质量方面的现状。白皮书数据采集自2016全年度的WeTest腾讯质量开放平台测试数据、应用宝数据、腾讯灯塔数据以及其他第三方数据平台的数据,力求客观、全面。
游戏研发概况
什么游戏类型最火?——角色扮演
2016年移动游戏类型主要包括动作冒险、飞行射击、角色扮演、经营策略、棋牌中心、体育竞速、网络游戏、休闲益智八个大类。其中,角色扮演类游戏最多,占比21.00%,代表作有《梦幻西游》、《热血传奇》等;体育竞速类游戏最少,占比7.16%,以《天天酷跑》等酷跑、赛车类游戏为代表。
移动游戏安装包普遍小于50M
受制于中国整体的手机硬件和网络环境,移动游戏的安装包普遍较小,其中小于50M的游戏安装包过半,只有四分之一的移动游戏安装包大小超过100M。随着安装包大小上升,相应的游戏数量锐减,其中,大于400M的游戏占比仅为3.1%。
不同类型游戏安装包大小差异较大,网络游戏、角色扮演、动作冒险游戏安装包大小普遍较大,其中网络游戏的平均大小达到205M,棋牌中心类游戏安装包最小,平均大小为27M。
移动硬件市场依然强劲
目前市场上移动硬件厂商超过340家,至2016年10月移动互联网用户超过10亿,日均活跃设备数量超过6亿。
操作系统中Android与iOS几乎覆盖了所有市场用户,两者用户比例约7:3。
终端品牌方面,5大巨头(华为、小米、三星、OPPO、VIVO)市场占比持续领先,连续10个月市场占比超过65%,最高接近70%。
芯片方面,高通、联发科、三星和海思四家厂商的市场占比超过95%,四巨头垄断整个芯片市场。
Android硬件性能持续升级
硬件性能在分辨率、内存、CPU等方面不断提升,变动巨大。
内存方面,1月份,1G及以下内存的机型占整个硬件市场的54%,10月份直接滑落到35%。新增机型方面,2G以上已成主流,甚至还出现了8G以上的机型。
分辨率方面,高清屏幕(720p以上)的占比从1月份的56%升到了10月份的65%;更高的分辨率可以给玩家带来更优质的游戏体验,也给各游戏厂商更大的发挥空间。
CPU处理核心八核手机在TOP机型排行占比增加,十月份TOP100榜单中已经达到66%,双核系统手机已经不在TOP100中。
CPU主频方面没有明显的趋势,1.2-1.4GHz低频段手机与1.5GHz以上频段手机市场占比无明显变化。
兼容性测试
哪些兼容性问题最多?
在腾讯WeTest平台测试的游戏中,平均每次测试能够发现11个兼容性问题。出现最多的问题为:安装失败、UI异常、Exception、崩溃。所以我们接下来针对出现问题最多的三个问题进行分析。
不同手机品牌游戏兼容性差别迥异
不同手机品牌上游戏的兼容性表现不一,华为、三星、乐视等品牌问题较少。总体来看不同品牌手机的问题率差别不大,但不同品牌问题率仍有不同。酷派、华为、三星、乐视手机问题率明显较低,说明这些手机的游戏兼容性较好,而问题率较高的一些品牌,需要游戏开发者尤其注意兼容情况。
内存越大,兼容性问题也越少
设备内存对兼容性的影响明显。随着内存增长,兼容性问题明显减少,内存为1G的机型出现问题的概率超过40%,内存为4G的机型出现问题的概率仅为3%左右。
开发者应该针对小内存的手机做一定优化,确保在小内存机器上不会出现过多问题。
Android4.0的兼容性问题最多
Android操作系统中,表现较好的为android5.x,兼容性问题最少。其中,Android5.0版本兼容性最好,问题率最低,仅约10%。
发现问题最多的版本为Android4.0,出现最多的问题为安装失败。主要原因是Android4.0版本的市场份额只有1.2%,并且不断下滑,有很多游戏已经不支持Android4.0版本,开发者可以根据自己的需要自行选择需要支持的版本。
Android6.0的问题率比Android5.0和5.1版本略高,说明新版本对游戏的适配还有待提升。
崩溃问题分析
手游的崩溃情况主要受到了手游内存,设备系统以及游戏类型三个维度的影响。
手游内存维度:
手机内存越大,出现崩溃的问题越少。内存对兼容性的影响很大,随着内存增大,兼容性问题明显减少,开发者想降低崩溃问题率,需要针对小内存手机做一些特殊优化。
设备系统维度:
Android6.0的崩溃问题率最高。相比总的问题率,Android6.0的崩溃问题率明显较高,开发者应该重视Android6.0版本的适配。
游戏类型维度:
体育竞速类适配兼容问题最多,棋牌中心类游戏适配最好。棋牌中心类产品玩法比较成熟,游戏逻辑较简单,崩溃问题率最低。
UI异常问题分析
UI异常主要包括了游戏界面出现黑屏、白屏、花屏、资源加载失败等问题。
按内存来看,1G内存手机的问题率远远高于2G以上手机。
按操作系统来看,Android4.0和Android5.1版本的UI问题较多。
按游戏类型来看,飞行射击、休闲益智类游戏出现UI异常的概率较高,网络游戏出现UI异常的概率相对较低。
安装失败问题分析
手游的安装失败问题主要受到了安装系统和游戏类型两个维度的影响。
4.0系统的安装失败率最高。Android4.0和4.1系统的安装失败最多,分别为68%和13%,4.0目前因为市场份额很小,很多游戏已不支持该版本Android系统,所以安装失败问题相对较多,开发者需要根据自身情况选择需要支持的系统版本。
休闲益智类游戏安装失败最少。动作冒险、角色扮演类游戏安装失败问题普遍较多,此类问题通过自动兼容性测试即可快速发现,需引起开发者的重视。
客户端性能测试
FPS表现最好的是消除类游戏
FPS指游戏每秒渲染帧数,意味着游戏画面的流畅度,当FPS过低时可能导致游戏卡顿现象。我们在测试中将着重关注游戏在默认配置下,核心游戏场景的FPS稳定性和平均值。
对于FPS稳定性,腾讯手游质量标准要求在中档和高档机型上,FPS达到25帧的比例大于90%,在低档机型上达到18帧的比例大于90%。
FPS的稳定性表现最好的类型为消除类,在三个档位机型上都达到了99.3%以上,表明此类游戏带给用户稳定流畅的操作体验。
FPS的稳定性表现最差的类型为棋牌类,在三个档位机型上全部未达标,并且出现了机型配置越好,稳定性反而越差的情况,此种情况也出现在了飞行射击类游戏上。仅消除类、体育竞速类及策略经营类三个类目在三个档位的机型上都符合标准。
在平均FPS方面,消除类和体育竞速类游戏表现相比之下更为优秀,这两个类别下的不达标游戏数量也极少。棋牌类游戏在高档机型上FPS均值跌过25,只有23.66,不达标的游戏数量也超过了三成,虽然用户体验上影响不大,但仍需引起注意。
总的来说,随着中重度游戏越来越多,游戏FPS均值出现缓慢降低的趋势。
多种游戏类型都存在明显内存超标
现在的移动设备内存都比较有限,安卓系统的特性也容易导致内存紧张。当游戏占用内存过高时,可能会造成游戏卡顿甚至无法启动的现象。我们在测试中将着重关注游戏在默认配置下,核心游戏场景的PSS内存峰值和均值。腾讯手游质量标准要求在高档机型上PSS内存峰值小于450MB,中档机型上PSS内存峰值小于350MB,低档机性上PSS内存峰值小于256MB。
内存问题在低档机型上最为严重,角色扮演、动作冒险、飞行射击和网络游戏类内存超标现象比较明显。开发者在低端机型上对游戏的性能优化需要引起重视。此外在低端机型中,我们发现同一款游戏在不同品牌的手机上内存占用差距极大,建议使用腾讯TDR标准推荐的机型进行测试。
内存占用最高的类别为动作冒险类,在中档机型及高档机型中都占据第一。在低档机型中网络游戏类占用最高,达到304.25MB。
内存占用最低的是棋牌类,在三档机型中全为最低,这也与其本身的特征相符。
网络游戏的CPU稳定性最差
CPU(中央处理器)是手机的运算核心和控制中心,对于游戏表现的影响可见一斑。当游戏占用CPU过高时,游戏可能会出现运行缓慢、卡顿、闪退等现象,严重影响玩家的游戏体验。我们在测试中主要关注游戏在默认配置下,核心游戏场景的CPU占用情况。对于CPU稳定性,腾讯手游质量标准要求游戏在各档机型中的CPU占用低于60%的比例大于90%。
CPU稳定性表现最好的类型为消除类,在三档机型中都达到了99.6%以上,说明此类游戏能在各档机器中都能提供稳定优秀的游戏体验。CPU稳定性表现最差的类型为网络游戏,网络游戏在低档机型中表现最差,在高档机型中的表现也低于其它类型的游戏。从全局来看,所有游戏均已达标,但小部分棋牌类游戏仍存在CPU占用稍高的情况。
在平均CPU占用方面,棋牌类游表现最好,在中档机型中的CPU占用均值低至8.17%,远胜其他类型游戏。网络游戏在高中低三档机型中CPU占用均值全部高于其他类型游戏,可能存在CPU占用过高的风险。
仅五成游戏达到腾讯Mono内存标准
Unity引擎制作的游戏数据进行了汇总,让读者了解目前Unity游戏的数据表现。本节从mono内存及资源角度进行了数据分析。
mono内存方面,仅五成Unity游戏达到了腾讯标准推荐的50MB以下的要求。
Unity游戏的资源内存主要来自于纹理、网格、动画以及音频部分。
纹理资源方面,也仅五成Unity游戏达到了腾讯标准推荐的50MB以下的要求,同时也是所有资源内存中超标最多的一项,值得游戏开发者的关注;网格资源方面,八成多的Unity游戏达到了腾讯标准推荐的20MB以下的要求;动画以及音频资源方面,八成多的Unity游戏达到了腾讯标准推荐的15MB以下的要求。
安全测试
安全测试总体概况
在所有问题中,业务安全方面发现的主要问题可分为致命问题、严重问题和一般问题,占比分别为18.48%、62.74%和18.78%;系统安全方面发现的主要问题为源码安全漏洞、系统安全漏洞和系统安全风险,占比分别为46.14%、40.89%和12.96%。
发现业务安全问题中,致命问题主要为服务器崩溃,全屏攻击,刷属性;严重问题主要为无敌,秒杀,弱化怪物;一般问题主要为破坏游戏玩法,敏感信息,异常状态下非法操作。
发现的系统安全问题中,源码安全漏洞问题数最多,占比为46.14%。需要引起开发者重视。其中安全漏洞为在游戏具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问系统。
业务安全问题
常见的安全风险如右图所示,出现最多的手游问题为无敌、秒杀等,对用户造成影响比较严重的主要是服务器宕机。
其中秒杀问题主要是由于策略校验不严格:服务器未校验伤害值,并发伤害,攻击加速,攻击必爆等。无敌产生的主要原因是游戏逻辑存在漏洞:纯客户端逻辑、被攻击方上报伤害、瞬移、移动加速等。
服务器宕机主要是由异常协议数据引发,包括空指针、野指针、数据溢出、内存越界等。协议问题和函数问题也容易发现一些无敌秒杀漏洞。
业务安全问题
手游的业务安全主要受到了游戏引擎和游戏类型两个维度的影响。
引擎方面,Unity引擎的游戏相对发现的安全问题较多;平均每次测试发现20多个安全问题,其中13个严重问题。这是由于Unity引擎在4.x版本的安卓平台上还未支持il2cpp,会存在C#代码容易被反编译的漏洞。这个问题已经在最新的5.x版本中解决,建议开发者升级引擎到最新的版本,并且在安卓平台开启il2cpp。
游戏类型方面,飞行射击类游戏的问题最多。飞行射击类游戏发现问题最多,主要是一般性问题,休闲益智类游戏平均每次测试发现16个问题,但是严重级别的问题就有13个,动作冒险类游戏发现的致命问题最多,平均每次测试发现9个致命问题。
系统安全风险
高危漏洞超过三成,需要引起开发者重视。
手游安全性问题系统安全漏洞问题主要分布为:高危34.61%,中危55.65%,低危9.74%。其中,安全漏洞主要为:Web组件远程代码执行漏洞、HTTPS敏感数据劫持漏洞和私有文件泄露风险,会对开发者造成极大的安全损失;安全风险主要为:BroadcastReveiver组件暴露风险、Activity组件暴露风险和私有文件泄露风险,也需要引起开发者重视。
舆情监控
用户反馈最多的质量问题是登录问题
在玩家反馈的所有质量问题中,占比最多的是登录问题:“进不去”、“登不上”和“上不去”名列前三。在抽样的游戏中,有84%曾发生闪退问题。由于登录问题会直接导致玩家无法进行游戏,一旦问题爆发,玩家很容易跑到应用商店、打低评分,表示抗议。
第二大问题是稳定性问题。用户反映集中于“闪退”、“死机”。稳定性问题也是直接导致用户无法进行游戏的严重问题,高达22%的用户评论都在反馈稳定性问题。“闪退”是占比最高的细分类,占所有问题评论的14%。
第三、第四大问题是兼容适配和网络,这两种问题受到机型、地域等限制,只会影响部分玩家,故反馈量比起前两类问题略少。反馈最多的兼容适配问题是“打不开”、“黑屏”、“安装不上”,网络问题是“掉线”、“连不上”、“费流量”,在进行专项测试时应对这些问题重点关注。
重度游戏更易爆发质量问题
结合游戏类型对质量问题评论进行分析,可以看出游戏的制作难度、玩家人数,都会影响问题出现的频率和影响面。制作难度越大、玩法丰富、热门的游戏,越容易暴露出问题,需要在质量保证上投入更多精力。
网络游戏主要为重度游戏,具有强联网、开发难度大、用户粘度高等特点,容易爆发问题。休闲益智和经营策略由于门槛低、轻松休闲,玩家基数大,一旦发生问题,影响人群较其他类别会更大。经营策略类游戏的玩家行为通常具备单次时间短、整体游戏时间长的特征,因此也容易遭遇各种问题。
问题比较少的分类有棋牌中心和体育竞速类,它们登录和兼容适配的问题出现得最少,稳定性也相对优秀,同时因为玩法成熟,版本更新时也很少出现问题。
豌豆荚用户评论总量居于首位
目前市场上安卓渠道繁多,腾讯WeTest选取了八大应用商店各自的TOP10热门游戏,对它们近三个月(9月1日-11月30日)评论总量进行了统计,得出以下结论。
豌豆荚用户评论总量居于首位,评论数量总量高达180000条,大大高于其后的渠道,十大热门游戏中所有评论数都在15000条以上,平均每月5000条。
应用宝作为用户量最大的第三方应用商店,评论数量居于次席;小米的硬件市场占有量在2016年排在第二,仅次于华为,因此评论量也在厂商应用市场中位居第一,值得关注。
360手机助手评论数偏低,热门的游戏的月平均评论在500左右,仅为豌豆荚的1/10。
十大年度畅销游戏评测
为了直观了解畅销游戏的质量情况,WeTest平台对2016年10月APPStoreTop10畅销榜单游戏进行了AndroidTOP100机型以及iOS所有机型的完整兼容性测试。
AndroidTOP100机型测试结果:
共发现问题50个,其中严重及以上问题36个,共涉及设备数量61部。
iOS所有机型测试结果:共发现问题11个,其中严重及以上问题7个,共涉及设备数量12部。
相比之下,十大畅销游戏适配兼容状况整体明显优于市场平均质量,仅从bug总数来看:Android方面,畅销游戏平均bug总数5.0个,远低于市场平均bug总数10.91个;iOS方面,畅销游戏平均bug总数1.1个,远低于市场平均bug总数4.45个。这也从一个侧面看出,十大畅销游戏之所以畅销,除了丰富多变的场景、新颖奇特的玩法等因素以外,还有优质稳定的游戏质量做支撑。
在卓越的质量表现背后,畅销游戏在不同平台上的表现还是存在着差别,相比iOS,Android平台的问题较多一些,在未来,Android平台的质量比拼值得所有游戏厂商引起重视。
兼容性问题解决建议
客户端崩溃
崩溃问题解决方法主要有下列四种,开发者需要根据自身情况合理选择:
1、通过异常堆栈找到对应的代码进行分析,java可以直接看到代码堆栈,native程序可用ndk-stack还原到代码异常堆栈,根据逻辑找到原因;
2、与上一个稳定版本对比代码变化,可使用比较工具如beyondcompare,仔细分析所修改的代码,找到问题原因;
3、直接调试分析,使用AndroidStudio进行调试,Java和Native程序都可以考虑,在代码异常发生之前单步跟踪,找到问题原因;
4、关键位置多打些debug日志等待问题重现,重现后通过日志缩小问题范围再结合代码进行分析,找到问题原因;
UI异常
UI异常一般分为几类:黑屏、白屏、花屏;重影,错位;资源加载失败等等。
1、黑白屏和花屏问题一般是跟Android设备的兼容适配强相关的问题。具体跟设备的屏幕尺寸、GPU类型,定制化Android版本等相关。例如关注GPU对一些纹理的支持格式;以及虚拟控件对图片本身的显示效果等。
2、重影、错位,或者资源加载失败,一般是游戏本身的逻辑问题。一旦出现,一般不会只在特定的机型上发生。这块UI问题,产生的原因有时也与游戏引擎相关,就Unity引擎开发的游戏而言,我们发现很多开发者没按官方图片格式等来做,注意图片格式符合官方标准等。
安装失败
安装失败,主要有3种原因。
1、ROM空间不够。这块的解决方法有2种:可通过减包优化,或更换手游的目标机型来解决
2、存在游戏版本功能特性改版后,不适配当前的机型。可根据产品的变化点,去逐条分析,排查适配兼容问题。
3、手游适配的安卓版本范围与当前机型的安卓版本不一致。
客户端性能优化建议
FPS
核心场景中,尽量减少耗时较大函数的调用,比如资源加载函数,对象生成函数,IO操作函数等,将这些函数放在场景加载时完成。
同一时刻场景中存在的对象数量需要进行控制,特别是一些比较消耗性能的对象,刚体性质的对象需要物理计算及碰撞检测,模型材质复杂的对象需要更多渲染性能,这些对象不要同时存在过多。
对游戏资源的尺寸进行优化,在保证效果的前提下,减少网格的面数和骨骼数,纹理的大小等。
内存
代码逻辑方面,及时释放不再使用的内存,减少频繁的内存分配和释放,有条件的情况下可以使用内存池和对象池技术。
游戏资源方面,控制资源的尺寸,进行按需加载和释放,防止不再需要的资源继续留在内存中。同时一些参数也会影响资源的内存占用,比如纹理长宽非2次幂,纹理mipmap数量等,需要特别注意。
CPU
在游戏主线程中,尽量不做复杂运算,将这些运算放在单独的子线程中完成。
善用引擎提供的优化选项,比如网格合并,遮挡剔除,光照烘焙等,这些功能可以极大减少引擎需要的CPU运算。
性能要求特别高的代码,可以使用c或c++语言实现,甚至嵌入汇编语言。
业务安全问题解决建议
客户端安全
客户端安全指的是从反破解反调试角度,应用层面需要进行的防范措施。
针对开发者的建议:
1)增加反调试机制防止游戏在运行时被破解;
2)屏蔽常规的ptrace等注入方式;
3)配置编译选项将so文件中的函数名进行抹消;
4)针对动态库so以及资源文件进行完整性校验;
5)针对Unity引擎下的关键逻辑动态库dll文件,需要进行隐藏或者加密处理;
6)针对Apk文件的二次打包进行校验处理;
7)避免输出关键逻辑相关的log信息。
业务逻辑安全
业务逻辑安全指的是和游戏业务数据相关的安全问题。
针对开发者的建议:
1)针对游戏运行时的内存数据进行加密处理;
2)本地客户端与服务器端的通信协议必须使用加密保护,且加密Key至少每次登录变化一次;
3)针对通信协议强交互类型的游戏,关键逻辑运算必须有服务器端完成;
4)针对通信协议弱交互类型的游戏,需要记录用户在单局游戏内的数据,上报至服务器端进行统一校验。
服务器端安全
服务器端存在各种影响游戏正常运营的安全问题。针对开发者的建议:
1)针对游戏内用户输入,需要防止SQL注入等类型的漏洞问题。
2)针对DDOS类型的攻击漏洞问题,建议加入类似大禹系统的防攻击安全组件。
系统安全漏洞解决建议
Web远程代码执行漏洞
目前可以通过编写静态代码扫描,找出可能存在的问题。提前做好预防措施,保证访问非法网站时,不会被迫执行恶意命令。
具体的预防措施
1)确保只在访问可信页面数据时才使用风险接口addjavascriptInterface;
2)在调用Java对象方法前对参数进行检查,避免执行恶意操作;
3)对于在4.2(API17+)系统运行的应用,使用JavascriptInterface代替addjavascriptInterface。
HTTPS敏感数据劫持漏洞
HTTPS敏感数据劫持漏洞主要原因有以下几点:a。没有对SSL证书进行校验;b。没有对域名进行校验;c。证书颁发机构(Certification Authority)被攻击导致私钥泄露等。
针对开发者的建议
1)常规App,尽量设置一些证书,比如CA证书,或者设置客户端证书;
2)出于安全的考虑,建议对证书进行强校验(签名CA是否合法、证书是否有自签名、主机域名是否匹配、证书是否过期等),详细修改方案请参照Google官方关于SSL的安全建议。
系统组件本地拒绝服务漏洞
恶意应用可通过向受害者应用发送异常、畸形或空的Intent数据将引起该应用产生本地拒绝服务的漏洞问题。同时如果系统级应用软件被攻击后,可能导致手机重启。
建议采取的措施
1)不必要的组件将其exported属性显示的设置为false,减少应用的受攻击面;
2)在使用Intent.getXExtra()时建议用try-catch做好异常处理;
3)将导出的组件设置权限控制,防止被第三方应用访问。
舆情监控解决建议
游戏上线前:竞品分析
•了解竞品多发问题
同类游戏,问题分布较为相似。分析竞品用户反馈,总结常见质量问题,在研发测试时重点关注。
•了解竞品玩家的渠道反馈习惯
分析竞品玩家的反馈习惯,了解其在不同渠道的反馈声量、响应速度及质量,为游戏上线后的反馈监测做准备。届时可按特定需求定位特定反馈渠道。
•借鉴口碑危机处理模式
借鉴危机应对方案时,不必局限于游戏。针对影响力大的危机公关事件,查阅相关资讯与口碑趋势,把引爆点、传播节点、对应措施、群众反映结合起来通盘分析,借鉴经验。
游戏上线后,监测预警
•实时跟踪玩家反馈
新版本或活动对外发布时,使用舆情监控收录应用商店、论坛、社媒反馈,了解最新口碑趋势。
•聚焦意见领袖与核心玩家
可人工监测,聚焦Q群、微信群玩家的反馈,定位反馈活跃、质量高的玩家1对1沟通。也可使用工具,采用传播分析、画像分析类数据产品来完成。
•建立问题预警机制
海量评论,建立合适的预警机制可大幅提升效率。选择适当关键词如“卡顿”,监测关键词在各渠道评论中出现的频次、趋势、覆盖版本等。当问题影响面达到一定标准时,及时告警。
口碑危机,定位问题,跟踪趋势
•快速定位问题
爆发质量口碑危机时,需要快速定位问题的游戏版、机型,系统等。除了本地日志外,舆情工具对问题反馈用户的画像分析也值得参考。
•评估影响面
按问题关键词筛选反馈,了解声量/情感变化。讨论人数、发言情感强烈度,都可用于评估影响面。
•跟踪舆情走向
问题修复后,仍跟踪用户反馈、口碑趋势,了解问题的解决效果。宏观上的关键词声量,负面情感强度,微观上的波及终端,系统,版本是否还存在相关问题反馈都是需要关注的