CN106155658A - 基于u3d插件机制实现的行为树编辑器 - Google Patents

基于u3d插件机制实现的行为树编辑器 Download PDF

Info

Publication number
CN106155658A
CN106155658A CN201510164927.3A CN201510164927A CN106155658A CN 106155658 A CN106155658 A CN 106155658A CN 201510164927 A CN201510164927 A CN 201510164927A CN 106155658 A CN106155658 A CN 106155658A
Authority
CN
China
Prior art keywords
node
behavior tree
behavior
button
tree
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
Application number
CN201510164927.3A
Other languages
English (en)
Other versions
CN106155658B (zh
Inventor
伍耀全
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Sisanjiujiu Information Technology Co Ltd
Original Assignee
Guangzhou Sisanjiujiu Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Sisanjiujiu Information Technology Co Ltd filed Critical Guangzhou Sisanjiujiu Information Technology Co Ltd
Priority to CN201510164927.3A priority Critical patent/CN106155658B/zh
Publication of CN106155658A publication Critical patent/CN106155658A/zh
Application granted granted Critical
Publication of CN106155658B publication Critical patent/CN106155658B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于U3D插件机制实现的行为树编辑器,包括行为树编辑模块、行为树预览模块、行为树导出模块和行为树导入模块;行为树编辑模块提供行为树编辑面板,用于编辑得到一颗行为树;行为树预览模块用于将行为树编辑模块编辑得到的行为树输入到预存储游戏场景中的某个游戏角色中,通过行为树控制游戏角色的动作,并播放行为树对游戏角色的控制过程,实现对编辑得到的行为树运行过程的预览;行为树导出模块用于将预览成功的行为树以特定数据结构导出,供游戏运行时调用。提供行为树预览功能,能够方便快速的对编辑得到的行为树效果进行预览,方便对编辑得到的行为树进行修改调试,从而全面提高了行为树编辑效率。

Description

基于U3D插件机制实现的行为树编辑器
技术领域
本发明属于游戏开发技术领域,具体涉及一种基于U3D插件机制实现的行为树编辑器。
背景技术
在游戏人工智能AI编程领域中,行为树(Behavior-Tree)的广泛应用已经开始逐渐取代了设计复杂而庞大的状态机(State Machine),越来越多游戏使用行为树作为AI的实现结构。
现有技术中,普遍使用Brainiac Designer工具编辑行为树,使用该工具编辑行为树时,需要首先编写出各个树节点,然后将各个编写出的树节点生成dll动态链接库,并作为插件导入到Brainiac Designer中。虽然Brainiac Designer提供了源码,但是,用户非常难以在Brainiac Designer工具定义一些满足特殊需求的树节点;此外,当编辑到一棵行为树后,由于行为树涉及数量众多的节点,因此,编程人员难以预见行为树的实现效果,导致不方便对行为树进行调试。
发明内容
针对现有技术存在的缺陷,本发明提供一种基于U3D插件机制实现的行为树编辑器,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种基于U3D插件机制实现的行为树编辑器,包括行为树编辑模块、行为树预览模块、行为树导出模块和行为树导入模块;
所述行为树编辑模块提供行为树编辑面板,用于编辑得到一颗行为树;
所述行为树预览模块用于将所述行为树编辑模块编辑得到的行为树输入到预存储游戏场景中的某个游戏角色中,通过所述行为树控制所述游戏角色的动作,并播放所述行为树对所述游戏角色的控制过程,实现对编辑得到的行为树运行过程的预览;
所述行为树导出模块用于将预览成功的所述行为树以特定数据结构导出,供游戏运行时调用;
所述行为树导入模块用于将已导出的所述行为树再次导入到所述行为树编辑模块,通过所述行为树编辑模块对所述行为树进行改进。
优选的,所述行为树编辑模块包括行为树编辑面板以及事件***;
所述行为树编辑面板提供行为树绘制区域;
所述事件***用于对所述行为树绘制区域进行监听,具体监听过程包括:
步骤1:当监听到所述行为树绘制区域发生鼠标右键点击事件时,向被点击区域弹出操作面板,其中,所述操作面板包括:添加节点按钮、删除节点按钮、上移当前节点按钮和下移当前节点按钮;
步骤2:然后,所述事件***对所述操作面板中的各个按钮进行监听,并区分以下四种情况:
1)当监听到所述添加节点按钮发生按钮点击事件时,向被点击区域弹出节点类型面板,所述节点类型面板包含行为节点子按钮、条件节点子按钮、顺序节点子按钮和选择节点子按钮;然后,所述事件***对所述节点类型面板中的各个子按钮进行监听,如果监听到所述行为节点子按钮发生按钮点击事件时,向被点击区域添加行为节点;如果监听到所述条件节点子按钮发生按钮点击事件时,向被点击区域添加条件节点;如果监听到所述顺序节点子按钮发生按钮点击事件时,向被点击区域添加顺序节点;如果监听到所述选择节点子按钮发生按钮点击事件时,向被点击区域添加选择节点;然后,所述事件***对已添加到所述行为树绘制区域的行为节点、条件节点、顺序节点或选择节点进行监听,当监听到所述行为节点发生节点双击事件时,向被双击节点位置弹出包含有已配置的用于控制游戏角色的具体行为指令的选择面板;然后,当接收到所述选择面板返回的具体行为指令时,所述事件***保存节点标识和具体行为指令的对应关系;
当监听到所述条件节点、所述顺序节点或所述选择节点发生节点双击事件时,向被双击节点位置弹出节点属性修改面板,当接收到通过所述节点属性修改面板发送的节点属性时,所述事件***保存节点标识和节点属性的对应关系;
2)当监听到所述删除节点按钮发生按钮点击事件时,所述事件***将被点击区域对应的节点删除;
3)当监听到所述上移当前节点按钮发生按钮点击事件时,所述事件***将被点击的当前按钮的子节点依次向上移动一位;
4)当监听到所述下移当前节点按钮发生按钮点击事件时,所述事件***将被点击的当前按钮的子节点依次向下移动一位。
优选的,所述行为树预览模块对所述行为树的运行过程进行预览,具体包括以下步骤:
S1,所述行为树预览模块设置行为树中的节点具有4个状态,分别为初始状态、悬挂状态、执行成功状态和执行失败状态;
其中,所述初始状态是指:在最初第一次执行根节点之前,行为树中所有节点均为初始状态;
所述悬挂状态是指:当某个节点正在被执行时,或者,当某个节点的任意一个子节点正在被执行且没有执行完毕时,该节点即为悬挂状态的节点;
S2,设需执行的行为树共有n层,按自上而下顺序,依次记为:第1层、第2层…第n层;其中,n为自然数;第1层即为根节点;第n层即为叶子节点,所述叶子节点均为行为节点;所述非叶节点,即:第1层节点到第n-1层节点,均为控制节点;
S3,每隔预设时间间隔,即执行一次根节点,执行方法为:
S3.1,在当前时刻,所述行为树预览模块执行第1层节点,即:读取所述第1层节点的状态,判断所述第1层节点当前是否为悬挂状态,如果是,则执行S3.2-S3.5;如果否,则执行S3.6;
S3.2,所述行为树预览模块读取各个所述第2层节点,查找到当前为悬挂状态的第2层节点,记为:节点2.x;其中,当所述第1层节点为悬挂状态时,其儿子节点中有且仅有一个节点为悬挂状态;
S3.3,所述行为树预览模块执行节点2.x的悬挂函数,同时判断所述节点2.x是否为叶子节点,如果否,则执行S3.4;否则,直接执行S3.5;
S3.4,所述行为树预览模块继续递归执行节点2.x的子孙节点的悬挂函数,直到执行到叶子节点,然后执行S3.5;其中,整根行为树有且仅有一条分支的各节点处于悬挂状态;
S3.5,所述行为树预览模块执行叶子节点的悬挂函数;所述叶子节点的悬挂函数直接导致游戏对象的行为发生变化;
S3.6,当所述第1层节点不为悬挂状态时,所述行为树预览模块根据第1层节点的类型,遍历执行各个第2层节点,
如果某个第2层节点为行为节点,则直接执行该行为节点,并将执行结果返回给所述第1层节点;所述第1层节点根据所接收到的执行结果,改变自身状态;
如果某个第2层节点为选择节点,则该选择节点迭代执行该选择节点的各个子节点,如果某个子节点执行后返回执行失败的通知消息,则继续迭代执行其他子节点;只要存在一个子节点执行后返回执行成功的通知消息,即停止迭代,该选择节点向自身的父节点返回执行成功的通知消息,然后,所述父节点将自身状态设置为执行成功状态;否则,如果所有子节点执行后均返回执行失败的通知消息,则:所述父节点将自身状态设置为执行失败状态;
如果某个第2层节点为顺序节点,则该顺序节点迭代执行该顺序节点的各个子节点,只有存在一个子节点执行后返回执行失败的通知消息,即停止迭代,该顺序节点向自身的父节点返回执行失败的通知消息,并且,所述父节点将自身状态设置为执行失败状态;否则,只有当所有子节点执行后均返回执行成功的通知消息后,该顺序节点才向自身的父节点返回执行成功的通知消息,然后,所述父节点将自身状态设置为执行成功状态。
本发明的有益效果如下:
本发明提供的基于U3D插件机制实现的行为树编辑器,具有以下优点:可以在U3D中直接设计AI行为树,而不需要预先编辑各个树节点,从而简化了行为树编辑过程;此外,该行为树编辑器提供行为树预览功能,能够方便快速的对编辑得到的行为树效果进行预览,方便对编辑得到的行为树进行修改调试,从而全面提高了行为树编辑效率。
附图说明
图1为本发明提供的基于U3D插件机制实现的行为树编辑器的结构原理图;
图2为本发明提供的行为树预览模块执行行为树的流程示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
本发明提供一种基于U3D插件机制实现的行为树编辑器,是在U3D插件机制的基础上,在U3D里面编写的一个可视化编辑行为树的工具。该工具能直接在U3D里设计AI行为树,添加各种行为树的树节点,例如,选择节点、顺序节点、行为节点或条件节点等,并能导出相应的json文件格式的行为树。当实际运行游戏时,读取记录有AI行为树的json文件,从而向游戏对象,如主角、小怪、boss等指定相应的AI行为树,实现对游戏对象的智能控制,具有高配置性和高扩展性的优势,利于策划配置和程序的可扩展。
具体的,结合图1,行为树编辑器包括行为树编辑模块、行为树预览模块、行为树导出模块和行为树导入模块。以下分别详细介绍这四个功能模块:
(一)行为树编辑模块
行为树编辑模块提供行为树编辑面板,用于编辑得到一颗行为树;即:在U3D中编辑已经构思好的一个行为树,,实现对各种树节点的添加、删除、修改参数以及查看所有节点的功能,实现行为树的编辑功能。
行为树编辑模块具体包括行为树编辑面板以及事件***;所述行为树编辑面板提供行为树绘制区域;
所述事件***用于对所述行为树绘制区域进行监听,具体监听过程包括:
步骤1:当监听到所述行为树绘制区域发生鼠标右键点击事件时,向被点击区域弹出操作面板,其中,所述操作面板包括:添加节点按钮、删除节点按钮、上移当前节点按钮和下移当前节点按钮;其中,通过上移当前节点按钮和下移当前节点按钮,实现对当前节点上移和下移的调节,通过调整当前节点的位置,最终调整了当前节点在行为树节点中的先后执行顺序,越向上靠近根节点的节点,越先被执行。
此外,当选择添加节点按钮后,会弹出行为节点、条件节点、顺序节点和选择节点面板。这里的每一个行为节点和条件节点是需要具体的代码来实现,能够使游戏中的对象产生相应的行为。属于具体的业务逻辑部分
步骤2:然后,所述事件***对所述操作面板中的各个按钮进行监听,其中,操作面板中的各个按钮需要具体的代码实现,能够使游戏中的对象产生相应的行为,属于具体的业务逻辑部分,在具体实现上,可使本发明提供的行为树编辑器对接业务逻辑模块,将业务逻辑模块所需的能够产生具体控制行为的代码直接传输到行为树编辑器,方便对具体行为树的编辑。
对各个按钮监听过程,可区分以下四种情况:
1)当监听到所述添加节点按钮发生按钮点击事件时,向被点击区域弹出节点类型面板,所述节点类型面板包含行为节点子按钮、条件节点子按钮、顺序节点子按钮和选择节点子按钮;然后,所述事件***对所述节点类型面板中的各个子按钮进行监听,如果监听到所述行为节点子按钮发生按钮点击事件时,向被点击区域添加行为节点;如果监听到所述条件节点子按钮发生按钮点击事件时,向被点击区域添加条件节点;如果监听到所述顺序节点子按钮发生按钮点击事件时,向被点击区域添加顺序节点;如果监听到所述选择节点子按钮发生按钮点击事件时,向被点击区域添加选择节点;然后,所述事件***对已添加到所述行为树绘制区域的行为节点、条件节点、顺序节点或选择节点进行监听,当监听到所述行为节点发生节点双击事件时,向被双击节点位置弹出包含有已配置的用于控制游戏角色的具体行为指令的选择面板;然后,当接收到所述选择面板返回的具体行为指令时,所述事件***保存节点标识和具体行为指令的对应关系;
当监听到所述条件节点、所述顺序节点或所述选择节点发生节点双击事件时,向被双击节点位置弹出节点属性修改面板,当接收到通过所述节点属性修改面板发送的节点属性时,所述事件***保存节点标识和节点属性的对应关系;
2)当监听到所述删除节点按钮发生按钮点击事件时,所述事件***将被点击区域对应的节点删除;
3)当监听到所述上移当前节点按钮发生按钮点击事件时,所述事件***将被点击的当前按钮的子节点依次向上移动一位;
4)当监听到所述下移当前节点按钮发生按钮点击事件时,所述事件***将被点击的当前按钮的子节点依次向下移动一位。
(二)行为树预览模块
为方便理解行为树预览模块的执行原理,首先对本发明提供的行为树相关知识进行介绍:
行为树节点包括四类,顺序节点、选择节点、条件节点和行为节点。顺序节点、选择节点和条件节点可统称为组合节点或控制节点。
其中,顺序节点执行本节点时,迭代执行自己的子节点,只要遇到一个子节点执行后返回执行失败False的消息,则停止迭代,并向自己的父节点也返回执行失败False的消息;否则,只有当所有子节点均返回执行成功True的消息时,本节点才向自己的父节点返回True。相当于逻辑与运算。
选择节点执行本节点时,迭代执行自己所有的子节点。如遇到一个子节点执行后返回True,则停止迭代,并向自己的父节点也返回True;否则,只有所有的子节点均返回False,本节点才向自己的父节点返回False。相当于逻辑或运算。
整棵行为树中,只有行为节点才能成为叶子节点,而也只有子节点才是需要特别定制的节点,程序实现上需要根据逻辑编写具体实现的子类继承之;组合节点不能作为叶子节点,主要作用是用于控制行为树中的决策走向。
任何节点被执行后,必须向其父节点报告执行结果,执行成功(True)或执行失败(False)。这简单的成功失败汇报原则被很巧妙地用于控制整棵树的决策方向。
为了程序方便控制行为树每一次决策的走向流程,规定所有节点具有4个状态。分别是初始状态Init(即本次的行为树迭代一开始时所有节点的状态),正在执行的悬挂状态Pending(即该节点或者其中某一个子节点正在被执行且没有执行完毕),执行成功状态Finish,执行失败状态Fail。只要有一个子节点是Pending状态,包括所有孙子节点,那么该节点就一定是Pending状态。子节点执行成功和失败后需要向父节点返回结果。
上述过程中,子节点并非局限于某个节点的儿子节点,也包括孙子节点等,是某个节点的所有后代节点。
基于上述设计原则,行为树预览模块具体执行过程为:
顺序节点、选择节点和条件节点可统称为组合节点或控制节点,是一类具有子节点的一种节点,而行为节点属于叶子节点,是没有子节点的一种节点。
所述行为树预览模块用于将所述行为树编辑模块编辑得到的行为树输入到预存储游戏场景中的某个游戏角色中,通过所述行为树控制所述游戏角色的动作,并播放所述行为树对所述游戏角色的控制过程,实现对编辑得到的行为树运行过程的预览;
行为树预览模块对所述行为树的运行过程进行预览,具体包括以下步骤:
S1,所述行为树预览模块设置行为树中的节点具有4个状态,分别为初始状态、悬挂状态、执行成功状态和执行失败状态;
其中,所述初始状态是指:在最初第一次执行根节点之前,行为树中所有节点均为初始状态;
所述悬挂状态是指:当某个节点正在被执行时,或者,当某个节点的任意一个子节点正在被执行且没有执行完毕时,该节点即为悬挂状态的节点;
S2,设需执行的行为树共有n层,按自上而下顺序,依次记为:第1层、第2层…第n层;其中,n为自然数;第1层即为根节点;第n层即为叶子节点,所述叶子节点均为行为节点;所述非叶节点,即:第1层节点到第n-1层节点,均为控制节点;
S3,每隔预设时间间隔,即执行一次根节点,执行方法如图2所示,包括以下步骤:
S3.1,在当前时刻,所述行为树预览模块执行第1层节点,即:读取所述第1层节点的状态,判断所述第1层节点当前是否为悬挂状态,如果是,则执行S3.2-S3.5;如果否,则执行S3.6;
S3.2,所述行为树预览模块读取各个所述第2层节点,查找到当前为悬挂状态的第2层节点,记为:节点2.x;其中,当所述第1层节点为悬挂状态时,其儿子节点中有且仅有一个节点为悬挂状态;
S3.3,所述行为树预览模块执行节点2.x的悬挂函数,同时判断所述节点2.x是否为叶子节点,如果否,则执行S3.4;否则,直接执行S3.5;
S3.4,所述行为树预览模块继续递归执行节点2.x的子孙节点的悬挂函数,直到执行到叶子节点,然后执行S3.5;其中,整根行为树有且仅有一条分支的各节点处于悬挂状态;
S3.5,所述行为树预览模块执行叶子节点的悬挂函数;所述叶子节点的悬挂函数直接导致游戏对象的行为发生变化;
S3.6,当所述第1层节点不为悬挂状态时,所述行为树预览模块根据第1层节点的类型,遍历执行各个第2层节点,
如果某个第2层节点为行为节点,则直接执行该行为节点,并将执行结果返回给所述第1层节点;所述第1层节点根据所接收到的执行结果,改变自身状态;
如果某个第2层节点为选择节点,则该选择节点迭代执行该选择节点的各个子节点,如果某个子节点执行后返回执行失败的通知消息,则继续迭代执行其他子节点;只要存在一个子节点执行后返回执行成功的通知消息,即停止迭代,该选择节点向自身的父节点返回执行成功的通知消息,然后,所述父节点将自身状态设置为执行成功状态;否则,如果所有子节点执行后均返回执行失败的通知消息,则:所述父节点将自身状态设置为执行失败状态;
如果某个第2层节点为顺序节点,则该顺序节点迭代执行该顺序节点的各个子节点,只有存在一个子节点执行后返回执行失败的通知消息,即停止迭代,该顺序节点向自身的父节点返回执行失败的通知消息,并且,所述父节点将自身状态设置为执行失败状态;否则,只有当所有子节点执行后均返回执行成功的通知消息后,该顺序节点才向自身的父节点返回执行成功的通知消息,然后,所述父节点将自身状态设置为执行成功状态。
本发明中,每隔设定时间,例如10帧左右,即执行一次根节点,不断对某个游戏角度的行为角色进行控制,根据迭代次数根据预览需求而定,从而实现对行为树执行效果的预览功能。
(三)行为树导出模块
所述行为树导出模块用于将预览成功的所述行为树以特定数据结构导出,供游戏运行时调用;
具体的,行为树编辑后,以合适的数据结构导出行为树。例如,使用Json数据格式导出行为树,在游戏运行时,读取导出的行为树文件,通过解析该文件得到对应的行为树,然后将行为树赋给游戏对象,控制其相应的行为。
具体实现上,可以采用MiniJSON反序列化字符串和序列化Json,从而将json导出成字符串并存到文件中,并且可以从文件中的字符串解析成json,实现行为树导出或导入功能。
(四)行为树导入模块
所述行为树导入模块用于将已导出的所述行为树再次导入到所述行为树编辑模块,通过所述行为树编辑模块对所述行为树进行改进。当然,对于前一次尚未编辑完成的行为树,也可以通过行为树导入模块导入到行为树编辑模块,继续对该未编辑完成的行为树进行编辑操作。
本发明提供的行为树编辑器,是在EditorWindow的OnGUI函数中实现绘制界面功能的模块。包括绘制按钮区域、绘制行为树区域。绘制按钮区域提供导出按钮、导入按钮和预览按钮,按钮的绘制只需要调用GUILayout.Button即可实现。存储行为树的数据结构可以用C#的Queue,Queue的每一项是自定义的TreeNode类,TreeNode类的基本属性包括当前节点的孩子节点和深度。此外,还需要有行为树节点的点击处理回调,包括右键节点弹出添加删除节点小面板,双击节点弹出面板修改节点属性。编辑器编辑模块的核心功能是将用户在编辑器外构思出的树完整地在Unity3d中编辑出来,并且导出成所需的格式,并一键赋到游戏对象上,实现对编辑得到的行为树执行效果的预览,从而方便对编辑得到的行为树进行修改调试,从而全面提高了行为树编辑效率。
综上所述,本发明提供的基于U3D插件机制实现的行为树编辑器,具有以下优点:可以在U3D中直接设计AI行为树,而不需要预先编辑各个树节点,从而简化了行为树编辑过程;此外,该行为树编辑器提供行为树预览功能,能够方便快速的对编辑得到的行为树效果进行预览,方便对编辑得到的行为树进行修改调试,从而全面提高了行为树编辑效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (3)

