CN112657190A - 一种游戏角色的寻路方法、装置及计算机设备 - Google Patents
一种游戏角色的寻路方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN112657190A CN112657190A CN202011577751.1A CN202011577751A CN112657190A CN 112657190 A CN112657190 A CN 112657190A CN 202011577751 A CN202011577751 A CN 202011577751A CN 112657190 A CN112657190 A CN 112657190A
- Authority
- CN
- China
- Prior art keywords
- node
- svo
- nodes
- starting
- current
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 238000005192 partition Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 206010034719 Personality change Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明实施例公开了一种游戏角色的寻路方法、装置及计算机设备,游戏角色的寻路方法包括:通过体素化游戏场景生成多个SVO节点;获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并构建开放列表和闭合列表;设置起始SVO节点为当前节点,获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中;将当前节点从开放列表中移动至闭合列表中,并从开放列表中选取代价值最小的可移动节点作为最优节点;不断搜索最优节点并更新更新开放列表,直到新的最优节点为终止SVO节点时,根据闭合列表中的节点构建路径。由此提高了寻路的精度,优化了游戏玩家的体验。
Description
技术领域
本发明涉及游戏技术领域,尤其涉及一种游戏角色的寻路方法、装置及计算机设备。
背景技术
在游戏中,玩家操控的虚拟角色或***控制非玩家角色常需要从一个地点移动至另一地点,而在移动过程中,基于寻路算法生成路径能有效的改善玩家的游戏体验。
现有的寻路方式通常是基于寻路算法和起始点与终止点以构建路径,常用的寻路算法有Dijkstra算法和A*算法。
然而,上述两种寻路算法的寻路精度低,若应用于大型游戏场景下,还会产生更大的误差,因此,需要一种寻路方法以解决上述问题。
发明内容
针对上述寻路精度低的问题,本发明提出一种游戏角色的寻路方法、装置及计算机设备。
第一方便,本发明的第一个实施方案提供一种游戏角色是寻路方法,包括:
通过体素化游戏场景生成多个SVO节点;
获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据起始SVO节点和终止SVO节点构建开放列表和闭合列表;
设置起始SVO节点为当前节点,获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中,其中,代价值为游戏角色从当前节点移动至可移动节点的估计值,可移动节点为当前节点的全部邻居节点中游戏角色能从当前节点移动到的邻居节点;
将当前节点从开放列表中移动至闭合列表中,并从开放列表中选取代价值最小的可移动节点作为最优节点;
若最优节点不为终止SVO节点,将最优节点设置为新的当前节点,更新开放列表并再次选取新的最优节点,直到新的最优节点为终止SVO节点时,将终止SVO节点从开放列表中移动至闭合列表中,并根据闭合列表中的全部节点构建路径。
进一步的,上述游戏角色的寻路方法,还包括:
获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并判断起始SVO节点和终止SVO节点是否为游戏角色可移动到的节点;
若起始SVO节点和/或终止SVO节点不为游戏角色可移动到的节点,基于预设范围搜索起始SVO节点和/或终止SVO节点周围游戏角色可移动到的节点,将起始SVO节点和/或终止SVO节点周围游戏角色可移动到的节点作为新的起始SVO节点和/或新的终止SVO节点;
根据新的起始SVO节点和/或新的终止SVO节点构建开放列表和闭合列表。
更进一步的,上述游戏角色的寻路方法,还包括:
对新的起始SVO节点和/或新的终止SVO节点进行直线测试;
若新的起始SVO节点和/或新的终止SVO节点通过直线测试,根据新的起始SVO节点和/或新的终止SVO节点构建开放列表和闭合列表;
直线测试包括:判断游戏角色是否能从起始SVO节点沿直线方向移动移动至新的起始SVO节点,或,判断终止SVO节点沿直线方向移动至新的终止SVO节点。
进一步的,上述游戏角色的寻路方法,还包括:
获取当前节点的全部可移动节点,包括:
每搜索当前节点的一个邻居节点,判断当前节点或邻居节点是否为地形节点,其中,地形节点为位于SVO树的第0层或第1层的节点;
若当前节点或邻居节点为地形节点,获取当前节点的坐标和邻居节点的坐标;
若游戏角色能基于当前节点的坐标和邻居节点的坐标,从当前节点移动至邻居节点,则邻居节点为可移动节点。
更进一步的,上述游戏角色的寻路方法,还包括:
根据当前游戏场景获取地形高度图;
若游戏角色能基于当前节点的坐标和邻居节点的坐标以及地形高度图,从当前节点移动至邻居节点,则邻居节点为可移动节点。
进一步的,上述游戏角色的寻路方法中,还包括:
判断当前节点和可移动节点是否为平凡节点;
若当前节点和可移动节点是平凡节点,则按照预设的代价值估计方法计算游戏角色从当前节点移动至可移动节点的代价值;
进一步的,上述游戏角色的寻路方法,还包括:
判断闭合列表中,是否存在一个目标节点使得游戏角色能沿直线方向从目标节点移动至终止SVO节点;
若存在,基于进入闭合列表的先后顺序,删除目标节点与终止SVO节点之间的所有节点以更新闭合列表,并根据闭合列表中的节点更新路径。
第二方面,本发明的第二种实施方式还提供一种游戏角色的寻路装置,包括:
节点生成模块,用于通过体素化游戏场景生成多个SVO节点;
节点获取模块,用于获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据起始SVO节点和终止SVO节点构建开放列表和闭合列表;
第一路径构建模块,用于设置起始SVO节点为当前节点,获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中,其中,代价值为游戏角色从当前节点移动至可移动节点的估计值,可移动节点为当前节点的全部邻居节点中游戏角色能从当前节点移动到的邻居节点;
第二路径构建模块,用于将当前节点从开放列表中移动至闭合列表中,并从开放列表中选取代价值最小的可移动节点作为最优节点;
路径生成模块,用于若最优节点不为终止SVO节点,将最优节点设置为新的当前节点,更新开放列表并再次选取新的最优节点,直到新的最优节点为终止SVO节点时,将终止SVO节点从开放列表中移动至闭合列表中,并根据闭合列表中的全部节点构建路径。
第三方面,本发明的第三个实施方式提供一种计算机设备,包括存储器以及处理器,存储器存储由计算机程序,计算机程序用于在处理器上述运行上述第一方面中的游戏角色的寻路方法。
第四方面,本发明的第四个实施方式提供一种计算机可读介质,存储有计算机程序,计算机程序在存储器上运行时执行上述第一方面中的游戏角色的寻路方法。
上述游戏角色的寻路方法,通过体素化游戏场景生成多个SVO节点;从多个SVO节点中获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并由此构建开放列表和闭合列表;将起始SVO节点设置为当前节点获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中;将当前节点移动至闭合列表中,并从开放列表中选取最优节点;不断更新当前节点、最优节点和开放列表,直至最优节点为终止SVO节点时,根据闭合列表中的节点构建路径。由此,基于SVO节点生成游戏角色的移动路径,提高了寻路的精度,且因SVO节点与SVO节点之间存在树状关系,从而进一步提高了路径的生成效率并保证了路径的有效性。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本发明游戏角色的寻路方法的一种流程示意图;
图2示出了一张SVO节点运行时的数据结构图;
图3示出了一张SVO节点基于莫顿码形式以排布的示意图;
图4示出了本发明游戏角色的寻路装置的一种结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
实施例1
在本实施例中,参见图1,示出了一种游戏角色的寻路方法,包括:
S110,通过体素化游戏场景生成多个SVO节点。
具体的,SVO(Sparse Voxel Octree,稀疏体素八叉树)是一种3D计算机图形渲染技术,基于八叉树结构存储体素信息,常应用于光线投射和光线追踪。体素,即体积元素(Volume Pixel),是数字数据于三维空间分割上的最小单位,用于三维成像。
进一步的,参照图2,图2示出了通过SVO节点进行寻路时,SVO节点的数据结构,并示出了SVO的节点信息,节点信息中,仅通过SVO节点的分块id、子节点id、层数、叶节点可以唯一标识一个SVO节点。
基于上述SVO数据结构和体素化生成SVO节点并应用于寻路时,SVO节点中的“补充数据”仅在当前游戏场景大于512m*256m时才被实例化,换言之,SVO节点运行时的数据大小为20字节或24字节。
体素化(Voxelization)是指将模型进行简化,变成均匀的三维体素化格子(Voxel)。上述游戏场景可以为8km*8km*8km的大型游戏场景。
本发明基于体素化技术和SVO数据结构,将游戏场景划分为精度为1米的SVO节点,基于SVO节点与SVO节点间的关系完成路径的生成和优化。
S120,获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据起始SVO节点和终止SVO节点构建开放列表和闭合列表。
具体的,根据坐标获取SVO节点的功能是基于SVO节点的八叉树结构所实现,即通过游戏角色的当前所在的SVO节点,不断访问上一层的节点,直至访问到第八层节点后,再不断偏移至坐标对应的节点。
上述开放列表和闭合列表为A*算法中的OPEN列表和CLOSED列表,A*算法一种静态路网中求解最短路径最有效的直接搜索方法,A*算法的公式表示为:
f(n)=g(n)+h(n)
其中,f(n)是从初始状态经由状态n到目标状态的代价估计,g(n)是在状态空间中从初始状态到状态n的实际代价,h(n)是从状态n到目标状态的最佳路径的估计代价。对于路径搜索,状态就是图中的节点,代价就是节点与节点间的距离。
S130,设置起始SVO节点为当前节点,获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中。
其中,代价值为游戏角色从当前节点移动至可移动节点的估计值,即游戏角色从当前节点移动至可移动节点的估计值f(n);可移动节点为当前节点的全部邻居节点中,游戏角色能从当前节点移动到的邻居节点。
根据当前节点构建开放列表时,需将当前节点设置为全部可移动节点的父亲,使得路径构建完成后,根据闭合列表中的树状关系生成实际路径。
进一步的,参照图3,图3示出了一张SVO节点基于莫顿码方式排布的示意图。图3中的每一个数字可以代表一个SVO节点,将代表SVO节点的数字向右偏移3位可得到该节点的父节点,而向左偏移3位即可得到该节点的子节点;一个SVO节点沿X轴、Y轴和Z轴上方向的最近的6个节点为该节点的邻居节点。
基于上述邻居节点和节点的父子关系,本发明中从当前节点访问邻居节点的方式如下:
若当前节点和邻居节点为兄弟节点,则当前节点访问至邻居节点时,根据邻居节点的节点信息中的“父节点的第几个儿子”的信息,从当前节点跳转至父节点,再根据“父节点的第几个儿子”的信息从父节点偏移至邻居节点即可;若当前节点和邻居节点不是兄弟节点,则从当前节点不断访问父节点的父节点,直至访问到该邻居节点的父节点或最顶层节点为止。
示范性的,基于图3,将图3中的节点7设置为当前节点,则当前节点沿[x,y,z,-x,-y,-z]方向上的邻居节点为[14,21,35,6,5,3],除去x方向的节点14外,当前节点和其他邻居节点为兄弟节点,因此当前节点可直接通过父亲节点访问其他任一个邻居节点;而当前节点访问节点14,需要访问父节点的父节点,即访问第二层的节点0,再访问第一层的节点1,最后访问第0层的节点14。
S140,将当前节点从开放列表中移动至闭合列表中,并从开放列表中选取代价值最小的可移动节点作为最优节点。
具体的,再次参照图2,图2中还示出了任一个SVO节点的节点信息,节点信息中还包括“状态标记”,状态标记信息用于标记此节点是出于A*算法的何种状态,即此节点是状态为“未访问”、“处于开放列表”和“处于闭合列表”的三种状态中的其中一种。
S150,若最优节点不为终止SVO节点,将最优节点设置为新的当前节点,更新开放列表并再次选取新的最优节点,直到新的最优节点为终止SVO节点时,将终止SVO节点从开放列表中移动至闭合列表中,并根据闭合列表中的全部节点构建路径。
换言之,本发明根据起始坐标和终止坐标,使游戏角色不断从当前节点移动至最优的可移动节点;在最优节点为终止SVO节点时,基于当前节点和最优节点间的树状关系构建最优路径,保证了路径的精度。
进一步的,上述S120还可以采用以下方式进行:
获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并判断起始SVO节点和终止SVO节点是否为游戏角色可移动到的节点;
若起始SVO节点和/或终止SVO节点不为游戏角色可移动到的节点,基于预设范围搜索起始SVO节点和/或终止SVO节点周围游戏角色可移动到的节点,将起始SVO节点和/或终止SVO节点周围游戏角色可移动到的节点作为新的起始SVO节点和/或新的终止SVO节点;
根据新的起始SVO节点和/或新的终止SVO节点构建开放列表和闭合列表。
可以理解的是,基于坐标访问SVO节点时,游戏角色不能访问任意坐标对应的SVO节点,如石头里或墙壁中的节点,这些节点对于游戏角色来说是不能移动到的节点或位置。因此,基于坐标获取SVO节点时,还需要判断此节点是否为游戏角色能移动到的节点。由此,避免了游戏角色的“穿模”等问题,保证了游戏的合理性。
进一步的,当起始SVO节点和/或终止SVO节点为游戏角色不可移动到的节点时,获取节点预设周围内的游戏角色能移动到的节点。上述预设范围可以为[4,4,4],即节点周围的沿[x,y,z,-x,-y,-z]各个方向上的最接近的两个节点。
若起始SVO节点和/或终止SVO节点的预设范围内存在游戏角色能移动到的叶节点,则将搜索到的叶节点作为新的起始SVO节点和/或终止SVO节点,并根据新的起始SVO节点和/或终止SVO节点来完成寻路。
基于上述起始点和终止点的优化,有效的避免游戏角色移动时,出现在不可移动的位置的情况;并根据新的起始点和终止点进行寻路,使得游戏角色需要寻路时,游戏***能生成一条最接近终止坐标的路线,并保证游戏角色出现在尽可能合理的位置来移动。
更进一步的,上述根据新的起始SVO节点和/或新的终止SVO节点构建开放列表和闭合列表,包括:
对新的起始SVO节点和/或新的终止SVO节点进行直线测试;
若新的起始SVO节点和/或新的终止SVO节点通过直线测试,根据新的起始SVO节点和/或新的终止SVO节点构建开放列表和闭合列表。
其中,上述直线测试包括:判断游戏角色是否能从起始SVO节点沿直线方向移动移动至新的起始SVO节点,或,判断终止SVO节点沿直线方向移动至新的终止SVO节点。
具体的,在搜索到新的起始SVO节点和/或新的终止SVO节点时,需要通过物理引擎探测游戏角色能否沿直线方向从旧的起始SVO节点和/或旧的终止SVO节点移动至新的起始SVO节点和/或新的终止SVO节点上,即游戏角色能否沿直线方向,无障碍地从当前坐标移动至新坐标。
可以理解的是,为保证游戏的合理性,需要判断旧的坐标和新的坐标对应的节点是否处于一条无障碍的直线上,由此避免游戏玩家通过设定一个无法到达的坐标,以使游戏角色移动至不能移动到的位置。
进一步的,若旧的起始SVO节点和旧的终止SVO节点均搜索到新的节点,则新的起始SVO节点和新的终止SVO节点均需要通过上述直线测试后,才能根据新的起始SVO节点和/或新的终止SVO节点构建开放列表和闭合列表。
若未通过直线测试,则此次寻路失败,并标记旧的起始SVO节点和/或旧的终止SVO节点为不可用节点,使得玩家再次选择相同的坐标进行寻路时,提示玩家寻路失败。
进一步的,上述S110,包括:
通过体素化游戏场景生成多个SVO节点和SVO树,SVO树包括所有SVO节点且至少包括三层SVO节点。
可以理解的是,SVO节点的生成即代表SVO树的构建,本发明基于体素化和SVO结构生成SVO节点和SVO树,SVO树至少包含3层SVO节点。其中,第0层SVO节点和第1层SVO节点属于地形节点,即代表游戏场景中,能被玩家肉眼观察到的,游戏地面上各类固定物体所构成的图像。
基于SVO节点和SVO树进行寻路时,可根据计算机设备的内存调整SVO树所需要实例化的层数。具体的,上述实例化的层数是指预先实例化寻路压缩数据的层数,由于第N+1层比第N层的数据少,即第N层的八个兄弟节点归属于同一个位于N+1层的父节点,提高实例化的层数就是只预先实例化N+1层节点,不实例化N层节点,由此降低了计算机设备的寻路时所需的内存,提高了寻路速度。
基于SVO节点和SVO树的关系,本发明中的可移动节点还可以通过以下方式获取:
每搜索当前节点的一个邻居节点,判断当前节点或邻居节点是否为地形节点;
若当前节点或邻居节点为地形节点,获取当前节点的坐标和邻居节点的坐标;
若游戏角色能基于当前节点的坐标和邻居节点的坐标,从当前节点移动至邻居节点,则邻居节点为可移动节点。
具体的,当玩家控制的游戏角色于游戏场景中移动时,除去游戏角色的x和y坐标在不断改变外,z坐标也会产生一定幅度的改变,如角色浮空、下潜时,x、y、z三轴坐标都会产生一定变化。因此,进行寻路时还需要判断当前节点或邻居是否为地形节点。若是,则需要判断游戏角色是否能从当前节点的位置上,合理地移动至邻居节点对应的位置上去。
由此,若当前节点和邻居节点中,有一个节点为地形节点时,则需要根据两个节点的坐标判断,游戏角色是否能合理完成位置的改变。
示范性的,如果一个SVO节点是地形节点,需要根据当前节点的纵坐标的最大取值范围,和邻居节点的纵坐标的最大取值范围中,得出较小的节点的纵坐标取值范围,再基于较小的节点的纵坐标取值范围,判断游戏对象是否能合理的从当前节点移动至邻居节点,若能,则将该邻居节点认定为可移动节点。
更进一步的,上述“若游戏角色能基于当前节点和邻居节点的坐标,从当前节点移动至邻居节点,则邻居节点为可移动节点”的步骤,还可以采用以下方式完成:
根据当前游戏场景获取地形高度图;
若游戏角色能基于当前节点的坐标和邻居节点的坐标以及地形高度图,从当前节点移动至邻居节点,则邻居节点为可移动节点。
具体的,在游戏中,我们将采用高度图来模拟现实生活中的丘陵和山谷。高度图其实就是一个数组,而该数组的每个元素都指定了地形方格中某一个顶点的高度值。在本发明中,地形高度图的采样尺寸为4m*4m,与SVO树的第0层节点对应。
更进一步的,基于地形高度图和节点坐标来描述游戏场景,能将节点游戏场景划分为天空、水面以及地面,节点也可划分为天空节点、海洋节点和地形节点。而基于上述较小的节点的纵坐标取值范围和地形高度图,判断游戏对象是否能从当前节点合理的移动至邻居节点。由此,解决了天空、水面和地面混合的情况,使得游戏角色能合理地从任一种游戏场景移动至另一种游戏场景。
除此之外,进行地形节点的代价值估计时,地形节点的g(n)相比于空中节点和水中节点的g(n)要更大,使得构建路径时会尽量避免紧贴地面的情况,优先选择空中路线或水中路线。
基于上述可移动节点的判别方法,使得路径完成后,游戏角色移动时能合理地完成自主移动,有效的避免了游戏角色与场景间“穿模”问题的发生,提高了路径构建的合理性,还解决了天空、水面以及地面混合时的寻路问题,从而提高了玩家的体验感。
进一步的,每个可移动节点对应的代价值还通过以下方式得到:
判断当前节点和可移动节点是否为平凡节点;
若当前节点和可移动节点是平凡节点,则按照预设的代价值估计方法计算游戏角色从当前节点移动至可移动节点的代价值。
具体的,请再次参照图2,本发明中所有SVO节点的节点信息包括平凡节点标识信息,平凡节点标识信息用于标识一个节点是否为平凡节点;
其中,平凡节点为SVO树中,第0层中的一个大小为4*4*4的平凡节点集中的节点;根据该平凡节点集中的多个节点构成多个邻接面,当所有邻接面上的节点都为可移动节点时,若一平凡节点需要访问另一平凡节点,可直接通过平凡节点集的内部构建访问路径;而当某一邻接面上的节点均不为可移动节点时,其他邻接面上的平凡节点不判断是否能访问该邻接面上任一节点。
具体的,根据平凡节点集的性质,使得平凡节点访问另一平凡节点时,从平凡节点集的内部,各个平凡节点的关系生成节点访问路径,从而减少了当前节点访问另一节点时需要上或向下移动的层数,即减少了当前节点所需要访问的节点数。并且,当利用平凡节点进行代价估计时,平凡节点的代价值要小于非平凡节点的估计值,由此,寻路时会优先选择平凡节点进行路径构建。
而基于平凡节点集的性质,当前节点和邻居节点均为平凡节点时,当前节点从平凡点集的内部构建访问路径,由此减少了当前节点访问邻居节点的所需要访问的节点数,从而提高了寻路效率和路径构建速度。
更进一步的,当起始SVO节点和/或终止SVO节点为平凡节点时,不利用平凡节点集的性质完成节点间的访问,而是将起始SVO节点和/或终止SVO节点视作普通的节点来完成代价估计。
进一步的,本实施例提供的游戏角色的寻路方法,还包括以下步骤:
判断闭合列表中,是否存在一个目标节点使得游戏角色能沿直线方向从目标节点移动至终止SVO节点;
若存在,基于进入闭合列表的先后顺序,删除目标节点与终止SVO节点之间的所有节点以更新闭合列表,并根据闭合列表中的节点更新路径。
可以理解的是,基于体素化和SVO结构进行寻路,寻路完成后构建的路径可能存在过多的拐弯,为使得寻路的结果为一条光滑的直线,需要对构建完成路径进行优化。
具体的,除去终止SVO节点外,从后往前,从倒数第二个节点开始,判断闭合列表中是否存在一个目标节点,使得游戏角色能在不绕过任何障碍物的情况下,沿直线方向移动移动至终止SVO节点。若存在,将目标节点与终止SVO节点间的所有节点删除,并将目标节点设置为终止SVO节点的父亲,由此,根据闭合列表中的树状关系图以更新路径并优化寻路结果。
进一步的,除判断是否存在一个目标节点是否能沿直线到达终止SVO节点外,还可以将终止SVO节点和起始SVO节点互换,即判断是否存在一个目标节点是否能沿直线到达起始SVO节点,从而进一步优化寻路结果。
基于上述路径优化方式,使得寻路的结果更为准确和有效,保证了寻路完成后构建的路径为一条光滑的直线,进一步优化了游戏玩家的体验。
本发明实施例1公开的一种游戏角色的寻路方法,通过体素化游戏场景生成多个SVO节点;从多个SVO节点中获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并由此构建开放列表和闭合列表;将起始SVO节点设置为当前节点,获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中;将当前节点移动至闭合列表中,并从开放列表中选取最优节点;不断更新当前节点、最优节点和开放列表,直至最优节点为终止SVO节点时,根据闭合列表中的节点构建路径。由此,基于SVO节点生成游戏角色的移动路径,提高了寻路的精度,且因SVO节点与SVO节点之间存在树状关系,从而进一步提高了路径的生成效率并保证了路径的有效性。
实施例2
在本实施例中,参见图4,示出了一种游戏角色的寻路装置200,包括:节点生成模块210,节点获取模块220,第一路径构建模块230,第二路径构建模块240,路径生成模块250,其中:
节点生成模块210,用于通过体素化游戏场景生成多个SVO节点;
节点获取模块220,用于获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据起始SVO节点和终止SVO节点构建开放列表和闭合列表;
第一路径构建模块230,用于设置起始SVO节点为当前节点,获取当前节点的全部可移动节点,并将当前节点、可移动节点以及每个可移动节点对应的代价值存储至开放列表中,其中,代价值为游戏角色从当前节点移动至可移动节点的估计值,可移动节点为当前节点的全部邻居节点中,游戏角色能从当前节点移动到的邻居节点;
第二路径构建模块240,用于将当前节点从开放列表中移动至闭合列表中,并从开放列表中选取代价值最小的可移动节点作为最优节点;
路径生成模块250,用于若最优节点不为终止SVO节点,将最优节点设置为新的当前节点,更新开放列表并再次选取新的最优节点,直到新的最优节点为终止SVO节点时,将终止SVO节点从开放列表中移动至闭合列表中,并根据闭合列表中的全部节点构建路径。
应当理解,本实施例的技术方案通过上述各个功能模块的协同作用,用于执行上述实施例1的一种游戏角色的寻路方法,实施例1所涉及的实施方案以及有益效果在本实施例中同样适用,在此不再赘述。
在本实施例中,还涉及一种计算机设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述终端设备能执行上述实施例1的方法。
在本实施例中,还涉及一种可读存储介质,存储有计算机程序,所述计算机程序在处理器上运行时执行上述实施例1的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种游戏角色的寻路方法,其特征在于,包括:
通过体素化游戏场景生成多个SVO节点;
获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据所述起始SVO节点和所述终止SVO节点构建开放列表和闭合列表;
设置所述起始SVO节点为当前节点,获取所述当前节点的全部可移动节点,并将所述当前节点、所述可移动节点以及每个所述可移动节点对应的代价值存储至所述开放列表中,其中,所述代价值为所述游戏角色从所述当前节点移动至所述可移动节点的估计值,所述可移动节点为所述当前节点的全部邻居节点中所述游戏角色能从所述当前节点移动到的邻居节点;
将所述当前节点从所述开放列表中移动至所述闭合列表中,并从所述开放列表中选取代价值最小的所述可移动节点作为最优节点;
若所述最优节点不为所述终止SVO节点,将所述最优节点设置为新的当前节点,更新所述开放列表并再次选取新的最优节点,直到所述新的最优节点为所述终止SVO节点时,将所述终止SVO节点从所述开放列表中移动至所述闭合列表中,并根据所述闭合列表中的全部节点构建路径。
2.根据权利要求1所述的方法,其特征在于,所述获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据所述起始SVO节点和所述终止SVO节点构建开放列表和闭合列表,包括:
获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并判断所述起始SVO节点和所述终止SVO节点是否为所述游戏角色可移动到的节点;
若所述起始SVO节点和/或所述终止SVO节点不为游戏角色可移动到的节点,基于预设范围搜索所述起始SVO节点和/或所述终止SVO节点周围所述游戏角色可移动到的节点,将所述起始SVO节点和/或所述终止SVO节点周围所述游戏角色可移动到的节点作为新的起始SVO节点和/或新的终止SVO节点;
根据所述新的起始SVO节点和/或所述新的终止SVO节点构建开放列表和闭合列表。
3.根据权利要求2所述的方法,其特征在于,所述根据所述新的起始SVO节点和/或所述新的终止SVO节点构建开放列表和闭合列表,包括:
对所述新的起始SVO节点和/或所述新的终止SVO节点进行直线测试;
若所述新的起始SVO节点和/或所述新的终止SVO节点通过所述直线测试,根据所述新的起始SVO节点和/或所述新的终止SVO节点构建开放列表和闭合列表;
所述直线测试包括:判断所述游戏角色是否能从所述起始SVO节点沿直线方向移动移动至所述新的起始SVO节点,或,判断所述终止SVO节点沿直线方向移动至所述新的终止SVO节点。
4.根据权利要求1所述的方法,其特征在于,所述通过体素化游戏场景生成多个SVO节点,包括:
通过体素化游戏场景生成多个SVO节点和SVO树,所述SVO树包括所有所述SVO节点且至少包括三层所述SVO节点;
所述获取所述当前节点的全部可移动节点,包括:
每搜索所述当前节点的一个所述邻居节点,判断所述当前节点或所述邻居节点是否为地形节点,其中,所述地形节点为位于所述SVO树的第0层或第1层的节点;
若所述当前节点或所述邻居节点为地形节点,获取所述当前节点的坐标和所述邻居节点的坐标;
若所述游戏角色能基于所述当前节点的坐标和所述邻居节点的坐标,从当前节点移动至所述邻居节点,则所述邻居节点为可移动节点。
5.根据权利要求4所述的方法,其特征在于,所述若所述游戏角色能基于所述当前节点和所述邻居节点的坐标,从当前节点移动至所述邻居节点,则所述邻居节点为所述可移动节点,包括:
根据当前游戏场景获取地形高度图;
若所述游戏角色能基于所述当前节点的坐标和所述邻居节点的坐标以及所述地形高度图,从当前节点移动至所述邻居节点,则所述邻居节点为所述可移动节点。
6.根据权利要求1所述的方法,其特征在于,所有所述SVO节点的节点信息包括平凡节点标识信息,所述平凡节点标识信息用于标记所述SVO节点是否为平凡节点,所述每个所述可移动节点对应的代价值通过以下方式获得:
判断所述当前节点和所述可移动节点是否为平凡节点;
若所述当前节点和所述可移动节点是所述平凡节点,则按照预设的代价值估计方法计算所述游戏角色从所述当前节点移动至所述可移动节点的代价值。
7.根据权利要求1所述的方法,其特征在于,所述根据所述闭合列表中的节点构建路径的步骤之后,还包括:
判断所述闭合列表中,是否存在一个目标节点使得所述游戏角色能沿直线方向从所述目标节点移动至所述终止SVO节点;
若存在,基于进入闭合列表的先后顺序,删除所述目标节点与所述终止SVO节点之间的所有节点以更新所述闭合列表,并根据所述闭合列表中的节点更新路径。
8.一种游戏角色的寻路装置,其特征在于,包括:
节点生成模块,用于通过体素化游戏场景生成多个SVO节点;
节点获取模块,用于获取起始点坐标对应的起始SVO节点和终止点坐标对应的终止SVO节点,并根据所述起始SVO节点和所述终止SVO节点构建开放列表和闭合列表;
第一路径构建模块,用于设置所述起始SVO节点为当前节点,获取所述当前节点的全部可移动节点,并将所述当前节点、所述可移动节点以及每个所述可移动节点对应的代价值存储至所述开放列表中,其中,所述代价值为所述游戏角色从所述当前节点移动至所述可移动节点的估计值,所述可移动节点为所述当前节点的全部邻居节点中所述游戏角色能从所述当前节点移动到的邻居节点;
第二路径构建模块,用于将所述当前节点从所述开放列表中移动至所述闭合列表中,并从所述开放列表中选取代价值最小的所述可移动节点作为最优节点;
路径生成模块,用于若所述最优节点不为所述终止SVO节点,将所述最优节点设置为新的当前节点,更新所述开放列表并再次选取新的最优节点,直到所述新的最优节点为所述终止SVO节点时,将所述终止SVO节点从所述开放列表中移动至所述闭合列表中,并根据所述闭合列表中的全部节点构建路径。
9.一种计算机设备,其特征在于,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行权利要求1-7任一项所述游戏角色的寻路方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1-7任一项任所述游戏角色的寻路方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011577751.1A CN112657190A (zh) | 2020-12-28 | 2020-12-28 | 一种游戏角色的寻路方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011577751.1A CN112657190A (zh) | 2020-12-28 | 2020-12-28 | 一种游戏角色的寻路方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112657190A true CN112657190A (zh) | 2021-04-16 |
Family
ID=75410510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011577751.1A Pending CN112657190A (zh) | 2020-12-28 | 2020-12-28 | 一种游戏角色的寻路方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112657190A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010068872A (ja) * | 2008-09-16 | 2010-04-02 | Namco Bandai Games Inc | プログラム、情報記憶媒体及びゲーム装置 |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
CN104199878A (zh) * | 2014-08-21 | 2014-12-10 | 西安闻泰电子科技有限公司 | 游戏引擎最短路径搜索方法、游戏引擎*** |
CN109432777A (zh) * | 2018-10-26 | 2019-03-08 | 网易(杭州)网络有限公司 | 路径生成方法及装置、电子设备、存储介质 |
CN111289005A (zh) * | 2020-03-16 | 2020-06-16 | 江苏理工学院 | 一种基于a星优化算法的寻路方法 |
CN111714892A (zh) * | 2020-06-29 | 2020-09-29 | 天津亚克互动科技有限公司 | 游戏寻路方法及装置、存储介质、计算机设备 |
US20200393567A1 (en) * | 2019-06-17 | 2020-12-17 | DeepMap Inc. | Nearest neighbor search using compressed octrees representing high definition maps for autonomous vehicles |
CN112090078A (zh) * | 2020-08-13 | 2020-12-18 | 深圳中清龙图网络技术有限公司 | 游戏角色移动控制方法、装置、设备和介质 |
CN114902285A (zh) * | 2020-01-06 | 2022-08-12 | Oppo广东移动通信有限公司 | 一种最近邻搜索方法及装置、设备、存储介质 |
-
2020
- 2020-12-28 CN CN202011577751.1A patent/CN112657190A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010068872A (ja) * | 2008-09-16 | 2010-04-02 | Namco Bandai Games Inc | プログラム、情報記憶媒体及びゲーム装置 |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
CN104199878A (zh) * | 2014-08-21 | 2014-12-10 | 西安闻泰电子科技有限公司 | 游戏引擎最短路径搜索方法、游戏引擎*** |
CN109432777A (zh) * | 2018-10-26 | 2019-03-08 | 网易(杭州)网络有限公司 | 路径生成方法及装置、电子设备、存储介质 |
US20200393567A1 (en) * | 2019-06-17 | 2020-12-17 | DeepMap Inc. | Nearest neighbor search using compressed octrees representing high definition maps for autonomous vehicles |
CN114902285A (zh) * | 2020-01-06 | 2022-08-12 | Oppo广东移动通信有限公司 | 一种最近邻搜索方法及装置、设备、存储介质 |
CN111289005A (zh) * | 2020-03-16 | 2020-06-16 | 江苏理工学院 | 一种基于a星优化算法的寻路方法 |
CN111714892A (zh) * | 2020-06-29 | 2020-09-29 | 天津亚克互动科技有限公司 | 游戏寻路方法及装置、存储介质、计算机设备 |
CN112090078A (zh) * | 2020-08-13 | 2020-12-18 | 深圳中清龙图网络技术有限公司 | 游戏角色移动控制方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111060109B (zh) | 一种基于改进a星算法的无人艇全局路径规划方法 | |
CN109701273B (zh) | 游戏数据的处理方法、装置、电子设备及可读存储介质 | |
CN109509210B (zh) | 障碍物跟踪方法和装置 | |
CN101241507B (zh) | 一种地图寻路方法及*** | |
CN111679679B (zh) | 基于蒙特卡洛树搜索算法的机器人状态规划方法 | |
US8935096B2 (en) | Apparatus for fast path search by learning heuristic function and method thereof | |
CN104270714B (zh) | 确定用户行动轨迹的方法和装置 | |
CN114440916B (zh) | 一种导航方法、装置、设备及存储介质 | |
CN109737965B (zh) | 一种三维虚拟场景下的导航路径最优选择的方法 | |
CN108334523A (zh) | 道路场景地图的构建方法和装置 | |
CN115164907B (zh) | 基于动态权重的a*算法的森林作业机器人路径规划方法 | |
CN113449910B (zh) | 一种基于顺序存储二叉树的航线自动生成方法 | |
CN114119920A (zh) | 三维点云地图构建方法、*** | |
CN107036609A (zh) | 基于bim的虚拟现实导航方法、服务器、终端及*** | |
CN108803659B (zh) | 基于魔方模型的多窗口启发式三维空间路径规划方法 | |
CN114625162A (zh) | 基于混合算法的无人机最优路径规划方法、***及介质 | |
CN114404984A (zh) | 游戏场景的数据处理方法、装置、计算机设备及介质 | |
CN113847927A (zh) | 路径生成的方法、装置、设备、存储介质及程序产品 | |
CN106931978B (zh) | 自动构建路网的室内地图生成的方法 | |
CN113761647A (zh) | 一种无人集群***的仿真方法及*** | |
CN112657190A (zh) | 一种游戏角色的寻路方法、装置及计算机设备 | |
CN114599004B (zh) | 一种基站布局方法和装置 | |
KR101947646B1 (ko) | 도로 정보 처리 방법 및 시뮬레이션 방법 | |
CN115957505A (zh) | 游戏中的寻路方法、装置、计算机设备及可读存储介质 | |
KR102217208B1 (ko) | 경로 탐색 방법 및 장치 |
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 |