首页 > QA经验分享:游戏客户端性能
头像
网易游戏学院君
编辑于 2020-11-11 17:28
+ 关注

QA经验分享:游戏客户端性能


更多行业干货,上网易游戏学院app查看!

客户端是有硬件平台支撑的APP程序,同时能够提供本地服务,并且能够和服务器做远程交互的一个数据存储的系统。

客户端=平台+程序。我们平时接触到很多平台,例如PC、PS4,移动端,如ipad、手机、甚至车载监控。程序应用就更多,衣食住行等各类APP。而我们的游戏和APP一样,运行在客户端上。

游戏客户端组成

游戏客户端是怎么构成的?我们以车来举例,车子启动需要发动机加各类零件组成车的架构加开车的人。

而游戏客户端需要游戏引擎+美术设计等资源+脚本。



手游和端游在性能上有很多差异。手机会面临着硬件性能不足、系统不兼容、网络不稳定等情况。围绕这些差异我们做了很多平衡,最主要是性能和品质的平衡。

在性能方面,大家了解一下这两个工具。

PBR:以更准确地模拟现实世界中的光流的方式渲染图形,金属具有更强的视觉冲击表现。

HDR:高动态范围成像,目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。他的阴影效果会非常真实。


性能优化后,模型可以越做越好看,会更精细。性能更好,游戏会从单机游戏更偏向团队开黑,从场景简单发展到场景丰富,特技越来越炫酷。所以现在移动游戏的性能要求越来越高,因此在性能测试方面我们越做越深。

我们最明显的感知就是“卡到爆、慢死了、烫手”等这些性能呢个问题,逐渐被解决。

1.卡

这里引入一个指标,FPS(帧率):图形处理器处理画面每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。

2.慢。

也就是客户端的响应时间。响应时间是指客户发出请求到得到响应的整个过程的时间。响应越快,操作感越好,如果响应时间大于1秒,就会给玩家延迟的感觉

很多时候我们去玩一款游戏的时候,滑动的时候会发现角色反馈会变慢,其实就是一个响应时间的问题,比如说这两张图,控制这个角色的时候,左边这个画面没有及时跟进,会出现重影,右边这个画面做了一个优化,告别画面拖曳和重影干扰。


3.烫

发烫的问题很严重,烫手甚至是爆炸,所以这也是性能测试有一个很关心的点。发烫也和耗电有关,所以我们也会关注耗电量。

首先手机在测试的时候监控手机的温度,CPU、内存、GPU各种模块的温度。如果电池温度超过50℃,就会有很严重的问题,甚至是爆炸。


客户端性能测试怎么做

客户端性能测试是如何进行的?

一个是性能上限。给大家分享几个案例。以车举例,汽车上市前会有碰撞测试,也就是测试性能上限是多少。在游戏中,我们也需要测试游戏能承载的性能上限是多少。

另一个就是是否符合标准。例如一个非常简单的卡牌游戏,但是耗电量非常高,那么他就是不符合标准不符合预期的,每款游戏都有一个判定标准。

1.那游戏性能测试的环境是怎样的?

上线前,我们测试了很多东西,发现OK,但其实只是看到冰山一角。因为我们测试数据比较少,测试环境也比较单一。上线后我们就会发现,玩家环境复杂、数据交互量大、操作和系统机型复杂。


因此性能测试必须了解一些性能指标。

2.测试指标

我们考核一台手机,其中一个标准就是CPU。

CPU:运行的程序占用的CPU资源;机器在某个时间点的运行程序的情况。

另一个就是GPU,这里我引入一个指标Draw call,Draw Call是在游戏里面性能测试的一个常见指标,是CPU调用图形编程接口,来命令GPU进行渲染的操作,渲染一次就叫一个Draw Call。我们有时候会说你Draw Call太高了,导致游戏有些卡顿。只要你学懂Draw Call,你就可以和美术程序沟通。

下面讲一下面数,屏幕内模型复杂度面数,以及三角网格。一个物体可以用三角的网格来近似模拟,如果你的三角网格、面数越多的话,模拟的物体就越真实。

3.实际操作案例

接下来讲讲实际操作案例。

A.卡顿

在测试过程中,QA会反馈问题给回策划美术,举个实例,当我们反馈给美术“帧率低帧率抖动大”时,美术可能会不理解怎么验证的这个问题。因此我们会开发一些工具来证明这些问题,例如高速摄像机,帧率采集卡。通过构建一个实时运行的环境,可以得到一些数据。这样就能够清晰说明问题。


卡顿的问题怎么解决?我们游戏客户端是引擎+资源+脚本构成的,我们一般也是从这几个内容去解决,最顶层最核心是引擎,如果能够把引擎做得更好,渲染能力、兼容性更好,我们性能就会越好。另外可能我们需要减少一些资源,面数、骨骼数、还有纹理尺寸大小、3D渲染等。脚本之外还有硬件,硬件越好性能越好。

B.响应慢

当我们反馈给程序“响应慢,灵敏度差”时,程序也会有疑问“为什么会有这个问题?”

因此解决方式要提升IO能力,减少数据,控制资源尺寸和提升玩法体验。


C.耗电量

而当QA反馈“这游戏耗电很厉害,跑一小时就没电了!”程序可能会问:“能告诉我在哪个地方比较耗电吗?”

我们开发了这样一个工具:耗电测试-硬件。通过外接的形式实时监测手机的耗电情况,得到耗电数据。这样能够得知什么情况下耗电量高,从而做出优化。

另外我们还做了一个恒温箱设计,需要在一个非常干净的环境下进行测试。里面可以控制温度湿度,手机放里面,采用自动化脚本可以记录到手机的运行情况。


耗电怎么去解决呢?依旧是按照引擎资源脚本去处理,另外还有系统。需要优化部分如图:


D.流量测试。

当QA和程序策划反馈时流量问题时。

QA:我玩的时候有时候感觉很卡,为什么会这样呢?

程序:我们的流量均值已经控制在较低水平了。

策划:要玩家体验最好的。

QA:我们分析下各个玩法的流量。

作为QA,是需要去分析各个玩法的流量情况的,我们玩家肯定是期望一直处于强网络的情况。

流量问题怎么去解决?

  • 第一个是在协议上优化。协议上比较强的TCP,一直在验证玩家网络流量就会有波动。
  • 二是在多人在线的情况下,需要不断同步玩家信息,如果数据太多,会出现流量波动的情况。
  • 最后一个是客户端先行。有些东西不用服务端验证的,可以直接在客户端验证,例如打一个怪,客户端先做出打击反馈,服务端再进行验证,客户端先行能够满足流畅需求。

总结一下我们刚刚提到的问题,一个是帧率低,一个是响应慢,一个是耗电快,一个是流量多。这四种情况都有对应的解决方法。

更多行业干货,上网易游戏学院app查看!



全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