CN115779424B - 一种导航网格寻路方法、装置、设备及介质 - Google Patents
一种导航网格寻路方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115779424B CN115779424B CN202310077531.XA CN202310077531A CN115779424B CN 115779424 B CN115779424 B CN 115779424B CN 202310077531 A CN202310077531 A CN 202310077531A CN 115779424 B CN115779424 B CN 115779424B
- Authority
- CN
- China
- Prior art keywords
- target
- path
- node position
- polygon
- determining
- 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
Abstract
本发明涉及一种导航网格寻路方法、装置、设备及介质,具体包括:确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图;在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据;判断所述目标对象是否能通过与关口有交集的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径。本发明完善了传统的导航网格寻路算法无法满足SLG游戏中动态身份标识数据的地形寻路的不足。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种导航网格寻路方法、装置及介质。
背景技术
导航网格寻路算法在游戏世界中可用于实现动态物体自动寻路,尤其可以让游戏角色避开游戏场景的障碍物而从起点到达终点。导航网格寻路算法通常分为生成导航网格和利用导航网格进行寻路两个步骤,目前游戏中最普遍使用的导航网格寻路开源库是Recast Navigation,其中的Recast库是专门用于自动化生成导航网格的,其中的Detour库则是利用Recast库生成的导航网格做寻路操作。
Recast库首先将整个场景模型体素化(Voxelization),根据体素(Voxel)顶部可供穿行的空间过滤掉不符合要求的体素(Voxel)并初步计算出可行走面,再依照Recast库提供的算法将可行走面切分为不同的区域(Region),然后根据区域(Region)生成出轮廓并将轮廓分割成凸多边形,最后将凸多边形进行网格三角化,即生成了导航网格。Detour库首先寻找离起点和终点距离最近的凸多边形,再通过A星算法找出起点到终点所经过的凸多边形序列。
然而,在SLG游戏中,目前采用Recast Navigation开源库的导航网格寻路算法虽然可以实现人物寻路,但不能满足有动态身份标识数据的地形寻路功能。例如,在一些SLG游戏中,关卡会随着占领角色的变换而动态更新通过权限,虽然可以提前判断关卡的权限标识再进行导航网格寻路算法,但费时费力,从而加重了服务器的处理负担。
发明内容
本发明的目的在于提供一种导航网格寻路方法、装置、设备及存储介质,采用图形学知识修改传统的导航网格寻路算法,以缓解上述技术缺陷。
第一方面,本发明提供了一种导航网格寻路方法,包括:
确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图;
在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,或者,将所述导航网格地图上与关口有交集的若干个多边形进行重构,并对重构后与关口完全重叠的多边形添加标识信息;
判断所述目标对象是否能通过与关口有交集的多边形,或者,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径。
进一步的,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,具体包括:
创建哈希表;
以所述若干个关口信息为所述哈希表的键值对的值,并存储到所述哈希表;
以所述导航网格地图上的若干个多边形为所述哈希表的键值对的键,通过哈希函数将所述键值对的键转换为哈希码,并将所述哈希码存储到所述哈希表。
进一步的,判断所述目标对象是否能通过与关口有交集的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S301:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S302:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小;
S303:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S304;
S304:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤303。
更进一步的,所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过与关口有交集的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S303,否则直接进入步骤S303。
进一步的,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S401:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S402:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过有标识信息的多边形,且所述目标节点位置的寻路消耗值F最小;
S403:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S404;
S404:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤403。
更进一步的,所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过有标识信息的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过有标识信息的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S403,否则直接进入步骤S403。
更进一步的,所述寻路消耗值F的计算公式为F=G+H,G是指所述起始位置到所述当前节点位置的实际寻路消耗值,H是指所述当前节点位置到所述目标位置的预估寻路消耗值。
第二方面,本发明提供了一种寻路装置,包括:
生成模块,用于确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图;
第一处理模块,用于在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,或者,将所述导航网格地图上与关口有交集的若干个多边形进行重构,并对重构后与关口完全重叠的多边形添加标识信息;
第二处理模块,用于判断所述目标对象是否能通过与关口有交集的多边形,或者,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器及存储在存储器上的计算机程序,当所述计算机程序在处理器上被执行时,实现上述方法中任一项所述的导航网格寻路方法。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时实现上述方法中任一项所述的导航网格寻路方法。
本发明的技术方案涉及一种导航网格寻路方法、装置、设备及介质,采用图形学知识修改传统的导航网格寻路算法,完善传统的导航网格寻路算法无法满足SLG游戏中动态身份标识数据的地形寻路的不足,拓展了导航网格算法在SLG游戏的应用,降低了服务器运行成本,提高了游戏地图寻路的效率。
附图说明
图1是本发明实施例提供的一种导航网格寻路方法的流程示意图;
图2是本发明实施例提供的一种导航网格寻路方法的多边形和关口的直接定址法哈希表示意图;
图3是本发明实施例提供的一种导航网格寻路方法的优化后的A星算法的流程示意图;
图4是本发明实施例提供的一种导航网格寻路方法的另一优化后的A星算法的流程示意图;
图5是本发明实施例提供的一种寻路装置的结构示意图;
图6是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在SLG游戏中,目前采用Recast Navigation开源库的导航网格寻路算法虽然可以实现人物寻路,但不能满足有动态身份标识数据的地形寻路功能。例如,在一些SLG游戏中,关卡会随着占领角色的变换而动态更新通过权限,虽然可以提前判断关卡的权限标识再进行导航网格寻路算法,但费时费力,从而加重了服务器的处理负担。
本发明实施例提出一种导航网格寻路方法,可用于完善传统的导航网格寻路算法无法满足SLG游戏中动态身份标识数据的地形寻路的不足,拓展了导航网格算法在SLG游戏的应用,降低了服务器运行成本,提高了游戏地图寻路的效率。
图1示出了本发明实施例提供的一种导航网格寻路方法的流程示意图,详述如下:
在S101中,确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图。
在本实施例中,所述目标对象为游戏客户端所操控的游戏角色,当响应于游戏客户端针对游戏角色的自动寻路请求时,获取游戏角色的当前位置和将要到达的位置,当前位置设为起始位置,将要到达的位置设为目标位置。游戏客户端包括但不限于手机、电脑、智能电视等交互设备,此处不做限定。在获取起始位置和目标位置后,可以根据RecastNavigation开源库的Recast库生成导航网格地图,导航网格地图包括多个导航网格的数据,每个导航网格为凸多边形的集合,存在障碍物的区域不生成导航网格。
在S102中,在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,或者,将所述导航网格地图上与关口有交集的若干个多边形进行重构,并对重构后与关口完全重叠的多边形添加标识信息。
在本实施例中,与关口相交的多边形可重构或不重构。在与关口相交的多边形不重构的情况下,可以通过建立索引的方式确定关口和相交的多边形的联系,有利于快速判断多边形与哪些关口相交。在SLG游戏应用中,当游戏客户端所操控的游戏角色经过某一城池关卡时,服务器通过索引数据可以快速判断该关卡的占领者身份,根据占领者身份与游戏角色的关系确定该游戏角色能否通过。
在与关口相交的多边形重构的情况下,将与关口相交的多边形拆分并重构,确定与关口完全重叠的多边形并添加标识信息。示例性地,可以将与关口相交的多边形重新体素化(Voxelization),再把体素(Voxel)模型分割成区域(Region)并进一步拆分为凸多边形,然后为重构后与关口完全重叠的多边形添加标识信息。在SLG游戏应用中,当某一城池关卡出现在游戏客户端的界面上,自动显示该关卡的占领者身份,节省服务器的计算资源。
在S103中,判断所述目标对象是否能通过与关口有交集的多边形,或者,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径。
在本实施例中,基于关口可与相交的多边形重构或不重构,根据优化后的A星算法确定路径的多边形序列,并在最短多边形路径上以漏斗算法或拐角点法确定最终的移动路径。示例性地,在最短多边形路径上以漏斗算法或拐角点法确定最终的移动路径时,以起始位置作为漏斗的初始顶点,分别与朝向目标位置最近的两个拐点连接成路径,确定两条路径之间最近的拐点,连接该拐点与初始顶点的路径,该路径取代原来的某一路径,以此类推,两条路径向目标位置不断收缩,当两条路径之间没有拐点且拐点未能与目标位置连成直线时,择取某一拐点为新的顶点,重复上述步骤,直到两条路径之间没有拐点且某一拐点与目标位置连成直线,并连接前面的所有顶点,确定最终的移动路径。
在一些实施例中,所述将导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,具体包括:
创建哈希表;
以所述若干个关口信息为所述哈希表的键值对的值,并存储到所述哈希表里;
以所述导航网格地图上的若干个多边形为所述哈希表的键值对的键,通过哈希函数将所述键值对的键转换为哈希码,并将所述哈希码存储到所述哈希表。
该实施例中,以哈希算法在关口和多边形之间创建索引数据,构造哈希函数的方法具体此处不做限定。示例性地,以直接定址法构造哈希函数时,如图2所示,将多边形逐一按照顺序进行标记,哈希地址的计算方法为hash(key)=key或hash(key) =a*key+b,当判断某一多边形是否存在关口及该关口的占领者身份时,以多边形ID通过哈希地址迅速确定对应的值,若值为空时,表明该多边形不与关口相交,若值为A或B或C时,表明占领者的身份为A或B或C。
在一些实施例中,判断所述目标对象是否能通过与关口有交集的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S301:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S302:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小;
S303:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S304;
S304:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤303。
具体的,所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过与关口有交集的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S303,否则直接进入步骤S303。
该实施例中,如图3所示,采用优化后的A星算法寻找最短多边形路径,第一步为创建OPEN表和CLOSE表,OPEN表用于存储待考虑的节点位置,CLOSE表用于存储不再考虑的节点位置,OPEN表和CLOSE表的节点位置数量共同构成了寻路消耗值F;第二步为搜索目标对象当前节点位置邻近的节点位置,目标对象当前节点位置邻近的节点位置共有八个,以平面视角来看,分别为左、右、上、下、左上、左下、右上、右下八个方向的节点位置,因此候选目标位置最大数量为八个 ,最小数量为一个,根据与关口相交的多边形不重构的情况下,若遇到障碍节点位置和与关口有交集的多边形,服务器基于索引数据快速判断邻近的节点位置和当前位置之间的路径是否可使得目标对象通过与关口有交集的多边形,若判断为否,排除该部分的节点位置,若判断为是,将该部分的节点位置设为候选目标对象;第三步为判断候选目标节点位置数量是否大于1,若判断为否,则跳到第五步,若判断为是,则需要进入第四步,选取寻路消耗值F最小的候选目标节点位置,该步骤中,可能会存在寻路消耗值F最小且相等的复数候选目标节点位置,则该复数候选目标节点位置共同进入第五步。
在第五步里,将选取出来的候选目标节点位置设为目标节点位置,并判断是否为目标位置,若判断为是,则通过回溯的方式获取该最短多边形路径,即从目标节点位置沿着上一个节点位置逐步返回至起始位置,算法结束,该最短多边形路径数据反馈至服务器,服务器将该路径数据经过漏斗算法或拐角点法的处理后获得最短移动路径,再将该最短移动路径转发到操控目标对象的游戏客户端,则目标对象可沿着游戏客户端所显示出来的最短移动路径信息进行移动;若判断为否,则进入第六步,遍历该目标节点位置的所有邻近节点位置,重新确定候选目标节点位置,候选目标节点位置和当前节点位置之间的路径可使得目标对象通过与关口有交集的多边形,然后跳回至第三步,重复上述操作,直到找到一条可使目标对象通过与关口有交集的多边形且寻路消耗值F最小的多边形路径。
在一些实施例中,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S401:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S402:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过有标识信息的多边形,且所述目标节点位置的寻路消耗值F最小;
S403:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S404;
S404:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤403。
具体的,所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过有标识信息的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过有标识信息的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S403,否则直接进入步骤S403。
该实施例中,如图4所示,采用优化后的A星算法寻找最短多边形路径,第一步为创建OPEN表和CLOSE表,OPEN表用于存储待考虑的节点位置,CLOSE表用于存储不再考虑的节点位置,OPEN表和CLOSE表的节点位置数量共同构成了寻路消耗值F;第二步为搜索目标对象当前节点位置邻近的节点位置,目标对象当前节点位置邻近的节点位置共有八个,以平面视角来看,分别为左、右、上、下、左上、左下、右上、右下八个方向的节点位置,因此候选目标位置最大数量为八个 ,最小数量为一个,根据与关口相交的多边形重构的情况下,若遇到障碍节点位置和与关口有交集的多边形,服务器基于重构后的多边形的标识信息迅速判断邻近的节点位置和当前位置之间的路径是否可使得目标对象通过有标识信息的多边形,若判断为否,排除该部分的节点位置,若判断为是,将该部分的节点位置设为候选目标对象;第三步为判断候选目标节点位置数量是否大于1,若判断为否,则跳到第五步,若判断为是,则需要进入第四步,选取寻路消耗值F最小的候选目标节点位置,该步骤中,可能会存在寻路消耗值F最小且相等的复数候选目标节点位置,则该复数候选目标节点位置共同进入第五步。
在第五步里,将选取出来的候选目标节点位置设为目标节点位置,并判断是否为目标位置,若判断为是,则通过回溯的方式获取该最短多边形路径,即从目标节点位置沿着上一个节点位置逐步返回至起始位置,算法结束,该最短多边形路径数据反馈至服务器,服务器将该路径数据经过漏斗算法或拐角点法的处理后获得最短移动路径,再将该最短移动路径转发到操控目标对象的游戏客户端,则目标对象可沿着游戏客户端所显示出来的最短移动路径信息进行移动;若判断为否,则进入第六步,遍历该目标节点位置的所有邻近节点位置,重新确定候选目标节点位置,候选目标节点位置和当前节点位置之间的路径可使得目标对象通过有标识信息的多边形,然后跳回至第三步,重复上述操作,直到找到一条可使目标对象通过有标识信息的多边形且寻路消耗值F最小的多边形路径。
在一些实施例中,所述寻路消耗值F的计算公式为F=G+H,G是指所述起始位置到所述当前节点位置的实际寻路消耗值,H是指所述当前节点位置到所述目标位置的预估寻路消耗值。
参照图5,本申请还提供一种寻路装置5,该寻路装置5还包括:生成模块501,用于确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图;第一处理模块502,用于在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,或者,将所述导航网格地图上与关口有交集的若干个多边形进行重构,并对重构后与关口完全重叠的多边形添加标识信息;第二处理模块503,用于判断所述目标对象是否能通过与关口有交集的多边形,或者,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径。
可以理解的是,如图1所示的导航网格寻路方法实施例中的内容均适用于本寻路装置实施例中,本寻路装置实施例所具体实现的功能与如图1所示的导航网格寻路方法实施例相同,并且达到的有益效果与如图1所示的导航网格寻路方法实施例所达到的有益效果也相同。
需要说明的是,上述装置之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
参照图6,本申请还提供一种计算机设备6,该计算机设备6包括存储器602和处理器601及存储在存储器602上的计算机程序6021,当所述计算机程序6021在处理器601上被执行时,实现上述任意各个方法实施例中的步骤。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该计算机设备可包括,但不仅限于,处理器601、存储器602。本领域技术人员可以理解,图6仅仅是计算机设备6的举例,并不构成对计算机设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器601可以是中央处理单元(Central Processing Unit,CPU),该处理器601还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器602在一些实施例中可以是所述计算机设备6的内部存储单元,例如计算机设备6的硬盘或内存。所述存储器602在另一些实施例中也可以是所述计算机设备6的外部存储设备,例如所述计算机设备6上配备的插接式硬盘,智能存储卡(Smart MediaCard, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器602还可以既包括所述计算机设备6的内部存储单元也包括外部存储设备。所述存储器602用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器602还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时实现上述各个方法实施例中的步骤。
本申请实施例公开了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所公开的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (8)
1.一种导航网格寻路方法,其特征在于,包括:
确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图;
在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,根据所述索引数据确定与多边形相交的关口,或者,将所述导航网格地图上与关口有交集的若干个多边形进行重构,并对重构后与关口完全重叠的多边形添加标识信息;
判断所述目标对象是否能通过与关口有交集的多边形,或者,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径;
判断所述目标对象是否能通过与关口有交集的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S301:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S302:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小;
S303:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S304;
S304:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤303;
所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过与关口有交集的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S303,否则直接进入步骤S303。
2.根据权利要求1所述的导航网格寻路方法,其特征在于,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,具体包括:
创建哈希表;
以所述若干个关口信息为所述哈希表的键值对的值,并存储到所述哈希表;
以所述导航网格地图上的若干个多边形为所述哈希表的键值对的键,通过哈希函数将所述键值对的键转换为哈希码,并将所述哈希码存储到所述哈希表。
3.根据权利要求1所述的导航网格寻路方法,其特征在于,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S401:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S402:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过有标识信息的多边形,且所述目标节点位置的寻路消耗值F最小;
S403:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S404;
S404:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤403。
4.根据权利要求3所述的导航网格寻路方法,其特征在于,所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过有标识信息的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过有标识信息的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S403,否则直接进入步骤S403。
5.根据权利要求1至4中任一项所述的导航网格寻路方法,其特征在于,所述寻路消耗值F的计算公式为F=G+H,G是指所述起始位置到所述当前节点位置的实际寻路消耗值,H是指所述当前节点位置到所述目标位置的预估寻路消耗值。
6.一种寻路装置,其特征在于,包括:
生成模块,用于确定目标对象在游戏地图上的起始位置和目标位置,基于所述起始位置和所述目标位置生成导航网格地图;
第一处理模块,用于在所述游戏地图上设置若干个关口信息,将所述导航网格地图上的若干个多边形和所述若干个关口信息建立相对应的索引数据,根据所述索引数据确定与多边形相交的关口,或者,将所述导航网格地图上与关口有交集的若干个多边形进行重构,并对重构后与关口完全重叠的多边形添加标识信息;
第二处理模块,用于判断所述目标对象是否能通过与关口有交集的多边形,或者,判断所述目标对象是否能通过有标识信息的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,根据所述最短多边形路径确定最终的移动路径;
其中,判断所述目标对象是否能通过与关口有交集的多边形,基于判断结果确定所述起始位置和所述目标位置之间的最短多边形路径,具体步骤包括:
S301:创建OPEN表和CLOSE表,所述OPEN表用于存储待考虑的节点位置,所述CLOSE表用于存储不再考虑的节点位置;
S302:搜索目标对象当前节点位置邻近的节点位置,确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小;
S303:判断所述目标节点位置是否为所述目标位置,若是,从所述目标节点位置逐步追溯父节点至起始位置,确定最短多边形路径,算法结束,否则进入步骤S304;
S304:将所述目标节点位置从OPEN表中删除,加入CLOSE表,遍历所述目标节点位置的所有邻近节点位置,重新确定目标节点位置,并返回步骤303;
所述确定目标节点位置,所述目标节点位置和所述当前节点位置之间的路径可使得所述目标对象通过与关口有交集的多边形,且所述目标节点位置的寻路消耗值F最小,具体包括:判断所述能通过与关口有交集的多边形的候选目标节点位置的数量是否大于1,若是,选取寻路消耗值F最小的候选目标节点位置并进入步骤S303,否则直接进入步骤S303。
7.一种计算机设备,其特征在于,包括:存储器和处理器及存储在存储器上的计算机程序,当所述计算机程序在处理器上被执行时,实现如权利要求1至5中任一项所述的导航网格寻路方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时实现如权利要求1至5中任一项所述的导航网格寻路方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310077531.XA CN115779424B (zh) | 2023-02-08 | 2023-02-08 | 一种导航网格寻路方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310077531.XA CN115779424B (zh) | 2023-02-08 | 2023-02-08 | 一种导航网格寻路方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115779424A CN115779424A (zh) | 2023-03-14 |
CN115779424B true CN115779424B (zh) | 2023-04-28 |
Family
ID=85430399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310077531.XA Active CN115779424B (zh) | 2023-02-08 | 2023-02-08 | 一种导航网格寻路方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115779424B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116764225A (zh) * | 2023-06-09 | 2023-09-19 | 广州三七极梦网络技术有限公司 | 一种高效寻路的处理方法、装置、设备及介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7692629B2 (en) * | 2006-12-07 | 2010-04-06 | Microsoft Corporation | Operating touch screen interfaces |
CN104199878A (zh) * | 2014-08-21 | 2014-12-10 | 西安闻泰电子科技有限公司 | 游戏引擎最短路径搜索方法、游戏引擎系统 |
CN107687859A (zh) * | 2017-09-06 | 2018-02-13 | 电子科技大学 | 基于a星算法的最短寻路方法 |
CN107982917B (zh) * | 2017-11-21 | 2020-10-16 | 北京广同川临场互动科技有限公司 | 一种3d游戏的人物路径搜索方法 |
CN108479067B (zh) * | 2018-04-12 | 2019-09-20 | 网易(杭州)网络有限公司 | 游戏画面的渲染方法和装置 |
CN111598984B (zh) * | 2020-04-07 | 2023-06-16 | 厦门极致互动网络技术股份有限公司 | 一种游戏画面的渲染方法及装置 |
CN111659123A (zh) * | 2020-07-17 | 2020-09-15 | 网易(杭州)网络有限公司 | 导航数据的处理方法及装置、存储介质、电子设备 |
CN112044074A (zh) * | 2020-09-04 | 2020-12-08 | 网易(杭州)网络有限公司 | 对非玩家角色寻路的方法、装置、存储介质及计算机设备 |
US11878249B2 (en) * | 2021-03-23 | 2024-01-23 | Electronic Arts Inc. | Playtesting coverage with curiosity driven reinforcement learning agents |
-
2023
- 2023-02-08 CN CN202310077531.XA patent/CN115779424B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115779424A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109541634B (zh) | 一种路径规划方法、装置和移动设备 | |
CN107952243B (zh) | 路径确定方法及装置 | |
CN115779424B (zh) | 一种导航网格寻路方法、装置、设备及介质 | |
CN105704195B (zh) | 确定路网分区边界线方法和设备 | |
CN112090078B (zh) | 游戏角色移动控制方法、装置、设备和介质 | |
CN112985443B (zh) | 路径规划方法、装置及终端设备 | |
CN116036604B (zh) | 数据处理方法、装置、计算机及可读存储介质 | |
EP3620962A1 (en) | Method, device and terminal for simulating a distribution of obstacles | |
CN114119939A (zh) | 数据轻量化处理方法、装置、存储介质及电子设备 | |
CN110728735A (zh) | 道路级拓扑图层构建方法及系统 | |
CN116764225A (zh) | 一种高效寻路的处理方法、装置、设备及介质 | |
CN112729323B (zh) | 路径规划方法及设备 | |
CN109827585B (zh) | 一种快速填补栅格地图中凹形区域的方法 | |
CN113867371B (zh) | 路径规划方法和电子设备 | |
CN115525943A (zh) | 基于车线拓扑关系构建三维道路模型的方法及系统 | |
CN116089557A (zh) | 数据处理方法、装置及存储介质 | |
CN115624747A (zh) | 地形数据的处理方法、装置、设备及存储介质 | |
CN112711647B (zh) | 地图信息显示方法和装置、存储介质及电子设备 | |
CN115147442A (zh) | 栅格图案的矢量化方法、移动终端、电子设备和介质 | |
CN112337093B (zh) | 一种虚拟对象的分簇方法、装置、存储介质和电子装置 | |
CN113516765A (zh) | 一种地图管理方法、地图管理装置及智能设备 | |
CN112667648A (zh) | 地形动态更新方法、装置、电子设备和可读存储介质 | |
CN115845381B (zh) | 一种基于包围盒的快速寻路方法、装置、设备及介质 | |
CN114240976B (zh) | 一种地图迭代切分方法、装置、设备及存储介质 | |
CN114279456B (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 |