游戏自动化测试——局内战斗

利用AI,使用正常的玩家客户端来打游戏是一种怎样的体验?

直接人都不用玩游戏了,放那,让AI帮你玩,过一会就看到自己分上去了。多爽,请代练的钱都省了,妥妥的。然而,我们今天是来讨论正经的技术问题。如何利用AI,实现我们的自动化测试!这才是我们的目的。

一场竞技游戏,我们在这里稍微划分一下,将其分为局外界面和局内战斗。举个例子,比如LOL,在大厅、组队、选英雄界面这些都是局外界面。当我们等待读完长长的进度条,进入到游戏,听到"咚咚咚咚咚"的声音后英雄出现到我们眼前,这个时候,你就已经到了局内战斗的部分里了。

1. 概述

本文主要对局内战斗的自动化进行讲解。包含如何实现战斗自动化的流程和脚本运行本身框架进行介绍,读者应具备一些python的编程经验和UI自动化的开发经验。特别的,有利用公司内部团队提供的AI进行决策操作。简单的来说就是我们把当前的局内情况告诉给AI,AI来想,返回决策,我们用自动化脚本,执行决策。但没有AI也一样是可以做自动化测试的,需要我们自己构建期望的流程,调用AI就像是条件反射,自我构建对应流程脚本就像是非条件反射。

对于游戏的UI自动化这里采用poco的unitysdk形式进行实现。

稍微介绍一下poco。这是一个类似appium的客户端UI自动化框架,利用界面元素来进行UI自动化操作。

元素来源于UITree,UITree源于接入unitysdk的游戏客户端。通过与外部挂载agent进行socket通信,从而将使用unity引擎游戏的UITree返回给外部供自动化相关。

UITree里面包含对应Tree中元素的所有属性信息,其中包含元素的position属性(位置信息),这也是我们得以锁定对应元素进行操作的核心依据。

通过pocosdk获取游戏客户端UI层信息,对UI信息中的具体内容做对应处理。

最后反馈对应数据给AI,由AI进行对应决策,将决策信息返回给本地后执行对应的UI自动化操作代码,从而完成决策,通过大量决策的实施,完成整局的实时操作。

再引入多轮重开检测机制,进而完成局内战斗的自动化对战。

  • 一些简单的演示:

在unity项目中,需要在unity中安装Poco的SDKPoco调用方法

import time
from poco.drivers.unity3d import  UnityPoco

poco = UnityPoco()

poco('btn_start').click()
time.sleep(1.5)

shell = poco('shell').focus('center')
for star in poco('star'):
    star.drag_to(shell)
time.sleep(1)

assert poco('scoreVal')
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值