【游戏测试】客户端性能 - 寻路采集热点图

2024-03-25 23:08

本文主要是介绍【游戏测试】客户端性能 - 寻路采集热点图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文由资深游戏测试开发工程师 陈子昂,发表于TesterHome社区,点击原文链接可与作者交流。

导读

写这个类型文章的原因是,很多时候会写代码的很多,但是如何少走弯路,做出一些有价值工具产出贡献一点绵薄之力。
在入职第二年也打算大力发展做这块(根据过往积累和经验写下了这个文章),但是后面平台化后,这件事会推研到 2022 年。
过去也是把这个工具开发方式小范围共享过,在对方公司也获得了好评和认可。
导读,可以先读这个drawcall 工具链 ,更有营养。

适合类型

3D 引擎或者 2.5D 引擎,测试时锁视角(确保每次测试的准确性和摄像机白话来说所见即所得)
游戏和个别引擎互联网都适合用。

适合条件阶段

条件 1.和 TA 有一定的共识后才去做,搭配分工明确。
条件 2.有一定建设程度以及稳定性自动化框架,以附件的形式。
条件 3.1 有小地图雷达并且有坐标的游戏,可以点开地图自动寻路的

条件 3.2 有 GM 指令可以输入:move 场景地图 Id 坐标,进行瞬移的。

使用条件引导

只有不满足条件 3.1 和条件 3.2 的,也可以继续看个热闹,满足条件 3.1 或者条件 3.2 就可以进行下去。
去对接 TA 合作的流程,当满足条件 1 之后,增强对条件 2 的建设。

文章核心

1.性能测试为啥要用热点图

热点图提供了一个对整个测试的场景(颜色的深浅来标记性能哪里更严重)。

客户端性能优化是一个比服务器优化更耗时的工作,通过热点图全局的发现场景性能最差的区域。

点的原因精髓在存储什么数据结构好提供后面复现和平台化。

绘制热点图和疑似问题一点是需要绑定 1.UI 自动化,2.引擎内置自动化来做的,前者通用性比后者强,后者 unity 需要 c# 的编程能力,在很多年前的 testerhome 社区 - 游戏测试白皮书上有作者写过 unity 内置自动化。

2.如何确定热点图的准确性

颜色深度的部分周围颜色一般会逐渐变浅(大部分情况),比如这种就是例外,后面就是一面墙,完全隔离了周围场景,游戏也只能从低往上看,啥也看不到。
热点图的存储的属性是正确的。

3.分析结果方式

选择场景内热点图颜色深度的坐标,飞过去看那块区域,然后用官方 profile 去看具体问题,都是和那块区域场景直接挂钩的,比如那边有一个深陷的大峡谷和一个瀑布,瀑布结果是用完全是用粒子效果实现的,大峡谷摄像机景深没有做处理。
可以用空白场景复原性能最差区域,新建一个空白场景,把那个区域的场景素材导入到新场景。
对场景很熟悉的人,可以更快的猜到是哪里问题,来源于经验,有志向的可以学习知识图谱,然后每个游戏一个,把屏幕坐标–>世界坐标存在分 type,性能倾向 (比如一些 npc 激烈战斗的场景,飞过去分析某块资源是正常的) 存储属性图里面,这个都是后话。

UI 自动化的建设

选择用什么框架不重要,但是需要把这部分做成插件,用 pypiserver 搭建私有 pypi,然后改源后就可以使用。

【】里面是插件名称,后面紧跟着是插件使用方,存在–>是指最终目标用户,下面介绍几个常用的,其他按需来。

【untiy 坐标存储插件】 脚本编写者->性能排查使用方:需要包含对于 Unity 引擎 Debug.log(向量) 导出日志,并且没有精度问题,坐标系处理存储到 web tracking。坐标系存储什么或者是否要转换需要和使用方沟通,来解决。

【雷达图数据存储插件】 脚本编写者:UI 自动化框架获取,雷达图和 unity 坐标如果有条件,条件是指游戏有雷达图是都需要的。

【地图坐标换算插件】 脚本编写者,如果满足上面条件 3.2 的,如果是世界坐标的需要换算成当前场景坐标(其实是可以不用 z,因为 3D 场景的地图本身也是个平面),最终会把整个场景要执行的位置以二维数组有序存储下来,在执行寻路时严格按这个来。
里面技巧是第一 UI 自动化本身看不到路点,也和 unity 内置的不一样,坐标和坐标之间的缝隙,拿其他框架拖拽用的 swipe([],[]),二个数组之间有关,如果有程序机器人可以给你录制一个整个场景按序跑的坐标系,自然更好。
每移动一次就采集当前场景的属性 (cpu,fps,内存),因为 UI 自动化外部采集没有办法和 profile 拿到更多信息。
推荐方式:性能差的地方对屏幕进行高精截图,屏幕上开发那边也可以打印更多的信息。

这里和【untiy 坐标存储插件】不冲突,因为看最终目标用户,所以不是一类,强调这个是因为后面文章也是和这个有关。

结尾

晚上有人问我头发还多吗,猫回答:还有 32 位的头发。欢迎有问题在原贴留言,看到就会回复。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
以上是今天的分享,你学废了吗~
想学习更多干货知识和前沿技术?
想结识测试行业大咖和业界精英?
欢迎关注2022 MTSC大会(第十届中国互联网测试开发大会)>>>

这篇关于【游戏测试】客户端性能 - 寻路采集热点图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846546

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP