[发明专利]行为树的静态解析、执行以及优化方法和装置有效
申请号: | 201511005196.4 | 申请日: | 2015-12-28 |
公开(公告)号: | CN105653271B | 公开(公告)日: | 2018-12-21 |
发明(设计)人: | 刘晗 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 深圳新创友知识产权代理有限公司 44223 | 代理人: | 江耀纯 |
地址: | 310052 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 行为 静态 解析 执行 以及 优化 方法 装置 | ||
本发明公开了一种静态解析行为树的方法,包括:依次读取原始行为树文件中的至少部分连续节点的节点信息;根据读取到的所述至少部分连续节点中的第一个节点的节点信息生成空的脚本文件;依次将读取到的每一个节点的节点信息生成对应的节点函数并写入所述脚本文件中,从而得到用于解析所述原始行为树文件的至少部分连续节点的脚本文件。本发明公开的静态解析行为树的方法有效提高行为树执行效率、并降低行为树执行消耗。
技术领域
本发明涉及游戏技术领域,尤其涉及一种静态解析行为树的方法和装置、行为树执行方法和装置、行为树运行优化方法和装置、在游戏运行中执行行为树的方法和装置、以及在游戏运行中执行行为树的优化方法和装置。
背景技术
在现有技术中,行为树通常使用运行时动态解析的工作方式。比如在即时对战类游戏中,非玩家控制的战斗单位每帧都会调用一次行为树来执行自己的逻辑,调用的过程会解析一次行为树节点的参数,据此决定行为。当游戏场景中存在的战斗单位很多时,执行行为树将占用大量CPU时间,严重影响游戏的运行效率。根据实际的统计数据,在一个帧率为30的即时对战类游戏中,战场中同时存在的战斗单位总数大概在20到30个,按每个战斗单位每帧执行一次行为树来计算,游戏每秒钟将执行约1000次行为树,占用了整个客户端运行时间的30%-40%。其中20%-25%来自于解析参数,10%左右来自于行为树节点的相互调用,5%左右是其他消耗。解析参数的消耗是最大的,原因主要是参数类型的多样性,例如,一个节点要判断一定范围L内的敌方单位不大于N,那么行为树执行到这个节点时的解析逻辑是:取出参数L;根据L选取周围的敌方单位;获得周围的敌方单位数目n;解析出“不大于”的含义和参数N;判断n是否大于N,并将结果返回给上一层节点。注意到上述过程的每一步都是不确定的,特别是判断“不大于”这个操作,在解析节点中根据这里的内容,可能会执行不同的逻辑。特别地,当每一帧都要重复解析每个节点的时候,占用的时间会非常大,从而导致游戏逻辑卡顿。
在某些应用中也会用到一些优化方法,比如针对相同的参数,记住上次的执行结果。但是这种方法适用范围有限,只能针对特定的节点实现,并且难于调试,在出现了错误的时候难以定位,如果行为树节点的参数填写有误,也没有办法及时发现,给程序调试增加比较大的困难。
发明内容
本发明所要解决的问题是:如何有效提高行为树执行效率、并降低行为树执行消耗。
为了实现上述目的,本发明实施例提供了一种静态解析行为树的方法,包括:
依次读取原始行为树文件中的至少部分连续节点的节点信息;
根据读取到的所述至少部分连续节点中的第一个节点的节点信息生成空的脚本文件;
依次将读取到的每一个节点的节点信息生成对应的节点函数并写入所述脚本文件中,从而得到用于解析所述原始行为树文件的至少部分连续节点的脚本文件。
作为上述方案的改进,所述至少部分连续节点包括根节点;
所述根据读取到的所述至少部分连续节点中的第一个节点的节点信息生成空的脚本文件具体为:
根据所述根节点的节点信息对应生成所述空的脚本文件。
作为上述方案的改进,所述至少部分连续节点包括所述原始行为树文件中的全部节点;
所述依次将读取到的每一个节点的节点信息生成对应的节点函数并写入空的脚本文件中,从而得到用于解析所述原始行为树文件的至少部分连续节点的脚本文件具体包括步骤:
当读取到的节点为根节点时,根据所述根节点的节点信息在所述脚本文件中生成对应的入口函数;
当读取到的节点为子节点时,根据所述子节点的节点信息在所述脚本文件中生成对应的节点函数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201511005196.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种模块产品软件自动识别硬件的方法和装置
- 下一篇:字符大小的调整方法及装置