CN107526682B - 测试机器人的ai行为树的生成方法、装置及设备 - Google Patents
测试机器人的ai行为树的生成方法、装置及设备 Download PDFInfo
- Publication number
- CN107526682B CN107526682B CN201710700880.7A CN201710700880A CN107526682B CN 107526682 B CN107526682 B CN 107526682B CN 201710700880 A CN201710700880 A CN 201710700880A CN 107526682 B CN107526682 B CN 107526682B
- Authority
- CN
- China
- Prior art keywords
- rpc
- sequence
- behavior
- characteristic
- characteristic behavior
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/008—Artificial life, i.e. computing arrangements simulating life based on physical entities controlled by simulated intelligence so as to replicate intelligent life forms, e.g. based on robots replicating pets or humans in their appearance or behaviour
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Robotics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种测试机器人的AI行为树的生成方法、装置及设备。方法包括:获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;匹配第一RPC序列和M个特征行为模板,得到N个特征行为序列;将N个特征行为序列生成N个特征子树;将N个特征子树生成AI行为树。从而提高AI行为树的生成效率。
Description
技术领域
本申请涉及游戏测试领域,尤其涉及一种测试机器人的AI行为树的生成方法、装置及设备。
背景技术
为了测试游戏***各方面的性能,特别是稳定性以及承压能力,通常需要测试机器人模拟玩家的行为以实现对游戏***的测试。
制作测试机器人的过程中所涉及的关键技术是构建人工智能(ArtificialIntelligence,AI)行为树。其中,构建AI行为树主要包括:构建AI行为树的行为节点,以及构建行为节点之间的AI逻辑。通常行为节点包括(Remote Procedure Call Protocol,RPC)函数,RPC函数用于实现在服务器的远程调度。目前AI行为树的构建过程为:将大量测试机器人行为抽象成多个行为节点,再利用编辑器构建这些行为节点之间的AI逻辑。即AI行为树的构建完全依赖于程序员,程序员需要对各个行为节点以及行为节点之间的AI逻辑进行编程。
故,现有技术中AI行为树的生成过程较为复杂,从而造成AI行为树生成效率低的问题。
发明内容
本申请提供一种测试机器人的人工智能AI行为树的生成方法、装置及设备,从而提高AI行为树的生成效率。
第一方面,本申请提供一种测试机器人的人工智能AI行为树的生成方法,包括:获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;特征行为模板和第一RPC序列均包括多个RPC函数;匹配第一RPC序列和M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;特征行为序列包括第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;将N个特征行为序列生成N个特征子树;将N个特征子树生成AI行为树。
本申请的有益效果是:本申请可以根据特征行为模板以及第一RPC序列得到特征行为序列,将特征行为序列生成特征子树,将特征子树生成AI行为树。即整个过程通过模板即可自动产生AI行为树,而无需程序员通过写代码的方式逐层建立AI行为树,从而提高了生成AI行为树的效率。
可选地,匹配所述第一RPC序列和M个特征行为模板,得到N个特征行为序列,包括:对于M个特征行为模板中的每个特征行为模板,匹配第一RPC序列和特征行为模板,得到特征行为模板对应的匹配成功的多个RPC函数;确定特征行为模板与匹配成功的多个RPC函数的匹配度;根据第一RPC序列对应的匹配度确定N个特征行为序列。
通过该方法可以有效得到N个特征行为序列。
可选地,确定特征行为模板与所述匹配成功的多个RPC函数的匹配度,包括:获取特征行为模板的长度和匹配成功的多个RPC函数的编号差值;其中,编号差值为匹配成功的多个RPC函数对应的最大编号与最小编号的差值;根据特征行为模板的长度和匹配成功的多个RPC函数的编号差值,确定特征行为模板和匹配成功的多个RPC函数的匹配度;其中,匹配度与特征行为模板的长度呈正比,且所述匹配度与所述编号差值呈反比。
通过该方法可以有效地计算特征行为模板与所述匹配成功的多个RPC函数的匹配度。
可选地,根据所述第一RPC序列对应的匹配度确定N个特征行为序列,包括:根据第一RPC序列对应的匹配度确定第一RPC序列与M个特征行为模板的最大匹配度;根据所述最大匹配度确定所述N个特征行为序列。
可选地,根据第一RPC序列对应的匹配度确定第一RPC序列与所述M个特征行为模板的最大匹配度,包括:
通过如下公式确定所述第一RPC序列与所述M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
通过该方法可以准确地计算第一RPC序列对应的匹配度确定第一RPC序列与所述M个特征行为模板的最大匹配度。
可选地,将N个特征行为序列生成N个特征子树,包括:针对N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,发送行为节点包括特征行为序列中客户端发送给服务器的RPC函数;等待行为节点包括特征行为序列中服务器发送给客户端的RPC函数;对发送行为节点和等待行为节点采用特征子树模板生成特征行为序列对应的特征子树。
通过该方法可以有效的生成N个特征子树。
可选地,还包括:获取客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息;根据第一环境信息和第二环境信息更新第一环境信息对应的RPC参数,得到第二环境信息对应的RPC参数;其中第一环境信息对应的RPC参数为发送行为节点和/或等待行为节点中的RPC函数的参数。
通过该方法可以更新RPC函数的参数,从而保证测试机器人参数的准确性。进而提高测试任务的可靠性。
可选地,还包括:确定发送行为节点中各RPC函数的调用时间;根据所述调用时间确定相邻两个RPC函数的调用时间间隔;根据所述调用时间间隔生成所述相邻两个RPC函数中的后一个RPC函数的发送条件。
可选地,发送条件为从相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到所述调用时间间隔后发送所述后一个RPC函数。
可选地,获取M个特征行为模板,包括:获取第二RPC序列;其中所述第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;针对所述P个预设区域中的每个预设区域,在预设区域中确定关键词;在所述预设区域中确定包括所述关键词的RPC函数;将包括所述预设区域中包括所述关键词的RPC函数生成特征行为模板。
通过关键词匹配可以有效的生成特征行为模板。
可选地,将N个特征子树生成AI行为树,包括:将N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
下面对测试机器人的人工智能AI行为树的生成装置及设备进行介绍,其实现原理和技术效果与上述原理和技术效果类似,此处不再赘述。
第二方面,本申请提供一种测试机器人的人工智能AI行为树的生成装置,包括:第一获取模块,用于获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;匹配模块,用于匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;第一生成模块,用于将所述N个特征行为序列生成N个特征子树;第二生成模块,用于将所述N个特征子树生成AI行为树。
第三方面,本申请提供一种测试机器人的人工智能AI行为树的生成设备,包括:处理器,以及用于存储所述处理器执行指令的存储器;所述处理器用于:获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;将所述N个特征行为序列生成N个特征子树;将所述N个特征子树生成AI行为树。
第四方面,本申请提供一种计算机存储介质,用于储存为上述第三方面涉及的设备所用的计算机软件指令,其包含用于执行上述第三方面所设计的程序。
第五方面,本申请提供一种计算机程序产品,其包含指令,当所述计算机程序被计算机所执行时,该指令使得计算机执行第三方面中设备所执行的功能。
综上,本申请提供一种测试机器人的AI行为树的生成方法、装置及设备。整个方法通过模板即可自动产生AI行为树,而无需程序员通过写代码的方式逐层建立AI行为树,从而提高了生成AI行为树的效率。进一步地,对于简单的测试任务,测试机器人可以直接使用该AI行为树。对于复杂的测试任务,例如游戏中的跑环任务等,可以在生成的AI行为树结构上进行再编辑,程序员不必从零开始制作AI行为树。此外,现有技术中,对于很少能复用的行为节点,程序员需要专门写该行为节点的代码,而通过本申请的方法,只要通过模板匹配,即可获得特征行为序列,从而生成该特征行为序列对应的行为节点。总之,本申请提供的方法大大提高了AI行为树的生成效率。
附图说明
图1为现有技术提供的AI行为树的示意图;
图2为本申请一实施例提供的一种测试机器人的AI行为树的生成方法流程图;
图3为本申请一实施例提供的确定N个特征行为序列的方法流程图;
图4为本申请一实施例提供的一种界面示意图;
图5为本申请另一实施例提供的一种界面示意图;
图6为本申请再一实施例提供的一种界面示意图;
图7为本申请一实施例提供的特征子树的示意图;
图8为本申请一实施例提供的AI行为树的示意图;
图9为本申请一实施例提供的一种测试机器人的AI行为树的生成装置的结构示意图;
图10为本申请一实施例提供的一种测试机器人的AI行为树的生成设备的结构示意图。
具体实施方式
在介绍本申请之前,下面先对AI行为树进行详细说明:
图1为现有技术提供的AI行为树的示意图,如图1所示,该AI行为树包括三个分支,分别是巡逻(Patrol),攻击(Attack),逃跑(Retreat),这个三个分支可以看作是测试机器人的三大行为(Behavior),当然,如果有更多的行为,还可以继续在根节点中添加新的分支。AI行为树的原理是:按照自顶向下的顺序,通过一些条件来搜索这颗树,最终确定需要做的行为(叶子节点),并且执行它。
需要说明的是,上述的三大行为并不是真正的决策的结果,它只是一个类型,真正的AI行为树的行为都是在叶子节点上,一般将这些叶子节点称为行为节点(Action Node),这些行为节点才是我们真正通过AI行为树决策出来的结果,这些行为节点可以表示请求(Request)、移动(Move),无所事事(Idle)、射击(Shoot)等等。行为节点是游戏相关的,因不同的游戏,我们需要定义不同的行为节点,但对于某个游戏来说,在行为树上行为节点是可以复用的,比如移动在巡逻的分支上需要用到,在逃跑分支上也会用到,这种情况下,我们就可以复用这个节点。这也是AI行为树的一个特点。
行为节点一般分为两种运行状态:
运行中(Executing):该行为还在处理中
完成(Completed):该行为处理完成,成功或者失败
除了行为节点,AI行为树中的其余节点可以称之为控制节点(Control Node)。控制节点其实是AI行为树的精髓所在,它决定了如何搜索一个具体的行为。即控制节点决定了整个AI行为树的逻辑走向,AI行为树的另一个特点就是其逻辑的可见性。
目前AI行为树包括三种控制节点。三种控制节点具体为:
选择(Selector)节点:选择其子节点的某一个执行。
序列(Sequence)节点:将其所有子节点依次执行。
并行(Parallel)节点:将其所有子节点都运行一遍。
实际上,控制节点是与游戏本身无关的,因为它只负责AI行为树逻辑的控制,而不牵涉到任何的游戏代码。因此控制节点通常已经被预先定义好。
进一步地,无论是行为节点还是控制节点都会包含一个前提部分,前提就提供了“选择”的依据,它包含了进入或者说选择某个节点的条件。
综上,AI行为树的优点在于:行为节点的可复用性以及AI行为树的逻辑可见性。但是现有技术中生成AI行为树的方法还存在如下的缺点:一方面,需要生成大量不可复用的行为节点,例如:某个功能只能应用于某项测试任务,对于其他测试任务并不包括该功能。为了保证测试的全面性,AI行为树中需要包括该功能对应的行为节点,即程序员需要专门开发实现该功能的行为节点。另一方面,即使AI行为树的许多行为节点可以复用,但是现有的AI行为树生成方法依然是一个抽象且易错的过程。综上,现有技术中AI行为树的生成过程较为复杂,从而造成AI行为树生成效率低的问题。
为了解决上述技术问题,本申请提供一种测试机器人的AI行为树的生成方法、装置及设备。
本申请的主旨思想为:获取客户端和服务器之间的RPC序列以及特征行为模板;匹配RPC序列与特征行为模板,以得到特征行为序列;将每个特征行为序列生成对应的特征子树,最后将特征子树生成AI行为树。基于此,程序员后续只需要在该AI行为树的基础上进行进一步的开发即可得到更接近测试机器人行为的AI行为树。
具体地,本申请以压力测试为具体的测试内容进行说明。此外,本申请的应用场景是客户端与服务器之间已经生成RPC序列。图2为本申请一实施例提供的一种测试机器人的AI行为树的生成方法流程图,如图2所示,该方法的执行主体可以是任何智能终端设备,例如该终端设备可以是计算机、平板电脑等。本申请对此不做限制。该方法包括如下步骤:
在步骤S201中:获取M个特征行为模板、以及客户端与服务器之间传输的第一RPC序列;
其中M为大于或者等于1的正整数;特征行为模板和第一RPC序列均包括多个RPC函数。
在步骤S202中:匹配第一RPC序列和M个特征行为模板,得到N个特征行为序列;
其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;
在步骤S203中:将N个特征行为序列生成N个特征子树;
在步骤S204中:将N个特征子树生成AI行为树。
针对步骤S201进行详细说明:可以在客户端的RPC收发脚本出入口或者服务器的RPC收发脚本出入口,对进出的RPC进行实施记录,以得到第一RPC序列。如上所述,第一RPC序列包括多个RPC函数,RPC函数用于实现测试机器人的具体行为。
例如:send avatar.UseSkill(10,“monster100”)是客户端发给服务器的一个RPC函数,表示客户端对应的玩家对怪物monster100释放了技能10。send avatar.UseSkill为函数名,10,“monster100”为函数send avatar.UseSkill包括的各个参数。
get animation.UseSkill(“avatar10”,10,“monster100”)是服务器发给客户端的一个RPC函数,表示服务器指示客户端播放玩家avatar10对monster100释放技能10的动画。get animation.UseSkill为函数名,“avatar10”,10,“monster100”为函数animation.UseSkill包括的各个参数。
get avatar.SkillCDStart(10)是服务器发给客户端的一个RPC函数,表示服务器指示玩家刷新技能CD。get avatar.SkillCDStart为函数名,10为函数getavatar.SkillCDStart包括的参数。
get animation.OnDamage(“monster100”,-111)是服务器发给客户端的一个RPC函数,表示怪物monster100收到111点伤害,服务器指示客户端播放响应特效。getanimation.OnDamage为函数名,“monster100”,-111为函数get avatar.SkillCDStart包括的各个参数。
一方面,通常第一RPC序列中各个RPC函数的顺序可能并不是完全按照具体行为顺序排列的,例如:两个具体行为包括的多个RPC函数可能是相互穿插,没有严格的顺序。另一方面,同一个RPC函数可能属于不同的行为,因此需要考虑该RPC函数的上下文,即它的前后多个RPC函数,以确定该RPC函数所属的具体行为。基于此,在获取到第一RPC序列之后,需要从第一RPC序列中识别出哪些是玩家的具体行为。例如:需要识别出玩家在这个期间依次领取了什么任务,跑到了哪些地点,购买了什么东西,击败了哪些怪物等等。为了在第一RPC序列中确定玩家的具体行为,在本申请中可以获取M个特征行为模板,M个特征行为模板用于确定玩家的具体行为。
例如:玩家操作主角对怪物monster100释放技能10,且技能释放成功,那么可能产生如下rpc序列:
send avatar.UseSkill(10,“monster100”)
get animation.UseSkill(“avatar10”,10,“monster100”)
get avatar.SkillCDStart(10)
get animation.OnDamage(“monster100”,-111)
该RPC序列标识客户端发给服务器说玩家对怪物monster100释放了技能10,然后服务器发给客户端说播放玩家avatar10对monster100释放技能10的动画,玩家刷新技能CD,怪物monster100收到111点伤害,播放响应特效。这个例子中{send avatar.UseSkill,get animation.UseSkill,get avatar.SkillCDStart,get animation.OnDamage}就可以视为一个特征行为模式,它表示玩家成功释放了一个技能。
其中,可以通过人工方式获取特征行为模板,也可以通过自动方式获取特征行为模板。人工获取特征行为模板的方式为:程序员根据自己的经验确定特征行为模板。
自动获取M个特征行为模板的方式为:获取第二RPC序列;其中第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;针对P个预设区域中的每个预设区域,在预设区域中确定关键词;在预设区域中确定包括关键词的RPC函数;将包括预设区域中包括关键词的RPC函数生成特征行为模板。
其中,第二RPC序列为客户端和服务器之间的历史RPC序列。第二RPC序列所包括的预设区域可以通过预设窗口产生,按照第二RPC序列中各个RPC函数的编号顺序,通过该预设窗口的左边界可以与第二RPC序列中的第一个RPC函数对齐,该预设窗口所包括的RPC函数组成一个预设区域,接着可以以该预设窗口未覆盖到的下一个RPC函数开始,采用上述方法继续确定一个预设区域。
需要说明的是,RPC函数的编号顺序可以与RPC函数的存储顺序相同,也可以不同,本申请对此不做限制。
可选地,在预设区域中确定关键词的方法可以是:在预设区域中选择出现频率高于预设阈值的词汇,并将这些预设词汇作为关键词。还可以采用现有技术中任何无监督学习方法或者其他算法确定关键词。本申请对此不做限制。
需要说明的是,上述关键词可以是RPC函数的函数名、或者RPC函数的参数等,本申请对此不做限制。
在预设区域中确定关键词之后,在预设区域中确定包括关键词的RPC函数;将包括预设区域中包括关键词的RPC函数生成特征行为模板。
例如:在某预设区域中确定的关键词是“monster100”和“10”,则将该预设区域中包括这两个关键词的RPC函数组成特征行为模板。该特征行为模板具体为:
send avatar.UseSkill(10,“monster100”)
get animation.UseSkill(“avatar10”,10,“monster100”)
get avatar.SkillCDStart(10)
get animation.OnDamage(“monster100”,-111)
进一步地,除了根据关键词确定特征行为模板之外,还可以同时关键词看,以及与关键词存在一定关系的关联词汇确定特征行为模板。
例如:在某预设区域中确定的关键词是“念成魔”,该关键词的关联词汇为“天机道人”,则将该预设区域中包括该关键词和关联词汇的RPC函数组成特征行为模板。该特征行为模板具体为:
Response.Act(“天机道人”)
Interact.QuizVer2(“念成魔”)
Interact.Answer(“念成魔”)
Interact.QuizVer2(“念成魔”)
Interact.Answer(“念成魔”)
Interact.QuizVer2(“念成魔”)
Interact.Answer(“念成魔”)
该特征行为模板标识玩家与非玩家控制角色(Non-Player Character,NPC)的一段对答交互行为,交互完成后,NPC会对玩家进行角色转换。
针对步骤S202进行详细说明:在获取到第一RPC序列以及M个特征行为模板之后,匹配第一RPC序列和M个特征行为模板,可以得到各个特征行为模板与其对应的匹配成功的多个RPC函数之间的匹配度,然后对第一RPC序列对应的匹配度采用动态规划算法或者启发式搜索算法,以确定N个特征行为序列。
需要说明的是,第一RPC序列中可能存在没有匹配到的RPC函数,通常这种RPC函数可能是客户端和服务器之间用于状态同步的RPC函数或者是用于动画表现的RPC函数,这种RPC函数通常不会影响压测任务,因此可以被忽略不计。
可选地,图3为本申请一实施例提供的确定N个特征行为序列的方法流程图,如图3所示,上述步骤S202具体包括:
在步骤S301中:对于M个特征行为模板中的每个特征行为模板,匹配第一RPC序列和特征行为模板,得到特征行为模板对应的匹配成功的多个RPC函数;
在步骤S302中:确定特征行为模板与匹配成功的多个RPC函数的匹配度;
在步骤S303中:根据第一RPC序列对应的匹配度确定N个特征行为序列。
具体地,步骤S301包括:依次枚举第一RPC序列的每一个RPC函数,并以该RPC函数为起点,向后贪心匹配每一个特征行为模式,找出特征行为模板对应的匹配成功的多个RPC函数。进一步地,还可以确定包括匹配成功的多个RPC函数的最小区间。其中,该最小区间可能还包括未匹配成功的RPC函数。对此可以记录为三元组,该三元组(i,j,k),其中i和j分别为最小区间的两个端点,k为该区间匹配到的特征行为模式的编号。
例如:第一RPC序列包括一RPC子序列,该RPC子序列为:
{(get,A()),(send,D()),(send,B()),(get,C()),(get,C()),(send,A()),(send,D()),(send,B())};
两个特征行为模式P(1)和P(2)分别为:
P(1):{(get,A()),(send,B())};
P(2):{(send,B()),(get,C()),(get,C())};
最小区间[0,2]与P(1)匹配成功,对应的三元组为(0,2,1);同样的,最小区间[2,4]与P(2)匹配成功,对应的三元组为(2,4,2);同样的,最小区间[5,7]与P(1)匹配成功,对应的三元组为(5,7,1)。
针对步骤S302进行详细说明:获取特征行为模板的长度和匹配成功的多个RPC函数的编号差值;其中,编号差值为所述匹配成功的多个RPC函数对应的最大编号与最小编号的差值;根据特征行为模板的长度和匹配成功的多个RPC函数的编号差值,确定特征行为模板和匹配成功的多个RPC函数的匹配度;其中,匹配度与特征行为模板的长度呈正比,且匹配度与编号差值呈反比。
例如:Score(i,j,k)=size(P(k))–(j-i+1)*0.2,Score(i,j,k)表示特征行为模板P(k)和与P(k)匹配成功的多个RPC函数的匹配度,其中i和j分别为包括这些匹配成功的多个RPC函数的最小区间的两个端点。j-i表示匹配成功的多个RPC函数对应的最大编号与最小编号的差值。以上述例子为例:
Score(0,2,1)=1.4;Score(2,4,2)=2.4;Score(5,7,1)=1.4
需要说明的是,本申请不限于通过上述公式计算匹配度。
针对步骤S303进行详细说明:步骤S303包括:根据第一RPC序列对应的匹配度确定第一RPC序列与M个特征行为模板的最大匹配度;根据最大匹配度确定N个特征行为序列。其中,由于获得的三元组之间可能存在重叠,例如,(0,2,1)与(2,4,2)就共用了RPC函数(send,B()),实际上这个RPC函数应该只能属于一个特征行为模式。因此,通过上述计算f(i)的公式,最后得到的特征行为序列之间不存在重叠。因此,可以采用动态规划算法计算最大匹配度。
可选地,通过如下公式确定所述第一RPC序列与M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与该特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
其中,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的匹配方式,可以将第1个RPC函数至第i-1个RPC函数看作是一个RPC子序列,对该RPC子序列与M个特征行为模板可以采用上述第一RPC序列与M个特征行为模板的方式,同样的,也可以将第1个RPC函数至第h-1个RPC函数看作是一个RPC子序列,对该RPC子序列与M个特征行为模板可以采用上述第一RPC序列与M个特征行为模板的方式。
从上述公式可以看出,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度,实际上是第一RPC序列涉及的各个匹配度之和的最大值,这里的各个匹配度对应的匹配成功的多个RPC函数之间没有重叠。
通过上述公式,当计算完f(n)之后可以不断回溯,最终得到N个特征行为序列。
图4为本申请一实施例提供的一种界面示意图,如图4所示,该界面显示的是第一RPC序列中的一个特征行为序列,该特征行为序列包括:19:Response.Act;20:Interact.QuizVer2;29:Interact.Answer;30:Interact.QuizVer2;43:Interact.Answer;44:Interact.QuizVer2;46:Interact.Answer。
针对步骤S203进行详细说明:步骤S203包括:针对N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,发送行为节点包括特征行为序列中客户端发送给服务器的RPC函数;等待行为节点包括特征行为序列中服务器发送给所述客户端的RPC函数;对发送行为节点和等待行为节点采用特征子树模板生成特征行为序列对应的特征子树。
可选地,发送行为节点包括一个客户端发送给服务器的RPC函数。例如:发送行为节点包括一个上述的send函数。等待行为节点包括至少一个服务器发送给所述客户端的RPC函数。例如:等待行为节点包括多个上述的get函数。
上述的特征子树模板表示发送行为节点和等待行为节点之间的逻辑关系,例如:该逻辑关系可以是发送行为节点在等待行为节点之前,本申请对此不做限制。接着对发送行为节点和等待行为节点采用特征子树模板生成特征行为序列对应的特征子树。其中,特征行为序列与特征子树一一对应。
可选地,针对上述发送行为节点,一方面,该方法还包括确定发送行为节点中各RPC函数的发送条件。另一方面,还可以更新该发送行为节点中的RPC函数的参数。
具体地,判断发送行为节点中的某RPC函数是否满足发送条件,通常分为两类情况,一类是***级条件,另一类是用户级条件。其中***级条件包括:确定是否达到该RPC函数的调度时间;和/或,判断在发送该RPC函数时测试机器人的位置是否正确。***级条件可以根据第一RPC序列自动生成,用户级条件可以是程序员手动输入的条件。
其中,关于调度时间的发送条件的生成方式为:确定发送行为节点中各RPC函数的调用时间;根据调用时间确定相邻两个RPC函数的调用时间间隔;根据调用时间间隔生成相邻两个RPC函数中的后一个RPC函数的发送条件。其中该发送条件为从相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到调用时间间隔后发送后一个RPC函数。
关于测试机器人的位置的发送条件的生成方式为:当发送该RPC函数时测试机器人的位置在执行RPC函数时玩家所在的位置,则可以发送该RPC函数。否则,不能发送该RPC函数。其中,当发送该RPC函数时测试机器人的位置不在执行RPC函数时玩家所在的位置,可以一定的算法使得测试机器人移动至执行RPC函数时玩家所在的位置。
关于用户级条件的生成方式:图5为本申请另一实施例提供的一种界面示意图,如图5所示,程序员可以在“条件”一栏中填写用户级条件。
无论是上述的***级条件还是用户级条件,在程序逻辑中遇到不满足条件时,直接进入“运行中”状态,一直等待到满足该条件,才执行该条件对应的发送行为节点中的RPC函数。
进一步地,该方法还包括:更新发送行为节点中的RPC函数的参数。其中,并不是发送行为节点中的所有参数都要更新。需要更新的参数一般包括:实时参数,如怪物身份(Identiry,ID),加密参数等。对于需要更新的参数,可以用特殊符号标记,在执行该发送行为节点中的RPC函数时,可以根据特殊符号进行相应的逻辑修改。可选地,该特殊符号可以是宏标识。
更新发送行为节点中的RPC函数的参数包括:获取客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息;根据第一环境信息和第二环境信息更新第一环境信息对应的RPC参数,得到第二环境信息对应的RPC参数;其中第一环境信息对应的RPC参数为发送行为节点和/或等待行为节点中的RPC函数的参数。
其中,测试机器人当前所处的第二环境信息为执行该RPC函数时,测试机器人当前所处的环境信息。
第一环境信息也不是固定不变的,第一环境信息是指在执行第一RPC序列中的RPC函数时,玩家所处的环境信息,执行不同的RPC函数对应的第一环境信息可能不同,也可能相同,这和获取第一环境信息的方式有关,实际上,可以每隔一个预设时间段,对玩家身上的所有属性进行扫描,同时扫描记录客户端周围可见的所有实体entity的基本信息与位置信息,从而获得该预设时间段的第一环境信息。为了节约内存开销,可以比较不同预设时间段的第一环境信息,对于后续的第一环境信息,可以只存储它与前面的第一环境信息之间不同的数据。
可选地,针对上述等待行为节点,可以更新该等待行为节点中的RPC函数的参数。其中更新参数的方法与上述更新发送行为节点中的参数的方法相同,在此不再赘述。
可选地,上述等待行为节点可以是自动生成的,如上所述,将特征行为序列对应的get函数组成一个等待行为节点,当然还可以通过手动输入的方式生成等待行为节点。图6为本申请再一实施例提供的一种界面示意图,如图6所示,程序员可以在“监听的RPC函数”一栏中填写RPC函数名等参数。
综上,图7为本申请一实施例提供的特征子树的示意图,如图7所示,上述的发送行为节点和等待行为节点按照特征子树模板生成一个特征子树,该特征子树包括一个序列(Sequence)节点(如图5所示为左侧的节点),然后按照匹配的特征行为模式中各个RPC函数的顺序依次在sequence节点下设置发送行为节点和等待行为节点(如图5所示,行为节点为右侧一列的节点,其中从上至下,第一个行为节点和第三个行为节点均是发送行为节点,第二个行为节点和第四个行为节点均是等待行为节点)。
针对步骤S204进行详细说明:将N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
具体地,生成一个sequence节点,然后将N个特征子树按照N个特征子树的生成时间顺序加入sequence节点的下面。图8为本申请一实施例提供的AI行为树的示意图,如图8所示,“forest 3”表示AI行为树的根节点,“播放流程”表示AI行为树的sequence节点,最左侧的各个节点均表示一个特征子树,例如:“使用技能”表示一个特征子树。
可选地,在建立完AI行为树之后,当AI行为树的节点不满足对应的条件时,可以设置该节点为“运行中”状态,一直等待到满足该条件,才执行该条件中的RPC函数。基于此,行为节点的状态分为两种:一种是“运行中”,另一种是“完成”状态,“运行中”状态在代码实现上相对比较复杂。
基于此,本申请还可以生成过滤filer节点,一个AI行为树可以有多个特征子树,有些特征子树可以有filter节点,有些可以没有。如图8所示,可以在sequence节点和最左侧的节点之间增加一个fileter节点,由于状态反馈都是由下至上进行的,因此当下面的节点向fileter节点反馈它的状态是失败时,则filter节点向sequence节点反馈下面的节点状态为“运行中”状态,当下面的节点向fileter节点反馈它的状态是“完成”时,则filter节点向sequence节点反馈下面的节点状态为“完成”状态。
进一步地,程序员还可以在上述AI行为树的基础上,对其进行编辑。例如:可以增加、删除或者修改行为节点等,或者可以改变行为节点之间的逻辑关系等。
综上,本申请的有益效果为:本申请可以根据特征行为模板以及第一RPC序列得到特征行为序列,将特征行为序列生成特征子树,将特征子树生成AI行为树。即整个过程通过模板即可自动产生AI行为树,而无需程序员通过写代码的方式逐层建立AI行为树,从而提高了生成AI行为树的效率。进一步地,对于简单的压测任务,测试机器人可以直接使用该AI行为树。对于复杂的压测任务,例如游戏中的跑环任务等,可以在生成的AI行为树结构上进行再编辑,程序员不必从零开始制作AI行为树。此外,现有技术中,对于很少能复用的行为节点,程序员需要专门写该行为节点的代码,而通过本申请的方法,只要通过模板匹配,即可获得特征行为序列,从而生成该特征行为序列对应的行为节点。总之,本申请提供的方法大大提高了AI行为树的生成效率。
图9为本申请一实施例提供的一种测试机器人的AI行为树的生成装置的结构示意图,如图9所示,该装置包括:
第一获取模块901,用于获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;
匹配模块902,用于匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数.
第一生成模块903,用于将所述N个特征行为序列生成N个特征子树;
第二生成模块904,用于将所述N个特征子树生成AI行为树。
可选地,所述匹配模块902具体用于:对于所述M个特征行为模板中的每个特征行为模板,匹配所述第一RPC序列和特征行为模板,得到所述特征行为模板对应的匹配成功的多个RPC函数;确定所述特征行为模板与所述匹配成功的多个RPC函数的匹配度;根据所述第一RPC序列对应的匹配度确定所述N个特征行为序列。
可选地,所述匹配模块902具体用于:获取所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值;其中,所述编号差值为所述匹配成功的多个RPC函数对应的最大编号与最小编号的差值;根据所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值,确定所述特征行为模板和所述匹配成功的多个RPC函数的匹配度;其中,所述匹配度与所述特征行为模板的长度呈正比,且所述匹配度与所述编号差值呈反比。
可选地,所述匹配模块902具体用于:根据所述第一RPC序列对应的匹配度确定所述第一RPC序列与所述M个特征行为模板的最大匹配度;根据所述最大匹配度确定所述N个特征行为序列。
可选地,所述匹配模块902具体用于:通过如下公式确定所述第一RPC序列与所述M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
可选地,所述第一生成模块903具体用于:针对所述N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,所述发送行为节点包括所述特征行为序列中所述客户端发送给所述服务器的RPC函数;所述等待行为节点包括所述特征行为序列中所述服务器发送给所述客户端的RPC函数;对所述发送行为节点和所述等待行为节点采用特征子树模板生成所述特征行为序列对应的特征子树。
可选地,该装置还包括:第二获取模块905,用于获取所述客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息。
更新模块906,用于根据所述第一环境信息和所述第二环境信息更新所述第一环境信息对应的RPC参数,得到所述第二环境信息对应的RPC参数;其中所述第一环境信息对应的RPC参数为所述发送行为节点和/或所述等待行为节点中的RPC函数的参数。
可选地,该装置还包括:确定模块907,用于确定所述发送行为节点中各RPC函数的调用时间;所述确定模块907,还用于根据所述调用时间确定相邻两个RPC函数的调用时间间隔。
第三生成模块908,用于根据所述调用时间间隔生成所述相邻两个RPC函数中的后一个RPC函数的发送条件。
可选地,所述发送条件为从所述相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到所述调用时间间隔后发送所述后一个RPC函数。
可选地,所述第一获取模块901具体用于:获取第二RPC序列;其中所述第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;针对所述P个预设区域中的每个预设区域,在预设区域中确定关键词;在所述预设区域中确定包括所述关键词的RPC函数;将包括所述预设区域中包括所述关键词的RPC函数生成特征行为模板。
可选地,所述第二生成模块904具体用于:将所述N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
本申请提供的测试机器人的AI行为树的生成装置可以执行上述图2对应的方法以及该方法的可选方式,其实现原理和技术效果类似,此处不再赘述。
图10为本申请一实施例提供的一种测试机器人的AI行为树的生成设备的结构示意图,如图10所示,该设备包括:处理器1001,以及用于存储所述处理器执行指令的存储器1002。
所述处理器1001用于:获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;将所述N个特征行为序列生成N个特征子树;将所述N个特征子树生成AI行为树。
可选地,处理器1001具体用于:对于所述M个特征行为模板中的每个特征行为模板,匹配所述第一RPC序列和特征行为模板,得到所述特征行为模板对应的匹配成功的多个RPC函数;确定所述特征行为模板与所述匹配成功的多个RPC函数的匹配度;根据所述第一RPC序列对应的匹配度确定所述N个特征行为序列。
可选地,处理器1001具体用于:获取所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值;其中,所述编号差值为所述匹配成功的多个RPC函数对应的最大编号与最小编号的差值;根据所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值,确定所述特征行为模板和所述匹配成功的多个RPC函数的匹配度;其中,所述匹配度与所述特征行为模板的长度呈正比,且所述匹配度与所述编号差值呈反比。
可选地,处理器1001具体用于:根据所述第一RPC序列对应的匹配度确定所述第一RPC序列与所述M个特征行为模板的最大匹配度;根据所述最大匹配度确定所述N个特征行为序列。
可选地,处理器1001具体用于:通过如下公式确定所述第一RPC序列与所述M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
可选地,处理器1001具体用于:针对所述N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,所述发送行为节点包括所述特征行为序列中所述客户端发送给所述服务器的RPC函数;所述等待行为节点包括所述特征行为序列中所述服务器发送给所述客户端的RPC函数;对所述发送行为节点和所述等待行为节点采用特征子树模板生成所述特征行为序列对应的特征子树。
可选地,处理器1001还用于:获取所述客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息;根据所述第一环境信息和所述第二环境信息更新所述第一环境信息对应的RPC参数,得到所述第二环境信息对应的RPC参数;其中所述第一环境信息对应的RPC参数为所述发送行为节点和/或所述等待行为节点中的RPC函数的参数。
可选地,处理器1001还用于:确定所述发送行为节点中各RPC函数的调用时间;根据所述调用时间确定相邻两个RPC函数的调用时间间隔;根据所述调用时间间隔生成所述相邻两个RPC函数中的后一个RPC函数的发送条件。
可选地,所述发送条件为从所述相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到所述调用时间间隔后发送所述后一个RPC函数。
可选地,处理器1001具体用于:获取第二RPC序列;其中所述第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;针对所述P个预设区域中的每个预设区域,在预设区域中确定关键词;在所述预设区域中确定包括所述关键词的RPC函数;将包括所述预设区域中包括所述关键词的RPC函数生成特征行为模板。
可选地,处理器1001具体用于:将所述N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
本申请提供的测试机器人的AI行为树的生成设备可以执行上述图2对应的方法以及该方法的可选方式,其实现原理和技术效果类似,此处不再赘述。
Claims (27)
1.一种测试机器人的人工智能AI行为树的生成方法,其特征在于,包括:
获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;
匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;
将所述N个特征行为序列生成N个特征子树;
将所述N个特征子树生成AI行为树;
其中,所述匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列,包括:
对于所述M个特征行为模板中的每个特征行为模板,匹配所述第一RPC序列和特征行为模板,得到所述特征行为模板对应的匹配成功的多个RPC函数;
获取所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值;其中,所述编号差值为所述匹配成功的多个RPC函数对应的最大编号与最小编号的差值;
根据所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值,确定所述特征行为模板和所述匹配成功的多个RPC函数的匹配度;其中,所述匹配度与所述特征行为模板的长度呈正比,且所述匹配度与所述编号差值呈反比;
根据所述第一RPC序列对应的匹配度确定所述N个特征行为序列。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一RPC序列对应的匹配度确定所述N个特征行为序列,包括:
根据所述第一RPC序列对应的匹配度确定所述第一RPC序列与所述M个特征行为模板的最大匹配度;
根据所述最大匹配度确定所述N个特征行为序列。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一RPC序列对应的匹配度确定所述第一RPC序列与所述M个特征行为模板的最大匹配度,包括:
通过如下公式确定所述第一RPC序列与所述M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
4.根据权利要求1所述的方法,其特征在于,所述将所述N个特征行为序列生成N个特征子树,包括:
针对所述N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,所述发送行为节点包括所述特征行为序列中所述客户端发送给所述服务器的RPC函数;所述等待行为节点包括所述特征行为序列中所述服务器发送给所述客户端的RPC函数;
对所述发送行为节点和所述等待行为节点采用特征子树模板生成所述特征行为序列对应的特征子树。
5.根据权利要求4所述的方法,其特征在于,还包括:
获取所述客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息;
根据所述第一环境信息和所述第二环境信息更新所述第一环境信息对应的RPC参数,得到所述第二环境信息对应的RPC参数;其中所述第一环境信息对应的RPC参数为所述发送行为节点和/或所述等待行为节点中的RPC函数的参数。
6.根据权利要求4所述的方法,其特征在于,还包括:
确定所述发送行为节点中各RPC函数的调用时间;
根据所述调用时间确定相邻两个RPC函数的调用时间间隔;
根据所述调用时间间隔生成所述相邻两个RPC函数中的后一个RPC函数的发送条件。
7.根据权利要求6所述的方法,其特征在于,所述发送条件为从所述相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到所述调用时间间隔后发送所述后一个RPC函数。
8.根据权利要求1所述的方法,其特征在于,所述获取M个特征行为模板,包括:
获取第二RPC序列;其中所述第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;
针对所述P个预设区域中的每个预设区域,在预设区域中确定关键词;
在所述预设区域中确定包括所述关键词的RPC函数;
将包括所述预设区域中包括所述关键词的RPC函数生成特征行为模板。
9.根据权利要求1所述的方法,其特征在于,所述将所述N个特征子树生成AI行为树,包括:
将所述N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
10.一种测试机器人的人工智能AI行为树的生成装置,其特征在于,包括:
第一获取模块,用于获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;
匹配模块,用于匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;
第一生成模块,用于将所述N个特征行为序列生成N个特征子树;
第二生成模块,用于将所述N个特征子树生成AI行为树;
其中,所述匹配模块具体用于:
对于所述M个特征行为模板中的每个特征行为模板,匹配所述第一RPC序列和特征行为模板,得到所述特征行为模板对应的匹配成功的多个RPC函数;
获取所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值;其中,所述编号差值为所述匹配成功的多个RPC函数对应的最大编号与最小编号的差值;
根据所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值,确定所述特征行为模板和所述匹配成功的多个RPC函数的匹配度;其中,所述匹配度与所述特征行为模板的长度呈正比,且所述匹配度与所述编号差值呈反比;
根据所述第一RPC序列对应的匹配度确定所述N个特征行为序列。
11.根据权利要求10所述的装置,其特征在于,所述匹配模块具体用于:
根据所述第一RPC序列对应的匹配度确定所述第一RPC序列与所述M个特征行为模板的最大匹配度;
根据所述最大匹配度确定所述N个特征行为序列。
12.根据权利要求11所述的装置,其特征在于,所述匹配模块具体用于:通过如下公式确定所述第一RPC序列与所述M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
13.根据权利要求10所述的装置,其特征在于,所述第一生成模块具体用于:
针对所述N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,所述发送行为节点包括所述特征行为序列中所述客户端发送给所述服务器的RPC函数;所述等待行为节点包括所述特征行为序列中所述服务器发送给所述客户端的RPC函数;
对所述发送行为节点和所述等待行为节点采用特征子树模板生成所述特征行为序列对应的特征子树。
14.根据权利要求13所述的装置,其特征在于,还包括:
第二获取模块,用于获取所述客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息;
更新模块,用于根据所述第一环境信息和所述第二环境信息更新所述第一环境信息对应的RPC参数,得到所述第二环境信息对应的RPC参数;其中所述第一环境信息对应的RPC参数为所述发送行为节点和/或所述等待行为节点中的RPC函数的参数。
15.根据权利要求13所述的装置,其特征在于,还包括:
确定模块,用于确定所述发送行为节点中各RPC函数的调用时间;
所述确定模块,还用于根据所述调用时间确定相邻两个RPC函数的调用时间间隔;
第三生成模块,用于根据所述调用时间间隔生成所述相邻两个RPC函数中的后一个RPC函数的发送条件。
16.根据权利要求15所述的装置,其特征在于,所述发送条件为从所述相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到所述调用时间间隔后发送所述后一个RPC函数。
17.根据权利要求10所述的装置,其特征在于,所述第一获取模块具体用于:
获取第二RPC序列;其中所述第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;
针对所述P个预设区域中的每个预设区域,在预设区域中确定关键词;
在所述预设区域中确定包括所述关键词的RPC函数;
将包括所述预设区域中包括所述关键词的RPC函数生成特征行为模板。
18.根据权利要求10所述的装置,其特征在于,所述第二生成模块具体用于:
将所述N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
19.一种测试机器人的人工智能AI行为树的生成设备,其特征在于,包括:处理器,以及用于存储所述处理器执行指令的存储器;
所述处理器用于:
获取M个特征行为模板、以及客户端与服务器之间传输的第一远程过程调用RPC序列;其中M为大于或者等于1的正整数;所述特征行为模板和所述第一RPC序列均包括多个RPC函数;
匹配所述第一RPC序列和所述M个特征行为模板,得到N个特征行为序列;其中N为大于或者等于1的正整数;所述特征行为序列包括所述第一RPC序列中与所述特征行为序列对应的特征行为模板匹配成功的多个RPC函数;
将所述N个特征行为序列生成N个特征子树;
将所述N个特征子树生成AI行为树;
其中,所述处理器具体用于:
对于所述M个特征行为模板中的每个特征行为模板,匹配所述第一RPC序列和特征行为模板,得到所述特征行为模板对应的匹配成功的多个RPC函数;
获取所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值;其中,所述编号差值为所述匹配成功的多个RPC函数对应的最大编号与最小编号的差值;
根据所述特征行为模板的长度和所述匹配成功的多个RPC函数的编号差值,确定所述特征行为模板和所述匹配成功的多个RPC函数的匹配度;其中,所述匹配度与所述特征行为模板的长度呈正比,且所述匹配度与所述编号差值呈反比;
根据所述第一RPC序列对应的匹配度确定所述N个特征行为序列。
20.根据权利要求19所述的设备,其特征在于,所述处理器具体用于:
根据所述第一RPC序列对应的匹配度确定所述第一RPC序列与所述M个特征行为模板的最大匹配度;
根据所述最大匹配度确定所述N个特征行为序列。
21.根据权利要求20所述的设备,其特征在于,所述处理器具体用于:
通过如下公式确定所述第一RPC序列与所述M个特征行为模板的最大匹配度f(n):
f(i)=max{f(i-1),max{f(h-1)+Score(h,i,k)|(h,i,k)∈ScoreSet}}
其中,i=1,2……n,n表示所述第一RPC序列包括的RPC函数的个数;f(i)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i个RPC函数与所述M个特征行为模板的最大匹配度;f(i-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第i-1个RPC函数与所述M个特征行为模板的最大匹配度;f(h-1)表示按照所述第一RPC序列中各RPC函数的编号顺序,所述第一RPC序列中的第1个RPC函数至第h-1个RPC函数与所述M个特征行为模板的最大匹配度;Score(h,i,k)表示按照所述第一RPC序列中各RPC函数的编号顺序以及各特征行为模板的编号顺序,所述第一RPC序列中第h个RPC函数至第i个RPC函数与所述M个特征行为模板中的第k个特征行为模板的匹配度;ScoreSet表示三元组集合;其中所述集合中的元素为三元组,所述三元组包括:特征行为模板的编号、与特征行为模板对应的匹配成功的多个RPC函数中的第1个RPC函数的编号以及最后一个RPC函数的编号。
22.根据权利要求19所述的设备,其特征在于,所述处理器具体用于:
针对所述N个特征行为序列中的每个特征行为序列,将特征行为序列划分为发送行为节点和等待行为节点;其中,所述发送行为节点包括所述特征行为序列中所述客户端发送给所述服务器的RPC函数;所述等待行为节点包括所述特征行为序列中所述服务器发送给所述客户端的RPC函数;
对所述发送行为节点和所述等待行为节点采用特征子树模板生成所述特征行为序列对应的特征子树。
23.根据权利要求22所述的设备,其特征在于,所述处理器还用于:
获取所述客户端对应的玩家所处的第一环境信息以及测试机器人当前所处的第二环境信息;
根据所述第一环境信息和所述第二环境信息更新所述第一环境信息对应的RPC参数,得到所述第二环境信息对应的RPC参数;其中所述第一环境信息对应的RPC参数为所述发送行为节点和/或所述等待行为节点中的RPC函数的参数。
24.根据权利要求22所述的设备,其特征在于,所述处理器还用于:
确定所述发送行为节点中各RPC函数的调用时间;
根据所述调用时间确定相邻两个RPC函数的调用时间间隔;
根据所述调用时间间隔生成所述相邻两个RPC函数中的后一个RPC函数的发送条件。
25.根据权利要求24所述的设备,其特征在于,所述发送条件为从所述相邻两个RPC函数中的前一个RPC函数的发送时间开始计时,当计时时长达到所述调用时间间隔后发送所述后一个RPC函数。
26.根据权利要求19所述的设备,其特征在于,所述处理器具体用于:
获取第二RPC序列;其中所述第二RPC序列包括P个预设区域,P为大于或者等于1的正整数,且P大于或者等于M;
针对所述P个预设区域中的每个预设区域,在预设区域中确定关键词;
在所述预设区域中确定包括所述关键词的RPC函数;
将包括所述预设区域中包括所述关键词的RPC函数生成特征行为模板。
27.根据权利要求19所述的设备,其特征在于,所述处理器具体用于:
将所述N个特征子树按照所述N个特征子树的生成时间顺序生成AI行为树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710700880.7A CN107526682B (zh) | 2017-08-16 | 2017-08-16 | 测试机器人的ai行为树的生成方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710700880.7A CN107526682B (zh) | 2017-08-16 | 2017-08-16 | 测试机器人的ai行为树的生成方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107526682A CN107526682A (zh) | 2017-12-29 |
CN107526682B true CN107526682B (zh) | 2020-08-04 |
Family
ID=60681224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710700880.7A Active CN107526682B (zh) | 2017-08-16 | 2017-08-16 | 测试机器人的ai行为树的生成方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107526682B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110270A (zh) * | 2021-06-15 | 2021-07-13 | 北京德风新征程科技有限公司 | 报警信号处理方法、装置、电子设备和计算机可读介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388945A (zh) * | 2018-02-24 | 2018-08-10 | 网易(杭州)网络有限公司 | Ai决策的配置方法及装置 |
CN110688301B (zh) * | 2019-08-22 | 2021-03-02 | 浙江口碑网络技术有限公司 | 服务器测试方法、装置、存储介质及计算机设备 |
CN110898433B (zh) * | 2019-11-28 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 虚拟对象控制方法、装置、电子设备及存储介质 |
CN112882930B (zh) * | 2021-02-04 | 2023-09-26 | 网易(杭州)网络有限公司 | 自动化测试方法、装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
CN106390456A (zh) * | 2016-09-30 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 游戏中角色行为的生成方法和装置 |
CN106445701A (zh) * | 2016-09-21 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN106861190A (zh) * | 2017-02-16 | 2017-06-20 | 网易(杭州)网络有限公司 | Ai构建方法及装置、游戏控制方法及装置、ai*** |
CN106959850A (zh) * | 2017-03-02 | 2017-07-18 | 上海时年信息科技有限公司 | 自动生成行为树代码的方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10413829B2 (en) * | 2016-02-09 | 2019-09-17 | Disney Enterprises, Inc. | System and method of implementing behavior trees when modifying attribute values of game entities based on physical token detection |
-
2017
- 2017-08-16 CN CN201710700880.7A patent/CN107526682B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
CN106445701A (zh) * | 2016-09-21 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN106390456A (zh) * | 2016-09-30 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 游戏中角色行为的生成方法和装置 |
CN106861190A (zh) * | 2017-02-16 | 2017-06-20 | 网易(杭州)网络有限公司 | Ai构建方法及装置、游戏控制方法及装置、ai*** |
CN106959850A (zh) * | 2017-03-02 | 2017-07-18 | 上海时年信息科技有限公司 | 自动生成行为树代码的方法及*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110270A (zh) * | 2021-06-15 | 2021-07-13 | 北京德风新征程科技有限公司 | 报警信号处理方法、装置、电子设备和计算机可读介质 |
CN113110270B (zh) * | 2021-06-15 | 2021-09-21 | 北京德风新征程科技有限公司 | 报警信号处理方法、装置、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107526682A (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107526682B (zh) | 测试机器人的ai行为树的生成方法、装置及设备 | |
US10780348B2 (en) | Method and device for generating character behaviors in game and storage medium | |
CN110443284B (zh) | 人工智能ai模型的训练方法、调用方法、服务器及可读存储介质 | |
CN114949861A (zh) | 使用云游戏网络的人工智能(ai)模型训练 | |
CN110782004B (zh) | 模型训练方法、模型调用方法、设备及可读存储介质 | |
CN113158608A (zh) | 确定模拟电路参数的处理方法、装置、设备及存储介质 | |
CN109684217B (zh) | 一种游戏检测的方法及装置、电子设备、存储介质 | |
CN103577704A (zh) | 游戏***中npc处理事件的方法及装置 | |
CN112870721B (zh) | 一种游戏互动方法、装置、设备及存储介质 | |
CN111437608B (zh) | 基于人工智能的游戏对局方法、装置、设备及存储介质 | |
Luong et al. | A BDI game master agent for computer role-playing games | |
CN112016704A (zh) | Ai模型训练方法、模型使用方法、计算机设备及存储介质 | |
Zhao et al. | On multi-agent learning in team sports games | |
CN112783781A (zh) | 游戏测试方法、装置、电子设备及存储介质 | |
CN111450531A (zh) | 虚拟角色控制方法、装置、电子设备以及存储介质 | |
CN111701246B (zh) | 一种游戏ai的决策配置方法和装置 | |
CN110772794B (zh) | 智能游戏处理方法、装置、设备及存储介质 | |
CN112973130B (zh) | 虚拟场景的回放模型构建方法、装置、设备及存储介质 | |
CN115944921B (zh) | 游戏数据处理方法、装置、设备及介质 | |
Chauvin et al. | Making sense of emergent narratives: An architecture supporting player-triggered narrative processes | |
CN113289345A (zh) | 具有奖励的渐进式人类用户检测挑战 | |
Kuga et al. | An automatic team evaluation system for RoboCup soccer simulation 2D | |
CN112870722B (zh) | 对战格斗类ai游戏模型的生成方法、装置、设备及介质 | |
CN111068329B (zh) | 一种游戏关卡配置方法、装置、电子设备及存储介质 | |
CN116271829A (zh) | 虚拟对象控制方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |