测试游戏中人工智能行为的方法、装置及电子设备与流程

文档序号:11466549阅读:416来源:国知局
测试游戏中人工智能行为的方法、装置及电子设备与流程

本申请涉及软件测试技术领域,具体而言,涉及用于对游戏中人工智能ai行为进行测试的方法、装置及电子设备。



背景技术:

在目前的各大游戏中,不管是端游,还是手游,或多或少都存在着一些npc、副本里的怪物这些游戏角色,而这些游戏角色都有一套固定的逻辑来控制他们,让他们模拟真实的人物行为,通常把这些游戏行为称之为ai行为。小到一个副本的小怪,大到一个副本里的大boss,都依赖着不同复杂程度的ai行为来控制。在一个游戏中,随着怪物的增加,boss的增加,ai行为的数量也在增加,一个大型的游戏可能包含了成百上千的不同ai行为逻辑。在游戏的开发中,一个ai行为是通过一个基于xml格式的文本来控制的,类似于计算机中常见的多叉树结构,该xml文本以树的结构组织每个ai的行为逻辑,每个ai表现出来的每个动作或者每个行为,都是这个ai行为树的一个分支上的不同节点。每个ai行为树,小到只有几个分支、几个节点,大到几十、几百个分支或者节点。

对于一个游戏来说,保证怪物的ai行为正确无误,是一项很重要的工作。但是,面对如此庞大数量的ai行为树文件,如何高效率的进行测试,保证所有ai行为都按照游戏设计者或者说游戏策划的逻辑运行,是一个游戏开发周期里相当重要的一环。每个游戏在开发过程中,众多行为树也会面对不同版本时候的更新和迭代,在进行游戏各版本的迭代回归测试时候,靠人力来挨个验证和测试,是非常效率低下的。

目前在针对ai行为树测试的方面,一种方式是靠人工把ai行为树加载到游戏中,通过肉眼观看角色行为,但是这样针对一些涉及到数值的方面,比如范围判断,是只能有一个大概的范围,无法得到准确数值,人工观察也耗费时间,效率低下。

还有一种方式是半自动化方式,测试人员自己定义树的分支,将分支再自行组合成行为树的方案。这种方式虽然在一定程度上可以帮助测试人员提高测试效率,但是存在多方面的问题。首先,在涉及到数值相关时候,无法准确获取结果,只能通过人工估算,不准确,效率比较低。其次,通过自行组合可能会遗漏掉部分ai行为树分支,导致测试覆盖不全。另外,这种方式的测试逻辑不健全,未从最基本的单个行为树组合节点和游戏基本功能节点入手开始,如果后续有用到功能有缺陷的单个节点的行为树分支,该分支的执行失败,可能会误导测试人员判断是这条分支其他节点和条件的问题。而且,这种方式缺乏结果收集相关部分,在面对大量ai行为树的情况下,不能直观的给出各棵树的执行情况。



技术实现要素:

本申请公开测试游戏中人工智能行为的方法,以提升游戏测试中针对ai行为方面的测试效率。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明的第一方面,提供一种测试游戏中人工智能行为的方法,包括:

对配置文件中的人工智能行为树进行建模得到树对象;

对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录;

分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

根据一些实施例,在对配置文件中的人工智能行为树进行建模得到树对象之前还包括:

根据所述配置文件获取待测试的人工智能行为树的目录,根据所述目录获取所述人工智能行为树。

根据一些实施例,所述人工智能行为树以可扩展标记语言文件存储。

根据一些实施例,根据所述目录获取所述人工智能行为树包括:根据所述目录获取用于存储所述人工智能行为树的可扩展标记语言文件。

根据一些实施例,所述树对象的节点包括用于记录下层子节点集的子节点集属性;

对所述树对象进行节点拆分得到节点集包括:根据所述树对象的节点的子节点集属性对所述树对象进行节点拆分得到节点集。

根据一些实施例,在分别将所述节点集中的节点加载到所述游戏中进行测试、分别对所述分支集中的分支的执行条件进行设置后进行测试、以及分别对所述树对象的执行条件进行设置后进行测试之后还包括:对所述测试得到的结果进行汇总和/或展示。

根据本发明的第二方面,提供一种测试游戏中人工智能行为的装置,其包括:

建模单元,用于对配置文件中的人工智能行为树进行建模得到树对象;

拆分单元,用于对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录;

测试单元,用于分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