1.一种基于U3D插件机制实现的行为树编辑器,其特征在于,包括行为树编辑模块、行为树预览模块、行为树导出模块和行为树导入模块;
所述行为树编辑模块提供行为树编辑面板,用于编辑得到一颗行为树;
所述行为树预览模块用于将所述行为树编辑模块编辑得到的行为树输入到预存储游戏场景中的某个游戏角色中,通过所述行为树控制所述游戏角色的动作,并播放所述行为树对所述游戏角色的控制过程,实现对编辑得到的行为树运行过程的预览;
所述行为树导出模块用于将预览成功的所述行为树以特定数据结构导出,供游戏运行时调用;
所述行为树导入模块用于将已导出的所述行为树再次导入到所述行为树编辑模块,通过所述行为树编辑模块对所述行为树进行改进。
2.根据权利要求1所述的基于U3D插件机制实现的行为树编辑器,其特征在于,所述行为树编辑模块包括行为树编辑面板以及事件***;
所述行为树编辑面板提供行为树绘制区域;
所述事件***用于对所述行为树绘制区域进行监听,具体监听过程包括:
步骤1:当监听到所述行为树绘制区域发生鼠标右键点击事件时,向被点击区域弹出操作面板,其中,所述操作面板包括:添加节点按钮、删除节点按钮、上移当前节点按钮和下移当前节点按钮;
步骤2:然后,所述事件***对所述操作面板中的各个按钮进行监听,并区分以下四种情况:
1)当监听到所述添加节点按钮发生按钮点击事件时,向被点击区域弹出节点类型面板,所述节点类型面板包含行为节点子按钮、条件节点子按钮、顺序节点子按钮和选择节点子按钮;然后,所述事件***对所述节点类型面板中的各个子按钮进行监听,如果监听到所述行为节点子按钮发生按钮点击事件时,向被点击区域添加行为节点;如果监听到所述条件节点子按钮发生按钮点击事件时,向被点击区域添加条件节点;如果监听到所述顺序节点子按钮发生按钮点击事件时,向被点击区域添加顺序节点;如果监听到所述选择节点子按钮发生按钮点击事件时,向被点击区域添加选择节点;然后,所述事件***对已添加到所述行为树绘制区域的行为节点、条件节点、顺序节点或选择节点进行监听,当监听到所述行为节点发生节点双击事件时,向被双击节点位置弹出包含有已配置的用于控制游戏角色的具体行为指令的选择面板;然后,当接收到所述选择面板返回的具体行为指令时,所述事件***保存节点标识和具体行为指令的对应关系;
当监听到所述条件节点、所述顺序节点或所述选择节点发生节点双击事件时,向被双击节点位置弹出节点属性修改面板,当接收到通过所述节点属性修改面板发送的节点属性时,所述事件***保存节点标识和节点属性的对应关系;
2)当监听到所述删除节点按钮发生按钮点击事件时,所述事件***将被点击区域对应的节点删除;
3)当监听到所述上移当前节点按钮发生按钮点击事件时,所述事件***将被点击的当前按钮的子节点依次向上移动一位;
4)当监听到所述下移当前节点按钮发生按钮点击事件时,所述事件***将被点击的当前按钮的子节点依次向下移动一位。
3.根据权利要求1所述的基于U3D插件机制实现的行为树编辑器,其特征在于,所述行为树预览模块对所述行为树的运行过程进行预览,具体包括以下步骤:
S1,所述行为树预览模块设置行为树中的节点具有4个状态,分别为初始状态、悬挂状态、执行成功状态和执行失败状态;
其中,所述初始状态是指:在最初第一次执行根节点之前,行为树中所有节点均为初始状态;
所述悬挂状态是指:当某个节点正在被执行时,或者,当某个节点的任意一个子节点正在被执行且没有执行完毕时,该节点即为悬挂状态的节点;
S2,设需执行的行为树共有n层,按自上而下顺序,依次记为:第1层、第2层…第n层;其中,n为自然数;第1层即为根节点;第n层即为叶子节点,所述叶子节点均为行为节点;所述非叶节点,即:第1层节点到第n-1层节点,均为控制节点;
S3,每隔预设时间间隔,即执行一次根节点,执行方法为:
S3.1,在当前时刻,所述行为树预览模块执行第1层节点,即:读取所述第1层节点的状态,判断所述第1层节点当前是否为悬挂状态,如果是,则执行S3.2-S3.5;如果否,则执行S3.6;
S3.2,所述行为树预览模块读取各个所述第2层节点,查找到当前为悬挂状态的第2层节点,记为:节点2.x;其中,当所述第1层节点为悬挂状态时,其儿子节点中有且仅有一个节点为悬挂状态;
S3.3,所述行为树预览模块执行节点2.x的悬挂函数,同时判断所述节点2.x是否为叶子节点,如果否,则执行S3.4;否则,直接执行S3.5;
S3.4,所述行为树预览模块继续递归执行节点2.x的子孙节点的悬挂函数,直到执行到叶子节点,然后执行S3.5;其中,整根行为树有且仅有一条分支的各节点处于悬挂状态;
S3.5,所述行为树预览模块执行叶子节点的悬挂函数;所述叶子节点的悬挂函数直接导致游戏对象的行为发生变化;
S3.6,当所述第1层节点不为悬挂状态时,所述行为树预览模块根据第1层节点的类型,遍历执行各个第2层节点,
如果某个第2层节点为行为节点,则直接执行该行为节点,并将执行结果返回给所述第1层节点;所述第1层节点根据所接收到的执行结果,改变自身状态;
如果某个第2层节点为选择节点,则该选择节点迭代执行该选择节点的各个子节点,如果某个子节点执行后返回执行失败的通知消息,则继续迭代执行其他子节点;只要存在一个子节点执行后返回执行成功的通知消息,即停止迭代,该选择节点向自身的父节点返回执行成功的通知消息,然后,所述父节点将自身状态设置为执行成功状态;否则,如果所有子节点执行后均返回执行失败的通知消息,则:所述父节点将自身状态设置为执行失败状态;
如果某个第2层节点为顺序节点,则该顺序节点迭代执行该顺序节点的各个子节点,只有存在一个子节点执行后返回执行失败的通知消息,即停止迭代,该顺序节点向自身的父节点返回执行失败的通知消息,并且,所述父节点将自身状态设置为执行失败状态;否则,只有当所有子节点执行后均返回执行成功的通知消息后,该顺序节点才向自身的父节点返回执行成功的通知消息,然后,所述父节点将自身状态设置为执行成功状态。
CN201510164927.3A 2015-04-08 2015-04-08 基于u3d插件机制实现的行为树编辑器 Expired - Fee Related CN106155658B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510164927.3A CN106155658B (zh) 2015-04-08 2015-04-08 基于u3d插件机制实现的行为树编辑器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510164927.3A CN106155658B (zh) 2015-04-08 2015-04-08 基于u3d插件机制实现的行为树编辑器

