CN105117575A - 一种行为处理方法及装置 - Google Patents
一种行为处理方法及装置 Download PDFInfo
- Publication number
- CN105117575A CN105117575A CN201510336860.7A CN201510336860A CN105117575A CN 105117575 A CN105117575 A CN 105117575A CN 201510336860 A CN201510336860 A CN 201510336860A CN 105117575 A CN105117575 A CN 105117575A
- Authority
- CN
- China
- Prior art keywords
- subtree
- technical ability
- node
- role
- target technical
- 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.)
- Granted
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明实施例提供一种行为处理方法及装置,其中的方法可包括:在遍历角色行为树的技能子树时,获取待执行的目标技能标识;从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树;依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。本发明可将待执行的目标技能子树挂载于角色行为树进行遍历执行,充分利用行为树的递归与逻辑特性,设计方式简单,具有优秀的扩展性。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种行为处理方法及装置。
背景技术
角色行为和技能系统是游戏系统中最重要的组成部分,在游戏系统中技能可以解释为一个序列,即是按照时间轴顺序并行执行的一系列事件。技能可以包括线性技能动作与非线性技能动作,线性技能动作即是给定时间轴上时间t,即可以得到该处的技能状态。非线性技能则是由于存在触发事件才执行的一系列技能动作,例如,需要用户输入或者外部条件触发等才执行相应的技能动作。在技能设计时,通常采用线性序列编辑器对线性技能进行编辑处理,对于因外界触发事件所产生的非线性技能则采用有限状态机进行编辑处理,由于触发事件多样,因此采用有限状态机进行处理时,状态机设计复杂,并且扩展困难。
发明内容
本发明实施例提供一种行为处理方法及装置,可将待执行的目标技能子树挂载于角色行为树进行遍历执行,充分利用行为树的递归与逻辑特性,设计方式简单,具有优秀的扩展性。
本发明第一方面提供一种行为处理方法,可包括:
在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
本发明第二方面提供一种行为处理装置,可包括:
获取模块,用于在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
选择挂载模块,用于从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
遍历执行模块,用于依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
实施本发明实施例,具有如下有益效果:
本发明实施例,在遍历角色行为树的技能子树时,获取待执行的目标技能标识,从技能池中选择与目标技能标识匹配的目标技能子树,并将该目标技能子树挂载于角色行为树,依次遍历目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与该目标条件节点对应的线性技能动作。这种处理方式利用行为树的递归与逻辑特性将非线性技能转化为多个线性技能动作的执行,设计方式简单,并且具有优秀的可扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种行为处理方法的流程图;
图2为本发明实施例提供的另一种行为处理方法的流程图;
图3为本发明实施例提供的一种行为树设计示意图;
图4为本发明实施例提供的一种行为处理装置的结构示意图;
图5为本发明实施例提供的另一种行为处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的行为处理方法可以应用于智能手机、个人电脑、个人数字助手等设备的游戏系统的角色行为和技能设计中。本发明实施例的行为处理方法既可以处理线性目标技能,也可以处理非线性目标技能,若目标技能为非线性,则利用行为树的递归逻辑特点将非线性技能分段为线性技能进行执行,设计方式简单,并且具有优秀的可扩展性。
在手游的游戏系统中通常会包括多个角色,例如包括角色1、角色2以及角色3,每个角色都具备相应的技能,且一个角色所具备的技能可以有多个。当某一个角色执行某一个目标技能时,即将该目标技能对应的能够表明执行该目标技能动作步骤的目标技能子树挂载于角色行为树上。在后台游戏系统的设计中,为每一个角色设计一个角色行为树用于表明该角色的各种行为状态,通过遍历该角色行为树控制该角色在游戏场景中的具体行为状态。
具体的,例如,角色行为树包括出生子树,该出生子树用于表明该角色的出生状态,即是在游戏系统中该角色的出生时间为0,则在遍历角色行为树时,控制在游戏场景中出现该角色。角色行为树还包括死亡子树,该死亡子树用于表明该角色的死亡状态,即是在游戏系统中该角色被杀或者该角色到达寿命,则在遍历角色行为树时,控制在游戏场景中去除该角色。角色行为树还包括技能子树,该技能子树用于表明该角色的行为状态,即是在遍历角色行为树时,控制该角色在游戏场景中实施各种行为和策略。技能包括线性技能和非线性技能。非线性技能是由多段线性技能组合而成,而每段线性技能的执行需要外界的触发,例如当用户输入A,则自动执行与A对应的行为动作,与A对应的行为动作为线性技能。然后用户输入B,则自动执行与B对应的行为动作,与B对应的行为动作也为线性技能,与A对应的行为动作加上与B对应的行为动作即组成非线性技能。角色行为树还包括空闲子树,该空闲子树用于表明该角色的空闲状态。
下面将结合附图1-附图3,对本发明实施例提供的角色处理方法进行详细介绍。
请参照图1,为本发明实施例提供的一种行为处理方法的流程图;该方法可包括以下步骤S100-步骤S102。
S100,在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
具体实施例中,设计角色行为树(BehaviorTree,BT)实现游戏系统的各个角色在游戏场景中所实施的技能与行为,通常游戏系统中一个角色对应一个角色BT,每隔预设时间,BT会自动更新一次,从而实现更新游戏场景中该角色的具体行为状态。更新BT时永远从起始根节点开始遍历。通过对角色不同行为分支的分割分别设计相应子树,例如,如图3所示,角色BT的子树可以包括出生子树,死亡子树、技能子树等等。各个子树均挂载于角色BT的起始根节点之下,角色BT的根节点可以为选择节点。需要说明的是,在角色行为树中的节点类型可以包括序列节点、选择节点、条件节点以及动作节点,不同的节点类型用于表明遍历角色行为树过程中的执行条件或执行方式,即是在游戏场景中该角色实施某一个行为的触发条件或者实施方式,例如,若节点为序列节点,则需要该序列节点下的所有节点返回成功消息,即是执行完该序列节点下所有节点所表明的行为,则该序列节点才返回成功消息,否则返回失败消息;若节点为选择节点,则只需要该选择节点下的任意一个节点返回成功消息,即是执行完该选择节点下的任意一个节点所表明的行为,则该选择节点返回成功消息。
在依次遍历角色BT的各个子树时,若角色BT的出生子树和死亡子树均返回失败信息时,则遍历角色BT的技能子树,获取系统中当前需要执行的目标技能标识,目标技能可以为线性技能,也可以为非线性技能。
S101,从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
具体实施例中,技能池中存储了多种技能子树,每一种技能子树代表一种技能。当获取了当前待执行目标技能标识后,即从技能池中选择与目标技能标识匹配的目标技能子树,将目标技能子树挂载于角色BT。目标技能子树即代表需要执行的技能,遍历角色BT的过程即可以执行相应的目标技能。需要说明的是,目标技能子树为序列节点、选择节点、条件节点以及动作节点中的至少一种节点的任意组合,开发人员可以根据具体的目标技能利用各种节点设计相应的目标技能子树。
S102,依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
具体实施例中,依次遍历目标技能子树的各个节点,如图3所示,将技能子树第一技能作为目标技能子树进行举例说明,从第一技能技能子树的根节点第一技能开始依次遍历各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与目标条件节点对应的线性技能,触发事件可以是用户输入事件,如图3所示,若用户输入A,则目标条件节点输入A节点返回有效信息,执行与输入A节点对应的线性技能动作第一行为;同理,若用户输入B,则目标条件节点输入B节点返回有效信息,执行与输入B节点对应的线性技能动作第二行为;同理,若用户输入C,则目标条件节点输入C节点返回有效信息,执行与输入C节点对应的线性技能动作第三行为,这样非线性目标技能就利用角色BT的逻辑递归特点被分段为第一行为、第二行为以及第三行为三个线性技能动作。实现方式比较简单,同时用户还可以在目标技能子树上继续添加线性技能动作,从而达到扩展目标技能的目的,因此这种设计方式具有优秀的可扩展性。
本发明实施例,在遍历角色行为树的技能子树时,获取待执行的目标技能标识,从技能池中选择与目标技能标识匹配的目标技能子树,并将该目标技能子树挂载于角色行为树,依次遍历目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与该目标条件节点对应的线性技能动作。这种处理方式利用行为树的递归与逻辑特性将非线性技能转化为多个线性技能动作的执行,设计方式简单,并且具有优秀的可扩展性。
请参照图2,为本发明实施例提供的另一种行为处理方法的流程图;该方法可包括以下步骤S200-步骤S206。
S200,从角色行为树的起始根节点开始,遍历所述起始根节点下的出生子树,所述起始根节点为序列节点;
具体实施例中,在角色BT每次更新时,即是更新该角色在游戏场景的行为状态时,从角色BT的起始根节点开始,遍历起始根节点下的出生子树,即判断该角色是否刚好出生。如图3所示的角色BT,从角色BT的起始根节点角色行为节点开始,依次遍历起始根节点下的出生子树Born,首先判断条件节点出生时间==0是否有效,若条件节点出生时间==0返回失败信息,则向上退回至角色BT的根节点角色行为节点。角色BT的起始根节点为序列节点,因此只要检测到起始根节点下有一个节点返回有效信息,就结束遍历。
S201,若所述出生子树的根节点返回失败信息,则遍历所述起始根节点下的死亡子树;
具体实施例中,若出生子树的根节点Born返回失败信息,即是该角色不是刚好出生,则遍历起始根节点下的死亡子树,即是判断该角色是否在游戏场景中消失。如图3所示,即是遍历起始根节点角色行为节点下的死亡子树Death,从死亡子树的根节点Death开始进行遍历,从左至右依次遍历,检查死亡子树的根节点Death下的选择节点死亡原因,若选择节点死亡原因下的任意一个节点返回有效信息,即是该角色在游戏应用场景中被杀或者寿命到期,则选择节点死亡原因向死亡子树根节点Death返回有效信息,并结束遍历。若选择节点死亡原因下的两个节点均返回失败信息,即是该角色在游戏应用场景中既没被杀,也没寿命到期,则选择节点死亡原因向死亡子树根节点Death返回失败信息。
S202,若所述死亡子树的根节点返回失败信息,则遍历所述起始根节点下的技能子树。
具体实施例中,若死亡子树的根节点Death返回失败信息,则继续遍历起始根节点角色行为节点下的技能子树skill,从技能子树的根节点skill开始进行遍历,依次遍历技能子树的各个节点,其中技能动作节点为一个可替换节点,具体替换为哪一个技能子树取决于在游戏应用场景中该角色所需要执行的某一个技能。
S203,在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
可选的,所述在遍历角色行为树的技能子树时,获取待执行的目标技能标识,包括:
在遍历所述角色行为树的技能子树时,从系统中获取当前待执行的目标技能标识。
S204,从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
可选的,所述将所述目标技能子树挂载于所述角色行为树,包括:
将所述技能子树的根节点下的技能动作节点替换为所述目标技能子树。
具体实施例中,如图3所示,将目标技能子树挂载于角色BT的挂载方式可以是将技能子树的根节点下的技能动作节点替换为目标技能子树,此处以第一技能作为目标技能子树。
S205,依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
可选的,所述目标技能子树的根节点为序列节点,所述目标技能包括至少一个阶段,所述至少一个阶段中各个阶段的阶段子树挂载于所述目标技能子树的根节点之下。
所述依次遍历所述目标技能子树的各个节点,包括:
从所述目标技能子树的根节点开始,依次遍历所述目标技能子树的根节点之下的所述各个阶段子树,所述阶段子树的根节点为序列节点或者选择节点。
具体实施例中,目标技能子树的根节点为序列节点,则需要目标技能子树根节点下的各个子树均返回有效信息才结束遍历,并向整个技能子树的根节点skill返回有效信息。通常目标技能包括至少一个阶段,即是需要游戏应用场景中该角色依次执行多段动作行为,才完成该项目标技能,因此将各个阶段的阶段子树挂载于目标技能子树的根节点第一技能之下,并依此遍历目标技能子树的根节点第一技能之下的各个阶段子树,如图3所示,目标技能第一技能包括两个阶段,因此存在两个阶段子树第一阶段和第二阶段。
S206,若所述各个阶段子树均遍历完,则确定完成所述目标技能的执行。
具体实施例中,若各个阶段子树均遍历完时,则确定完成目标技能的执行,如图3所示,若技能子树第一阶段和第二阶段均遍历完,即是各个阶段子树所表明的动作行为执行完毕,则相应的目标技能执行完毕,同时向技能子树根节点第一技能返回有效信息,结束整个行为BT的遍历,需要说明的是,在遍历各个阶段子树时,需要根据阶段子树中各个节点的类型进行执行,用户触发条件不同,最后游戏应用场景中该角色执行的动作行为不同,如图3所示,若用户输入A该角色执行第一行为,然后用户输入B该角色执行第二行为,最后第一行为和第二行为组成游戏应用场景中该角色的动作行为。若用户输入A该角色执行第一行为,然后用户输入C该角色执行第三行为,最后第一行为和第三行为组成游戏应用中该角色的动作行为。
本发明实施例,在遍历角色行为树的技能子树时,获取待执行的目标技能标识,从技能池中选择与目标技能标识匹配的目标技能子树,并将该目标技能子树挂载于角色行为树,依次遍历目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与该目标条件节点对应的线性技能动作。这种处理方式利用行为树的递归与逻辑特性将非线性技能转化为多个线性技能动作的执行,设计方式简单,并且具有优秀的可扩展性。
请参照图3,为本发明实施例提供的一种行为树的设计示意图,如图所示,角色具有出生,死亡,技能攻击,空闲等主要的行为分支,因此将各种行为分支设计为角色BT的各个技能子树。当角色BT开始更新,从角色BT的起始根节点角色行为节点开始执行,起始根节点为选择节点,顺次遍历起始根节点下的各个子节点,找出第1个返回有效信息的子节点。首先遍历出生子树Born,出生子树根节点为序列节点,顺次遍历,首先判断条件节点出生时间==0,假设出生时间不为0,则返回失败信息,向上回退至角色BT的起始根节点。起始根节点角色行为节点顺次遍历后续子节点,下一个为死亡子树Death,假设没有被杀,也没有到达寿命,则类似的,死亡子树也返回失败信息,向上回退至角色BT的起始根节点。起始根节点角色行为节点顺次遍历技能子树Skill,首先遍历输入源的选择节点,假设用户有点击技能按钮,则条件节点输入技能返回有效信息,继续遍历技能动作节点。将技能动作节点替换为当前待执行的目标技能子树第一技能,则顺次执行第一阶段,假设用户点击A,则条件节点输入A返回成功信息,继续执行线性技能第一行为。执行完毕后回退至目标技能子树的根节点第一技能节点,顺次执行第二阶段,首先检测第二阶段的第一步节点,假设用户没有输入B,则输入B条件节点返回失败信息,继续遍历后续节点第二阶段的第二步,假设用户输入为C,则输入C条件节点返回成功信息,继续执行线性技能第三行为,至此目标技能第一技能执行完毕,从图中可以看出将非线性目标技能第一目标技能分段为第一行为和第二行为,或者分段为第一行为和第三行为,设计方式简单。
下面将结合附图4-附图5,对本发明实施例提供的一种行为处理装置进行详细介绍。
请参阅图4,为本发明实施例提供的一种行为处理装置的结构示意图;该装置可包括:获取模块100、选择挂载模块101以及遍历执行模块102;
获取模块100,用于在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
具体实施例中,设计角色行为树(BehaviorTree,BT)实现游戏系统的各个角色在游戏场景中所实施的技能与行为,通常游戏系统中一个角色对应一个角色BT,每隔预设时间,BT会自动更新一次,从而实现更新游戏场景中该角色的具体行为状态。更新BT时永远从起始根节点开始遍历。通过对角色不同行为分支的分割分别设计相应子树,例如,如图3所示,角色BT的子树可以包括出生子树,死亡子树、技能子树等等。各个子树均挂载于角色BT的起始根节点之下,角色BT的根节点可以为选择节点。需要说明的是,在角色行为树中的节点类型可以包括序列节点、选择节点、条件节点以及动作节点,不同的节点类型用于表明遍历角色行为树过程中的执行条件或执行方式,即是在游戏场景中该角色实施某一个行为的触发条件或者实施方式,例如,若节点为序列节点,则需要该序列节点下的所有节点返回成功消息,即是执行完该序列节点下所有节点所表明的行为,则该序列节点才返回成功消息,否则返回失败消息;若节点为选择节点,则只需要该选择节点下的任意一个节点返回成功消息,即是执行完该选择节点下的任意一个节点所表明的行为,则该选择节点返回成功消息。
在依次遍历角色BT的各个子树时,若角色BT的出生子树和死亡子树均返回失败信息时,则遍历角色BT的技能子树,获取模块100获取系统中当前需要执行的目标技能标识,目标技能可以为线性技能,也可以为非线性技能。
可选的,所述获取模块100具体用于在遍历所述角色行为树的技能子树时,从系统中获取当前待执行的目标技能标识。
选择挂载模块101,用于从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
具体实施例中,技能池中存储了多种技能子树,每一种技能子树代表一种技能。当获取了当前待执行目标技能标识后,选择挂载模块101即从技能池中选择与目标技能标识匹配的目标技能子树,将目标技能子树挂载于角色BT。目标技能子树即代表需要执行的技能,遍历角色BT的过程即可以执行相应的目标技能。需要说明的是,目标技能子树为序列节点、选择节点、条件节点以及动作节点中的至少一种节点的任意组合,开发人员可以根据具体的目标技能利用各种节点设计相应的目标技能子树。
可选的,所述选择挂载模块101具体用于从技能池中选择与所述目标技能标识匹配的目标技能子树,将所述技能子树的根节点下的技能动作节点替换为所述目标技能子树。
具体实施例中,如图3所示,将目标技能子树挂载于角色BT的挂载方式可以是选择挂载模块101将技能子树的根节点下的技能动作节点替换为目标技能子树,此处以第一技能作为目标技能子树。
遍历执行模块102,用于依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
具体实施例中,遍历执行模块102依次遍历目标技能子树的各个节点,如图3所示,将技能子树第一技能作为目标技能子树进行举例说明,从第一技能子树的根节点第一技能开始依次遍历各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与目标条件节点对应的线性技能,触发事件可以是用户输入事件,如图3所示,若用户输入A,则目标条件节点输入A节点返回有效信息,执行与输入A节点对应的线性技能动作第一行为;同理,若用户输入B,则目标条件节点输入B节点返回有效信息,执行与输入B节点对应的线性技能动作第二行为;同理,若用户输入C,则目标条件节点输入C节点返回有效信息,执行与输入C节点对应的线性技能动作第三行为,这样非线性目标技能就利用角色BT的逻辑递归特点被分段为第一行为、第二行为以及第三行为三个线性技能动作。实现方式比较简单,同时用户还可以在目标技能子树上继续添加线性技能动作,从而达到扩展目标技能的目的,因此这种设计方式具有优秀的可扩展性。
可选的,所述目标技能子树的根节点为序列节点,所述目标技能包括至少一个阶段,所述至少一个阶段中各个阶段的阶段子树挂载于所述目标技能子树的根节点之下。
所述遍历执行模块102具体用于从所述目标技能子树的根节点开始,依次遍历所述目标技能子树的根节点之下的所述各个阶段子树,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作,所述阶段子树的根节点为序列节点或者选择节点。
具体实施例中,目标技能子树的根节点为序列节点,则需要目标技能子树根节点下的各个子树均返回有效信息才结束遍历,并向整个技能子树的根节点skill返回有效信息。通常目标技能包括至少一个阶段,即是需要游戏应用场景中该角色依次执行多段动作行为,才完成该项目标技能,因此将各个阶段的阶段子树挂载于目标技能子树的根节点第一技能之下,遍历执行模块102依此遍历目标技能子树的根节点第一技能之下的各个阶段子树,如图3所示,目标技能第一技能包括两个阶段,因此存在两个阶段子树第一阶段和第二阶段。
进一步,所述行为处理装置还包括确定模块103;
确定模块103,用于若所述各个阶段子树均遍历完,则确定完成所述目标技能的执行。
具体实施例中,若各个阶段子树均遍历完时,确定模块103则确定完成目标技能的执行,如图3所示,若技能子树第一阶段和第二阶段均遍历完,即是各个阶段子树所表明的动作行为执行完毕,则相应的目标技能执行完毕,同时向技能子树根节点第一技能返回有效信息,结束整个行为BT的遍历,需要说明的是,在遍历各个阶段子树时,需要根据阶段子树中各个节点的类型进行执行,用户触发条件不同,最后游戏应用场景中该角色执行的动作行为不同,如图3所示,若用户输入A该角色执行第一行为,然后用户输入B该角色执行第二行为,最后第一行为和第二行为组成游戏应用场景中该角色的动作行为。若用户输入A该角色执行第一行为,然后用户输入C该角色执行第三行为,最后第一行为和第三行为组成游戏应用中该角色的动作行为。
本发明实施例,在遍历角色行为树的技能子树时,获取待执行的目标技能标识,从技能池中选择与目标技能标识匹配的目标技能子树,并将该目标技能子树挂载于角色行为树,依次遍历目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与该目标条件节点对应的线性技能动作。这种处理方式利用行为树的递归与逻辑特性将非线性技能转化为多个线性技能动作的执行,设计方式简单,并且具有优秀的可扩展性。
请参照图5,为本发明实施例提供的另一种行为处理装置的结构示意图;本实施例的行为处理装置是在图4所示的行为处理装置基础上优化得到的,如图5所示,该行为处理装置可包括获取模块200、选择挂载模块201、遍历执行模块202、确定模块203、第一遍历模块204、第二遍历模块205以及第三遍历模块206;其中,获取模块200、选择挂载模块201、遍历执行模块202、确定模块203请参照图4的描述,在此不再赘述。
第一遍历模块204,用于从角色行为树的起始根节点开始,遍历所述起始根节点下的出生子树,所述起始根节点为序列节点;
具体实施例中,在角色BT每次更新时,即是更新该角色在游戏场景的行为状态时,第一遍历模块204从角色BT的起始根节点开始,遍历起始根节点下的出生子树,即判断该角色是否刚好出生。如图3所示的角色BT,从角色BT的起始根节点角色行为节点开始,依次遍历起始根节点下的出生子树Born,首先判断条件节点出生时间==0是否有效,若条件节点出生时间==0返回失败信息,则向上退回至角色BT的根节点角色行为节点。角色BT的起始根节点为序列节点,因此只要检测到起始根节点下有一个节点返回有效信息,就结束遍历。
第二遍历模块205,用于若所述出生子树的根节点返回失败信息,则遍历所述起始根节点下的死亡子树;
具体实施例中,若出生子树的根节点Born返回失败信息,即是该角色不是刚好出生,第二遍历模块205则遍历起始根节点下的死亡子树,即是判断该角色是否在游戏场景中消失。如图3所示,即是遍历起始根节点角色行为节点下的死亡子树Death,从死亡子树的根节点Death开始进行遍历,从左至右依次遍历,检查死亡子树的根节点Death下的选择节点死亡原因,若选择节点死亡原因下的任意一个节点返回有效信息,即是该角色在游戏应用场景中被杀或者寿命到期,则选择节点死亡原因向死亡子树根节点Death返回有效信息,并结束遍历。若选择节点死亡原因下的两个节点均返回失败信息,即是该角色在游戏应用场景中既没被杀,也没寿命到期,则选择节点死亡原因向死亡子树根节点Death返回失败信息。
第三遍历模块206,用于若所述死亡子树的根节点返回失败信息,则遍历所述起始根节点下的技能子树。
具体实施例中,若死亡子树的根节点Death返回失败信息,第三遍历模块206则继续遍历起始根节点角色行为节点下的技能子树skill,从技能子树的根节点skill开始进行遍历,依次遍历技能子树的各个节点,其中技能动作节点为一个可替换节点,具体替换为哪一个技能子树取决于在游戏应用场景中该角色所需要执行的某一个技能。
本发明实施例,在遍历角色行为树的技能子树时,获取待执行的目标技能标识,从技能池中选择与目标技能标识匹配的目标技能子树,并将该目标技能子树挂载于角色行为树,依次遍历目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与该目标条件节点对应的线性技能动作。这种处理方式利用行为树的递归与逻辑特性将非线性技能转化为多个线性技能动作的执行,设计方式简单,并且具有优秀的可扩展性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,附图4-附图5所示行为处理装置的模块对应的程序可存储在行为处理装置的可读存储介质内,并被该行为处理装置中的至少一个处理器执行,以实现上述行为处理方法,该方法包括图1至图3中各方法实施例所述的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种行为处理方法,其特征在于,包括:
在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
2.如权利要求1所述的方法,其特征在于,所述在遍历角色行为树的技能子树时,获取待执行的目标技能标识之前,还包括:
从角色行为树的起始根节点开始,遍历所述起始根节点下的出生子树,所述起始根节点为序列节点;
若所述出生子树的根节点返回失败信息,则遍历所述起始根节点下的死亡子树;
若所述死亡子树的根节点返回失败信息,则遍历所述起始根节点下的技能子树。
3.如权利要求1所述的方法,其特征在于,所述在遍历角色行为树的技能子树时,获取待执行的目标技能标识,包括:
在遍历所述角色行为树的技能子树时,从系统中获取当前待执行的目标技能标识。
4.如权利要求3所述的方法,其特征在于,所述将所述目标技能子树挂载于所述角色行为树,包括:
将所述技能子树的根节点下的技能动作节点替换为所述目标技能子树。
5.如权利要求4所述的方法,其特征在于,所述目标技能子树的根节点为序列节点,所述目标技能包括至少一个阶段,所述至少一个阶段中各个阶段的阶段子树挂载于所述目标技能子树的根节点之下。
6.如权利要求5所述的方法,其特征在于,所述依次遍历所述目标技能子树的各个节点,包括:
从所述目标技能子树的根节点开始,依次遍历所述目标技能子树的根节点之下的所述各个阶段子树,所述阶段子树的根节点为序列节点或者选择节点。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
若所述各个阶段子树均遍历完,则确定完成所述目标技能的执行。
8.一种行为处理装置,其特征在于,包括:
获取模块,用于在遍历角色行为树的技能子树时,获取待执行的目标技能标识;
选择挂载模块,用于从技能池中选择与所述目标技能标识匹配的目标技能子树,并将所述目标技能子树挂载于所述角色行为树,所述目标技能子树包括序列节点、选择节点、条件节点以及动作节点中的至少一种;
遍历执行模块,用于依次遍历所述目标技能子树的各个节点,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
第一遍历模块,用于从角色行为树的起始根节点开始,遍历所述起始根节点下的出生子树,所述起始根节点为序列节点;
第二遍历模块,用于若所述出生子树的根节点返回失败信息,则遍历所述起始根节点下的死亡子树;
第三遍历模块,用于若所述死亡子树的根节点返回失败信息,则遍历所述起始根节点下的技能子树。
10.如权利要求8所述的装置,其特征在于,所述获取模块具体用于在遍历所述角色行为树的技能子树时,从系统中获取当前待执行的目标技能标识。
11.如权利要求10所述的装置,其特征在于,所述选择挂载模块具体用于从技能池中选择与所述目标技能标识匹配的目标技能子树,将所述技能子树的根节点下的技能动作节点替换为所述目标技能子树。
12.如权利要求11所述的装置,其特征在于,所述目标技能子树的根节点为序列节点,所述目标技能包括至少一个阶段,所述至少一个阶段中各个阶段的阶段子树挂载于所述目标技能子树的根节点之下。
13.如权利要求12所述的装置,其特征在于,所述遍历执行模块具体用于从所述目标技能子树的根节点开始,依次遍历所述目标技能子树的根节点之下的所述各个阶段子树,若遍历到与触发事件关联的目标条件节点返回有效信息时,则执行与所述目标条件节点对应的线性技能动作,所述阶段子树的根节点为序列节点或者选择节点。
14.如权利要求13所述的装置,其特征在于,所述装置还包括:
确定模块,用于若所述各个阶段子树均遍历完,则确定完成所述目标技能的执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510336860.7A CN105117575B (zh) | 2015-06-17 | 2015-06-17 | 一种行为处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510336860.7A CN105117575B (zh) | 2015-06-17 | 2015-06-17 | 一种行为处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117575A true CN105117575A (zh) | 2015-12-02 |
CN105117575B CN105117575B (zh) | 2017-12-29 |
Family
ID=54665563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510336860.7A Active CN105117575B (zh) | 2015-06-17 | 2015-06-17 | 一种行为处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117575B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653271A (zh) * | 2015-12-28 | 2016-06-08 | 网易(杭州)网络有限公司 | 行为树的静态解析、执行以及优化方法和装置 |
CN105656688A (zh) * | 2016-03-03 | 2016-06-08 | 腾讯科技(深圳)有限公司 | 状态控制方法和装置 |
CN105664491A (zh) * | 2016-01-05 | 2016-06-15 | 网易(杭州)网络有限公司 | 游戏技能快捷入口的实现方法及装置 |
CN107115673A (zh) * | 2017-04-27 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 一种基于行为树的行为执行方法和装置 |
WO2018103493A1 (zh) * | 2016-12-05 | 2018-06-14 | 上海时年信息科技有限公司 | 模拟多个运动体行为的方法和系统 |
CN108780303A (zh) * | 2016-03-03 | 2018-11-09 | 玛格兹诺有限公司 | 具有行为树架构的机器人的控制过程 |
CN108874382A (zh) * | 2017-05-15 | 2018-11-23 | 国立民用航空学院 | 用于处理代码的方法和装置 |
CN108924753A (zh) * | 2017-04-05 | 2018-11-30 | 意法半导体(鲁塞)公司 | 用于场景的实时检测的方法和装置 |
CN109271157A (zh) * | 2018-09-07 | 2019-01-25 | 深圳市东微智能科技股份有限公司 | 软件开发方法、设备及计算机可读存储介质 |
CN109646959A (zh) * | 2018-12-05 | 2019-04-19 | 深圳市迷你玩科技有限公司 | 基于状态机管理非玩家角色npc的方法及相关设备 |
CN110102054A (zh) * | 2019-05-10 | 2019-08-09 | 网易(杭州)网络有限公司 | 行为树的执行优化方法、装置及存储介质 |
CN111973985A (zh) * | 2020-08-26 | 2020-11-24 | 网易(杭州)网络有限公司 | 基于序列的事件处理方法、装置、电子设备及存储介质 |
CN114282795A (zh) * | 2021-12-21 | 2022-04-05 | 北京永信至诚科技股份有限公司 | 网络靶场人员技能评估方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040075677A1 (en) * | 2000-11-03 | 2004-04-22 | Loyall A. Bryan | Interactive character system |
US20040138959A1 (en) * | 2002-09-09 | 2004-07-15 | Michal Hlavac | Artificial intelligence platform |
CN102495751A (zh) * | 2011-11-29 | 2012-06-13 | 北京像素软件科技股份有限公司 | 一种实现仿真场景的方法和装置 |
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
-
2015
- 2015-06-17 CN CN201510336860.7A patent/CN105117575B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040075677A1 (en) * | 2000-11-03 | 2004-04-22 | Loyall A. Bryan | Interactive character system |
US20040138959A1 (en) * | 2002-09-09 | 2004-07-15 | Michal Hlavac | Artificial intelligence platform |
CN102495751A (zh) * | 2011-11-29 | 2012-06-13 | 北京像素软件科技股份有限公司 | 一种实现仿真场景的方法和装置 |
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653271B (zh) * | 2015-12-28 | 2018-12-21 | 网易(杭州)网络有限公司 | 行为树的静态解析、执行以及优化方法和装置 |
CN105653271A (zh) * | 2015-12-28 | 2016-06-08 | 网易(杭州)网络有限公司 | 行为树的静态解析、执行以及优化方法和装置 |
CN105664491A (zh) * | 2016-01-05 | 2016-06-15 | 网易(杭州)网络有限公司 | 游戏技能快捷入口的实现方法及装置 |
US11184216B2 (en) | 2016-03-03 | 2021-11-23 | Tencent Technology (Shenzhen) Company Limited | State control method and apparatus |
CN105656688B (zh) * | 2016-03-03 | 2019-09-20 | 腾讯科技(深圳)有限公司 | 状态控制方法和装置 |
CN108780303A (zh) * | 2016-03-03 | 2018-11-09 | 玛格兹诺有限公司 | 具有行为树架构的机器人的控制过程 |
US11338434B2 (en) * | 2016-03-03 | 2022-05-24 | Magazino Gmbh | Controlling process of robots having a behavior tree architecture |
WO2017148233A1 (zh) * | 2016-03-03 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 状态控制方法和装置 |
CN105656688A (zh) * | 2016-03-03 | 2016-06-08 | 腾讯科技(深圳)有限公司 | 状态控制方法和装置 |
WO2018103493A1 (zh) * | 2016-12-05 | 2018-06-14 | 上海时年信息科技有限公司 | 模拟多个运动体行为的方法和系统 |
CN108924753A (zh) * | 2017-04-05 | 2018-11-30 | 意法半导体(鲁塞)公司 | 用于场景的实时检测的方法和装置 |
CN108924753B (zh) * | 2017-04-05 | 2020-10-27 | 意法半导体(鲁塞)公司 | 用于场景的实时检测的方法和装置 |
US10789477B2 (en) | 2017-04-05 | 2020-09-29 | Stmicroelectronics (Rousset) Sas | Method and apparatus for real-time detection of a scene |
CN107115673A (zh) * | 2017-04-27 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 一种基于行为树的行为执行方法和装置 |
CN108874382A (zh) * | 2017-05-15 | 2018-11-23 | 国立民用航空学院 | 用于处理代码的方法和装置 |
CN109271157B (zh) * | 2018-09-07 | 2021-09-07 | 深圳市东微智能科技股份有限公司 | 软件开发方法、设备及计算机可读存储介质 |
CN109271157A (zh) * | 2018-09-07 | 2019-01-25 | 深圳市东微智能科技股份有限公司 | 软件开发方法、设备及计算机可读存储介质 |
CN109646959A (zh) * | 2018-12-05 | 2019-04-19 | 深圳市迷你玩科技有限公司 | 基于状态机管理非玩家角色npc的方法及相关设备 |
CN109646959B (zh) * | 2018-12-05 | 2022-03-08 | 深圳市迷你玩科技有限公司 | 基于状态机管理非玩家角色npc的方法及相关设备 |
CN110102054A (zh) * | 2019-05-10 | 2019-08-09 | 网易(杭州)网络有限公司 | 行为树的执行优化方法、装置及存储介质 |
CN111973985A (zh) * | 2020-08-26 | 2020-11-24 | 网易(杭州)网络有限公司 | 基于序列的事件处理方法、装置、电子设备及存储介质 |
CN111973985B (zh) * | 2020-08-26 | 2024-02-09 | 网易(杭州)网络有限公司 | 基于序列的事件处理方法、装置、电子设备及存储介质 |
CN114282795A (zh) * | 2021-12-21 | 2022-04-05 | 北京永信至诚科技股份有限公司 | 网络靶场人员技能评估方法、装置、设备及可读存储介质 |
CN114282795B (zh) * | 2021-12-21 | 2022-09-16 | 北京永信至诚科技股份有限公司 | 网络靶场人员技能评估方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105117575B (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105117575A (zh) | 一种行为处理方法及装置 | |
CN107957989B9 (zh) | 基于集群的词向量处理方法、装置以及设备 | |
JP2019518257A (ja) | 状態制御方法及び装置 | |
CN106886853A (zh) | 基于引用发起的工作流程关联方法及其系统 | |
CN105556466A (zh) | 代码堆栈管理 | |
CN112784739B (zh) | 模型的训练方法、关键点定位方法、装置、设备和介质 | |
CN105117621A (zh) | 代码混淆的控制流平展化 | |
CN107115673B (zh) | 一种基于行为树的行为执行方法和装置 | |
CN104572059A (zh) | 一种修改应用名称的处理方法及装置 | |
CN103412824B (zh) | 写时拷贝快照方法及装置 | |
CN109558159A (zh) | 游戏中用户界面的更新方法和装置 | |
CN105094780A (zh) | 一种信息关联的方法和装置 | |
CN107133741B (zh) | 待办任务处理方法、装置、可读存储介质及电子设备 | |
CN113743583B (zh) | 一种基于强化学习的智能体无效行为切换抑制方法 | |
CN110543330A (zh) | 一种环境数据管理系统、环境部署方法、装置及存储介质 | |
CN103838616A (zh) | 基于树型程序分支的计算机程序即时编译方法 | |
CN105867427A (zh) | 一种面向动态环境的机器人寻径在线控制方法 | |
CN113128015B (zh) | 预估单振幅模拟量子计算所需资源的方法和系统 | |
CN107330943A (zh) | 一种定位标识匹配方法、装置及电子设备 | |
CN115729642B (zh) | 基于状态机处理用户行为的方法、系统、设备及存储介质 | |
CN116642508A (zh) | 一种改进a星算法的路径规划方法,装置及机器人 | |
CN108897532B (zh) | 一种类工厂注册的方法、装置及电子设备 | |
CN110728359A (zh) | 搜索模型结构的方法、装置、设备和存储介质 | |
CN108255486A (zh) | 用于表单设计的视图转换方法、装置和电子设备 | |
CN103309690A (zh) | 处理数据的方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |