据统计,中国手机游戏已经有5亿8600万用户,用手机玩游戏越来越受消费者青睐,甚至还诞生了一些诸如《和平精英》、《王者荣耀》等现象级手游。想要流畅的用手机玩游戏,就需要解决好手机的发烫和卡顿等涉及到游戏体验的诸多问题。对于广大玩家们而言,影响游戏体验的一大元凶,就当属卡顿了,特别是在玩动作游戏时,出现卡顿现象简直让人崩溃。今天本文会从游戏卡顿和性能分析工具这两方面入手为大家讲解手机卡顿发热的具体原因。
卡顿是指游戏帧率的突然降低,给人带来不流畅的感觉。这就像你下楼梯,每阶高度一样一阶一阶往下走,突然少了10阶。帧率的定义是每秒钟帧的数目,英文简称fps,frames per second。游戏画面帧率本来是稳定的,每秒钟都会刷N帧,突然刷了N-M(M<N)帧,M 越大带给人的落差越大,体验越不好。
为什么帧率会突然降低?通常大部分原因是由于当前画面复杂度增加,手机无法按时完成每秒N帧的渲染任务。以和平精英为例,如下图设置项,流畅自适应打开后会在帧率波动过大时自动降低画质提升流畅度。
画质和帧率是互相约束的,当发生卡顿时,需要降低其一。以和平精英的设置为例,包括5种画质,5种帧率。帧率从低、中、高、超高到极限分别是20、25、30、40、60帧。画质包括流畅、均衡、高清和HDR高清。当前大部分手机都可以支持到高清,甚至HDR高清,超高清尚未开放。
从流畅到高清会增加更多的渲染细节,让玩家看到的画面更真实。那画面差异在哪呢?以和平精英高清和HDR高清为例,选取了如下典型场景,左边是高清,右边是HDR高清,差异很明显吧。如下图所示
对于60帧游戏,每16.6ms要完成一帧的渲染,存储在帧缓存中,若这一帧未在当前VSYNC周期到来前完成,则需要等待下一个VSYNC周期,就导致前后两个不同画面间隔了至少2帧时间2*16.6=33.3ms,则丢一帧。若渲染完成的时间变更长,丢帧越多。
难道不能高帧率高画质吗?不是的,只要你手机硬件足够强,完全可以在享受高画质的同时保持稳定帧率,但这同时考验手机的硬件和散热能力。高复杂度场景必然会带来高计算负担,同时高帧率会加重每秒的任务量,硬件(CPU/GPU/DDR)会通过提频来应对,持续的满负荷工作下会使手机温度迅速提高,所以你会感觉手机发热。
画质和流畅度你更倾向哪个?欢迎在留言处给出你的答案。对于游戏开发者来说,如何定位重载场景,面对卡顿时如何定位分析和优化?接下来,将会介绍性能测试工具。
一帧画面渲染需要手机硬件CPU、GPU和DDR共同完成,初步的粗粒度瓶颈定位您可以在我们的网站(https://deveco.huawei.com/)下载我们提供的性能测试工具进行测试,然后查看报告。
通过帧率曲线查找卡顿的时间段,查看相应该时间段的CPU、GPU的频点和负载以及DDR频点,找到瓶颈点。可能的瓶颈是未及时提频、提频不足或提频到最高仍然无用。通常CPU、GPU 和DDR都有可能是瓶颈,当提频到最高帧率仍然无法符合预期时,你就要深挖该帧渲染逻辑了,所以需要一款合适的图形分析工具。
下面介绍图形分析工具RenderDoc的使用,该工具可以抓取一帧的全部图形信息,包括该帧绘制的gles/vulkan api,该帧的资源包括纹理、顶点、uniform变换矩阵以及shader等数据,同时具有抓取和回放功能。这是一个开源的工具,你可以通过其官网下载工具和使用文档以及源代码,发现更多功能。
若对手机上某游戏场景进行图形分析,目前该软件应用的前提是要你的应用是debuggable的或者你的手机是root的。详细内容如下图所示。
1.通过数据线连接手机到电脑上,打开RenderDoc并启动remote server连接上手机,这个过程会在手机上安装两个RenderDoc APK,然后手机出现RenderDoc界面。
2.选择你需要抓取的应用的包名。
3.点击launch,会等待执行debuggger。
4.正确启动的界面会有如下标记。
5.当进入到你想要抓取的界面后,你可以点击capture界面进行抓取。
6.保存数据为rdc格式。
7.双击打开即可选择回放,可选择①手机端回放,也可选择②本地PC回放。
8.等待片刻,手机端可以查看如下回放画面。
9.PC上可以查看图形API指令,如下图单击某个drawcall指令下面会出现该drawcall对应的渲染状态设置。
然后,你可以通过window下的TextureView、Mesh View、Pipeline State等窗口查看更多的图形信息。
10.在Texture View窗口通过控制单个drawcall执行,查看每个draw的绘制内容,输入和输出等。
11.在mesh View窗口查看mesh数据和模型。
12.在pipeline state查看渲染管线数据。包括用到的buffer、vertex/fragment shader source code等。
以上就是RenderDoc的基本功能和操作了,你是不是学会了呢,赶快下载分析吧。