游戏测试 【测试工具】做一个可以即时修改卡牌属性的工具方便测试

特尔斯特 · 2022年07月02日 · 最后由 wukong 回复于 2023年11月05日 · 11625 次阅读

场景:
在测试战斗的过程中经常需要调数值来方便测试。比如要测某张卡牌的法术技能,直接测要等这张卡牌满蓝了放法术看效果,这样不是很方便,因为它可能在放法术之前被杀了,又或者放法术的时机不是自己想要的时机,等下次放法术时 CD 又比较长,遇到这类情况都是通过改配置表后重启游戏再进行测试。这样会有两个问题:一是改配置后需要重启游戏才能生效比较耗时;二是改了配置表测完后又必须改回去不然 svn 会有冲突,如果忘了改回又会出莫名奇妙的 BUG。

解决方案:
游戏启动后工程会把配置表读取过来并赋值给对应配置对象中的各属性(对应着配置表中的各字段),之后进入战斗后又会取对应的值进行战斗计算,我在项目中找到了开发写的可以 get 和修改各属性的方法,基于这两点在 unity 里写了一个工具可以即时修改各卡牌的属性并在下一场战斗中生效(部分属性可以立即生效),重启游戏后当前修改失效,也不用改动配置表,这样可以提升测试团队的效率。

效果展示:
用 EditorWindow GUI 实现的最终效果图,左边列表显示的是所有的英雄,右边显示的是对应卡牌的所有属性列表,后面的输入框中可以修改,点击上面 “应用修改” 按钮就可生效。

应用举例:
1.比如我要测试蝙蝠的技能,我希望它能一直放技能,只需要修改 magicRestore(法力恢复)改成 100 点击 “应用修改” 即可。
2.再比如,我把 summonCost(召唤费用) 和 summonCd(召唤 CD) 都改成 0,这样就可以无限放蝙蝠这张卡牌。
3.假设蝙蝠的普通技能 normalSkill 每次攻击有 0.1 的概率让敌人中毒,这个参数会以 string 形式写在 normalSkill 这个字段中(类似:101001;0.1),只需要把 0.1 改成 1 就可以让敌人 100% 中毒方便测试。

工具拓展:
拓展 1:
基于这套思路,把一些通用的方法封装在一个基类中,然后把建筑、装备、Buff、技能等等继承自这个基类也做出上述的工具,这样很多地方的测试都方便了很多。

拓展 2:
遍历所有的卡牌做相同的属性修改,可以实现另外一套比较方便的战斗测试工具,如:
所有卡牌血量很大(这样基本不会死),
所有卡牌攻击=100(方便测试一些按比例增加攻击的道具或 BUFF)
所有卡牌攻击=0(这样可以排除掉普通攻击的效果,方便直接看技能打了多少伤害)
不一一举例,大致如图:

共收到 17 条回复 时间 点赞

思路很棒😄

学到了学到了

这就是游戏测试吗?看的懵逼了😂

给你点个赞👍 期待楼主的下次分享

Mango 回复

谢谢

迷龙 回复

是的

这就是外挂呀😀

Pactortester 回复

放在 unity 里的内挂😀

请问需要哪些方面的技术支持?

害怕.jpg,LZ 技术棒啊~
不过这就要求战斗数据必须是在客户端完成计算并且服务器没有校验机制吧,对 MMO 之类的就不好使了

服务器做了一个时间校验,每个关卡有个预期通过时间,低于这个时间怀疑有外挂

明天 回复

用到了 Unity 里的 EditorWindows 的 GUI 布局和一些 C# 反射的知识

特尔斯特 回复

受教受教~这类游戏接触的少,还真没想过这个方式😂

那遇到是服务端做战斗的咋办

设计测试方案的核心思路是无视客户端,服务器的限制,都当作可以随时获取的资源,想出大致想要的效果,再和程序对方案。我们项目的战斗编辑器也是这种思路,在编辑器中可以修改和配置战场内人物和怪物的所有属性和配置项,用编辑器来测试战斗系统

我最近也准备搞一个战斗编辑器来测试战斗,我们项目组就是自走棋子这种所以战斗会更加复杂多变一点。想问问老哥整体搭建的方法有哪些?用的是那种语言来写的?想请教一下,没有经验实在是太无头苍蝇了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册