【实测】用airtest自动化做手游的每日任务

2022-05-19 16:25:33 浏览数 (1)

对于喜欢玩游戏的同学来说,无论是大型pc网络游戏,还是手游。最烦的应该就是做每日任务了吧?

既无聊,枯燥,还浪费时间。

但是呢,又不敢落下一天,毕竟白花花的经验和奖励在呢。

本来我们可以一直忍受这些,但是咱公众号的粉丝可不是一般人,那可都是自动化/测开啊。我们这种工程师,能甘心去手动点点点这些每日任务么?

当然不能!我们连工作都是自动化,时间那么宝贵,怎么能浪费在这些每日任务上?

所以,本文会教大家如何去用自动化的零门槛技术,来解决这个痛点。

具体的效果大家可以在我朋友qingwanjianhua圈看到,公众号就不展示了,懂的都懂。

但是在我的pyq中好友的评价中 可见一斑:

然后说说具体要怎么做?

一:下载一个airtest IDE

二:配置好adb命令,然后链接手机/平板

三:开始写脚本

一般都是按图像识别来定位和点击滑动等操作。这些都属于airtest最基本的使用。

比如:

其中各种功能使用,我以后会在培训中具体详细的讲到。

四:开始设计脚本架构

这句是什么意思?大家现在一定觉得,就模仿人手工点击等操作,线性的从上到下开始写脚本了。为什么还要有什么架构方面的考虑?

这里说一下,我一开始也觉得这种很简单,但是当我真的给一个游戏制作自动化的时候才发现,很复杂。

游戏中的每一条路线,步骤,都并不是完全固定的,而且涉及到大量的重复操作。让本就不可靠的脚本稳定性进一步降低,代码冗余进一步加大。

那种类似于传统 鼠标精灵的 方式显然不适合这么复杂和大量的各种每日任务的处理。

所以不得已,我才考虑到了设计架构。

首先就是要给所有功能进行分类分模块。原则上,保证每个模块的高内聚低耦合,和一定的智能性。

按照下面几个来分:

1. 【寻找函数】:进入各个每日任务的界面 (多种路线进入方式)

2.【进入函数】:开启各个每日任务的功能(尝试点击不同的开始按钮)

3.【刷图函数】:如果需要刷图才用到(这个比较复杂,要设计自动去搜索敌人并且判断坐标,然后判断自己人物坐标,再计算出要点击几次方向键到较劲的位置,然后点击技能按钮。当然大部分刷图只往前跑就行,怪物会自动来到你身边~)

4.【退出到首页】:不论当前处于什么界面,都要能成功返回到首页,这样才能完整的执行下一个任务。体现了低耦合的特性。这个函数也是在所有寻找函数之前都要运行的。

5. 【领奖函数】:当做完了每日任务后,剩下的自然是点击领取奖励了,这个函数也是要足够智能,所谓智能就是你把几种可能存在的奖励都截图写到脚本中,让函数不断的去尝试。这种耦合性是最低的,完全可以胜任任何奖励的场景,你之后就不用再去考虑什么了。

6. 【切换角色】:如果账号有多个角色的话,就需要使用这个函数。把你的角色从上到下,从左到右,依次录入角色图像即可。这个函数是在某个大循环内的起始执行。先切换角色,然后才是寻找函数/进入/刷图/退出/领奖等。

7. 【检查函数】:ui自动化,尤其是图像识别类的自动化,稳定性实在是不敢恭维。影响的因素很多,所以最后一定要运行一遍收尾的检查函数。这个函数,你要负责去检查各个角色的每日任务是否有没有完成/没有领奖的。如果有,则统计下来,然后再次运行对应的函数,相当于二次补救措施。

好了,总结了这么多之后,最后还要嘱咐几句:

图像识别的脚本,每个图像,你都可以通过双击来打开它的具体定位参数设置界面。

这里你最好对每个角色的相同页面等,不同分辨率等,都进行测试。界面有对应的按钮可以调试。你通过设置图像的模糊对比度(一般0.6-0.8) 还有是否严格颜色筛选等,来保证每个图像都可以成功识别且不会出错才行。

如果你没有上面的这步,那么你的脚本,大概率会因为各种难以定位的原因失败。因为图像识别就是这样,有时候你也不明白,为什么这样的按钮会定位到了 一个完全没有按钮的空白位置.... 所以要通过调节设置参数来保证正好定位到。

0 人点赞