Publications (2)

Publication Number Publication Date
CN106155658A true CN106155658A (zh) 2016-11-23
CN106155658B CN106155658B (zh) 2019-03-05

Family

ID=57336684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510164927.3A Expired - Fee Related CN106155658B (zh) 2015-04-08 2015-04-08 基于u3d插件机制实现的行为树编辑器

Country Status (1)

Country Link
CN (1) CN106155658B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106815009A (zh) * 2016-12-05 2017-06-09 上海时年信息科技有限公司 模拟多个运动体行为的方法和***
CN106899441A (zh) * 2017-03-16 2017-06-27 网易(杭州)网络有限公司 故障节点定位方法及装置
CN106933744A (zh) * 2017-03-21 2017-07-07 网易(杭州)网络有限公司 节点修订状态标记方法及装置、电子设备及存储介质
CN106959850A (zh) * 2017-03-02 2017-07-18 上海时年信息科技有限公司 自动生成行为树代码的方法及***
CN107085519A (zh) * 2017-05-04 2017-08-22 网易(杭州)网络有限公司 行为树调试处理方法、装置、***、存储介质和处理器
CN108563437A (zh) * 2018-04-19 2018-09-21 清华大学 网络功能的开发方法、***、计算机设备和存储介质
CN108614691A (zh) * 2018-04-19 2018-10-02 清华大学 网络功能的开发方法、***、计算机设备和存储介质
CN109189504A (zh) * 2018-09-20 2019-01-11 腾讯科技(深圳)有限公司 行为执行方法、行为树生成方法、装置和计算机设备
CN109925712A (zh) * 2019-03-18 2019-06-25 网易(杭州)网络有限公司 一种虚拟对象控制***
CN110008304A (zh) * 2019-04-03 2019-07-12 网易(杭州)网络有限公司 行为树的差异可视化处理方法和装置
CN110134375A (zh) * 2019-05-14 2019-08-16 网易(杭州)网络有限公司 游戏角色行为的控制方法、装置及可读存储介质
CN110831677A (zh) * 2017-05-04 2020-02-21 Mz知识产权控股有限责任公司 用于在多玩家在线游戏中管理内容呈现的***和方法
CN111111202A (zh) * 2019-12-26 2020-05-08 北京像素软件科技股份有限公司 游戏ai行为逻辑控制方法和***
CN111135559A (zh) * 2019-12-27 2020-05-12 北京像素软件科技股份有限公司 游戏数据处理方法、装置、电子设备及存储介质
CN111249733A (zh) * 2020-01-09 2020-06-09 完美世界(北京)软件科技发展有限公司 一种创建虚拟对象的方法和装置
WO2021082759A1 (zh) * 2019-10-30 2021-05-06 上海莉莉丝科技股份有限公司 可视化的逻辑执行方法、***、设备和介质
CN113515272A (zh) * 2020-04-09 2021-10-19 深圳轩科华智能科技有限公司 一种可视化编程的方法和***
CN116764231A (zh) * 2022-03-08 2023-09-19 腾讯科技(深圳)有限公司 信息显示方法、***、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073816A (zh) * 2010-12-31 2011-05-25 兰雨晴 基于行为的软件可信度量***及方法
CN102495751A (zh) * 2011-11-29 2012-06-13 北京像素软件科技股份有限公司 一种实现仿真场景的方法和装置
CN103440199A (zh) * 2013-08-27 2013-12-11 百度在线网络技术(北京)有限公司 测试引导方法和装置
CN103761108A (zh) * 2014-02-14 2014-04-30 杭州朗和科技有限公司 一种实现行为树的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073816A (zh) * 2010-12-31 2011-05-25 兰雨晴 基于行为的软件可信度量***及方法
CN102495751A (zh) * 2011-11-29 2012-06-13 北京像素软件科技股份有限公司 一种实现仿真场景的方法和装置
CN103440199A (zh) * 2013-08-27 2013-12-11 百度在线网络技术(北京)有限公司 测试引导方法和装置
CN103761108A (zh) * 2014-02-14 2014-04-30 杭州朗和科技有限公司 一种实现行为树的方法及装置

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018103493A1 (zh) * 2016-12-05 2018-06-14 上海时年信息科技有限公司 模拟多个运动体行为的方法和***
CN106815009A (zh) * 2016-12-05 2017-06-09 上海时年信息科技有限公司 模拟多个运动体行为的方法和***
CN106959850A (zh) * 2017-03-02 2017-07-18 上海时年信息科技有限公司 自动生成行为树代码的方法及***
CN106899441B (zh) * 2017-03-16 2019-09-03 网易(杭州)网络有限公司 故障节点定位方法及***
CN106899441A (zh) * 2017-03-16 2017-06-27 网易(杭州)网络有限公司 故障节点定位方法及装置
CN106933744A (zh) * 2017-03-21 2017-07-07 网易(杭州)网络有限公司 节点修订状态标记方法及装置、电子设备及存储介质
CN107085519A (zh) * 2017-05-04 2017-08-22 网易(杭州)网络有限公司 行为树调试处理方法、装置、***、存储介质和处理器
CN107085519B (zh) * 2017-05-04 2020-09-11 网易(杭州)网络有限公司 行为树调试处理方法、装置、***、存储介质和处理器
CN110831677A (zh) * 2017-05-04 2020-02-21 Mz知识产权控股有限责任公司 用于在多玩家在线游戏中管理内容呈现的***和方法
CN108614691B (zh) * 2018-04-19 2021-08-24 交叉信息核心技术研究院(西安)有限公司 网络功能的开发方法、***、计算机设备和存储介质
CN108614691A (zh) * 2018-04-19 2018-10-02 清华大学 网络功能的开发方法、***、计算机设备和存储介质
CN108563437A (zh) * 2018-04-19 2018-09-21 清华大学 网络功能的开发方法、***、计算机设备和存储介质
CN108563437B (zh) * 2018-04-19 2021-08-20 图灵人工智能研究院(南京)有限公司 网络功能的开发方法、***、计算机设备和存储介质
CN109189504B (zh) * 2018-09-20 2020-04-28 腾讯科技(深圳)有限公司 行为执行方法、行为树生成方法、装置和计算机设备
CN109189504A (zh) * 2018-09-20 2019-01-11 腾讯科技(深圳)有限公司 行为执行方法、行为树生成方法、装置和计算机设备
CN109925712A (zh) * 2019-03-18 2019-06-25 网易(杭州)网络有限公司 一种虚拟对象控制***
CN110008304A (zh) * 2019-04-03 2019-07-12 网易(杭州)网络有限公司 行为树的差异可视化处理方法和装置
CN110134375B (zh) * 2019-05-14 2023-11-21 网易(杭州)网络有限公司 游戏角色行为的控制方法、装置及可读存储介质
CN110134375A (zh) * 2019-05-14 2019-08-16 网易(杭州)网络有限公司 游戏角色行为的控制方法、装置及可读存储介质
WO2021082759A1 (zh) * 2019-10-30 2021-05-06 上海莉莉丝科技股份有限公司 可视化的逻辑执行方法、***、设备和介质
CN111111202A (zh) * 2019-12-26 2020-05-08 北京像素软件科技股份有限公司 游戏ai行为逻辑控制方法和***
CN111111202B (zh) * 2019-12-26 2023-08-29 北京像素软件科技股份有限公司 游戏ai行为逻辑控制方法和***
CN111135559B (zh) * 2019-12-27 2023-06-27 北京像素软件科技股份有限公司 游戏数据处理方法、装置、电子设备及存储介质
CN111135559A (zh) * 2019-12-27 2020-05-12 北京像素软件科技股份有限公司 游戏数据处理方法、装置、电子设备及存储介质
CN111249733A (zh) * 2020-01-09 2020-06-09 完美世界(北京)软件科技发展有限公司 一种创建虚拟对象的方法和装置
CN111249733B (zh) * 2020-01-09 2023-10-13 完美世界(北京)软件科技发展有限公司 一种创建虚拟对象的方法和装置
CN113515272A (zh) * 2020-04-09 2021-10-19 深圳轩科华智能科技有限公司 一种可视化编程的方法和***
CN116764231A (zh) * 2022-03-08 2023-09-19 腾讯科技(深圳)有限公司 信息显示方法、***、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN106155658B (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
CN106155658A (zh) 基于u3d插件机制实现的行为树编辑器
CN103197929B (zh) 一种面向儿童的图形化编程***和方法
Ramadge et al. The control of discrete event systems
de Queiroz et al. Multitasking supervisory control of discrete-event systems
CN106293664A (zh) 代码生成方法及装置
CN102508654B (zh) 嵌入式可编程控制器的梯形图编辑器设计方法
CN107875632B (zh) 实现人工智能行为的方法、***及人工智能行为编辑器
CN110471670A (zh) 一种编译器、编译方法和追踪方法及dcs控制器
CN109189469A (zh) 基于反射的安卓应用微服务化方法及***
CN110287088B (zh) 一种基于动态ui模型的自动化测试方法
Bandyopadhyay et al. Distinguishing signatures of scalar leptoquarks at hadron and muon colliders
CN108804630A (zh) 一种面向行业应用的大数据智能分析服务***
CN102479079A (zh) 应用生成方法和装置
CN109189374A (zh) 基于对象引用链的对象构造代码生成方法及***
CN102314349A (zh) 空间信息功能插件工作流搭建方法
CN103927779B (zh) 一种基于配置的二维动画生成方法
CN111611679B (zh) 传感器调度行为树模型的建模方法
CN104462329B (zh) 一种适用于多样性环境的业务流程挖掘方法
CN106096159B (zh) 一种云平台下的分布式***行为仿真分析***的实现方法
CN102929853A (zh) 基于Excel表单关联的DCS项目数据生成***和方法
CN114239237A (zh) 一种支持数字孪生的配电网仿真场景生成***与方法
CN107391136A (zh) 一种基于流式的编程***和方法
CN107992674A (zh) 一种基于模型的地球站监控可视化构建方法
CN103955368B (zh) 一种软件模糊自适应支撑***和开发方法
CN111445382B (zh) 一种基于maya三维软件场景资源优化方法

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190305

Termination date: 20200408

CF01 Termination of patent right due to non-payment of annual fee