导语
2020年7月,咱们探讨了AI与自动化测试的关系,并向大家介绍了腾讯互动娱乐事业群TuringLab团队出版的《AI自动化测试:技术原理、平台搭建与工程实际》一书。这本书将TuringLab团队基于深度学习的自动化AI测试框架根底的开发与利用教训具体的展现在读者背后,与读者分享了腾讯游戏是如何将AI技术与自动化测试相结合实现测试需要的。在文章推送(超链接:https://mp.weixin.qq.com/s/vK...)后,不少用户留言反馈了对书中提到的AI SDK的浓厚兴趣,并询问如何下载应用。
当初,Game AI SDK开源版本正式对外公布!欢送各位开发者下载体验(超链接:https://wetest.qq.com/product...)。
本篇文章将用4k字左右的篇幅,向读者们具体介绍Game AI SDK的相干内容。同时,为了更好的理解用户的应用反馈和意见,TuringLab团队的技术大佬们创立了技术交换QQ群(群号:1095989343),欢送大家退出。
基于图像的游戏场景自动化框架
一、 概述
在自动化测试畛域,针对游戏场景的自动化是一个难点,目前还没有通用的技术计划。这是因为游戏是高度个性化的产品,不同品类游戏玩法差别极大。每款游戏通常都是独立设计开发,游戏开发商也不对外裸露对立的接口,这也意味着传统的基于API接口进行自动化的计划在游戏畛域并不通用。此外,期待游戏开发商对外提供对立的自动化接口,也是件不事实的事件。
为了反对游戏场景的自动化,基于图像识别和游戏AI等方面技术,腾讯Turing Lab开发了基于游戏图像的AI自动化框架——Game AI SDK。整个计划不依赖游戏开发商提供任何API接口,以游戏图像作为输出,以触屏操作为输入,相似于咱们人类玩游戏的过程。示意图如下所示:
目前Game AI SDK曾经在多个品类多款游戏的自动化测试上进行了验证和利用,并获得了良好的成果。一个典型的AI SDK利用示意图如下所示:
l 左侧为游戏终端设备,运行待自动化测试的游戏;
l 右侧为游戏自动化框架AI SDK,依据输出图像决策游戏操作;
l AI Client连贯了游戏终端设备和AI SDK,从终端设备上实时获取游戏图像,并将AI SDK决策的游戏操作转换为触屏操作
二、 AI SDK架构介绍
1、 技术架构
AI SDK整体技术框架如下图所示,次要蕴含IO Service、Manager Center、UI自动化、游戏场景辨认、AI自动化等几个模块。
各模块的外围性能如下:
l IO Service
负责AI SDK的输入输出管制,输出为游戏图像,输入为点击、滑动等游戏动操作;同时还负责AI SDK外部服务状态的上报。
l Manager Center
从IO Service接管输出图像,分发给UI自动化模块或AI自动化模块,并转发UI自动化和AI自动化的游戏动作输入;同时也负责AI SDK服务状态的异样监控等。
l UI自动化
通过图像识别算法,辨认游戏图像中用户配置的UI按钮或弹窗,并依据用户配置的UI操作,决策出该如何进行UI自动化流程,并最终进入游戏场景中。
l 游戏场景辨认
依据用户定义的场景辨认配置文件,辨认游戏场景内的游戏元素(敌人、血条、技能状态、数字等)。场景辨认的各项游戏元素的后果,将作为特色数据输出给AI自动化模块,具体须要辨认哪些游戏元素,依据AI需要自行定义。
l AI自动化
依据场景辨认后失去的特色数据,进行AI决策,输入游戏操作,游戏操作通常为点击某个像素、在某像素区间滑动。
1、 数据流程
AI SDK自动化流程可分为游戏UI自动化和游戏场景自动化两个阶段,UI自动化依据用户配置定义进入特定游戏场景,游戏场景自动化则在游戏场景中进行战斗、驾驶、降级等各种游戏自动化操作。两个阶段能够一直循环反复,每个阶段的数据流程如下:
1) 游戏UI自动化阶段
l AI Client从手机端获取游戏图像后,通过1、2、3步骤将图像发送给UI自动化模块
l UI自动化模块辨认UI界面中的按钮或弹窗,决策出须要进行的UI操作,并通过4、5、6步骤将UI动作输入至AI Client
通过若干次UI自动化操作后,游戏从UI场景进入到游戏场景,进入游戏场景自动化阶段。
2) 游戏场景自动化阶段
l AI Client从手机端获取游戏图像,通过1、2、7步骤将图像发送给游戏场景辨认模块,并辨认出游戏场景中各项游戏元素
l AI自动化模块经步骤8获取到辨认后果后,依据游戏AI算法或特定逻辑规定决策出AI动作,经9、10、11步骤将AI动作输入至AI Client
通过一段时间的游戏场景自动化操作,游戏场景完结,又返回到UI自动化阶段。
三、 游戏场景自动化
因为游戏品类比拟多,从格斗游戏、赛车游到FPS射击游戏,不同游戏场景的游戏玩法差别极大;游戏画面中的元素包含敌人、道具、怪物甚至卡牌,不同游戏画面中须要辨认的游戏元素也存在极大差别。可能实用于多种游戏场景的自动化是AI SDK的外围性能,上面次要介绍AI SDK针对游戏场景的自动化计划。
1、 游戏场景辨认
游戏场景辨认模块中提供了模板匹配、梯度模板匹配、特色点匹配、指标检测、深度神经网络等多种算法,辨认游戏场景中的游戏元素,并对外输入图像识别后果。具体辨认哪些元素,用户可由场景辨认配置文件自行定义。在AI SDK的场景辨认中,次要将游戏中须要辨认的元素分为以下几类:
l 固定物体指标
次要采纳各种模板匹配算法检测游戏场景中的固定指标物,如游戏中的按钮、图标、技能状态等。该办法会返回场景中检测到的指标物以及像素坐标。
l 形变物体指标
次要采纳卷积神经网络检测游戏场景中的图像形态易发生变化的指标物,如游戏角色、建筑物、车辆、怪物等。该办法会返回场景中指标物的地位及类别。
l 像素指标
检测出游戏图像检测区域内满足特定条件的像素点,该办法会返回符合条件的所有像素点汇合。
l 数字
该办法会返回游戏场景中检测区域内的数字和其所在的像素地位等信息。
l 血条
该办法会返回游戏场景中检测区域内的血量百分比和血条地位等信息。
在理论利用中,通常咱们将一个指标物和几个同类别的指标物定义为一个task工作,一个简单的游戏场景可能蕴含几十个须要辨认的task工作。要实现一次场景辨认,须要所有task工作都实现。游戏场景辨认模块的技术架构如下图所示:
1、为了升高工作检测的工夫耗费(如果场景辨认消耗太多工夫,那么场景辨认之后进行的AI决策就会存在很高的时延,重大制约AI自动化的体现),采纳了多检测工作并行运行的形式,充分利用多核CPU资源。
2、对于采纳深度网络模型进行检测的可形变指标物,工作耗时往往比拟长,会重大影响每一次场景辨认的性能。这里对深度网络模型进行了裁剪优化,缩小卷积核数目、缩小全连贯层神经元个数,在保障辨认准确率的状况下,尽量升高深度网络模型的性能开销。
3、针对游戏场景的图像特点,如游戏图像中存在很多的“半透明”的状况。即在辨认指标物的时候,会受到背景图像的重大烦扰,如上面图例所示。在游戏场景中,除了前置的图标不变外,图标的背景会一直发生变化。间接应用常见的模板匹配办法检测这些“半透明”指标物都不够现实,针对此类问题,场景辨认模块的算法也做了专门的优化。
2、 游戏AI自动化
游戏AI自动化模块次要从场景辨认模块失去辨认后果,进行AI决策,并输入游戏操作(游戏操作通常为点击、滑动某个像素坐标点或区域)。游戏AI是一个简单的问题,从简略的硬编码规定、状态机、行为树AI,到模拟学习、强化学习等基于深度学习的AI,再到蒙特卡洛搜寻树AI,不同类型游戏的AI决策往往须要不同的AI办法,或者多种AI办法来解决。为了便于扩大和反对不同类型游戏的AI算法,AI自动化模块被设计为插件运行模式,不同的AI算法以插件的模式实现,并由AI自动化模块加载运行。
AI自动化模块蕴含两种插件,别离是Env插件和AI插件。Env插件次要是获取场景辨认的后果,并转化为特定的数据特色,数据特色能够是图像像素值,也能够是其它类型的结构化数据,或者两者的合集。AI插件次要是游戏AI算法的实现,依据Env插件转化后的数据特色,进行游戏动作决策。Env插件和AI插件的运行示意图如下:
每一次游戏场景自动化过程中,Env插件和AI插件的运行过程如下:
l 进入游戏场景时,触发AI插件的OnEnter接口调用
l Env插件的IsStart接口依据场景辨认后果,判断游戏场景开始执行时,触发AI插件的OnStart接口调用
l 之后进入AI主循环,AI插件调用Env插件的GetState接口获取场景辨认后果特色数据,进行AI决策,输入游戏动作action,而后调用Env插件的DoAction接口执行游戏动作
l Env插件的IsOver接口依据场景辨认后果,判断游戏场景完结时,触发AI插件的OnOver接口调用
l 来到游戏场景时,触发AI插件的OnLeave接口调用
如果须要扩大新的游戏AI自动化性能,依照要求实现Env插件和AI插件接口即可。为了便于实现插件,AI SDK中提供了两组API接口,别离是Action API和Agent API。其中Action API对游戏中常见的各种动作进行封装,间接调用其中接口就能够输入各种游戏动作;Agent API用于获取游戏场景辨认的各项后果,能够不便地获取游戏中各种指标物或按钮、图标状态等信息。值得注意的是,Env插件和AI插件并不是一一对应的关系,如果不同游戏的AI算法是一样的,只有特色数据的解析形式存在不统一,那么AI插件就能够对应不同的Env插件。AI自动化模块的技术架构如下:
除了提供插件零碎及其运行框架外,AI SDK中还内置了强化学习、模拟学习地AI插件和Env插件,用户能够间接应用,不须要做任何改变。此外还提供了常见游戏类型的AI自动化算法框架,其中曾经实现了AI插件和Env插件的诸多性能。可基于这些常见游戏类型的算法框架,再联合本身的非凡自动化需要,实现Env插件和AI插件。
在理论的游戏场景自动化中,有以下几点须要留神:
1、 单纯的一个AI算法很难满足理论自动化需要,往往须要在AI算法之上附加肯定的规定,如采纳模拟学习AI+大量规定的形式来实现;
2、 为了在游戏场景自动化过程中笼罩更多的状况,能够在特定AI算法之上附加肯定的随机性,让AI能摸索更多的场景;
3、 游戏场景辨认的后果不能达到百分之百准确无误,针对辨认后果做一些简略的过滤或解决,能很好的晋升AI自动化的鲁棒性;
4、 因为所有的游戏动作最终以模仿触屏的形式执行,管制好游戏动作中触屏的时长、滑动的像素间隔都能晋升咱们AI的体现。
四、 利用举例
目前AI SDK曾经在竞速类、赛车类、FPS类、MOBA类、MMO类等多种类型的游戏场景中进行了自动化验证,获得了不错的利用成果。可能针对多种游戏场景进行自动化测试,且不须要游戏端提供任何接口。一些游戏中的利用成果视频如下:
从运行形式上,AI SDK可在本地部署运行,进行独自的游戏AI自动化测试。如果要进行批量大规模自动化测试,也能够部署在云端,提供线上游戏AI自动化测试服务,如下图所示:
五、 总结和瞻望
本文介绍了基于图像的游戏场景自动化框架,框架的长处是不依赖游戏端提供接口或数据,计划通用性强,可实用于绝大多数游戏场景的自动化测试。且游戏场景自动化插件实现后,随着游戏版本的迭代更新,只有游戏的玩法不扭转,曾经实现的自动化过程个别不须要做批改,自动化过程保护的老本比拟低,不须要随着游戏外部实现的扭转而批改。
同时AI SDK目前也存在一些问题,尤其在易用性方面,如何让使用者更容易的应用是下一步要解决的问题。尽管AI SDK内置了罕用游戏AI算法,提供了常见游戏类型的AI自动化框架模板,能够无效的升高接入新游戏进行游戏场景自动化的老本,但对使用者也有肯定能力要求。咱们也在尝试将一些简略且通用性强的AI自动化过程来通过工具配置的形式让用户来实现,让一些普通用户也可能实现一些场景的AI自动化。其次,在场景辨认模块,晋升指标物辨认准确率,对实现AI自动化有诸多益处。而在晋升辨认准确率的同时升高性能开销,也是须要继续优化的问题。
目前腾讯Turing Lab编著的对于AI SDK及其利用的书籍《AI自动化测试:技术原理、平台构建与工程实际》已上架可于京东进行购买(超链接:https://item.jd.com/12679219....)。AI ADK也曾经对外开源凋谢,欢送各位开发者下载体验。(超链接:https://wetest.qq.com/product...)
AI SDK 技术交换Q群|1095989343
性能测试技术交换群:720150565
查看PerfDog详情:https://perfdog.qq.com/?ADTAG...