拒绝卡顿,手游性能问题分析及评测体系构建

发布时间:2019-06-06 15:43:00

手游问题现状

手游技术PC同质化

随着手机硬件能力的不断增强,很多游戏将PC上的特性慢慢过渡并应用到手游的场景里,包含光照、材质、粒子系统、后处理等多种特性。从大的趋势来讲,很多游戏都逐步从PC到移动端演进,并趋于同质化,游戏负载增加。

手游TOP问题:卡顿

经数据分析发现,手游的典型问题很多,如耗电、发热、兼容性及一些音视频同步等问题,但卡顿问题是最严重的,而卡顿又主要分为帧率卡、触控卡和网络卡三类。

卡顿从用户体验角度来说是比较类似,主要体现是画面不连续,但它们在本质上有很大区别,分析起来的流程也不同,本议题以帧率为例进行说明。

掉帧分析流程

游戏卡顿分析的难点在于没有对应的源代码,只能通过现象抽丝剥茧深入到本质。下图是根据性能分析过程简化的一个流程。

首先我们会记录每一个版本的功耗、性能的变化趋势,如果发现某个版本帧率抖动比较严重,就会去查是由于哪一场测试导致的,然后把这一场的数据拿出来,分析掉帧情况,通过掉帧的点获取它的画面信息,通过采集到对应的更细粒度的秒一级的信息进一步去分析。再往下就会到帧一级的分析,我们会去看这一帧到底画了什么,它画的整个流程又是什么。在各个级别间我们会借助对应的工具辅助分析,如秒级的Systrace、帧级的MGD等。

事实上,对于一帧来讲,其实并不简单。由于图形负载是手游来的第一压力要素,所以对于整个图形的管线理解是非常重要和关键的。

图形分析流程

当采集到一帧的信息时,它可能会分成几个过程,而每一个过程都会做一定的处理,每一步都有可能会导致渲染管线在某一个点上出现问题瓶颈,所以一个好的分析过程应该是把renderpass的每一个过程都拆解出来,做针对性的测试。

这里分享一些比较典型的优化方法:合并renderpass、合并drawcall、改变buffer format、做early-Z、改变texture atlas size、简化抗锯齿采样算法等。

性能问题解决方案

性能问题的优化方案可以理解成一个倒金字塔,这个优化可以发生在应用、引擎、OS、驱动、硬件层的每一层,但实际上大部分的优化在应用层更加容易。

层级越靠上越容易优化、改动,层级越靠下越需要对整个场景有更深的理解和预判,且各层之间存在依赖,需要打通关联,所以它们之间的信息传递实际上是非常关键的。

集合上述优化策略,我们可以得出:一款好的游戏体验实际上像漏斗一样需要每一层的优化,到最后是一个优化足够好的游戏体验。

手游评测体系

业内游戏评测体系现状:

针对手游,去年泰尔实验室和海外的Gamebench推出了很多评测指标,其实这些指标的推出对于整个手游的产业是非常重要的。行业需要这样的指标、KPI去承载,把用户能够表达出的语言翻译成量化的内容。

泰尔实验室做了一个非常全面的评测模型,包括各个维度,而Gamebench会从帧率的角度把它进行很多延展,这些东西都值得大家借鉴和思考。

同时还有一些观点供大家参考讨论:

标准应尽量全面,也应设计对应的权重;

评测需要工具的支撑,要考虑测试的可行性;

用例设计应关注典型用户场景,且保持一定覆盖度。

华为评测体系

华为方面也做了一些指标方面的研究,是华为内部用到的,同时也跟腾讯、网易包括泰尔实验室等等这些机构进行讨论的一些指标。

任何的评测体系都是一个逐渐演进的过程,但目前来说还不够完善,主要是现在很多评测都只关注某1-2款或者3-4款,游戏数量不足以体现这个手机到底能不能很好支撑。

未来评测体系架构

一个好的评测体系应该可以从粗粒度进入到细粒度,应该能够涵盖对游戏和一些小的Benchmark的测试,这才是一个比较合理的评测架构。而且这个评测架构可以在不同的GPU上产生相同的负载。

手游测试自动化

怎么能够做一个好的测试系统?就是把整个测试进行自动化,包含自动控制、自动采集和自动分析三部分,这三部分需要很多的技术来支撑。

从控制到采集到自动上传整个全过程,才能够有效的保证你的数据不流失,这个流程可以非常清楚的知道这场数据到底是怎么测的,包括预设条件、屏幕、声音,包括游戏本身的设置等,所以这一块要提及通道的问题,很多的场景判断实际上通过游戏去传递这种信息,帮助我们去做决策。

我们后续会通过绿盟推出该自动化系统,也欢迎大家来使用这个测试平台。

分享:
请先后留下您的评论
热门评论
没有更多评论了
合作咨询
申请加入会员
请选择您企业的所属类别