一种基于行为树的行为执行方法和装置与流程

文档序号:11412004阅读:308来源:国知局
一种基于行为树的行为执行方法和装置与流程
本发明涉及计算机
技术领域
,尤其涉及一种基于行为树的行为执行方法和装置。
背景技术
:行为树是一个包含逻辑节点和行为节点的树形结构,每次需要找出一个行为的时候,会从树的根节点出发,遍历各个节点,找出第一个和当前数据相符合的行为。搜索一个行为可以通过这些逻辑节点来定义,从逻辑节点上可以看出整个行为树的逻辑走向,常用的逻辑节点有以下三种;1、选择(selector):选择其子节点的某一个执行。2、序列(sequence):将其所有子节点依次执行,也就是说当前一个返回“完成”状态后,再运行下一个子节点。3、并行(parallel):将其所有子节点都运行一遍。行为节点是与游戏相关的,因不同的游戏,需要定义不同的行为节点,行为节点一般分为两种运行状态:1、运行中(executing):该行为还在处理中。2、完成(completed):该行为处理完成,成功或者失败。行为树是游戏单位的人工智能(artificialintelligence,ai)的一种重要实现方式,游戏中有自己行为的游戏单位,比如本方士兵,敌方士兵。在游戏中众多游戏单位往往具有不同的ai,现有技术中需要针对不同游戏单位分别维护各自的行为树,那么随着游戏单位的增多,行为树的量级也就不断增加,这时修改或者增减行为将变得十分繁碎。综上可知,现有技术中每个行为树是绑定在具体某类的游戏单位上的,随着具有不同行为的游戏单位数量不断增加,当不同的游戏单位执行时所需要维护的行为树也随之增加,使得游戏单位的行为执行效率较低。技术实现要素:本发明实施例提供了一种基于行为树的行为执行方法和装置,用于减少游戏中行为树的数量,提高游戏单位的行为执行效率。为解决上述技术问题,本发明实施例提供以下技术方案:第一方面,本发明实施例提供一种基于行为树的行为执行方法,包括:根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,所述行为树中配置有包括所述第一抽象行为在内的多个抽象行为;根据所述第一抽象行为从行为委托池中获取到对应的第一行为委托,所述行为委托池中包括有所述第一行为委托在内的多个行为委托;将所述第一行为委托加载到所述第一抽象行为上从而生成第一具体行为,并由所述第一游戏单位执行所述第一具体行为。第二方面,本发明实施例还提供一种基于行为树的行为执行装置,包括:搜索模块,用于根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,所述行为树中配置有包括所述第一抽象行为在内的多个抽象行为;行为委托创建模块,用于根据所述第一抽象行为从行为委托池中获取到对应的第一行为委托,所述行为委托池中包括有所述第一行为委托在内的多个行为委托;具体行为执行模块,用于将所述第一行为委托加载到所述第一抽象行为上从而生成第一具体行为,并由所述第一游戏单位执行所述第一具体行为。本申请的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。从以上技术方案可以看出,本发明实施例具有以下优点:在本发明实施例中,首先根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,行为树中配置有包括第一抽象行为在内的多个抽象行为,接下来根据第一抽象行为从行为委托池中获取到对应的第一行为委托,行为委托池中包括有第一行为委托在内的多个行为委托,最后将第一行为委托加载到第一抽象行为上从而生成第一具体行为,并由第一游戏单位执行第一具体行为。由于本发明实施例中可以根据第一游戏单位的属性信息从行为树中的多个抽象行为中选择出相应的第一抽象行为,第一游戏单位所执行的第一具体行为可以通过第一抽象行为和第一行为委托进行生成,使得多个游戏单位共用行为树,从而可以减少游戏中行为树的数量,提高游戏单位的行为执行效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种基于行为树的行为执行方法的流程方框示意图;图2为本发明实施例提供的抽象行为的执行过程的一种实现流程示意图;图3为本发明实施例提供的行为树的一种示例结构示意图;图4-a为本发明实施例提供的一种基于行为树的行为执行装置的组成结构示意图;图4-b为本发明实施例提供的一种行为委托创建模块的组成结构示意图;图4-c为本发明实施例提供的一种具体行为执行模块的组成结构示意图;图4-d为本发明实施例提供的另一种具体行为执行模块的组成结构示意图;图4-e为本发明实施例提供的另一种具体行为执行模块的组成结构示意图;图4-f为本发明实施例提供的另一种基于行为树的行为执行装置的组成结构示意图;图5为本发明实施例提供的基于行为树的行为执行方法应用于服务器的组成结构示意图。具体实施方式本发明实施例提供了一种基于行为树的行为执行方法和装置,用于减少游戏中行为树的数量,提高游戏单位的行为执行效率。为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。以下分别进行详细说明。本发明基于行为树的行为执行方法的一个实施例,具体可以应用于由多个游戏单位执行相应的具体行为的场景中。其中,游戏场景中可以根据角色的类型确定不同角色所述的游戏单位,例如,本方士兵、敌方士兵分属于不同的游戏单位。现有技术中,每个游戏单位因为具有不同的ai,因此需要独立配置属于某个游戏单位的行为树,在游戏单位执行行为时也需要使用属于该游戏单位的行为树。本发明实施例中多个游戏单位可以共用同一个行为树,从而可以有效减少行为树的数量,易于维护。请参阅图1所示,本发明一个实施例提供的基于行为树的行为执行方法,可以包括如下步骤:101、根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,行为树中配置有包括第一抽象行为在内的多个抽象行为。为了便于实现人工智能行为,可以使用图形化的行为树编辑器,这些图形化的行为树编辑器提供了例如顺序节点、条件节点、执行节点等节点用于搭建行为树。行为树是一种计划执行的数学模型,本质上是一种决策树。每棵行为树中包含若干个行为节点,其中,该行为节点包括控制节点和执行节点。执行节点作为行为树的叶节点,用于执行该节点所指示的行为。在本申请实施例中,行为树中的控制节点与若干个子节点相连,用于选择执行、序列执行或并行执行某一或某些子节点。本发明的一些实施例中,行为树可以为第一游戏单位和第二游戏单位共用的同一个行为树,第一游戏单位和第二游戏单位具有不同的属性信息,对于多个游戏单位而言,不需要为每个游戏单位绑定一个行为树,从而减少需要维护的行为树数量,易于维护。在本发明实施例中,行为树中配置有多个抽象行为,每个抽象行为在编辑时是无法执行的,抽象行为只有在行为树运行到当前节点时才加载,对于抽象行为是多个游戏单位所共同使用的,对于不同的游戏单位,其抽象行为都是一样的。举例说明如下,游戏单位往往具有待机行为、移动行为和攻击行为,在行为树中可以配置这些多个游戏单位所共用的抽象行为。本发明实施例中可以按照游戏单位为阵营,提取出其行为的共性,构建出一套基本的行为树,然后在此行为树上添加抽象行为来适应不同游戏单位的特性。本发明实施例中第一游戏单位是需要执行具体行为的游戏单位,首先获取该第一游戏单位的属性信息,其中,该属性信息包括了第一游戏单位的单位属性,例如该属性信息为游戏中的角色属性。对于不同的游戏单位可以具有相应的属性信息,通过该属性信息可以在行为树上搜索到对应于第一游戏单位的第一抽象行为,第一抽象行为特指的是从行为树上搜索到的抽象行为,例如该第一抽象行为可以为待机行为、移动行为和攻击行为等,具体取决于第一游戏单位。需要说明的是,在本发明的一些实施例中,以第一游戏单位和第二游戏单位共用同一个行为树为例进行了说明,在实际应用中,还可以有多个游戏单位共用同一个行为树,例如可以是三个游戏单位共用同一个行为树,此处不做限定。本发明实施例中,行为树在编辑时可以增加抽象行为,因此通过为游戏单位配置不同的抽象行为,可以实现为游戏单位动态的修改具体行为,使得游戏单位的具体行为的执行效率大大提高。102、根据第一抽象行为从行为委托池中获取到对应的第一行为委托,行为委托池中包括有第一行为委托在内的多个行为委托。在本发明实施例中,游戏场景中还维护一个行为委托池,它包含了游戏中所有的行为动作,该行为委托池不属于行为树中的节点,不需要在行为树编辑过程中添加到行为树上,从行为树上搜索到第一抽象行为之后,该第一抽象行为被触发,根据第一抽象行为就可以在行为委托池中找到对应的行为委托,将其找到的行为委托定义为第一行为委托。在本发明实施例中,行为委托池中包括有第一行为委托在内的多个行为委托,其中每个行为委托表示一个具体行为的逻辑,但行为委托不能主动触发和执行,必须通过抽象行为来创建和执行。在本发明的一些实施例中,步骤102根据第一抽象行为从行为委托池中获取到对应的第一行为委托,包括:a1、根据第一抽象行为的类型(type)和子类型(subtype)确定第一抽象行为的键(key);a2、根据第一抽象行为的键判断在行为委托池中是否能够找到与键对应的行为委托,若从行为委托池中找到对应于键的行为委托,确定找到的行为委托为第一行为委托。其中,行为树中具有多个抽象行为,这些抽象行为中每个抽象行为具有type和subtype两个属性,type指定此抽象行为的类型,比如抽象行为是技能行为还是移动行为,subtype则进一步细分具体的子类型,比如抽象行为是技能行为时的加血技能还是减速技能。通过type和subtype就可以唯一指定了一个key,游戏中维护一个行为委托池,它包含了游戏中所有的行为动作,当一个抽象行为被触发时,根据这个抽象行为指定的key就可以在行为委托池中找到对应的行为委托。在本发明的一些实施例中,本发明实施例提供的基于行为树的行为执行方法除了执行前述步骤之外,该方法还可以包括如下步骤:b1、根据第二游戏单位的属性信息在行为委托池中添加第二行为委托。其中,行为委托池可以根据游戏单位的不断增加进行动态维护,例如根据第二游戏单位的属性信息在行为委托池中添加第二行为委托,不限定的是,行为委托池中包括的所有行为委托都还可以进行实时编辑,从而可以为不同的抽象行为加载更新后的行为委托,从而可以影响到最终生成的具体行为,本发明实施例中不需要对行为树进行编辑,只需修改行为委托池中的行为委托即可,而无需对行为树做任何改动,带有抽象行为的行为树具有极高的稳定性。103、将第一行为委托加载到第一抽象行为上从而生成第一具体行为,并由第一游戏单位执行第一具体行为。在本发明实施例中,通过前述步骤获取到了第一行为委托以及第一抽象行为,则在第一抽象行为的触发下可以将第一行为委托加载到第一抽象行为上从而生成第一具体行为,并由第一游戏单位执行第一具体行为。本发明实施例中游戏单位的具体行为不是从行为树中直接搜索得到,而是先搜索到多个游戏单位能够共用的抽象行为,再通过抽象行为与行为委托的合成从而得到具体行为,该具体行为是配置给游戏单位可用于直接执行的行为。在本发明的一些实施例中,行为树中的抽象行为还可以具有属性和状态,从而可以通过抽象行为的属性和状态对抽象行为的执行过程进行实时的图形化显示。其中,抽象行为可以包括如下三种属性中的至少一种属性:是否可执行、是否可打断、是否执行完成,抽象行为可以包括如下四种状态中的至少一种状态:预执行、执行中、执行成功和执行失败。接下来以不同的实施例分别对不同属性和不同状态的第一抽象行为生成第一具体行为的过程进行举例说明。在本发明的一些实施例中,第一抽象行为的属性包括是否可执行,步骤103将第一行为委托加载到第一抽象行为上从而生成第一具体行为,包括:c1、当第一抽象行为的属性为可执行时,执行第一抽象行为,并在第一抽象行为执行时加载第一行为委托从而生成第一具体行为。其中,第一抽象行为具有是否可执行的属性,因此需要首先判断该第一抽象行为是否可执行,第一抽象行为的是否可执行的属性是由自身决定,比如第一抽象行为对应的是远程攻击技能,那么就需要判断在这个远程技能判断范围内是否有敌方单位,如果有,第一抽象行为就可以执行,否则就不能执行该第一抽象行为。当第一抽象行为的属性为可执行时,执行第一抽象行为,并在第一抽象行为执行时加载第一行为委托从而生成第一具体行为。进一步的,在本发明的另一些实施例中,步骤103将第一行为委托加载到第一抽象行为上从而生成第一具体行为,还包括:c2、确定第一抽象行为的属性为可执行时,显示第一抽象行为的状态为预执行;c3、当第一抽象行为执行时,显示第一抽象行为的状态为执行中。其中,第一抽象行为还具有多种状态,那么在第一抽象行为的执行过程中还可以显示第一抽象行为的实时状态,例如,确定第一抽象行为的属性为可执行时,显示第一抽象行为的状态为预执行。又如,当第一抽象行为执行时,显示第一抽象行为的状态为执行中。通过第一抽象行为的实时状态显示,可以及时的向用户显示第一游戏单位执行具体行为的执行进度。在本发明的一些实施例中,第一抽象行为的属性还包括是否可打断,步骤103将第一行为委托加载到第一抽象行为上从而生成第一具体行为,还包括:c4、在执行第一抽象行为的过程中,判断第一抽象行为是否满足可打断条件,若第一抽象行为满足可打断条件则停止执行第一抽象行为,若第一抽象行为没有满足可打断条件则继续执行第一抽象行为。其中,第一抽象行为具有是否可打断的属性,因此还可以判断第一抽象行为是否满足可打断条件,在满足可打断条件时则终止执行第一抽象行为,举例说明,某些抽象行为可以被打断,比如在释放一个加血技能时,受到其他攻击行为,那么这个抽象行为就不会再执行下去。进一步的,在本发明的另一些实施例中,步骤103将第一行为委托加载到第一抽象行为上从而生成第一具体行为,还包括:c5、当停止执行第一抽象行为时,显示第一抽象行为的状态为执行失败。其中,第一抽象行为还具有多种状态,那么在第一抽象行为的执行过程中还可以显示第一抽象行为的实时状态,当停止执行第一抽象行为时,显示第一抽象行为的状态为执行失败,通过第一抽象行为的实时状态显示,可以及时的向用户显示由第一游戏单位执行具体行为的执行进度。在本发明的一些实施例中,第一抽象行为的属性还包括是否执行完成,步骤103将第一行为委托加载到第一抽象行为上从而生成第一具体行为,还包括:c6、判断第一抽象行为是否执行完成,若第一抽象行为执行完成,输出加载有第一行为委托的第一抽象行为,确定加载有第一行为委托的第一抽象行为为第一具体行为。其中,第一抽象行为具有是否执行完成的属性,因此还可以判断第一抽象行为是否执行完成,从而对第一抽象行为按照具体的属性进行实时判断,以确定能够生成第一具体行为。进一步的,在本发明的另一些实施例中,步骤103将第一行为委托加载到第一抽象行为上从而生成第一具体行为,还包括:c7、当第一抽象行为执行完成时,显示第一抽象行为的状态为执行成功;c8、当第一抽象行为没有执行完成时,显示第一抽象行为的状态为执行中。其中,第一抽象行为还具有多种状态,那么在第一抽象行为的执行过程中还可以显示第一抽象行为的实时状态,当第一抽象行为执行完成时,显示第一抽象行为的状态为执行成功。通过第一抽象行为的实时状态显示,可以及时的向用户显示由第一游戏单位执行具体行为的执行进度。通过以上实施例对本发明实施例的描述可知,首先根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,行为树中配置有包括第一抽象行为在内的多个抽象行为,接下来根据第一抽象行为从行为委托池中获取到对应的第一行为委托,行为委托池中包括有第一行为委托在内的多个行为委托,最后将第一行为委托加载到第一抽象行为上从而生成第一具体行为,并由第一游戏单位执行第一具体行为。由于本发明实施例中行为树中配置的多个抽象行为可以根据第一游戏单位的属性信息进行选择,第一游戏单位所执行的第一具体行为可以通过第一抽象行为和第一行为委托进行生成,使得多个游戏单位共用行为树,从而可以减少游戏中行为树的数量,提高游戏单位的行为执行效率。为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。本发明实施例中按照游戏单位阵营,提取出其行为的共性,构建出一套基本的行为树,对于某个游戏来说,在行为树上行为节点是可以复用的,比如移动行为,在巡逻的分支上需要用到,在逃跑分支上也会用到,这种情况下,就可以复用这个行为节点。本发明实施例在基本的行为树上添加抽象行为来适应不同单位的特性,每个不同的游戏单位,都单独对应一种抽象行为。抽象行为可以在运行时,根据游戏单位的具体属性形成特定的具体行为,从而与基础行为相结合,得到游戏单位完整的行为。在本发明实施例中,为了便于实现人工智能行为,可以使用图形化的行为树编辑器,这些图形化的行为树编辑器提供了例如顺序节点、条件节点、执行节点等节点用于搭建行为树。行为树是一种计划执行的数学模型,本质上是一种决策树。每棵行为树中包含若干个行为节点,其中,该行为节点包括控制节点和执行节点。执行节点作为行为树的叶节点,用于执行该节点所指示的行为。行为树在形式上分层呈树结构,也称为分层有限状态机,行为树主要用四种节点来描述行为逻辑,顺序节点、选择节点、条件节点、执行节点。每一棵行为树表示一个ai逻辑,要执行这个ai逻辑,需要从根节点开始遍历执行整棵树,遍历执行的过程中,父节点根据其自身类别选择需要执行的子节点并执行之,子节点执行完后将执行结果返回给父节点。节点从结构上分为两类:组合节点、叶节点,所谓组合节点就是出度大于0的节点,叶节点一般用来放置执行逻辑和条件判断。本发明实施例中,将行为树中的行为节点进行划分为抽象行为和具体行为。具体行为与行为树的行为节点是一样的,可以执行某一特定的动作,并且具有运行中和完成两种状态。抽象行为在编辑时不具有任何功能,只有在行为树运行时才会根据抽象行为的类型加载到具体的逻辑,具体行为是在行为树运行时加载的,而抽象行为只有在行为树运行到当前节点才加载,相较于具体行为,抽象行为可以包括:三种属性和四种状态,抽象行为的三种属性可以为:是否可执行、是否可打断、是否执行完成。抽象行为的四种状态为:预执行、执行中、执行成功和执行失败。在行为树的编辑过程中除了具体行为只需要添加抽象行为,即使不同游戏单位某些行为不一样,它们对应的抽象行为也是一样的,这就保证了不同的游戏单位可以共用行为树。其次,行为树在运行时可以动态的加载行为逻辑,只需要修改相关配置即可方便的修改行为树执行的行为,具有较强的扩展性。请参阅图2所示,为本发明实施例提供的抽象行为的执行过程的一种实现流程示意图。通过行为树编辑器编辑好了具有抽象行为的行为树后,接下来在运行时通过以下几个步骤则可以将其实例化成为具有具体行为的标准行为树。步骤1、运行抽象行为。步骤2、在行为委托池中是否能够找到对应的行为委托。步骤3、创建行为委托。步骤4、判断抽象行为是否可执行,若是,则执行步骤5,若否,返回行为执行失败。步骤5、行为预执行。步骤6、行为执行中,然后放分别执行步骤7和步骤8。步骤7、判断行为是否被打断,若被打断,返回行为执行失败,若不能被打断,则继续执行步骤5。步骤8、判断行为是否执行完成,若没有完成,则继续执行步骤5,若已经完成,返回行为执行完成。在本发明实施例中,行为树中配置有多个抽象行为,每个抽象行为在编辑时是无法执行的,抽象行为只有在行为树运行到当前节点时才加载,对于抽象行为是多个游戏单位所共同使用的,对于不同的游戏单位,其抽象行为都是一样的。举例说明如下,游戏单位往往具有待机行为、移动行为和攻击行为,在行为树中可以配置这些多个游戏单位所共用的抽象行为。本发明实施例中可以按照游戏单位为阵营,提取出其行为的共性,构建出一套基本的行为树,然后在此行为树上添加抽象行为来适应不同游戏单位的特性。在本申请实施例中,行为树中的控制节点与若干个子节点相连,用于选择执行、序列执行或并行执行某一或某些子节点。本发明的一些实施例中,行为树可以为至少两个游戏单位共用的同一个行为树,不同游戏单位具有不同的属性信息,对于多个游戏单位而言,不需要为每个游戏单位绑定一个行为树,从而减少需要维护的行为树数量,易于维护。在上述应用场景中,首先根据抽象行为的类型加载具体的行为委托。每个抽象行为具有type和subtype两个属性,type指定此抽象行为的类型,比如这是技能行为还是移动行为,subtype则进一步细分具体的子类型,比如这是加血技能还是减速技能。通过type和subtype,就唯一指定了一个key。游戏中还会维护一个行为委托池,它包含了游戏中所有的行为动作,它不属于行为树节点,不需要在行为树编辑过程中添加到行为树上。当一个抽象行为被触发时,根据这个抽象行为指定的key,就可以在行为委托池中找到对应的行为委托,然后将行为委托挂载到抽象行为上,这样一个抽象行为就有了实质的含义。行为委托是一个具体行为的逻辑,但其不能主动触发和执行,必须通过抽象行为来创建和执行,因此可以将具体行为拆解为抽象行为和行为委托,现有技术中行为树中都是具体行为,本发明实施例中将这些具体行为拆解成抽象行为和行为委托,在行为树的编辑过程中只需要添加抽象行为,对于不同的游戏单位,抽象行为都是一样的,但不同的抽象行为对应的行为委托不同。编辑时得到的是同一个行为树,从而降低了维护成本。在运行时,得到的则是不同的行为树,从而可以保证游戏单位逻辑的特性。一方面利用了抽象行为的通用性,使得行为树简单,易于维护,另一方面利用了行为委托的特殊性,能够产生各种不同类型的具体行为。在本发明的一些实施例中,每一个抽象行为在运行时都会加载到一个行为委托,抽象行为的每一个属性和每一个状态只有在加载到具体的行为委托后才有意义。每一个抽象行为都提供如下几个接口,用于行为节点的状态查询以及触发执行,为抽象行为配置的主要接口有:canexecute:此抽象行为是否能执行。caninterrupt:此抽象行为是否能被打断,某些抽象行为可以被打断,比如说在释放一个加血技能时,受到其他攻击,那么这个技能行为就不会再执行下去。isfinish:此抽象行为是否已完成。prepare:预执行。execute:执行中。当一个抽象行为加载到具体的行为委托时,以上接口的调用会直接关联到对应行为委托的调用。比如加载到嘲讽技能的行为委托,则canexecute返回的是嘲讽技能是否能执行,如果加载的是加血技能的行为委托,则加血技能的行为委托为判断当前范围内是否有友方单位损血,从而决定此抽象行为能否执行。在本发明的一些实施例中,一个简单的游戏单位往往具有待机、移动和攻击等几种行为,攻击又可以进一步细分为近身攻击和远程攻击,近身攻击还可以拆分为原地攻击,移动过去攻击等,远程攻击也可以拆分成为各种类型的技能,比如增益技能或是攻击技能。假设有a,b两个游戏单位,a有三种技能行为:近身攻击、嘲讽、加护甲,b也有三种技能:远程攻击、全体恢复,减速。那么这6个技能在行为树中将对应6个行为节点a和b。本发明实施例中把使用技能行为抽象成一个抽象行为,它有三种属性:技能是否可执行、技能是否可打断、技能是否执行完成。该抽象行为还具有四种状态:技能预执行、技能执行中、技能释放成功、技能释放失败。当逻辑节点搜索到这个抽象节点时,首先判断此技能是否能执行,如果能够执行,再根据相关配置属性找到具体的行为,触发技能预执行和技能执行中,最后返回执行成功或是执行失败,其中,相关配置则是包括但不仅限于办公软件中的excel表格,xml配置等方式。举例说明如下,请参阅如下表1和表2。表1为游戏单位a和游戏单位b配置的三种技能行为。单位技能1技能2技能3a135b246表2为行为树中抽象行为配置的6中技能id。如果在抽象行为上直接绑定技能id的话,那么行为树中需要为游戏单位a则需要绑定技能1、3、5三个技能id,行为树中需要为游戏单位b绑定技能2、4、6三个技能id。这样的话,通过同一个行为树,可以实现游戏单位a和游戏单位b的共用。本发明的一些实施例中,在抽象行为上绑定了游戏单位的属性,以及这个技能行为的技能索引,技能索引只有1、2、3,而对应的技能id就是不一样的,如excel表中,技能索引1、2、3对应于游戏单位a,技能id就是1,3,5。技能索引1、2、3对应于技能b,技能id就是2,4,6。可以根据如上配置,加载到具体的技能并执行,比如游戏单位a的第一个抽象技能绑定的是单位a的技能1,则可以根据表格找到其对应的技能id:1,得到技能id后具体的技能-远程攻击也是从表格中可以获取。由于抽象技能行为具有是否可执行的属性,那么在行为树上可以进一步的简化掉前置判断条件,最终游戏单位a、b可以使用相同的行为树,如图3所示,为本发明实施例提供的行为树的一种示例结构示意图。在行为树上,通过入口(entry)上选择(selector)出释放技能1、释放技能2和释放技能3,游戏单位a、b都可以从该行为树中搜索到对应的抽象行为,再通过抽象行为和行为委托的合成,得到最终可用的具体行为。后续如果需要修改两个游戏单位a、b的技能行为,只需修改配置表格中a、b对应的技能id,而无需对行为树做任何改动,带有抽象行为的行为树具有极高的稳定性。通过前述的举例说明可知,本发明实施例可以减少游戏中行为树的数量,易于维护,通过对行为树进行改造,使得其技能满足游戏ai的需求,又不需要维护太多的行为树。抽象行为和具体行为相结合形成不同的游戏ai,具体行为就是普通行为树的行为,抽象行为是本发明实施例为通用的行为树配置的行为,一些简单的逻辑不需要将其抽象化。比如说死亡行为,所有的单位就一个死亡行为,没有差别,而技能行为,不同的游戏单位有不同的技能,所以将其抽象化后可以实现多个游戏单位的共用。本发明实施例中在不修改行为树的基础上,通过修改单位属性改变其行为,具有更加自由的配置空间。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图4-a所示,本发明实施例提供的一种基于行为树的行为执行装置400,可以包括:搜索模块401、行为委托创建模块402和具体行为执行模块403,其中,搜索模块401,用于根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,所述行为树中配置有包括所述第一抽象行为在内的多个抽象行为;行为委托创建模块402,用于根据所述第一抽象行为从行为委托池中获取到对应的第一行为委托,所述行为委托池中包括有所述第一行为委托在内的多个行为委托;具体行为执行模块403,用于将所述第一行为委托加载到所述第一抽象行为上从而生成第一具体行为,并由所述第一游戏单位执行所述第一具体行为。在本申请的一些实施例中,请参阅图4-b所示,所述行为委托创建模块402,包括:抽象行为解析模块4021,用于根据所述第一抽象行为的类型type和子类型subtype确定所述第一抽象行为的键key;行为委托查找模块4022,用于根据所述第一抽象行为的键判断在所述行为委托池中是否能够找到与所述键对应的行为委托,若从所述行为委托池中找到对应于所述键的行为委托,确定找到的行为委托为所述第一行为委托。本发明实施例中,将行为树中的行为节点进行划分为抽象行为和具体行为。具体行为与行为树的行为节点是一样的,可以执行某一特定的动作,并且具有运行中和完成两种状态。抽象行为在编辑时不具有任何功能,只有在行为树运行时才会根据抽象行为的类型加载到具体的逻辑,具体行为是在行为树运行时加载的,而抽象行为只有在行为树运行到当前节点才加载,相较于具体行为,抽象行为可以包括:三种属性和四种状态,抽象行为的三种属性可以为:是否可执行、是否可打断、是否执行完成。抽象行为的四种状态为:预执行、执行中、执行成功和执行失败。在本申请的一些实施例中,请参阅图4-c所示,所述第一抽象行为的属性包括是否可执行,所述具体行为执行模块403,包括:执行模块4031,用于当所述第一抽象行为的属性为可执行时,执行所述第一抽象行为,并在所述第一抽象行为执行时加载所述第一行为委托从而生成第一具体行为。可选的,在申请的一些实施例中,请参阅图4-c所示,所述具体行为执行模块403,还包括:第一显示模块4032,用于确定所述第一抽象行为的属性为可执行时,显示所述第一抽象行为的状态为预执行;当所述第一抽象行为执行时,显示所述第一抽象行为的状态为执行中。在本申请的一些实施例中,请参阅图4-d所示,所述第一抽象行为的属性还包括是否可打断,所述具体行为执行模块403,还包括:第一判断模块4033,用于在执行所述第一抽象行为的过程中,判断所述第一抽象行为是否满足可打断条件,若所述第一抽象行为满足所述可打断条件则停止执行所述第一抽象行为,若所述第一抽象行为没有满足所述可打断条件则继续执行所述第一抽象行为。在本申请的一些实施例中,请参阅图4-d所示,所述具体行为执行模块403,还包括:第二显示模块4034,用于当停止执行所述第一抽象行为时,显示所述第一抽象行为的状态为执行失败。在本申请的一些实施例中,请参阅图4-e所示,所述第一抽象行为的属性还包括是否执行完成,所述具体行为执行模块403,还包括:第二判断模块4035,用于判断所述第一抽象行为是否执行完成,若所述第一抽象行为执行完成,输出加载有所述第一行为委托的第一抽象行为,确定加载有所述第一行为委托的第一抽象行为为所述第一具体行为。在本申请的一些实施例中,请参阅图4-e所示,所述具体行为执行模块403,还包括:第三显示模块4036,用于当所述第一抽象行为执行完成时,显示所述第一抽象行为的状态为执行成功;当所述第一抽象行为没有执行完成时,显示所述第一抽象行为的状态为执行中。在本申请的一些实施例中,请参阅图4-f所示,相对于图4-a所示,所述基于行为树的行为执行装置400,还包括:行为委托添加模块404,用于根据所述第二游戏单位的属性信息在所述行为委托池中添加第二行为委托。通过以上对本发明实施例的描述可知,首先根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,行为树中配置有包括第一抽象行为在内的多个抽象行为,接下来根据第一抽象行为从行为委托池中获取到对应的第一行为委托,行为委托池中包括有第一行为委托在内的多个行为委托,最后将第一行为委托加载到第一抽象行为上从而生成第一具体行为,并由第一游戏单位执行第一具体行为。由于本发明实施例中行为树中配置的多个抽象行为可以根据第一游戏单位的属性信息进行选择,第一游戏单位所执行的第一具体行为可以通过第一抽象行为和第一行为委托进行生成,使得多个游戏单位共用行为树,从而可以减少游戏中行为树的数量,提高游戏单位的行为执行效率。图5是本发明实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。上述实施例中由服务器所执行的基于行为树的行为执行方法步骤可以基于该图5所示的服务器结构。通过以上实施例对本发明实施例的描述可知,首先根据第一游戏单位的属性信息从行为树上搜索到第一抽象行为,行为树中配置有包括第一抽象行为在内的多个抽象行为,接下来根据第一抽象行为从行为委托池中获取到对应的第一行为委托,行为委托池中包括有第一行为委托在内的多个行为委托,最后将第一行为委托加载到第一抽象行为上从而生成第一具体行为,并由第一游戏单位执行第一具体行为。由于本发明实施例中行为树中配置的多个抽象行为可以根据第一游戏单位的属性信息进行选择,第一游戏单位所执行的第一具体行为可以通过第一抽象行为和第一行为委托进行生成,使得多个游戏单位共用行为树,从而可以减少游戏中行为树的数量,提高游戏单位的行为执行效率。另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1