根据一些实施例,所述装置还包括行为树获取单元,用于在对配置文件中的人工智能行为树进行建模得到树对象之前,根据所述配置文件获取待测试的人工智能行为树的目录,根据所述目录获取所述人工智能行为树。

根据一些实施例,所述人工智能行为树以可扩展标记语言文件存储。

根据一些实施例,所述行为树获取单元用于:根据所述目录获取用于存储所述人工智能行为树的可扩展标记语言文件。

根据一些实施例,所述树对象的节点包括用于记录下层子节点集的子节点集属性;

所述拆分单元用于:根据所述树对象的节点的子节点集属性对所述树对象进行节点拆分得到节点集。

根据一些实施例,所述装置还包括结果处理单元,用于在分别将所述节点集中的节点加载到所述游戏中进行测试、分别对所述分支集中的分支的执行条件进行设置后进行测试、以及分别对所述树对象的执行条件进行设置后进行测试之后,对所述测试得到的结果进行汇总和/或展示。

根据本发明的第三方面,提供一种电子设备,包括:处理器;存储器,存储用于所述处理器控制如上述第一方面任一项所述操作的指令。

本申请的实施例提供的技术方案可以包括以下有益效果:

本实施例的技术方案通过对配置文件中的人工智能行为树进行建模得到树对象,对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录,然后分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试,以提升游戏测试中针对人工智能行为方面的测试效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

附图说明

通过参照附图详细描述其示例实施例,本发明的上述和其它特征及优点将变得更加明显。

图1示出了根据本发明一实施例的测试游戏中人工智能行为的方法;

图2示出了根据本发明另一实施例的测试游戏中人工智能行为的方法;

图3示出了根据本发明一实施例的测试游戏中人工智能行为的装置的框图;

图4示出了根据本发明另一实施例的测试游戏中人工智能行为的装置的框图;

图5示出了根据本发明一实施例的电子设备。

具体实施方式

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

图1示出了根据本发明一实施例的测试游戏中人工智能行为的方法,本实施例可适用于对游对中人工智能行为进行测试的情况,如图1所示,本实施例所述的测试游戏中人工智能行为的方法包括:

在步骤s110中,对配置文件中的人工智能行为树进行建模得到树对象。

其中,所述人工智能行为树可以多种方式存储,例如可以可扩展标记语言文件存储。所述人工智能行为树可根据所述配置文件获取待测试的人工智能行为树的目录获取,例如根据所述目录获取用于存储所述人工智能行为树的可扩展标记语言文件。

所述配置文件供测试人员指定目前待测试的人工智能行为树目录,可同时配置多个人工智能行为树的目录。该行为树目录可自由配置,存储在多个目录都可同时配置进去,避免了目录多后,人工排查和自由组后,遗漏某些目录的ai树,也方便测试人员一眼就知道目前测试的ai树都在哪些位置,不用单独人工记录。

在步骤s120中,对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录。

在步骤s130中,分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

另外,所述树对象的节点可包括用于记录下层子节点集的子节点集属性,若包括子节点集属性,可根据所述树对象的节点的子节点集属性对所述树对象进行节点拆分得到节点集。

在完成上述步骤之后,还可对所述测试得到的结果进行汇总和/或展示。例如,针对每项测试执行后的结果进行汇总统计,把执行结果反馈给测试人员。

本实施例的技术方案通过对配置文件中的人工智能行为树进行建模得到树对象,对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录,然后分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试,以提升游戏测试中针对人工智能行为方面的测试效率。

图2示出了根据本发明另一实施例的测试游戏中人工智能行为的方法,如图2所示,本实施例所述的测试游戏中人工智能行为的方法包括:

在步骤s201中,读取配置文件,获取需要测试的ai行为树目录。

所述配置文件供测试人员指定待测试的ai树目录,可同时配置多个ai树的目录。

需要说明的是,所述配置文件可自由配置,存储在多个目录都可同时配置进去,避免了目录多后,人工排查和自由组后,遗漏某些目录的ai树,也方便测试人员一眼就知道目前测试的ai树都在哪些位置,避免了用单独人工记录。

在步骤s202中,读取单个ai行为树的xml文件,进行解析,建模成一棵树的对象。

遍历指定的ai目录,选取第一个行为树的xml文件,解析xml文档,建立一个树对象,该行为树的每个节点除了自己本身的一些基本属性外,都额外包含一个属性:子节点集。通过该子节点集属性,可以往下层遍历,拿到该节点下层所有节点。

通过本步骤,可以将一个xml文本转化为一棵多叉树,并且每个多叉树节点包含一个子节点集,方便之后针对树的diff计算。

在步骤s203中,读取单棵ai行为树对象,开始拆分,记录单个功能节点、记录每条分支及各层级的执行条件。

例如,读取建模好的树对象,开始深度优先搜索遍历,拆分,把树中包含的不重复的功能节点和组合节点记录下来,同时记录每条分支的各层级节点形成单独的分支,并记录该分支执行条件。

通过本步骤,能将一棵行为树中构成的树节点拆分出来,分类,保证下一步能够首先针对这些基本的节点进行测试;另外记录的每条分支的条件,可在接下来的分支测试时候,自动读取条件来设置条件。

在步骤s204中,拆分的单个节点的加载测试及结果获取。

将把拆分出来的各类节点,分别将单个加载进游戏中,执行,获取单个节点执行后的返回,例如执行成功返回真(true),执行失败则返回假(false),直到所有拆分出来的各类节点均执行完毕并获取结果。

本步骤首先针对单个的节点进行测试,记录执行结果,能辅助之后包含该节点的分支执行结果进行问题排除。

在步骤s205中,单个节点是否有剩余,若是则返回步骤s204,否则执行步骤s206。

在步骤s206中,读取拆分的多个分支,载入游戏执行,获取结果。

读取刚拆分的多个分支,分别设置每条分支之前记录的条件,设置条件后,执行分支,获取分支返回结果。

通过读取之前记录的每个分支执行条件,设置后执行拆分的每个分支,可针对每条分支进行单独验证,在最后整棵树的执行后,帮助定位排查问题。

在步骤s207中,判断分支是否有剩余,若是则返回步骤s206,否则执行步骤s208。

在步骤s208中,根据拆分时候的各分支条件,设置条件,进行单棵ai行为树的整体执行,获取每条分支是否都执行到的情况并记录。

本步骤用于整体执行整棵ai行为树,分别把刚每条分支条件遍历设置一遍,获取执行结果,检查是否每条分支都执行到。

该步骤能确保整棵树加载到游戏后,给定不同条件,会映射到不同分支,确保每条分支在给定相应条件下均能覆盖执行到。

在步骤s209中,判断人工智能行为ai行为树文件是否有剩余,若是则返回步骤s203,否则执行步骤s210。

在步骤s210中,获取汇总结果,测试结束。

重复以上过程遍历完其他的ai行为树目录。汇总结果,给出结果展示。该步骤整理之前的每棵行为树的三种执行结果汇总并展示,包括各类单个节点、单条分支和整棵树执行结果,直观显示给测试人员。

本实施例所述的技术方案,通过将游戏行为树目录下的多个行为树,逐个进行单棵行为树进行树建模,把这棵树进行分支拆分,节点拆分。拆分时,记录下基本节点和每条分支及每条分支各层级的执行条件;拆分后,分为两类节点,基本的组合节点和游戏中的功能节点,首先自动把这些节点加载到游戏,针对最基本单个节点测试;之后把每条树的分支自动加载到游戏中,通过获取游戏中执行该条分支末端节点的执行返回,来判断该条分支是否执行成功;最后进行整棵树的加载,通过之前记录的每条分支的执行条件,逐个设置,获取最终执行结果,检查每条分支是否都能执行到。通过这样的自动拆分和加载及收集结果的方式,能高效地测试一个游戏里数以百计的行为树,能够很好解决上述所讲四个不足:在涉及到数值方面的测试等时候,可准确获取数值,譬如范某范围下执行某个行为等,保证了数值的准确性测试,避免了人工上的不准确,或者说人工方法获取该准确度花费的时间可能更大;解决了之前其他方案的自动组合可能存在的问题,比如遗漏掉部分分支导致测试覆盖不全;从最基本的单个行为树组合节点和游戏基本功能节点入手开始到单条分支,再到整棵树,能够帮助后续单条分支或者整棵树在出问题的情况下,定位问题;具有结果收集和展示部分,能直观的展示给测试人员单棵树的单节点单分支整棵树执行结果情况。

图3示出了根据本发明一实施例的测试游戏中人工智能行为的装置的框图,如图3所示,本实施例所述的测试游戏中人工智能行为的装置包括建模单元310、拆分单元320、以及测试单元330。

该建模单元310被配置为,用于对配置文件中的人工智能行为树进行建模得到树对象;

