CN107085519B - 行为树调试处理方法、装置、系统、存储介质和处理器 - Google Patents
行为树调试处理方法、装置、系统、存储介质和处理器 Download PDFInfo
- Publication number
- CN107085519B CN107085519B CN201710308781.4A CN201710308781A CN107085519B CN 107085519 B CN107085519 B CN 107085519B CN 201710308781 A CN201710308781 A CN 201710308781A CN 107085519 B CN107085519 B CN 107085519B
- Authority
- CN
- China
- Prior art keywords
- information
- behavior tree
- tree
- debugging
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了行为树调试处理方法、装置、系统、存储介质和处理器。行为树调试处理包括:接收服务器发送的游戏对象的行为树的信息,并根据行为树的信息绘制对应的树结构图,其中,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;接收服务器采集的行为树被调用时的运行信息;根据运行信息更新树结构图,以在树结构图上可视化显示运行信息。通过本发明解决了现有技术中对游戏对象的行为树调试效率低的问题,从而可以直观、便捷和高效的调试复杂的行为树。
Description
技术领域
本发明行为树调试领域,具体而言,涉及行为树调试处理方法、装置、系统、存储介质和处理器。
背景技术
目前,现有技术在网络游戏开发过程中,游戏对象的人工智能(AI)的实现关乎到玩家与游戏的各种交互体验,是游戏开发系统中的核心模块。游戏内常见游戏对象的人工智能有:AI玩家vs环境(PVE)游戏中怪物对象战斗时的AI、玩家vs玩家(PVP)游戏中机器人玩家的AI、以及玩家挂机自动操作的AI等等。而AI比较常见的实现方式包括状态机、决策树、神经网络和行为树等方式,其中的行为树AI实现方式是借助编辑器进行配置的,但是行为树AI配置有一个缺点就是配置受到人员限制,因为行为树配置需要策划人员有较强的逻辑思维和对行为树配置原理有专业的理解,所以当遇到配置的AI行为很复杂、行为树层级很深、节点数量很多的情况时,相关的策划人员在配置行为树AI时容易出现AI实际运行效果与预期不符的情况。
当行为树AI实际运行效果与配置预期不一致时,现有技术中的调试办法就是查看当前行为树AI运行情况,但由于游戏内对象AI执行是每一个游戏逻辑帧都会运行一次,现有技术中的网络游戏服务器一秒执行大概10帧逻辑,即每一秒每一个AI对象的行为树会执行10次,复杂的行为树里可能存在几十个节点,因此每一秒里一个行为树AI会被执行到的节点总数量可以高达几百个。现有技术中采用开发人员调试代码的方式来调试行为树执行,即每执行一个节点逻辑就打印一条日志,这样每秒产生的日志量可能达到数百条,不仅查看起来麻烦,而且从查看日志记录很难直观地在阅读每一帧游戏逻辑执行了哪些节点以及执行顺序,调试效率十分低下,而且每次调试都要由开发人员协助,调试成本高。同时,现有技术中的调试都是借助编辑器图形化编辑方式来提高行为树的可读性,并且通过原始的代码调试对编辑图形进行调试。
针对现有技术中对游戏对象的行为树调试效率低的问题,目前尚未提出有效地解决方案。
发明内容
本发明提供了行为树调试处理方法、装置、系统、存储介质和处理器,以解决现有技术中对游戏对象的行为树调试效率低的问题。
根据本发明实施例的一个方面,提供了一种行为树调试处理方法,包括:接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;接收所述服务器采集的所述行为树被调用时的运行信息;根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
进一步地,接收所述服务器采集的所述行为树被调用时的运行信息包括:接收所述服务器采集的所述行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
进一步地,根据所述运行信息更新所述树结构图包括:清空所述树结构图上的显示,并根据获取到的当前接收到所述行为树在N个逻辑帧运行时被调用产生的运行信息更新所述树结果图。
进一步地,还包括:将所清空的树结构图上的显示对应的数据进行存储,作为所述行为树的历史运行信息。
进一步地,根据所述运行信息更新所述树结构图包括:根据所述运行信息对所述运行信息中的各个节点进行标记,其中,所述运行信息是当所述游戏对象运行时所述行为树中各个节点和各个节点的运行顺序的数据记录;在所述树结构图上的显示所述标记。
进一步地,接收所述服务器发送的游戏对象的行为树的信息之前,所述方法还包括:接收所述服务器发送的游戏对象的至少一个行为树的索引信息;对所述索引信息进行可视化显示;接收用户从显示的索引信息中选择出的索引信息;发送调试请求给游戏服务器,其中,所述调试请求用于请求调试选择出的索引信息对应的行为树。
根据本发明实施例的一个方面,提供了一种行为树调试处理方法,包括向调试工具发送游戏对象的行为树的信息,其中,所述行为树的信息用于在所述调试工具中绘制对应的树结构图,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;采集所述行为树被调用时的运行信息;将所述运行信息发送给所述调试工具,其中,所述运行信息用于使所述调试工具更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
进一步地,采集所述行为树被调用时的运行信息还包括:所述服务器采集所述行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
进一步地,向调试工具发送游戏对象的行为树的信息之前,还包括:发送所述游戏对象的至少一个行为树的索引信息给调试工具,其中,所述索引信息包括所述行为树的索引、所述行为树的运行信息和连接所述调试工具的网络通讯信息;发送用户从显示的索引信息中选择出的索引信息;接收所述调试工具发送的调试请求,所述调试请求用于请求调试选择出的索引信息对应的行为树。
进一步地,向所述调试工具发送所述游戏对象的行为树的信息包括:将所述游戏对象的行为树信息进行序列化;将序列化后的游戏对象的行为树信息发送给调试工具。
进一步地,所述游戏对象的行为树为人工智能行为树。
根据本发明实施例的另一个方面,还提供了一种行为树调试处理系统,包括:调试工具,存储在计算设备的存储介质中,用于接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;还用于接收所述服务器采集的所述行为树被调用时的运行信息;还用于根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息;调试管理模块,存储在服务器的存储介质中,用于向调试工具发送游戏对象的行为树的信息,其中,所述行为树的信息用于在所述调试工具中绘制对应的树结构图,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;还用于采集所述行为树被调用时的运行信息;还用于将所述运行信息发送给所述调试工具,其中,所述运行信息用于使所述调试工具更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
根据本发明实施例的另一个方面,还提供了一种行为树调试处理装置,包括:第一接收单元,用于接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;第二接收单元,用于接收所述服务器采集的所述行为树被调用时的运行信息;更新单元,用于根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
进一步地,所述第二接收单元包括:第一接收模块,用于接收所述服务器采集的所述行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
进一步地,所述更新单元包括:清除模块,用于清空所述树结构图上的显示;获取模块,用于根据获取到的当前接收到所述行为树在N个逻辑帧运行时被调用产生的运行信息更新所述树结果图。
进一步地,所述更新单元还包括:存储模块,用于将所清空的树结构图上的显示对应的数据进行存储,作为所述行为树的历史运行信息。
进一步地,所述更新单元包括:标记模块,用于根据所述运行信息对所述运行信息中的各个节点进行标记,其中,所述运行信息是当所述游戏对象运行时所述行为树中各个节点和各个节点的运行顺序的数据记录;显示模块,用于在所述树结构图上的显示所述标记。
进一步地,所述装置包括:第三接收单元,用于接收所述服务器发送的游戏对象的行为树的信息之前,接收所述服务器发送的游戏对象的至少一个行为树的索引信息;显示单元,用于对所述索引信息进行可视化显示;第四接收单元,用于接收用户从显示的索引信息中选择出的索引信息;第三发送单元,用于发送调试请求给游戏服务器,其中,所述调试请求用于请求调试选择出的索引信息对应的行为树。
根据本发明实施例的另一个方面,还提供了一种行为树调试处理装置,包括:第一发送单元,用于向调试工具发送游戏对象的行为树的信息,其中,所述行为树的信息用于在所述调试工具中绘制对应的树结构图,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;采集单元,用于采集所述行为树被调用时的运行信息;第二发送单元,用于将所述运行信息发送给所述调试工具,其中,所述运行信息用于使所述调试工具更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
进一步地,所述采集单元还包括:采集模块,用于所述服务器采集所述行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
进一步地,所述采集单元还包括:第一发送模块,用于向调试工具发送游戏对象的行为树的信息之前,发送所述游戏对象的至少一个行为树的索引信息给调试工具,其中,所述索引信息包括所述行为树的索引、所述行为树的运行信息和连接所述调试工具的网络通讯信息;第二发送模块,用于发送用户从显示的索引信息中选择出的索引信息;第二接收模块,用于接收所述调试工具发送的调试请求,所述调试请求用于请求调试选择出的索引信息对应的行为树。
进一步地,所述第一发送单元包括:序列化模块,用于将所述游戏对象的行为树信息进行序列化;第三发送模块,用于将序列化后的游戏对象的行为树信息发送给调试工具。
根据本发明实施例的另一个方面,还提供给了一种存储介质,所述存储介质上保存有程序,所述程序被运行时执行上所述的方法。
根据本发明实施例的另一个方面,还提供给了一种处理器,所述程序被运行时执行上述的方法。
根据本发明实施例中,采用了接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;接收所述服务器采集的所述行为树被调用时的运行信息;根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。通过本发明解决了现有技术中对游戏对象的行为树调试效率低的问题,从而可以直观、便捷和高效的调试复杂的行为树。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种行为树调试处理方法的流程图;
图2是根据本发明实施例的另一种行为树调试处理方法的流程图;
图3是根据本发明实施例的一种行为树调试处理系统的示意图;
图4是根据本发明实施例游戏服务器里与本发明调试功能相关的程序结构示意图;
图5是根据本发明实施例部署在PC上的调试工具的程序结构示意图;
图6是根据本发明实施例提供的行为树AI调试方法的一个实施流程示意图;
图7是根据本发明实施例中一个行为树结构示意图;
图8是根据本发明实施例AI调试过程中调试工具与游戏服务器间数据交互的实施流程示意图;
图9是根据本发明实施例调试工具上查看行为树历史运行记录的一个实施流程示意图;
图10是根据本发明实施例调试工具停止调试行为树AI的实施流程示意图;
图11是根据本发明实施例游戏服务器中行为树AI创建/销毁时广播通知所有调试工具的实施流程示意图;
图12是根据本发明实施例的一种行为树调试处理装置的结构图;以及
图13是根据本发明实施例的一种行为树调试处理装置的结构图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种行为树调试处理方法。图1是根据本发明实施例的一种行为树调试处理方法的流程图。如图1所示,该方法包括如下步骤:
步骤S102,接收服务器发送的游戏对象的行为树的信息,并根据行为树的信息绘制对应的树结构图,其中,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
步骤S104,接收服务器采集的行为树被调用时的运行信息;
步骤S106,根据运行信息更新树结构图,以在树结构图上可视化显示运行信息。
在上述步骤,采用了调试工具绘制行为树对应的树结构图,并且实时更新该树结构图的运行信息,使得行为树的树结构图可以如实的反映行为树的变化,及时作出调试的方法,这不同于现有技术中通过代码调试行为树的方式,通过本实施例中的方法,解决了现有技术中对游戏对象的行为树调试效率低的问题,从而可以直观、便捷和高效的调试复杂的行为树。
在行为树特别复杂和节点数量庞大的情况下,如果让调试人员对每一个行为树节点每一时间均记录编辑,人员成本十分高昂,此时,如果要直观准确的调试行为树节点的目的,就需要在进行上述步骤S104中设定服务器采集运行信息的时间点,在一个可选的实施方式中,接收服务器采集的行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。也就是在调试工具接收服务器采集的运行信息时,可以基于某个逻辑帧采集一个或者多个游戏对象的行为树的运行信息,从而有针对性的对所调试的游戏对象的行为树某一特定时刻的某个节点进行调试,方便更加准确快速的调试,提高了调试的效率并且节约了人员成本。
每当上述步骤中的调试工具开始对游戏对象的行为树进行调试时,在一个可选的实施方式中,根据运行信息更新树结构图需要先清空树结构图上的显示,并根据获取到的当前接收到行为树在N个逻辑帧运行时被调用产生的运行信息更新树结果图。树结构图上的显示包括行为树的信息和行为树上每个节点的标记,行为树的信息是缓存在缓存队列中的,原有缓存的历史记录队列需要先做清空处理,否则原有的缓存队列里的运行记录可能和当前调试的AI的行为树不是同一个,结构不吻合,旧的记录数据没法在当前行为树AI结构图上正确的标记出来。例如,网络服务器每一个逻辑帧采集一次被调试行为树AI的当前逻辑帧运行时所运行过的节点以及顺序的记录数据,并发送给调试工具,调试工具根据节点运行记录,刷新UI界面上的行为树状图,清除上一次的行为树节点运行标记,根据当前收到的AI节点运行记录,在行为树树状图上重新标记当前游戏逻辑帧运行的节点。
为了追溯查看行为树的各个节点的历史运行情况,在一个可选的实施方式中,将所清空的树结构图上的显示对应的数据进行存储,作为行为树的历史运行信息,从而更好的支持行为树的调试功能,使得行为树的调试效率更高,例如,调试工具支持AI运行历史运行信息的查看功能,每一帧游戏逻辑帧AI所有运行的节点记录数据调试工具都会进行保存作为行为树的历史运行信息,在调试工具上的UI界面上可以随时追溯查看行为树历史运行情况,当出现问题时,调试人员可以从调试工具发出暂停发送AI调试请求给服务器,服务器暂停发送行为树AI运行信息的相关数据给调试工具,可以在AI问题后停止在调试工具UI界面上刷新行为树节点运行标记,并通过历史运行记录便捷的定位AI运行问题,从而提高调试的效率降低成本。
根据运行信息更新树结构图时可以对每个行为树中节点进行标记,从而更加直观的显示行为树中各个节点的运行情况,在一个可选的实施方式中,即根据运行信息对运行信息中的各个节点进行标记,其中,运行信息是当游戏对象运行时行为树中各个节点和各个节点的运行顺序的数据记录;在树结构图上的显示标记。对节点的标记方式可以是以特殊颜色渲染树状图上各运行的节点,然后对每一个被标记的节点上用从0开始递增的数字标记当前逻辑帧AI从运行到结束时行为树上各节点被运行到的先后顺序。
在调试工具接收服务器发送的游戏对象的行为树的信息之前,在一个可选的实施方式中,首先,接收服务器发送的游戏对象的至少一个行为树的索引信息;对索引信息进行可视化显示;其次,接收用户从显示的索引信息中选择出的索引信息;最后,发送调试请求给游戏服务器,其中,调试请求用于请求调试选择出的索引信息对应的行为树。
通过上述步骤中的索引信息,使得调试工具在服务器中快速的找到某个游戏对象的行为中相对应的行为树信息,从而做出相应的请求和调试。
本发明实施例提供了一种行为树调试处理方法。图2是根据本发明实施例的另一种行为树调试处理方法的流程图。如图2所示,该方法包括如下步骤:
步骤S202,向调试工具发送游戏对象的行为树的信息,其中,行为树的信息用于在调试工具中绘制对应的树结构图,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
步骤S204,采集行为树被调用时的运行信息;
步骤S206,将运行信息发送给调试工具,其中,运行信息用于使调试工具更新树结构图,以在树结构图上可视化显示运行信息。
在上述步骤,采用了服务器向调试工具发送行为树被调用时的运行信息,并且实时更新该树结构图的运行信息,使得行为树的树结构图可以如实的反映行为树的变化,及时作出调试的方法,这不同于现有技术中通过代码调试行为树的方式,通过本实施例中的方法,本实施例中的服务器可以更好的支持调试工具进行调试和行为树的显示,解决了现有技术中对游戏对象的行为树调试效率低的问题,从而可以直观、便捷和高效的调试复杂的行为树。
在行为树特别复杂和节点数量庞大的情况下,采集行为树被调用时的运行信息可能需要调试人员对每一个行为树节点每一时间均记录编辑,人员成本十分高昂,因此,如果要直观准确的调试行为树节点的目的,就需要在进行上述步骤S204中设定服务器采集运行信息的时间点,在一个可选的实施方式中,服务器采集行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。也就是服务器采集的运行信息时,可以基于某个逻辑帧采集一个或者多个游戏对象的行为树的运行信息,从而减少了实时采集的行为树的信息量,有针对性的对所调试的游戏对象的行为树某一特定时刻的某个节点进行调试,方便更加准确快速的调试,提高了调试的效率并且节约了人员成本。
上述步骤中,向调试工具发送游戏对象的行为树的信息之前需要服务器将行为树的索引信息与调试工具中的索引信息相对应,从而找出待调试的游戏对象的行为树的相关信息,在一个可选的实施方式中,首先发送游戏对象的至少一个行为树的索引信息给调试工具,其中,索引信息包括行为树的索引、行为树的运行信息和连接调试工具的网络通讯信息;其次,发送用户从显示的索引信息中选择出的索引信息;最后,接收调试工具发送的调试请求,调试请求用于请求调试选择出的索引信息对应的行为树。
上述索引是为了便于简单快捷的找到在服务器中与调试工具中的索引相对应的行为树的信息,从而进行快速准确的调试,由于索引的存在,减少的存储以及计算量;在每一个被调试的游戏对象的行为树中AI都对应创建一个索引信息,里面记录了一个AI调试广播列表,广播列表里记录了所有对这个AI进行调试申请的调试工具,每一帧游戏逻辑帧AI执行完的调试数据都会发送给广播列表里记录的所有调试工具,广播列表里记录的是每一个调试工具的网络连接会话,调试工具的网络通讯信息是指AI调试广播列表和该网络连接会话,通过网络连接会话可以发送调试数据给对应的调试工具。
服务器在向调试工具发送游戏对象的行为树的信息时需要对行为树的信息进行处理,在一个可选的实施方式中,即,将游戏对象的行为树信息进行序列化;将序列化后的游戏对象的行为树信息发送给调试工具。例如,网络服务器发送调试工具请求调试的AI行为树各节点信息和树状结构信息数据并序列化发送给调试工具,调试工具反序列化数据信息,解析出行为树AI上各节点信息和树状结构,在UI界面上绘制出行为树树状图。
通过上述步骤,更加直观便捷地调试一棵复杂的行为树。
在一个可选的实施方式中,游戏对象的行为树为人工智能行为树。
本发明实施例提供了一种行为树调试处理方法。图3是根据本发明实施例一种行为树调试处理系统的结构图。如图3所示,该系统包括:
调试工具32,存储在计算设备的存储介质中,用于接收服务器发送的游戏对象的行为树的信息,并根据行为树的信息绘制对应的树结构图,其中,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;还用于接收服务器采集的行为树被调用时的运行信息;还用于根据运行信息更新树结构图,以在树结构图上可视化显示运行信息;
调试管理模块34,存储在服务器的存储介质中,用于向调试工具发送游戏对象的行为树的信息,其中,行为树的信息用于在调试工具中绘制对应的树结构图,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;还用于采集行为树被调用时的运行信息;还用于将运行信息发送给调试工具,其中,运行信息用于使调试工具更新树结构图,以在树结构图上可视化显示运行信息。
上述调试工具中可以搭建一个网络客户端,实现与游戏服务器的连接和数据通信;可以在pc机上部署一个AI调试工具,调试工具可以是一个pc上运行的桌面应用程序;调试人员可以通过调试工具选择要调试的游戏内AI对象,调试工具有相应UI界面可以图形化展示被调试AI的行为树图,并在行为树图上实时标记当前游戏逻辑帧所运行的行为树节点和执行顺序;由于网络游戏内对象AI都是运行在游戏服务器上,AI调试工具要获取到服务器上运行的AI数据,本发明采用网络通信方式获取,调试工具实时接收游戏服务器发送过来的AI运行记录数据,在调试工具和游戏服务器之间要建立一个稳定的网络连接。
游戏服务器里要专门搭建一个网络服务器监听和接受调试工具里网络客户端的连接请求,网络服务器提供固定的连接IP和端口;调试工具根据网络服务器事先提供的IP和端口设置好网络客户端要连接的IP和端口,调试工具启动时网络客户端随着启动,并连接上网络服务器;进一步地,网络服务器支持同时接受多个pc机上部署的调试工具进行网络连接请求,并独立管理各调试工具的网络连接与通信;调试工具连接上网络服务器后,网络服务器获取游戏服务器内所有运行了行为树AI的游戏内对象,诸如游戏内当前存在的怪物和非玩家控制角色(NPC)等对象AI的索引信息,通过网络传输发送给调试工具,并在调试工具UI界面上选择列表里展示;调试人员在调试工具UI界面选择列表上选择要调试查看的游戏对象的AI索引信息,调试工具要调试的对象是游戏服务器里正在运行的游戏对象比如怪物,boss等的行为树AI,这些游戏对象都可以有一个唯一标识信息去索引,比如游戏对象创建时的id等,调试工具通过这个索引信息就可以告诉服务器调试工具是要调试哪一个游戏对象的AI,服务器通过索引信息找到对应游戏对象的AI然后进行调试,服务器的AI调试管理模块里有专门的AIIndexList列表来管理所有当前运行游戏对象的全部AI索引信息,并会同步发送给调试工具,调试工具通过AI选择列表来选择要调试的AI。
调试人员从UI界面上可以直观地阅读图形化展示的行为树树状图以及当前运行到的各个节点,可以高效地观测行为树的实际运行情况,方便定位行为树AI的问题。
调试管理模块搭建游戏服务器里,调试管理模块实现的功能包括:调试管理模块收集游戏服务器里所有游戏对象的AI,当调试工具连接上网络服务器时,调试管理模块通过网络服务器发送所有游戏对象AI索引信息给调试工具;当游戏服务器创建具有行为树AI的游戏对象时,调试管理模块收集获取新增AI索引信息,并通过网络服务器发送给调试工具新增AI索引信息;当游戏服务器删除具有行为树AI的游戏对象时,调试管理模块删除该游戏对象的AI索引信息,并通过网络服务器发送通知调试工具删除对应AI索引信息;调试管理模块负责处理网络服务器收到的调试工具调试AI请求,调试模块收集被调试AI的行为树各节点信息和行为树结构信息,通过网络服务器发送给调试工具;调试管理模块接受调试工具的调试AI请求后,调试管理模块每一帧游戏逻辑帧都收集一次被调试AI的行为树节点运行记录,通过网络服务器发送给调试工具。
本实施例中用于AI调试的游戏服务器中的网络服务器和调试工具中的网络客户端之间的网络通信协议的设计可以采用TCP、UDP和HTTP等协议方式实现,其中TCP协议由于其面向连接,可靠的特点,网络连接建立好之后是是稳定的长连接,方便连接管理,确保了通信数据传输的可靠性。本发明的实施例中的网络连接具体将以TCP协议连接方式来实现。
下面以网络客户端、网路服务器和调试管理模块为例对上述实施例进行说明:
在对游戏服务器上游戏对象的AI进行调试时,需要在一个IP固定的后台linux开发机上运行游戏服务器进程,游戏服务器进程上需要搭建一个随着游戏服务器进程开启而启动的网络服务器AIServer,AIServer提供固定的连接IP和端口,可以接受第三方网络客户端的连接请求,并获取游戏服务器内正在运行的内存数据与之通信交互;需要提供一个能进行AI调试操作的PC终端,终端环境可以为台式电脑、笔记本电脑等,进行调试时,pc机上通过部署调试工具AIDebuger进行调试,调试工具可以是桌面应用程序,也可以是网页浏览器等既具备UI交互功能也具备网络通信功能的工具。
本实施例中网络通信设计采用的通信协议为TCP协议,TCP协议是一种面向连接的,可靠的基于字节流的通信协议,采用TCP协议进行通信连接可以保证所有连接建立后的长连接特性,方便服务器在调试模块与游戏客户端之间管理一个固定的通信连接,提高双方通信过程的效率。
具体实施时,游戏服务器进程上要部署一个AI调试管理模块AIDebugMng,用于处理AIServer接收的AIDebuger发送过来的调试请求操作,并管理游戏服务器上运行的各个AI对象的调试请求建立、撤销和实时收集AI运行记录,相关调试信息收集后通过AIServer发送给AIDebuger。
AIDebugMng内有游戏内对象AI索引信息列表AIIndexList,所有游戏服务器内当前存在的游戏对象的AI索引信息都会保存在AIIndexList里,AI索引信息可以是在游戏进程内索引到唯一游戏对象的对象分配自增id等信息;有AI调试对象列表AIDebugObjList,每一个被请求调试的AI都会在AIDebugObjList里有一个对应的调试管理对象AIDebugObj记录相关调试信息,AIDebugObj里记录了被调试AI的索引、被调试AI当前游戏逻辑帧运行的记录数据、请求调试对应AI的调试工具连接会话列表。
参见图4,是本实施例游戏服务器中与AI调试相关功能模块及其关联调试对象间连接的一个结构示意图。
本实施例支持AIServer接受多个pc机上部署的调试工具的同时连接,各调试工具与游戏服务器同时进行调试交互时相互独立,不互相干扰。
由于本实施例采用TCP网络通信方式,因此本实施例pc机上运行的AIDebuger的实现方式采用桌面应用程序的方式实现,可以用pc机任何支持的应用程序开发语言实现,本实施例采用python+pyqt语言进行开发,并通过py2exe工具打包成应用程序,其中pyqt库丰富的控件类型可以支持的UI界面功能实现。
AIDebuger的UI界面主要包括:
行为树展示界面,界面上可以放置表示行为树节点的UI控件,可以渲染行为树节点间的连接线,界面通过各节点UI控件和连线组成直观可阅读的行为树结构图;
AI选择列表,列表里可以查看到所有服务器上正在运行的游戏对象AI索引信息,通过AI选择列表可以选择要进行调试的游戏AI;
AI历史记录查询列表,列表里可以选择当前在调试AI一段时间内缓存的历史运行记录。
AIDebuger需要搭建一个TCP网络客户端NetClient,NetClient随着AIDebuger进程的启动而自行启动,NetClient启动后通过事先配置在AIDebuger里的AIServer的IP和端口,请求连接上AIServer,并和AIServer保持稳定的通信。
参见图5,是本实施例pc端部署的调试工具AIDebuger的一个结构示意图。
参见图6,是本实施例提供的行为树AI调试方法的一个步骤流程图。
PC端部署好调试工具AIDebuger后,本实施例提供的行为树AI调试方法通过在PC端操作AIDebuger,实现对游戏服务器内游戏对象的AI运行情况进行调试,整个调试流程包括以下步骤S601-步骤S603:
步骤S601:在后台linux开发机上部署启动好游戏服务器进程,AIServer随着进程的启动而启动,并一直监听调试工具的连接请求;AIDebugMng随着进程的启动而启动,并实时跟踪游戏对象AI的创建、销毁和运行,AIServer和AIDebugMng与游戏服务器同属一个进程,三者之间可以互相访问内存数据。
步骤S602:在PC机上启动调试工具AIDebuger,AIDebuger中的NetClient随着进程的启动而启动,并根据事先配置好的AIServer的ip与端口,连接上AIServer,AIServer从AIDebugMng中根据AIIndexList获取所有当前游戏对象AI索引信息、简介信息等序列化发送给AIDebuger,AIDebuger收集所有游戏对象信息,在AI选择列表里展示出来。
步骤S603:在调试人员在AIDebuger上的AI选择列表里选择感兴趣调试的游戏对象,并发送该对象的AI索引信息给AIServer,AIServer通过AIDebugMng处理AIDebuger的调试请求,实时地获取每一帧游戏逻辑帧被调试AI的行为树节点运行记录,发送给AIDebuger。
AIDebugMng发送给AIDebuger的AI调试信息包括行为树状结构信息和每一帧游戏逻辑帧行为树所运行的节点序号列表,其中行为树状结构信息用于在AIDebuger上绘制行为树图结构图。
行为树是由一系列节点组成的多叉树,其中节点类型可以划分为逻辑节点、条件判断节点和行为节点,其中逻辑节点包括Sequence、Selector、Not等代表逻辑含义的节点,行为节点包括各种丰富的AI行为中执行行为的节点,比如怪物执行攻击节点、执行移动节点等,条件判断节点包括各种AI行为执行前的条件判断节点,比如判断怪物是否符合条件释放技能、怪物是否可以移动等。
行为树节点根据不同类型规定是否可以有子节点分支,其中逻辑节点作为分支节点可以拥有一个或多个子节点分支,而条件节点和执行节点作为叶子节点不予许拥有子节点,每一帧游戏逻辑帧运行行为树时,行为树从根节点开始执行遍历行为树节点,每一个节点执行完相应行为逻辑后都要向父节点返回True或False,而父节点则根据已执行子节点返回值判断是否要继续执行剩余未执行子节点还是直接向父节点返回结果,当根节点返回结果时,该逻辑帧行为树执行完毕。
根据行为树执行原理,每一帧游戏逻辑帧行为树只会执行部分节点,并且被执行节点有先后顺序,每一个被执行节点同一帧内只会被执行一次,行为树通过每一帧游戏逻辑帧根据游戏对象的逻辑信息执行不同的节点,构成游戏对象丰富的AI行为。
参见图7,是一个游戏内怪物对象AI实例的一个行为树结构图,行为树结构对应的怪物每一帧游戏逻辑帧都会执行的AI行为是:
1-1:怪物判断当前位置是否超出追击距离,是的话则执行移动回家行为,行为树执行完毕,否则执行2-1分支行为;
2-1:怪物判断当前有没有可攻击目标,没有的话尝试搜索攻击目标,怪物有攻击目标时执行2-2分支行为,否则行为树执行完毕;
2-2:怪物追击目标到可攻击距离,怪物判断可以攻击目标,然后执行攻击目标,行为树执行完毕。
其中逻辑节点中Sequence相当于逻辑“与”的操作,Selector相当与逻辑“或”的操作。
参见图8,是本实施例一个行为树AI调试过程的步骤流程图,具体实施步骤包括步骤S801-S803:
步骤S801:AIDebugMng收到AIDebuger请求的AI索引信息,从游戏内对象管理器中根据索引待调试游戏对象,获取对象上的行为树数据结构,并序列化行为树状结构信息,通过AIServer发送给AIDebuger。
AIDebuger接收行为树状结构信息是为了在UI界面上绘制出被调试行为树的结构图,绘制行为树结构图需要绘制所有行为树节点还有各行为树节点间的层级连接关系连线,绘制出的行为树节点需要能在节点标签上表示节点类型、节点名称和节点参数,本实施例中AIDebugMng将行为树状结构信息转换成json格式数据进行序列化传送,json数据中对每个节点用键值对存储节点的类型、名称和参数已经拥有的子节点,AIDebuger通过json解析出所有节点的信息和父子层级关系,并在UI界面的行为树展示界面上绘制出树状结构图。
步骤S802:AIDebugMng创建被调试AI关联的AIDebugObj并加入AIDebugObjList中进行管理,AIDebugObj负责记录被调试的AI每帧游戏逻辑帧里所运行的行为树节点,负责维护一个AIDebuger广播列表,里面记录申请调试的AIDebuger与AIServer的网络连接,每帧游戏逻辑帧末将AIDebugObj记录的行为树节点运行记录广播发送给广播列表里所有记录的AIDebuger。上述AIDebugObjList列表是记录当前所有被调试的游戏对象AI的管理列表,每一个被调试的游戏对象AI都会创建一个对应的调试数据管理对象AIDebugObj,并加入AIDebugObjList中,AI调试管理模块要处理任何被调试的AI调试数据都通过这个列表找到对应AIDebugObj,然后对它进行操作。每一个被调试的游戏对象的AI都对应创建了一个AIDebugObj调试数据管理对象,里面记录了一个AI调试广播列表,广播列表里记录了所有对这个AI进行调试申请的调试工具,每一帧游戏逻辑帧AI执行完的调试数据都会发送给广播列表里记录的所有调试工具,广播列表里记录的是每一个调试工具的网络连接会话,通过网络连接会话可以发送调试数据给对应的调试工具。
为了收集到行为树节点的运行记录,行为树运行程序设计上要引入钩子(Hook)的消息通知机制,被调试的行为树AI每帧游戏逻辑帧里运行的节点都会发送自己在行为树中的序号到对应的AIDebugObj中保存起来。
每个行为树节点在一个结构已经确定的行为树里是可以通过一定约定规则通过一个递增唯一的序号来标识自己在行为树结构中的位置,比如通过树的前序遍历、中序遍历或后序遍历,可以根据每个节点访问的顺序给每个节点确定一个从0开始递增的序号分配给每个节点,行为树节点每帧运行后就将自身确定的序号发送给AIDebugObj。
AIDebugObj在游戏逻辑帧运行的帧末时会将本帧记录的被调试行为树所有运行的节点序号序列化后广播发送给广播列表里所有请求调试的AIDebuger,然后清空当前帧记录的序号列表,根据行为树运行原理,同一帧内同一个节点只会被运行一次,因此序号列表里不会出现重复序号。
步骤S803:AIDebuger每次收到行为树运行序号列表后,在UI界面的行为树结构图上清理上一次行为树运行节点标记,根据当前更新的行为树运行序号列表,在UI界面上的行为树结构图里按序号顺序确定当前最新行为树运行的节点,本实施例通过在节点图标位置上外围用特殊颜色边框渲染节点图标边框,并在边框旁边显示节点运行序号,各运行节点之间的连接线也通过特殊颜色渲染,以达到在行为树结构图上实时直观可视化阅读行为树AI运行情况的调试目的。
AIDebuger每次收到行为树运行序号列表后,会将序号列表缓存在本地,作为历史记录,调试人员在UI界面上可以从AI历史记录查询列表里选择要查看的某个历史时刻的AI运行情况;AI历史记录用一个队里进行缓存,队列有一个上限大小N,新的AI记录加进队里头后,如果队列达到上限,则将最旧的一个AI记录从队列末尾移除;AI历史记录查询列表里列举从0递增到N的整数值,代表要查询的从当前游戏逻辑运行帧倒数一定帧数的对应运行记录。比如调试工具本地设的历史记录缓存队列长度最大为100,那么,从一开始调试时起,队列为空的,每次收到AI运行记录都将记录存进队列里,收到100次之后队列达到上限,那么从收到第101次记录开始,队列原先的第1次记录就会被移除出去丢弃掉,确保队列长度会有一个上限;要对历史记录进行查询时,从查询列表里选择1则代表队列里最近的一次运行记录,以此类推,选择100则代表缓存队列里记录的最早的一次运行记录。
参见图9,是本实施例中调试人员查看行为树历史运行记录的一个步骤流程图,流程的步骤包括步骤S901-S902:
步骤S901:调试人员从AIDebuger上操作停止当前行为树AI调试请求给AIServer,AIDebugMng收到请求后停止发送被调试行为树AI实时运行记录给AIDebuger,AIDebuger不再收到行为树运行记录,UI界面上的行为树展示界面里停止刷新行为树实时运行节点记录标记。
步骤S902:调试人员在AI历史记录查询列表里选择要距离当前帧倒数n(1<n<=N)帧的对应行为树节点运行记录,选择确认后,行为树展示界面上的行为树结构图上当前标记的行为树运行记录标记会被清除,如何根据帧数从历史记录队列里获取该帧运行的节点序号列表,根据序号列表在行为树结构图里重新标记该帧行为树运行节点。
AIDebuger可以随时停止对游戏服务器上AI的调试,从AIDebuger方面能发起的停止AI调试的操作有调试人员主动在操作界面上执行停止操作、调试人员切换调试其他AI、AIDebuger与AIServer断开网络连接等。
参见图10,是本实施例中AIDebuger停止调试AI的处理步骤流程图,流程的步骤包括步骤S1001-S1002:
步骤S1001:AIDebugMng收到AIServer的AIDebuger停止调试AI通知,通知的触发方式有AIDebuger主动发送请求给AIServer,AIDebuger发送请求给AIServer有调试人员主动执行停止调试和调试人员切换调试AI两种情况;AIDebuger月AIServer发生网络断开连接,包括结束AIDebuger进程触发网络连接关闭,网络环境不好触发连接关闭等。
步骤S1002:AIDebugMng从AIDebugObjList中搜索AIDebuger对应调试的AIDebugObj,从AIDebugObj的AIDebuger广播列表里移除AIDebuger的相关信息,如果广播列表里还有其他AIDebuger,说明还有其他AIDebuger对此AI进行调试,AIDebugObj不清理;如果广播列表为空,则说明没有AIDebuger要对此AIDebugObj对应的AI进行调试,AIDebugMng清理AIDebugObj对象,清理的内容包括AIDebugObj对应行为树的Hook消息机制关闭,停止收集行为树每帧的运行记录,将AIDebugObj从AIDebugObjList中移除。
本实施例中的AIServer支持多个AIDebuger的连接请求,支持在不同PC机上同时开启AIDebuger对同一个游戏服务器上的AI对象进行调试,也支持不同AIDebuger对同一个AI进行调试,当多个AIDebuger对同一个AI进行调试时,AIDebugMng收到AI调试请求后,首先搜索AIDebugObjList里有没有被调试AI已经对应的AIDebugObj存在,存在则说明当前AI已经处于调试中,只须在AIDebugObj的广播列表里加入新增申请调试AIDebuger的连接信息即可。
游戏服务器中的游戏对象一直是在不断动态增减的,因此对应的游戏对象的行为树AI也是跟随着增减的,当游戏服务器内的游戏对象的AI行为树新创建或销毁时,都要通知AIDebugMng,AIDebugMng会广播给所有连接到AIServer的AIDebuger,更新AIDebuger上的AI选择列表,将新增或减少的AI索引信息加入选择列表或从列表移除。
参见图11,是本实施例中游戏服务器中AI创建/销毁时AIDebugMng的广播处理流程,流程步骤包括步骤S1101-S1102:
步骤S1101:游戏服务器内有新的行为树AI创建/销毁时,AIDebugMng收到AI的索引信息,如果是新增AI,在AIIndexList里添加AI索引信息;如果是销毁AI,在AIIndexList里销毁AI信息,如果销毁AI当前有对应的AIDebugObj,则AIDebugMng清理AIDebugObj,清理操作内容同步骤S402,AIDebugMng将新增/销毁AI索引信息广播发送给所有连接上AIServer的AIDebuger。
步骤S1102:AIDebuger收到AI创建/销毁的索引信息后,在AI选择列表里新增/移除对应的AI索引信息,如果当前被移除的AI是当前AIDebuger在进行调试的,则在AIDebuger显示提示调试中的AI已被销毁的信息。
本发明提供的游戏服务器上的行为树AI调试方法和具体实施例,克服了行为树AI因运行频率高且行为树节点多,结构复杂导致的采用传统打log方式调试效率低下的问题,利用了远程网络连接数据传输的方式,利用pc机上方便部署图形化应用程序,方便调试人员查看的特点,在PC机上部署可视化阅读行为树AI每一帧运行情况的调试工具,实时接收游戏服务器上被调试AI的运行记录,支持调试人员直观查看被调试AI运行情况,提高了对游戏服务器AI调试的效率。
本发明实施例还提供了一种行为树调试处理装置,该装置可以通过第一接收单元1202、第二接收单元1204和更新单元1206实现其功能。需要说明的是,本发明实施例的一种行为树调试处理装置可以用于执行本发明实施例所提供的一种行为树调试处理方法,本发明实施例的一种行为树调试处理方法也可以通过本发明实施例所提供的一种行为树调试处理装置来执行。图12是根据本发明实施例的一种行为树调试处理装置的示意图。如图12所示,图12是根据本发明实施例的一种行为树调试处理装置的结构图。一种行为树调试处理装置,包括:
第一接收单元1202,用于接收服务器发送的游戏对象的行为树的信息,并根据行为树的信息绘制对应的树结构图,其中,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
第二接收单元1204,用于接收服务器采集的行为树被调用时的运行信息;
更新单元1206,用于根据运行信息更新树结构图,以在树结构图上可视化显示运行信息。
在一个可选的实施方式中,第二接收单元包括:第一接收模块,用于接收服务器采集的行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
在一个可选的实施方式中,更新单元包括:清除模块,用于清空树结构图上的显示;获取模块,用于根据获取到的当前接收到行为树在N个逻辑帧运行时被调用产生的运行信息更新树结果图。
在一个可选的实施方式中,更新单元还包括:存储模块,用于将所清空的树结构图上的显示对应的数据进行存储,作为行为树的历史运行信息。
在一个可选的实施方式中,更新单元包括:标记模块,用于根据运行信息对运行信息中的各个节点进行标记,其中,运行信息是当游戏对象运行时行为树中各个节点和各个节点的运行顺序的数据记录;显示模块,用于在树结构图上的显示标记。
在一个可选的实施方式中,装置包括:第三接收单元,用于接收服务器发送的游戏对象的行为树的信息之前,接收服务器发送的游戏对象的至少一个行为树的索引信息;显示单元,用于对索引信息进行可视化显示;第四接收单元,用于接收用户从显示的索引信息中选择出的索引信息;第三发送单元,用于发送调试请求给游戏服务器,其中,调试请求用于请求调试选择出的索引信息对应的行为树。
本发明实施例还提供了另一种行为树调试处理装置,包括:
第一发送单元1302,用于向调试工具发送游戏对象的行为树的信息,其中,行为树的信息用于在调试工具中绘制对应的树结构图,行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
采集单元1304,用于采集行为树被调用时的运行信息;
第二发送单元1306,用于将运行信息发送给调试工具,其中,运行信息用于使调试工具更新树结构图,以在树结构图上可视化显示运行信息。
在一个可选的实施方式中,采集单元还包括:采集模块,用于服务器采集行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
在一个可选的实施方式中,采集单元还包括:第一发送模块,用于向调试工具发送游戏对象的行为树的信息之前,发送游戏对象的至少一个行为树的索引信息给调试工具,其中,索引信息包括行为树的索引、行为树的运行信息和连接调试工具的网络通讯信息;第二发送模块,用于发送用户从显示的索引信息中选择出的索引信息;第二接收模块,用于接收调试工具发送的调试请求,调试请求用于请求调试选择出的索引信息对应的行为树。
在一个可选的实施方式中,第一发送单元包括:序列化模块,用于将游戏对象的行为树信息进行序列化;第三发送模块,用于将序列化后的游戏对象的行为树信息发送给调试工具。
通过上述装置,实现在图形化行为树状图上直观地标记出每一帧游戏逻辑帧行为树AI执行到的行为树节点以及执行顺序,可以直观地阅读出行为树AI的实际运行情况,有效地提高行为树AI调试效率。
本发明实施例提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述方法。
本发明实施例提供了一种处理器,处理器包括处理的程序,其中,在程序运行时控制处理器所在设备执行上述方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种行为树调试处理方法,其特征在于,包括:
接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
接收所述服务器采集的所述行为树被调用时的运行信息;
根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
2.根据权利要求1所述的方法,其特征在于,接收所述服务器采集的所述行为树被调用时的运行信息包括:
接收所述服务器采集的所述行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
3.根据权利要求2所述的方法,其特征在于,根据所述运行信息更新所述树结构图包括:
清空所述树结构图上的显示,并根据获取到的当前接收到所述行为树在N个逻辑帧运行时被调用产生的运行信息更新所述树结构图。
4.根据权利要求3所述的方法,其特征在于,还包括:
将所清空的树结构图上的显示对应的数据进行存储,作为所述行为树的历史运行信息。
5.根据权利要求1所述的方法,其特征在于,根据所述运行信息更新所述树结构图包括:
根据所述运行信息对所述运行信息中的各个节点进行标记,其中,所述运行信息是当所述游戏对象运行时所述行为树中各个节点和各个节点的运行顺序的数据记录;
在所述树结构图上的显示所述标记。
6.根据权利要求1所述的方法,其特征在于,接收所述服务器发送的游戏对象的行为树的信息之前,所述方法还包括:
接收所述服务器发送的游戏对象的至少一个行为树的索引信息;
对所述索引信息进行可视化显示;
接收用户从显示的索引信息中选择出的索引信息;
发送调试请求给游戏服务器,其中,所述调试请求用于请求调试选择出的索引信息对应的行为树。
7.一种行为树调试处理方法,其特征在于,包括:
向调试工具发送游戏对象的行为树的信息,其中,所述行为树的信息用于在所述调试工具中绘制对应的树结构图,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
采集所述行为树被调用时的运行信息;
将所述运行信息发送给所述调试工具,其中,所述运行信息用于使所述调试工具更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
8.根据权利要求7所述的方法,其特征在于,采集所述行为树被调用时的运行信息还包括:
服务器采集所述行为树在N个逻辑帧运行时被调用产生的运行信息,其中,N大于等于1。
9.根据权利要求7所述的方法,其特征在于,向调试工具发送游戏对象的行为树的信息之前,还包括:
发送所述游戏对象的至少一个行为树的索引信息给调试工具,其中,所述索引信息包括所述行为树的索引、所述行为树的运行信息和连接所述调试工具的网络通讯信息;
发送用户从显示的索引信息中选择出的索引信息;
接收所述调试工具发送的调试请求,所述调试请求用于请求调试选择出的索引信息对应的行为树。
10.根据权利要求7所述的方法,其特征在于,向所述调试工具发送所述游戏对象的行为树的信息包括:
将所述游戏对象的行为树信息进行序列化;
将序列化后的游戏对象的行为树信息发送给调试工具。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述游戏对象的行为树为人工智能行为树。
12.一种行为树调试处理系统,其特征在于,包括:
调试工具,存储在计算设备的存储介质中,用于接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;还用于接收所述服务器采集的所述行为树被调用时的运行信息;还用于根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息;
调试管理模块,存储在服务器的存储介质中,用于向调试工具发送游戏对象的行为树的信息,其中,所述行为树的信息用于在所述调试工具中绘制对应的树结构图,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;还用于采集所述行为树被调用时的运行信息;还用于将所述运行信息发送给所述调试工具,其中,所述运行信息用于使所述调试工具更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
13.一种行为树调试处理装置,其特征在于,包括:
第一接收单元,用于接收服务器发送的游戏对象的行为树的信息,并根据所述行为树的信息绘制对应的树结构图,其中,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
第二接收单元,用于接收所述服务器采集的所述行为树被调用时的运行信息;
更新单元,用于根据所述运行信息更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
14.一种行为树调试处理装置,其特征在于,包括:
第一发送单元,用于向调试工具发送游戏对象的行为树的信息,其中,所述行为树的信息用于在所述调试工具中绘制对应的树结构图,所述行为树的信息包括行为树的结构信息和行为树中各个节点的信息;
采集单元,用于采集所述行为树被调用时的运行信息;
第二发送单元,用于将所述运行信息发送给所述调试工具,其中,所述运行信息用于使所述调试工具更新所述树结构图,以在所述树结构图上可视化显示所述运行信息。
15.一种存储介质,其特征在于,所述存储介质上保存有程序,所述程序被运行时执行权利要求1-6中任一项所述的方法或者执行权利要求7-10中任一项所述的方法。
16.一种处理器,其特征在于,程序被运行时执行权利要求1-6中任一项所述的方法或者执行权利要求7-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710308781.4A CN107085519B (zh) | 2017-05-04 | 2017-05-04 | 行为树调试处理方法、装置、系统、存储介质和处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710308781.4A CN107085519B (zh) | 2017-05-04 | 2017-05-04 | 行为树调试处理方法、装置、系统、存储介质和处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107085519A CN107085519A (zh) | 2017-08-22 |
CN107085519B true CN107085519B (zh) | 2020-09-11 |
Family
ID=59611998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710308781.4A Active CN107085519B (zh) | 2017-05-04 | 2017-05-04 | 行为树调试处理方法、装置、系统、存储介质和处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107085519B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943707B (zh) * | 2017-12-19 | 2021-02-19 | 网易(杭州)网络有限公司 | 行为树的测试方法、装置和存储介质以及终端 |
CN110413403A (zh) * | 2018-04-28 | 2019-11-05 | 武汉斗鱼网络科技有限公司 | 一种应用服务自主检控方法、存储介质、设备及系统 |
CN108958954B (zh) * | 2018-07-05 | 2021-05-25 | 北京微播视界科技有限公司 | 模块间的消息传递方法、装置、电子设备和计算机可读介质 |
CN109343913B (zh) * | 2018-10-22 | 2021-09-24 | 竞技世界(北京)网络技术有限公司 | 一种游戏行为树控制方法 |
CN109999495B (zh) * | 2019-03-28 | 2023-02-28 | 网易(杭州)网络有限公司 | 人工智能ai单元状态信息的处理方法及系统 |
CN110008304A (zh) * | 2019-04-03 | 2019-07-12 | 网易(杭州)网络有限公司 | 行为树的差异可视化处理方法和装置 |
CN110083541B (zh) * | 2019-04-30 | 2024-02-02 | 网易(杭州)网络有限公司 | 游戏测试方法、装置、计算机存储介质和电子设备 |
CN111249733B (zh) * | 2020-01-09 | 2023-10-13 | 完美世界(北京)软件科技发展有限公司 | 一种创建虚拟对象的方法和装置 |
CN111736837B (zh) * | 2020-08-25 | 2020-11-24 | 银联商务股份有限公司 | 网页操作的还原方法、装置、设备、可读存储介质及系统 |
CN112749098A (zh) * | 2021-01-28 | 2021-05-04 | 深圳市东微智能科技股份有限公司 | 行为树的调试方法、设备及介质 |
CN116764231A (zh) * | 2022-03-08 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 信息显示方法、系统、装置、计算机设备及存储介质 |
CN115545213B (zh) * | 2022-10-13 | 2023-04-18 | 北京鼎成智造科技有限公司 | 一种基于图形化行为树和强化学习的建模方法及装置 |
CN115957510B (zh) * | 2023-02-03 | 2023-11-10 | 北京畅游时代数码技术有限公司 | 一种角色行为控制的方法及系统 |
CN116832439B (zh) * | 2023-05-17 | 2024-06-07 | 广州三七极梦网络技术有限公司 | 一种游戏数据刷新系统的处理方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102933268A (zh) * | 2010-04-05 | 2013-02-13 | 索尼电脑娱乐公司 | 游戏装置 |
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
US8758125B2 (en) * | 2009-07-24 | 2014-06-24 | Wms Gaming, Inc. | Controlling event-driven behavior of wagering game objects |
CN106155658A (zh) * | 2015-04-08 | 2016-11-23 | 广州四三九九信息科技有限公司 | 基于u3d插件机制实现的行为树编辑器 |
CN106250100A (zh) * | 2016-08-15 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 系统逻辑控制方法及装置 |
-
2017
- 2017-05-04 CN CN201710308781.4A patent/CN107085519B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8758125B2 (en) * | 2009-07-24 | 2014-06-24 | Wms Gaming, Inc. | Controlling event-driven behavior of wagering game objects |
CN102933268A (zh) * | 2010-04-05 | 2013-02-13 | 索尼电脑娱乐公司 | 游戏装置 |
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
CN106155658A (zh) * | 2015-04-08 | 2016-11-23 | 广州四三九九信息科技有限公司 | 基于u3d插件机制实现的行为树编辑器 |
CN106250100A (zh) * | 2016-08-15 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 系统逻辑控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
游戏人工智能关键技术研究与应用;何赛;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150815(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107085519A (zh) | 2017-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107085519B (zh) | 行为树调试处理方法、装置、系统、存储介质和处理器 | |
WO2021088724A1 (zh) | 一种测试方法及装置 | |
JP6755527B2 (ja) | モバイルゲームのためのデータ処理方法および装置 | |
CN109508186A (zh) | 一种基于iOS可视化埋点的数据采集分析方法及系统 | |
JP2553307B2 (ja) | プロセス監視方法 | |
CN108306748B (zh) | 网络故障定位方法、装置及交互装置 | |
CN107018046A (zh) | 一种数据采集方法、装置、终端及存储介质 | |
CN110489391A (zh) | 一种数据处理方法及相关设备 | |
CN109672583A (zh) | 网络监控方法、设备、存储介质及装置 | |
CN108600779B (zh) | 一种基于视频内容的目标对象操作方法及装置 | |
CN113018867A (zh) | 一种特效文件的生成、播放方法、电子设备及存储介质 | |
CN110912751A (zh) | 一种网络设备拓扑图生成方法及相关装置 | |
CN109347689A (zh) | 一种设备监控方法及系统 | |
CN109525466A (zh) | 数据节点监听方法及装置 | |
WO2023040259A1 (zh) | 资源告警分析方法、装置、电子设备和存储介质 | |
CN106559498A (zh) | 风控数据收集平台及其收集方法 | |
CN112131112B (zh) | 操作信息的获取方法和装置、存储介质及电子设备 | |
CN104714718B (zh) | 交互应用中标记可操作图标的方法和装置 | |
CN113992553B (zh) | 一种基于微服务的平台化流量生成系统、方法、计算机及存储介质 | |
CN108654088B (zh) | 程序调试方法和装置、存储介质及电子装置 | |
CN108737487B (zh) | 数据同步方法和装置、存储介质及电子装置 | |
CN109999495B (zh) | 人工智能ai单元状态信息的处理方法及系统 | |
KR102558874B1 (ko) | Devs를 적용한 3d 물리엔진 계층구조 기반 시뮬레이션 제공 시스템 및 그 제공방법 | |
CN103377286A (zh) | 数据库历史管理方法及其数据库历史管理系统 | |
CN113239074B (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 |