一种实现行为树的方法及装置制造方法

文档序号:6537760阅读:141来源:国知局
一种实现行为树的方法及装置制造方法
【专利摘要】本发明的实施方式提供了一种实现行为树的方法。例如,该方法可以包括:提供用于表达行为树叶子节点的基本行为语言元素;将所述基本行为语言元素设置为一级(first-class)数据类型,将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型,将所述基本行为语言元素对应的行为、所述复合行为语言元素对应的行为进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树,从而实现了非图形化的搭建行为树的目的。此外,本发明的实施方式还提供了一种实现行为树的装置。
【专利说明】一种实现行为树的方法及装置
【技术领域】
[0001]本发明的实施方式涉及计算机应用领域,更具体地,本发明的实施方式涉及一种实现行为树的方法及装置。
【背景技术】
[0002]本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]随着技术的进步,越来越多的应用场景下需要实现人工智能行为,例如,计算机游戏中非玩家控制角色(NPC, Non-Player Character)需要具有人工智能行为。
[0004]为了便于实现人工智能行为,目前已经出现了一些图形化的行为树编辑器。这些图形化的行为树编辑器提供了例如顺序节点、条件节点、执行节点等节点用于搭建行为树。借助图形化的行为树编辑器,设计人员可以较为容易地搭建出用于实现一系列人工智能行为的行为树。

【发明内容】

[0005]但是,由于行为树设计者的许多重要意图无法通过这些图形化的编辑器方便直接地表达出来,并且图形化的构建方式不利于自动化地批量生成与处理,因此,在现有技术中,如何搭建行为树是一个非常令人烦恼的问题。
[0006]为此,非常需要一种实现行为树的方法,以实现非图形化的搭建行为树的目的。
[0007]在本上下文中,本发明的实施方式期望提供一种实现行为树的方法及装置。
[0008]在本发明实施方式的第一方面中,提供了一种实现行为树的方法,例如,可以包括:提供用于表达行为树叶子节点的基本行为语言元素;将所述基本行为语言元素设置为一级(first-class)数据类型,以便所述基本行为语言元素之间能够组合形成复合行为语言元素;将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型,以便所述基本行为语言元素与所述复合行为语言元素之间、以及所述复合行为语言元素之间能够按照语言元素组合规则的规定组合形成新的复合行为语言元素,其中,所述语言元素组合规则用于表达行为树的中间节点;将所述基本行为语言元素对应的行为、所述复合行为语言元素对应的行为进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树。
[0009]在本发明实施方式的第二方面中,提供了一种实现行为树的装置,例如,可以包括:基本提供单元,可以配置用于提供用于表达行为树叶子节点的基本行为语言元素;第一设置单元,可以配置用于将所述基本行为语言元素设置为first-class (—级)数据类型,以便所述基本行为语言元素之间能够组合形成复合行为语言元素;第二设置单元,可以配置用于将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型,以便所述基本行为语言元素与所述复合行为语言元素之间、以及所述复合行为语言元素之间能够按照语言元素组合规则的规定组合形成新的复合行为语言元素,其中,所述语言元素组合规则用于表达行为树的中间节点;组合单元,可以配置用于将所述基本行为语言元素对应的行为、所述复合行为语言元素对应的行为进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树。
[0010]根据本发明实施例提供的实现行为树的方法及装置,由于基本行为语言元素以及复合行为语言元素均为first-class数据类型,因此,基本行为语言元素对应的行为、所述复合行为语言元素对应的行为可以进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树,由于基本行为语言元素、语言元素组合规则以及复合行为语言元素都是以文本作为载体的,因此,行为树设计者可以直接通过文本式的代码语言搭建出与语言元素组合规则对应的行为树,从而使得行为树设计者的许多重要意图可以通过文本式的代码语言方便直接地表达出来,利于自动化地批量生成与处理,并且,由于文本式的代码语言可以被编译到各种目标平台和目标语言上,如JavaScript、C#、Lua等等,还具有良好的移植性。
【专利附图】