该拆分单元320被配置为,用于对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录;

该测试单元330被配置为,用于分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

根据本发明的一些实施例,所述人工智能行为树以可扩展标记语言文件存储。

根据本发明的一些实施例,所述树对象的节点包括用于记录下层子节点集的子节点集属性;

所述拆分单元320用于:根据所述树对象的节点的子节点集属性对所述树对象进行节点拆分得到节点集。

关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本实施例提供的测试游戏中人工智能行为的装置可执行本发明实施例一和实施例二所提供的测试游戏中人工智能行为的方法,具备执行方法相应的功能模块和有益效果。

图4示出了根据本发明另一实施例的测试游戏中人工智能行为的装置的框图,如图4所示,本实施例所述的测试游戏中人工智能行为的装置包括行为树获取单元410、建模单元420、拆分单元430、测试单元440、以及结果处理单元450:

该行为树获取单元410,用于根据所述配置文件获取待测试的人工智能行为树的目录,根据所述目录获取所述人工智能行为树。

该建模单元420被配置为,用于对配置文件中的人工智能行为树进行建模得到树对象。

该拆分单元430被配置为,用于对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录。

该测试单元440被配置为,用于分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

该结果处理单元450被配置为,用于在分别将所述节点集中的节点加载到所述游戏中进行测试、分别对所述分支集中的分支的执行条件进行设置后进行测试、以及分别对所述树对象的执行条件进行设置后进行测试之后,对所述测试得到的结果进行汇总和/或展示。

根据本发明的一些实施例,所述人工智能行为树以可扩展标记语言文件存储。

根据本发明的一些实施例,所述行为树获取单元410用于:根据所述目录获取用于存储所述人工智能行为树的可扩展标记语言文件。

根据本发明的一些实施例,所述树对象的节点包括用于记录下层子节点集的子节点集属性;

所述拆分单元430用于:根据所述树对象的节点的子节点集属性对所述树对象进行节点拆分得到节点集。

本实施例提供的测试游戏中人工智能行为的装置可执行本发明方法实施例所提供的测试游戏中人工智能行为的方法,具备执行方法相应的功能模块和有益效果。

图5示出了根据本发明一实施例的电子设备,如图5所示,电子设备500可包括处理器510、存储器520、发射器530及接收器540。

存储器520可存储用于处理器510控制操作处理的指令。存储器520可包括易失性或非易失性存储器,如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)等,本发明对此没有限制。

处理器510可调用存储器520中存储的指令控制相关操作。根据一实施例,存储器520存储用于处理器510控制以下操作的指令:

对配置文件中的人工智能行为树进行建模得到树对象;

对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录;

分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

易于理解,存储器520还可存储用于处理器510控制根据本发明实施例的其他操作的指令,这里不再赘述。

处理器510还可控制发射器530和接收器540进行信号收发等。

通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的系统和方法具有以下优点中的一个或多个。

根据本发明的实施例,在对配置文件中的人工智能行为树进行建模得到树对象之前还包括:根据所述配置文件获取待测试的人工智能行为树的目录,根据所述目录获取所述人工智能行为树。

根据本发明的一些实施例,所述树对象的节点包括用于记录下层子节点集的子节点集属性;对所述树对象进行节点拆分得到节点集包括:根据所述树对象的节点的子节点集属性对所述树对象进行节点拆分得到节点集。

根据本发明的实施例,在分别将所述节点集中的节点加载到所述游戏中进行测试、分别对所述分支集中的分支的执行条件进行设置后进行测试、以及分别对所述树对象的执行条件进行设置后进行测试之后还包括:对所述测试得到的结果进行汇总和/或展示。

根据一些实施例,本发明还提供一种非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。当存储介质中的指令由终端的处理器执行时,使得终端能够执行下述方法:对配置文件中的人工智能行为树进行建模得到树对象;对所述树对象进行节点拆分得到节点集,以及对所述树对象进行分支拆分得到分支集,并分别对所述分支集中的分支的执行条件进行记录;分别将所述节点集中的节点加载到所述游戏中进行测试、分别将所述分支集中的分支设置所记录的所述执行条件后加载到所述游戏中进行测试、以及将所述树对象分别设置所记录的所述执行条件后加载到所述游戏中进行测试。

本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。

本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

以上具体地示出和描述了本发明的示例性实施例。应该理解,本发明不限于所公开的实施例,相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效布置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1