[发明专利]一种2D网格寻路方法、装置及存储介质在审
申请号: | 201711316317.6 | 申请日: | 2017-12-12 |
公开(公告)号: | CN108090155A | 公开(公告)日: | 2018-05-29 |
发明(设计)人: | 刘礼葵;陆利民 | 申请(专利权)人: | 苏州蜗牛数字科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06Q10/04 |
代理公司: | 北京德崇智捷知识产权代理有限公司 11467 | 代理人: | 王金双 |
地址: | 215000 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 寻路 网格 存储介质 区块 连通关系 动态场景 实时环境 邻接 分辨率 内区域 分级 构建 可用 算法 分段 响应 规划 | ||
一种2D网格寻路方法、装置及存储介质,所述方法包括步骤:根据指定的分辨率对2D网格进行规则区块的划分;基于碰撞大小,构建单个规则区块内的区域并确定邻接规则区块内区域的连通关系;基于区域的连通关系,在区域之间进行分级分段寻路。本发明的2D网格寻路方法、装置及存储介质,相对于没有层次划分的普通A星算法,在大规模地图下,采用层次划分从而极大地降低寻路响应时间(从秒级降低到毫秒级),使寻路可用于实时环境中。而相对于采用普通的层次划分的寻路方法,本发明2D网格寻路方法、装置及存储介质,还支持动态场景修改以及不同碰撞大小的寻路需求,并且规划出来的路径更自然。
技术领域
本发明涉及2D网格寻路技术领域,特别是涉及一种适用于层次划分且支持动态场景修改以及不同碰撞大小的2D网格寻路方法、装置及存储介质。
背景技术
2D网格及导航网格(NavMesh)是目前游戏业内场景寻路时常用的数据组织方法。其中,2D网格结构简单,主要用于平面游戏中;导航网格则常用于不需要支持角色碰撞或者3D寻路的系统中。
寻路过程中常用的搜寻算法为A*算法(俗称A星算法),A星算法既可用于2D网格的寻路中,也可用于导航网格的寻路中。A星算法应用于2D网格中时,由于其内部需要进行排序,当搜索范围增大时,其搜索性能会急剧下降,导致其不可用于实时环境。
寻路时,业内一般会将2D网格划分为多级的结构(即层次划分),层次划分时,最精细的级别为原始网格信息,往上划分时逐渐降低分辨率,同时维护新的级别之间各个节点的连通关系。但是基于层次划分的方法,很难支持动态场景修改以及不同碰撞大小的寻路需求。
因此,目前亟需一种适用于层次划分且支持动态场景修改以及不同碰撞大小的2D网格寻路方法。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种2D网格寻路方法、装置及存储介质,可以适用于层次划分且支持动态场景修改以及不同碰撞大小。
为实现上述目的,本发明提供的2D网格寻路方法,包括以下步骤:
根据指定的分辨率对2D网格进行规则区块的划分;
基于碰撞大小,构建单个规则区块内的区域并确定邻接规则区块内区域的连通关系;
基于区域的连通关系,在区域之间进行分级分段寻路。
进一步地,所述基于碰撞大小,构建单个规则区块内的区域的步骤是:
依次遍历规则区块内的格子,若某一格子满足碰撞大小,则查找与所述某一格子直接相邻的相同碰撞大小的格子是否已经属于某个区域,是则将所述某一格子加入所述某个区域,否则新建一个区域并将所述某一格子加入新建的区域。
进一步地,以某一格子为中心,若其周围的N×N个格子都可行走,则所述某一格子满足规定的碰撞大小,其中,规定的碰撞大小为N×N个格子,N为正整数。
进一步地,所述确定邻接规则区块内区域的连通关系的步骤是:
搜索规则区块边缘满足碰撞大小的格子与临接的规则区块内的区域是否连通,是则格子所在区域与临接的规则区块内的区域连通。
进一步地,所述基于区域的连通关系,在区域之间进行分级分段寻路的步骤包括以下步骤:
根据区域的连通关系,在区域之间进行粗糙级别的区域寻路;根据区域寻路的结果,分次地对每段区域路线进行细化寻路。
进一步地,所述的2D网格寻路方法,还包括步骤:
若修改的格子导致两个区域之间连通,则将所述两个区域合并,合并前所述两个区域与临接的规则区块内的区域的连通关系也进行合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州蜗牛数字科技股份有限公司,未经苏州蜗牛数字科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711316317.6/2.html,转载请声明来源钻瓜专利网。