【附图说明】
[0011]通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
[0012]图1示意性地示出了根据本发明实施方式的应用场景;
[0013]图2示意性地示出了根据本发明实施方式的实现行为树的方法的流程示意图;
[0014]图3示意性地示出了根据本发明实施方式的实现行为树的装置的结构示意图;
[0015]在附图中,相同或对应的标号表不相同或对应的部分。
【具体实施方式】
[0016]下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0017]本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
[0018]根据本发明的实施方式,提出了一种实现行为树的方法及装置。
[0019]在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
[0020]下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
[0021]发明概沭
[0022]本发明人发现通过提供用于表达行为树的基本行为语言元素,设置用于表达行为树中间节点的语言元素组合规则,将基本行为语言元素以及由基本行为语言元素组成的复合行为语言元素都设置为first-class数据类型,从而使得基本行为语言元素与复合行为语言元素之间、以及复合行为语言元素之间能够按照语言元素组合规则的规定组合形成新的复合行为语言元素,由于基本行为语言元素、语言元素组合规则以及复合行为语言元素都是以文本作为载体的,因此,行为树设计者可以直接通过文本式的代码语言搭建出与语言元素组合规则对应的行为树。
[0023]在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
[0024]应用场景总览
[0025]首先参考图1,如图1所示的电脑游戏中由电脑而非玩家控制的角色,设计者可以使用本发明实施例提供的方法搭建决定该角色行为的行为树。
[0026]示例性方法
[0027]下面结合图1的应用场景,参考图2来描述根据本发明示例性实施方式的实现行为树的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
[0028](实施例一)
[0029]例如,参见图2,为本发明实施例提供的一种实现行为树的方法流程示意图。如图所示,本发明一种可能的实施方式可以包括:
[0030]S210、提供用于表达行为树叶子节点的基本行为语言元素;
[0031]可以理解的是,基本行为语言元素本身对应一个基本的简单行为,这类基本的简单行为可以视为一个最简单的行为树。
[0032]例如,在图1所示的应用场景中,本发明实施例可以提供令角色执行“说话”行为的基本行为语言元素#say(),如,基本行为语言元素#say( “hello world!”)的执行可以使角色产生说出“hello world! ”的行为。在实际应用中,可以提供各种各样的用于表达行为树叶子节点的基本行为语言元素,其文本表现形式可以是多种多样的,在本发明中并不进行限制。
[0033]S220、将所述基本行为语言元素设置为一级(first-class)数据类型,以便所述基本行为语言元素之间能够组合形成复合行为语言元素;
[0034]可以理解的是,将基本行为语言元素设置为first-class数据类型的意义在于,first-class数据类型的函数在编程语言中可以存储在数据结构中作为其它函数的参数的传入参数,并在函数返回时可以将其作为函数值返回,因此,基本行为语言元素之间能够按照语言元素组合规则的规定组合形成复合行为语言元素。复合行为语言元素本身对应一个复杂的复合行为,这类复合行为可以视为一个复杂的行为树。
[0035]S230、将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型,以便所述基本行为语言元素与所述复合行为语言元素之间、以及所述复合行为语言元素之间能够按照语言元素组合规则的规定组合形成新的复合行为语言元素,其中,所述语言元素组合规则用于表达行为树的中间节点;
[0036]可以理解的是,将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型的意义同上,因此,基本行为语言元素与复合行为语言元素之间,复合行为语言元素之间均能够按照语言元素组合规则的规定组合形成新的复合行为语言元素。下述仅给出语言元素组合规则的示例,本发明并不受此限制。[0037]例如:可以由基本行为语言元素组合成复合行为语言元素seq (顺序)如下:
[0038]
Seq:
{#existFood ( “fish” ) ; //该基本行为语言元素令角色产生判断鱼是否存在的行为
#eat(“fish”); //该基本行为语言元素令角色产生吃鱼的行为 }
[0039]再例如,可以由若干个不同的基本行为语言元素和/或者复合行为语言元素组合成新的更复杂的复合行为语言元素select (选择)如下:
[0040]
Select:
{
Seq:
{#existFood ( fish ) ; //该基本行为语言元素令角色产生判断鱼是否存在的行为`
f/eat(“fish”); //该基本行为语言元素令角色产生吃鱼的行为 }
Seq:
{#existFood ( “meat” ) ;.//该基本行为语言元素令角色产生判断肉是否存在的行为
#eat(“meat”); //该基本行为语言元素令角色产生吃肉的行为 }
}
[0041]在实际应用中,可以任意设置seq{>..}以及select!:...}的组合规则以及返回结果。例如,可以使其接收基本行为语言元素和/或者复合行为语言元素的列表,将基本行为语言元素和/或者复合行为语言元素的列表作为参数,当seq{>..}或select{...}被执行时,会依序执行列表中的每个语言元素对应的行为。对于seq来说,可以设置为在执行过程中如果有列表中的任一基本行为语言元素和/或者复合行为语言元素的行为执行失败,那么整个seq这个复合行为放弃执行,并返回执行失败;对于select来说,可以设置为在执行过程中如果有列表中的任一基本行为语言元素和/或者复合行为语言元素的行为执行成功,则整个seq这个复合行为放弃执行,并返回执行成功,如果列表中的所有基本行为语言元素和/或者复合行为语言元素的行为执行失败,则返回执行失败。
[0042]S240、将所述基本行为语言元素对应的行为、所述复合行为语言元素对应的行为进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树。
[0043]需要说明的是,无论基本行为语言元素还是复合行为语言元素,对应的行为执行完毕后返回的数据可以是任意数据类型的数据,例如,first-class型的基本行为语言元素或复合行为语言元素对应的行为、数值型、字符型、时间型、布尔型、结果型(成功或失败)等
坐寸ο
[0044]在本发明实施例一些实现方式中,所述基本行为语言元素和/或者复合行为语言元素可以包括:根据预留参数位置的行为模板构造出的行为函数,其中,所述行为函数对应的行为在所述行为函数被调用时接收参数;其中,所述行为函数对应的行为所接收的参数可以为任意数据类型的参数,以及所述行为函数对应的行为返回的数据为任意数据类型的数据。例如:提供了基本行为语言元素#say(),则可以根据预留参数位置的行为模板b0(s)通过表达式b0(s)=#say(s)构造出行为函数b0。b0令角色说出的内容可根据b0所接收参数来决定。
[0045]可见,应用本发明实施例提供的方法,由于基本行为语言元素以及复合行为语言元素均为first-class数据类型,因此,基本行为语言元素对应的行为、所述复合行为语言元素对应的行为可以进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树,由于基本行为语言元素、语言元素组合规则以及复合行为语言元素都是以文本作为载体的,因此,行为树设计者可以直接通过文本式的代码语言搭建出与语言元素组合规则对应的行为树,从而使得行为树设计者的许多重要意图可以通过文本式的代码语言方便直接地表达出来,利于自动化地批量生成与处理,并且,由于文本式的代码语言可以被编译到各种目标平台和目标语言上,如JavaScript、C#、Lua等等,还具有良好的移植性。
[0046](实施例二)
[0047]基于上述实施例中基本行为语言元素和/或者复合行为语言元素可以包括行为函数的实现方式,因此,所述行为函数对应的行为可以在所述行为函数被调用时接收时间作为参数,因此,本发明实施例还可以提供一种支持在时间轴上持续执行行为的实现方式。具体地,例如,本发明实施例还可以包括:
[0048]当所述行为函数对应的行为持有执行流时,将所述执行流在所接收的时间参数的时间范围内,由所述行为函数对应的行为持续持有,以使所述行为函数对应的行为在所述时间范围内持续执行。
[0049]例如:行为函数sleep (mseconds (4000))可以令角色产生持续沉睡4秒钟的行为。
[0050]在一些可能的实现方式中,有些行为函数本身不是支持持续行为的函数,可以提供转换函数,针对使用转换函数的行为函数,将其对应的行为转换为允许持续执行的行为。例如:基本行为语言元素#stepForward(3.12)本身不能接收时间参数,不能执行持续一段时间的行为,但是,可以使用转换函数将其转为允许持续执行的行为,如复合行为ai的表达式如下:
[0051]ai=during:mseconds (4000)loop:#stepFordward (3.12)
[0052]上述表达式代表的行为ai可以令角色在4000毫秒的时间内持续不停地执行stepFordward(3.12)这个动作,stepFordward(3.12)可以是令角色产生向前迈3.12步的行为。其中,during: loop能将任意一个行为转化为持续执行一段时间的行为。
[0053]另外,考虑到某些情况下,有需要中断持续行为的需要,因此,本发明实施例还可以提供在行为函数对应的行为持续执行的过程中,中断所述行为的执行的实现方式。具体地,例如,持续执行行为的行为函数有可能存在于一个复合行为语言元素中,复合行为语言元素对应的行为的结束,也意味着需要中断其包含的行为函数对应的持续行为,因此,在行为函数对应的行为持续执行的过程中,如果所述行为函数所在的复合行为语言元素对应的行为结束,则中断所述行为函数对应的行为的执行。例如:一个复合行为ai的表达式如下:
[0054]
【权利要求】
1.一种实现行为树的方法,包括: 提供用于表达行为树叶子节点的基本行为语言元素; 将所述基本行为语言元素设置为一级(first-class)数据类型,以便所述基本行为语言元素之间能够组合形成复合行为语言元素; 将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型,以便所述基本行为语言元素与所述复合行为语言元素之间、以及所述复合行为语言元素之间能够按照语言元素组合规则的规定组合形成新的复合行为语言元素,其中,所述语言元素组合规则用于表达行为树的中间节点; 将所述基本行为语言元素对应的行为、所述复合行为语言元素对应的行为进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树。
2.根据权利要求1所述的方法,其中,所述基本行为语言元素和/或者复合行为语言元素包括:根据预留参数位置的行为模板构造出的行为函数,其中,所述行为函数对应的行为在所述行为函数被调用时接收参数; 其中,所述行为函数对应的行为所接收的参数为任意数据类型的参数,以及所述行为函数对应的行为返回的数据 为任意数据类型的数据。
3.根据权利要求2所述的方法,还包括: 当所述行为函数对应的行为持有执行流时,将所述执行流在所接收的时间参数的时间范围内,由所述行为函数对应的行为持续持有,以使所述行为函数对应的行为在所述时间范围内持续执行。
4.根据权利要求3所述的方法,还包括: 在所述行为函数对应的行为持续执行的过程中,中断所述行为的执行。
5.根据权利要求4所述的方法,其中,所述在行为函数对应的行为持续执行的过程中,中断所述行为的执行包括: 在行为函数对应的行为持续执行的过程中,如果所述行为函数所在的复合行为语言元素对应的行为结束,中断所述行为函数对应的行为的执行。
6.根据权利要求3所述的方法,还包括: 针对使用转换函数的行为函数,将行为函数对应的行为转换为允许持续执行的行为。
7.根据权利要求2所述的方法,还包括: 在所述行为函数被调用时,将所述语言元素组合规则指定的基本行为语言元素和/或复合行为语言元素对应的行为所返回的参数传递给所述行为函数对应的行为接收。
8.根据权利要求7所述的方法,所述将语言元素组合规则指定的基本行为语言元素和/或复合行为语言元素对应的行为所返回的参数传递给所述行为函数对应的行为接收包括: 将所述语言元素组合规则指定的基本行为语言元素和/或复合行为语言元素对应的行为所返回的参数与局部变量绑定; 将所述局部变量绑定的参数传递给所述行为函数对应的行为接收。
9.根据权利要求2所述的方法,还包括: 在所述行为函数对应的行为执行过程中,根据所述行为函数对应的行为所接收的参数的不同,选择与所述参数对应的基本行为语言元素和/或者复合行为语言元素;返回所选择的基本行为语言元素和/或者复合行为语言元素对应的行为,以使被返回的行为组合到所述行为树中。
10.根据权利要求2所述的方法,还包括: 在所述行为树执行过程中,针对使用同步等待函数的行为函数,等待所述同步等待函数指定的事件并阻塞所述行为函数对应的行为; 当所述事件发生后,调用所述使用同步等待函数的行为函数,将同步等待函数获得的所述事件携带的数据返回给所述行为函数对应的行为接收。
11.一种实现行为树的装置,包括: 基本提供单元,配置用于提供用于表达行为树叶子节点的基本行为语言元素; 第一设置单元,配置用于将所述基本行为语言元素设置为first-class (—级)数据类型,以便所述基本行为语言元素之间能够组合形成复合行为语言元素; 第二设置单元,配置用于将由基本行为语言元素组合形成的复合行为语言元素设置为first-class数据类型,以便所述基本行为语言元素与所述复合行为语言元素之间、以及所述复合行为语言元素之间能够按照语言元素组合规则的规定组合形成新的复合行为语言元素,其中,所述语言元素组合规则用于表达行为树的中间节点; 组合单元,配置用于将所述基本行为语言元素对应的行为、所述复合行为语言元素对应的行为进行语言元素组合规则所规定的组合,形成与所述语言元素组合规则对应的行为树。
【文档编号】G06F9/44GK103761108SQ201410051548
【公开日】2014年4月30日 申请日期:2014年2月14日 优先权日:2014年2月14日
【发明者】邓际锋, 张伟土 申请人:杭州朗和科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1