CN111375205B - 游戏中寻路路径的处理方法、装置、电子设备及存储介质 - Google Patents
游戏中寻路路径的处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111375205B CN111375205B CN202010152864.0A CN202010152864A CN111375205B CN 111375205 B CN111375205 B CN 111375205B CN 202010152864 A CN202010152864 A CN 202010152864A CN 111375205 B CN111375205 B CN 111375205B
- Authority
- CN
- China
- Prior art keywords
- path
- point
- route
- preset main
- road
- 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
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/56—Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
Abstract
本申请涉及游戏技术领域,尤其是涉及游戏中寻路路径的处理方法、装置、电子设备及存储介质。本申请根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
Description
技术领域
本申请涉及游戏技术领域,尤其是涉及游戏中寻路路径的处理方法、装置、电子设备及存储介质。
背景技术
寻路方法被广泛应用在游戏中,用于生成符合特定条件的行进路径,是控制游戏角色移动的重要基础。在选择寻路方法时,除了寻路的效率、路线的距离之外,路线是否符合游戏场景以及游戏内容也是需要考量的要素。
目前,游戏中的寻路方法主要包括基于路点寻路算法和基于格子的寻路方法。基于路点寻路算法,需要人工详细地在地图上标注路点,以及各个路点之间的连接关系,以形成连通图,这种方法需要大量人工标注,灵活性差、且不适合在复杂的3D场景中进行寻路;基于格子的寻路方法,将场景划分成一个个方格区域,每个方格作为一个节点与周围的格子连通形成四连通或八连通图,寻路时首先得到起点到终点的格子路径,再经平滑化得到最终路径,但基于格子的寻路方法不支持在3D场景中进行寻路,且占用客户端内存的空间和计算开销都较大。
发明内容
有鉴于此,本申请实施例至少提供游戏中寻路路径的处理方法、装置、电子设备及存储介质,可以减少寻路的搜索时间,提高寻路的效率。
本申请主要包括以下几个方面:
第一方面,本申请实施例提供一种游戏中寻路路径的处理方法,所述处理方法包括:
获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线;
获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格;
根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合;
根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径;
根据所述至少一条候选路径,确定目标寻路路径。
在一种可能的实施方式中,在所述获取预设主路径之前,所述处理方法还包括根据以下步骤生成所述预设主路径:
根据游戏场景的场景信息,确定多个关键路径点;
在所述多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点;
根据添加的所述多个路径点和所述关键路径点,生成所述预设主路径。
在一种可能的实施方式中,所述预设主路径的数据信息包括以下信息中的至少一种:
所述路点的类型、所述路点的位置信息、所述路线的方向信息。
在一种可能的实施方式中,所述根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合,包括:
根据所述第一网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的入口路点对应的数据集合;以及,根据所述第二网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的出口路点对应的数据集合。
在一种可能的实施方式中,所述根据所述至少一条候选路径,确定目标寻路路径,包括:
针对所述至少一条候选路径中的每条候选路径,计算每条候选路径的行进代价值;
根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径。
在一种可能的实施方式中,所述处理方法还包括根据以下步骤计算每条候选路径的行进代价值:
分别计算所述寻路起点到每条候选路径对应的所述入口路点之间的第一距离,以及每条候选路径对应的所述出口路点到所述寻路终点之间的第二距离;
计算每条候选路径对应的所述入口路点到所述出口路点之间的第三距离;
将所述第三距离与预设权重值相乘得到的第一数值,与所述第一距离和所述第二距离相加,得到的第二数值,并将所述第二数值确定为每条候选路径的行进代价值。
在一种可能的实施方式中,所述根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径,包括:
根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点;
将从所述寻路起点,经过所述预设主路径上的所述目标入口路点与所述目标出口路点,到达所述寻路终点的路径,确定为所述目标寻路路径。
在一种可能的实施方式中,所述根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点,包括:
根据行进代价值最小的候选路径,计算从行进代价值最小的候选路径对应的所述入口路点进入所述预设主路径前的一段路径的行进方向,与从该入口路点进入所述预设主路径后的一段路径的行进方向之间的第一夹角;以及,计算从行进代价值最小的候选路径对应的所述出口路点离开所述预设主路径前的一段路径的行进方向,与从该出口路点离开所述预设主路径后的一段路径的行进方向之间的第二夹角;
若所述第一夹角小于第一预设角度,则将该入口路点,确定为所述目标入口路点,以及,若所述第二夹角小于第二预设角度,则将该出口路点,确定为所述目标出口路点;
若所述第一夹角大于所述第一预设角度,将小于所述第一预设角度且在所述预设主路径上与该入口路点最近的一个路点,确定为所述目标入口路点,以及,若所述第二夹角大于所述第二预设角度,将小于所述第二预设角度且在所述预设主路径上与该出口路点最近的一个路点,确定为所述目标出口路点。
在一种可能的实施方式中,所述预设主路径的数据信息是以连通图的形式存储。
在一种可能的实施方式中,所述路点的类型包括:调头路点和非调头路点,所述处理方法还包括:
对所述预设主路径中所述多个路点进行遍历,获取第一个非调头路点作为新的入口路点或出口路点。
在一种可能的实施方式中,所述处理方法还包括:
判定所述目标入口路点和所述目标出口路点是否位于同一位置,若是,则以所述寻路起点至所述寻路终点的网格寻路结果作为所述目标寻路路径。
在一种可能的实施方式中,在所述获取预设主路径的之前,所述处理方法还包括:
将游戏场景进行网格化处理,得到所述游戏场景对应的多个网格。
第二方面,本申请实施例还提供一种游戏中寻路路径的处理装置,所述处理装置包括:
第一获取模块,用于获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线;
第二获取模块,用于获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格;
计算模块,用于根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合;
第一确定模块,用于根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径;
第二确定模块,用于根据所述至少一条候选路径,确定目标寻路路径。
在一种可能的实施方式中,所述处理装置还包括第一生成模块;所述第一生成模块,用于根据以下步骤生成所述预设主路径:
根据游戏场景的场景信息,确定多个关键路径点;
在所述多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点;
根据添加的所述多个路径点和所述关键路径点,生成所述预设主路径。
在一种可能的实施方式中,所述预设主路径的数据信息包括以下信息中的至少一种:
所述路点的类型、所述路点的位置信息、所述路线的方向信息。
在一种可能的实施方式中,所述计算模块,用于根据以下步骤计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合:
根据所述第一网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的入口路点对应的数据集合;以及,根据所述第二网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的出口路点对应的数据集合。
在一种可能的实施方式中,所述第二确定模块包括:
计算单元,用于针对所述至少一条候选路径中的每条候选路径,计算每条候选路径的行进代价值;
确定单元,用于根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径。
在一种可能的实施方式中,所述计算单元,用于根据以下步骤计算每条候选路径的行进代价值:
分别计算所述寻路起点到每条候选路径对应的所述入口路点之间的第一距离,以及每条候选路径对应的所述出口路点到所述寻路终点之间的第二距离;
计算每条候选路径对应的所述入口路点到所述出口路点之间的第三距离;
将所述第三距离与预设权重值相乘得到的第一数值,与所述第一距离和所述第二距离相加,得到的第二数值,并将所述第二数值确定为每条候选路径的行进代价值。
在一种可能的实施方式中,所述确定单元,用于根据以下步骤确定所述目标寻路路径:
根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点;
将从所述寻路起点,经过所述预设主路径上的所述目标入口路点与所述目标出口路点,到达所述寻路终点的路径,确定为所述目标寻路路径。
在一种可能的实施方式中,所述确定单元包括:
计算子单元,用于根据行进代价值最小的候选路径,计算从行进代价值最小的候选路径对应的所述入口路点进入所述预设主路径前的一段路径的行进方向,与从该入口路点进入所述预设主路径后的一段路径的行进方向之间的第一夹角;以及,计算从行进代价值最小的候选路径对应的所述出口路点离开所述预设主路径前的一段路径的行进方向,与从该出口路点离开所述预设主路径后的一段路径的行进方向之间的第二夹角;
第一确定子单元,用于若所述第一夹角小于第一预设角度,则将该入口路点,确定为所述目标入口路点,以及,若所述第二夹角小于第二预设角度,则将该出口路点,确定为所述目标出口路点;
第二确定子单元,用于若所述第一夹角大于所述第一预设角度,将小于所述第一预设角度且在所述预设主路径上与该入口路点最近的一个路点,确定为所述目标入口路点,以及,若所述第二夹角大于所述第二预设角度,将小于所述第二预设角度且在所述预设主路径上与该出口路点最近的一个路点,确定为所述目标出口路点。
在一种可能的实施方式中,所述预设主路径的数据信息是以连通图的形式存储。
在一种可能的实施方式中,所述路点的类型包括:调头路点和非调头路点,所述第一获取模块,还用于:
对所述预设主路径中所述多个路点进行遍历,获取第一个非调头路点作为新的入口路点或出口路点。
在一种可能的实施方式中,所述确定单元,还用于:
判定所述目标入口路点和所述目标出口路点是否位于同一位置,若是,则以所述寻路起点至所述寻路终点的网格寻路结果作为所述目标寻路路径。
在一种可能的实施方式中,所述处理装置还包括第二生成模块;所述第二生成模块,用于根据以下步骤生成多个网格:
将游戏场景进行网格化处理,得到所述游戏场景对应的多个网格。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中所述的游戏中寻路路径的处理方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中所述的游戏中寻路路径的处理方法的步骤。
本申请实施例中,根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例一所提供的一种游戏中寻路路径的处理方法的流程图;
图2a-图2c示出了本申请实施例一所提供的生成预设主路径的示意图;
图3示出了本申请实施例二所提供的一种游戏中寻路路径的处理装置的功能模块图之一;
图4示出了本申请实施例二所提供的一种游戏中寻路路径的处理装置的功能模块图之二;
图5示出了图4中第二确定模块的功能模块图;
图6示出了图5中确定单元的功能模块图;
图7示出了本申请实施例三所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中的附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“游戏场景中寻路”,给出以下实施方式,对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
本申请实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何需要进行寻路的场景,本申请实施例并不对具体的应用场景作限制,任何使用本申请实施例提供的游戏中寻路路径的处理、装置、电子设备及存储介质的方案均在本申请保护范围内。
值得注意的是,在本申请提出之前,游戏中的寻路方法主要包括基于路点寻路算法和基于格子的寻路方法。基于路点寻路算法,需要人工详细地在地图上标注路点,以及各个路点之间的连接关系,以形成连通图,这种方法需要大量人工标注,灵活性差、且不适合在复杂的3D场景中进行寻路;基于格子的寻路方法,将场景划分成一个个方格区域,每个方格作为一个节点与周围的格子连通形成四连通或八连通图,寻路时首先得到起点到终点的格子路径,再经平滑化得到最终路径,但基于格子的寻路方法不支持在3D场景中进行寻路,且占用客户端内存的空间和计算开销都较大。
针对上述问题,本申请实施例根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
为便于对本申请进行理解,下面结合具体实施例对本申请提供的技术方案进行详细说明。
实施例一
参见图1,图1为本申请实施例一所提供的一种游戏中寻路路径的处理方法的流程图,所述游戏中寻路路径的处理包括以下步骤:
S101:获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线。
在具体实施中,可以事先根据游戏场景生成预设主路径,预设主路径为基于游戏场景预先生成的主路径,可以在实时寻路时,提供对游戏场景路线的规划信息,可以辅助得到灵活准确的寻路结果,以提高寻路的效率。其中,同一游戏场景可以设置一条或多条预设主路径,不同的游戏场景可以预先设置不同的预设主路径。这里,预设主路径包括多个路点,以及由每两个相邻路点连接形成的路线构成。
需要说明的是,本申请提供的游戏中寻路路径的处理方法,是一种基于“主路径”的自动寻路方法,“主路径”是设计者在场景中标记出的线路,用于为寻路算法提供对场景路线的规划信息,算法会生成倾向于延“主路径”行走的路线,在不同的寻路情境下,可以使用不同的“主路径”。
进一步地,在步骤S101所述获取预设主路径之前,根据以下步骤生成所述预设主路径:
根据游戏场景的场景信息,确定多个关键路径点;在所述多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点;根据添加的所述多个路径点和所述关键路径点,生成所述预设主路径。
在具体实施中,根据游戏中游戏场景的场景信息,可以确定出与场景信息相关联的多个关键路径点,并在该多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点,进而,根据添加的多个路径点和关键路径点,可以生成与该游戏场景对应的预设主路径,这里,可以事先为游戏中的每个游戏场景都设置预设主路径,这样,在实时寻路时,根据生成的预设主路径进行寻路,可以提升寻路效率。其中,预设间隔可以是等距的,也可以是非等距的。
参见图2a-图2c所示,为本申请实施例一所提供的生成预设主路径的示意图。如图2a所示,为根据游戏场景的场景信息,确定的多个关键路径点,以及各个关键路径点之间形成的预设主路径的框架图,如图2b所示,为在多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点之后形成的预设主路径线路图,如图2c所示,为对添加路径点之后形成的线路进行平滑处理后的预设主路径线路图。其中,关键路径点用大黑点在图中进行表示,添加的路径点用小黑点进行表示。这里,图2c所示的预设主路径是在原路径中的拐角处增设两个路径点的连线,这样,可以使预设主路径的路径更平滑,其中,预设主路径中的路径不限于直线,也可以为曲线。
进一步地,预设主路径的数据信息是以连通图的形式存储。
需要说明的是,在生成预设主路径之后,为减少实时寻路时的计算量,可以预先根据生成的预设主路径中的各个路点,以及各个路点之间的距离,建立预设主路径的邻接矩阵,其中,邻接矩阵用于表示预设主路径中的各个路点之间的距离,并将邻接矩阵存储至预设主路径的数据信息中,即,预设主路径的数据信息以连通图的形式进行存储。这样,在实时寻路时,可以在确定出在预设主路径上的任意两个路点之后,直接根据预设主路径的数据信息,确定出两个路点之间的距离,可以进一步提高寻路的效率。
一示例中,预设主路径包括三个路点a1、a2、a3,则预设主路径对应的邻接矩阵为其中,若路点ai与路点aj相邻,则aij表示路点ai到aj的路径距离,1≤i≤3,1≤j≤3,a11=a22=a33=0;若路点ai与路点aj不相邻,则aij用特殊数值进行表示,以表征出路径点ai与路径点aj不相邻。这里,预设主路径上的路点都可以作为进入预设主路径的入口,以及离开预设主路径的出口,将进入预设主路径的路点即为入口路点,离开预设主路径的路点即为出口路点。
需要说明的是,预设主路径是连接游戏场景中关键路点的路线,通过上述方式生成的预设主路径可以体现出对场景路线的规划,是生成目标寻路路径时的重要依据,预设主路径上的所有路点都可作为寻路时进入或离开预设主路径的出入口,这个出口可以称为出口路点,这个入口可以称为入口路点。这里,可以将预设主路径的所有路点,以及由每两个相邻路点连接形成的路线进行存储以备使用,以下称为预设主路径的数据信息,具体地,根据预设主路径的数据信息还可生成一张连通图,将路点视作顶点,以其间是否有路径决定连通性,以路径长度视为边长,连通图可用邻接矩阵的方式存储备用。两个相邻路点连接形成的路线可以有方向信息,例如行车道上的车辆需要右侧通行,那么同一条马路反映在预设主路径上就需要相向而行的两条路线,十字路口处也需要标注直行或左右转的路线,最后生成的连通图也变成了有向连通图。
进一步地,在步骤S101所述获取预设主路径之前,根据以下步骤生成所述游戏场景对应的多个网格:
将游戏场景进行网格化处理,得到所述游戏场景对应的多个网格。
在具体实施中,可以对游戏场景进行网格化处理,即在游戏场景上添加导航网格,进而得到游戏场景对应的多个网格。
需要说明的是,可以基于导航网格(Navigation Mesh,简称为NavMesh)的寻路方法,导航网格是根据游戏场景生成的多边形网格,用以描述场景中可以行走的平面,使用导航网格寻路时,需要先计算从寻路起点到寻路终点的路径经过了哪些网格,再根据网格生成一条细化的移动路径。
S102:获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格。
在具体实施中,可以预先在游戏中的游戏场景中建立导航网格,导航网格由多个互相连接的多边形组成,每个多边形可以看作是一个网格。由于寻路起点和寻路终点可能在游戏场景中的任意一个网格中的任意位置,所以,很难提前离线计算出在任意网格中的任意位置到预设主路径上的各个路点之间的距离,这里,可以提前计算每个网格的中心点到预设主路径上的各个路点的距离,并进行存储,以备实时寻路时使用。在进行实时寻路时,在获取寻路起点和寻路终点,并确定寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格之后,可以将寻路起点到预设主路径上各个路点之间的距离,用寻路起点对应的第一网格的中心点到预设主路径上的各个路点之间的距离来代替,以及,可以将寻路终点到预设主路径上各个路点之间的距离,用寻路终点对应的第二网格的中心点到预设主路径上的各个路点之间的距离来代替,上述距离可以直接从离线计算的数据中直接获得,可以在实时寻路时,直接使用上述数据,以提升实时寻路的效率。这里,除了用网格的中心点进行距离的计算外,也可以用网格的其他位置的点来进行计算。
S103:根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合。
在具体实施中,可以根据各个游戏场景中各个网格分别对应的位置信息,以及预设主路径的数据信息,事先离线计算出各个游戏场景中各个网格到预设主路径上所有路点之间的距离并存储,并根据上述计算出的数据,计算出各个网格到预设主路径上的入口路点对应的数据集合,以及各个网格到预设主路径上的出口路点对应的数据集合,进而,在确定出寻路起点对应的第一网格后,可以直接计算得到第一网格对应的预设主路径上的入口路点对应的数据集合,以及第二网格对应的预设主路径上的出口路点对应的数据集合。这里,入口路点对应的数据集合包括多个入口路点,出口路点对应的数据集合包括多个出口路点。
其中,预设主路径的数据信息包括以下信息中的至少一种:所述路点的类型、所述路点的位置信息、所述路线的方向信息。
在具体实施中,预设主路径中每两相邻路点连接形成的路线中,包括该路线的首位两端分别对应的路点的类型、该路线的首位两端分别对应的路点位置信息,以及该路线的方向信息。进一步地,对预设主路径上的入口路点对应的数据集合的计算过程,以及对预设主路径上的出口路点对应的数据集合的计算过程进行阐述,步骤S103中所述根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合,包括以下步骤:
根据所述第一网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的入口路点对应的数据集合;以及,根据所述第二网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的出口路点对应的数据集合。
在具体实施中,遍历预设主路径上的所有路点,根据寻路起点所在的第一网格的位置信息和预设主路径中路线的数据信息,计算得到预设主路径上的入口路点对应的数据集合,即,确定出寻路起点对应的入口路点的数据集合,其中,寻路起点对应的入口路点的数据集合中包含预设主路径上的多个路点;根据寻路终点所在的第二网格的位置信息和预设主路径中的路线信息,计算得到预设主路径上的出口路点对应的数据集合,即,确定出寻路终点对应的出口路点的数据集合,其中,寻路终点对应的出口路点的数据集合中包含预设主路径上的多个路点。
需要说明的是,在已知寻路起点的近似位置第一网格的位置信息后,入口路点的范围也受到了限制,例如,以高速路类比,在某地出发,不论到任何地方,想要用时最短的话,可选择的高速路入口路点只有周边少数几个,一般不会出现越过近处的高速入口路点,到了很远的地方再上高速的情况,那么具体哪些入口路点是可选的,一种近似的方法是遍历所有路点,找到所有入口路点对应的数据集合,出口路点同理。
S104:根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径。
在具体实施中,从预先存储的网格到预设主路径之间的距离信息中,可以查找到寻路起点到预设主路径上的各个入口路点中的一个入口路点,经过预设主路径上的各个出口路点中的一个出口路点,到达寻路终点的一条路径,并根据预设主路径上的入口路点和出口路点分别对应的数据集合,确定从寻路起点,经过预设主路径上的入口路点对应的数据集合中的一个入口路点与出口路点对应的数据集合中的一个出口路点,到达寻路终点的一条候选路径,采用上述方式,可以直接得到多条候选路径。
需要说明的是,通过预先存储的导航网格中一个网格到另一个网格的路径的路径信息,在实时寻路时,可以快速地确定出寻路起点到寻路终点且倾向于预设主路径的候选路径,这样,可以减少寻路的搜索时间,提高寻路的效率,在符合游戏场景的设计的同时,提升用户对游戏的沉浸感。
这里,确定导航网格中每个网格经过预设主路径中的部分路径,到其他任一网格的至少一条路径的路径信息,并将路径信息进行存储,其中路径信息包括该路径对应的路径首尾两个网格的信息和预设主路径中入口路点和出口路点的信息。这样,在获取到当前游戏场景中的寻路起点和寻路终点后,可以通过导航网格直接确定出寻路起点所在的第一网格,以及寻路终点所在的第二网格,进一步地,从预先存储的各个路径的路径信息中,查找出寻路起点所在的第一网格到寻路终点所在的第二网格的路径中,进入预设主路径的入口路点和离开预设主路径的出口路点,并将靠近寻路起点的入口点作为第一网格对应的入口路点的数据集合,将靠近寻路终点的出口路点作为第二网格对应的出口路点的数据集合,这样,在实时寻路时,可以减少寻路的搜索时间,提高寻路的效率。
S105:根据所述至少一条候选路径,确定目标寻路路径。
在具体实施中,根据从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,确定出目标寻路路径,这里,目标寻路路径可以为代价最小,或路径最短,或用时最短的路径。
进一步地,对确定目标寻路路径的步骤进行说明,也即,步骤S105中所述根据所述至少一条候选路径,确定目标寻路路径,包括以下步骤:
步骤a:针对所述至少一条候选路径中的每条候选路径,计算每条候选路径的行进代价值。
在具体实施中,对于确定出的从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径中的每条候选路径,计算出每条候选路径的行进代价值,其中,预设主路径上的至少一个入口路点为确定出的入口路点对应的数据集合中的一个路点,预设主路径上的至少一个出口路点为确定出的出口路点对应的数据集合中的一个路点。这里,每条候选路径对应的行进代价值,可以表征出游戏角色在该候选路径上行进所要花费的代价,这个“代价”可以用行进距离来表征,也可以用时间来表征,对于本申请,采用距离来表征。
进一步地,根据以下步骤计算每条候选路径的行进代价值:
步骤a1:分别计算所述寻路起点到每条候选路径对应的所述入口路点之间的第一距离,以及每条候选路径对应的所述出口路点到所述寻路终点之间的第二距离。
在具体实施中,每条候选路径由三段路径组成,包括寻路起点到一个入口路点之间的第一路径、该入口路点到一个出口路点之间的第二路径和该出口路点到寻路终点之间的第三路径,故,在计算每条候选路径的行进代价值时,可以分别计算该条候选路径包括的三段路径的距离。这里,考虑到寻路起点和寻路终点可能是导航网格中任意一个网格中的一个点,故预先无法计算出寻路起点或寻路终点到预设主路径上任意一个路点之间的距离,但考虑到导航网格中的网格的数量有限,故,可以通过导航网格的寻路方法,方便地计算出从一个网格到预设主路径中任意一个路点之间的距离,同理也可以计算出预设主路径上的任意一个路点到导航网格中的任意一个网格的距离,因此,这里,可以预先计算出导航网格中各个网格与预设主路径上任意一个路点之间的距离,并进行存储,这样,可以在实时寻路时,通过确定出寻路起点所在的第一网格以及寻路终点所在的第二网格,可以将第一网格到该入口路点之间的路径的距离,作为寻路起点到该入口路点之间的第一路径的距第一离,同理,可以将该出口路点到第二网格之间的路径的距离,作为该出口路点到寻路终点之间的第二路径的第二距离。
这里,网格寻路算法为导航网格中用于寻路的算法,可以计算出导航网格中一个网格到另一个网格之间的路径。
步骤a2:计算每条候选路径对应的所述入口路点到所述出口路点之间的第三距离。
在具体实施中,可以根据路点寻路算法和预设主路径中路线的数据信息,计算出每条候选路径对应的入口路点和出口路点之间的第三距离。这里,考虑到实时寻路时的效率,可以事先根据生成的预设主路径,建立用于表示预设主路径中各个路点之间的距离的邻接矩阵,进而,并将上述信息作为预设主路径中路线的数据信息进行存储,在实时寻路时,可以直接从确定出预设主路径中任一路点与任一路点之间的距离。
步骤a3:将所述第三距离与预设权重值相乘得到的第一数值,与所述第一距离和所述第二距离相加,得到的第二数值,并将所述第二数值确定为每条候选路径的行进代价值。其中,所述预设权重值为大于0且小于1的常数。
在具体实施中,由于预设主路径是根据游戏场景生成的带有路径规划信息的路径,因此,可以将预设主路径与其他路径相区分,这里,可以理解为相同行进距离的情况下,在预设主路径行进花费的行进时间短一些,即相同行进距离下,在预设主路径的行进代价值小一些。具体地,可以将每条候选路径对应的入口路点到出口路点之间的第三距离与预设权重值相乘得到的第一数值,与寻路起点到该入口路点之间的第一距离和该出口路点到寻路终点之间的第二距离相加得到第二数值,并将该第二数值确定为该条候选路径的行进代价值。这里,可以将预设权重设置为大于0且小于1的常数,用于表示在预设主路径上进行代价更低,寻路结果对延预设主路径行走的倾向性越高。
一示例中,可以将预设主路径比作高速公路类,若两地间的多条路线中,路程最短的路线可能是不经过高速的,但用时最短的路线却很可能是经过高速的。因为上高速后,可以达到更高的速度,弥补了绕路的耗时。另外,节约用时的关键还在于正确地选择高速的出入口。同理,本申请采用代价值来对各个候选路径进行评估。
步骤b:根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径。
在具体实施中,在计算出至少一条候选路径中行进代价值之后,将各条候选路径的行进代价值进行比较,并确定出最小行进代价值对应的候选路径,进而,根据最小行进代价值对应的候选路径,来确定目标寻路路径。
进一步地,步骤S105中所述根据所述至少一条候选路径,确定目标寻路路径,包括以下步骤:
步骤c1:根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点。
在具体实施中,在从确定出的至少一个候选路径中,确定出行进代价值最小的候选路径之后,可以根据该进行代价值最小的候选路径对应的入口路点,确定出目标寻路路径对应的目标入口路点,以及,可以根据该进行代价值最小的候选路径对应的出口路点,确定出目标寻路路径对应的目标出口路点。
进一步地,所述路点的类型包括:调头路点和非调头路点,对所述预设主路径中所述多个路点进行遍历,获取第一个非调头路点作为新的入口路点或出口路点。
在具体实施中,根据确定的至少一条候选路径,确定目标寻路路径时,还需要考虑路点的类型,若某一条候选路径对应的入口路点或出口路点为调头路点,需要将该调头路点调为非调头路点作为该候选路径的新的入口路点或出口路点。
进一步地,步骤c1中所述根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点,包括以下步骤:
步骤c11:根据行进代价值最小的候选路径,计算从行进代价值最小的候选路径对应的所述入口路点进入所述预设主路径前的一段路径的行进方向,与从该入口路点进入所述预设主路径后的一段路径的行进方向之间的第一夹角;以及,计算从行进代价值最小的候选路径对应的所述出口路点离开所述预设主路径前的一段路径的行进方向,与从该出口路点离开预设主路径后的一段路径的行进方向之间的第二夹角。
在具体实施中,在从预设主路径上的某一入口路点进入到预设主路径时,可能出现调头情况,如果在该入口路点掉头,则实际的行进代价值要比计算的进行代价值高很多,故,在此种情况下,需要调整入口路点,即将该入口路点临近的且不会调头路点作为目标入口路点,目标出口路点的确定方式与目标入口路点的确定方式相同。具体地,可以通过从行进代价值最小的候选路径对应的入口路点进入预设主路径前的一段路径的行进方向,与从该入口路点进入预设主路径后的一段路径的行进方向之间的第一夹角的大小来确定目标入口路点,以及,通过从行进代价值最小的候选路径对应的出口路点离开预设主路径前的一段路径的行进方向,与从该出口路点离开预设主路径后的一段路径的行进方向之间的第二夹角来确定目标出口路点。
步骤c12:若所述第一夹角小于第一预设角度,则将该入口路点,确定为所述目标入口路点,以及,若所述第二夹角小于第二预设角度,则将该出口路点,确定为所述目标出口路点。
在具体实施中,在确定出行进代价值最小的候选路径对应的入口路点进入预设主路径前的一段路径的行进方向,与从该入口路点进入预设主路径后的一段路径的行进方向之间的第一夹角后,若第一夹角小于第一预设角度,则说明该入口路点不为调头路点,则直接将行进代价值最小的候选路径对应的该入口路点,确定为目标路径的目标入口路点;以及,在确定出行进代价值最小的候选路径对应的出口路点离开预设主路径前的一段路径的行进方向,与从该出口路点离开预设主路径后的一段路径的行进方向之间的第二夹角后,若第二夹角小于第二预设角度,则说明该出口路点不为调头路点,则直接将行进代价值最小的候选路径对应的该出口路点,确定为目标路径的目标出口路点。其中,第一预设角度和第二预设角度即为方向转角,均可以设为小于或等于90度的值。
步骤c13:若所述第一夹角大于所述第一预设角度,将小于所述第一预设角度且在所述预设主路径上与该入口路点最近的一个路点,确定为所述目标入口路点,以及,若所述第二夹角大于所述第二预设角度,将小于所述第二预设角度且在所述预设主路径上与该出口路点最近的一个路点,确定为所述目标出口路点。
在具体实施中,若第一夹角大于第一预设角度,说明行进代价值最小的候选路径对应的入口路点为调头路点,则按预设主路径路线上的路点顺序,找到与该入口路点最近且不会调头路点作为目标入口路点;以及,若第二夹角大于第二预设角度,说明行进代价值最小的候选路径对应的出口路点为调头路点,则按预设主路径路线上的路点顺序,找到与该出口路点最近且不会调头路点作为目标出口路点。
需要说明的是,从导航网格上的路径进入预设主路径时,可能出现调头的情况,因此需要进行调优,具体方法是如果使用当前入口路点出现调头的情况(方向转角超过90度),则按预设主路径上入口路点到出口路点之间路线上的路点顺序,找到第一个作为入口路点不会调头的路点作为新的入口路点,另外,出口路点处也会出现调头的情况,也可类似处理解决。
步骤c2:将从所述寻路起点,经过所述预设主路径上的所述目标入口路点与所述目标出口路点,到达所述寻路终点的路径,确定为所述目标寻路路径。
在具体实施中,在根据最小行进代价值对应的候选路径,确定出目标寻路路径对应的目标入口路点和目标出口路点后,可以将寻路起点,经过预设主路径上的目标入口路点与目标出口路点,达到寻路终点的路径,确定为目标寻路路径。
进一步地,在确定目标寻路路径时,判定所述目标入口路点和所述目标出口路点是否位于同一位置,若是,则以所述寻路起点至所述寻路终点的网格寻路结果作为所述目标寻路路径。
这里,如果目标入口路点和目标出口路点为同一路点,则不经过预设主路径,直接使用寻路起点对应的第一网格到寻路终点对应的第二网格,并利用网格寻路算法计算出目标寻路路径。
需要说明的是,预设主路径是根据游戏场景进行简单的路径点标注得到主用路径,可以提供对游戏场景路线的规划信息,在不同的游戏场景中进行寻路,可以使用不同的预设主路径,能够辅助得到灵活准确的寻路结果,以提高寻路的效率。导航网格由多个互相连接的多边形组成,在建立的导航网格内进行寻路时,通过计算从寻路起点到寻路终点的路径经过了哪些网格,再根据这些网格路径生成一条细化的路径,得到寻路的路径。但是普通的导航寻路没有像路点寻路方法那样的人工标注,只是单纯地选择较短的路径,往往会得到不符合游戏场景的寻路路径,例如在一个城市场景中,直接使用导航网格进行寻路,很可能得到贴墙行走、在马路中间行走等与日常生活经验不符的路径,这样,会降低玩家的沉浸感。而本申请通过将导航网格和预设主路径相结合进行寻路,即将导航网格的寻路方法和基于路点寻路算法相结合使用,而且由于生成的寻路路径为倾向于预设主路径的路径,可以避免生成与游戏场景规划不符的寻路路径,并且根据预先存储的路径信息,可以快速地确定出寻路路径,进而减少寻路的搜索时间,提高寻路的效率。
这里,实时寻路路线可视不同游戏需求,可以运行在客户端或服务器上,运算速度不会成为瓶颈。
在一个具体实施例中,对本申请中利用游戏中寻路路径的处理方法得到目标寻路路径的过程进行说明:
(1)基于预设主路径的寻路方法原理
预设主路径上各个路点即可看作入口路点和出口路点,从寻路起点S到寻路终点T的寻路问题,可通过建模找到最优的入口路点Vp和出口路点Vq,使以下代价函数最小:
Cost(S,T,Vp,Vq)=DN(S,Vp)+DM(Vp,Vq)*R+DN(Vq,T)
其中:函数DN表示在导航网格上最优寻路的距离,函数DM表示在预设主路径上的最短路线距离,R是一个小于1的正系数,用于表示在预设主路径上行进的代价更低,该值越小,寻路结果对延预设主路径行进的倾向性越高。
(2)离线预处理
离线预处理步骤可以帮助更快速地计算行进代价值Cost。首先,由于预设主路径上路点有限,可以使用经典的多源最短路径算法(例如Floyd算法)将DM的取值及其对应最短路线全部计算出。
函数DN的参数是非离散的,无法全部求出,可以考虑近似方法:
Cost(S,T,Vp,Vq)≈Cost(cn(S),cn(T),Vp,Vq)
=D_N(V_p,c_(n(S)))+D_M(V_p,V_q)*R+D_N(V_q,c_(n(T)))
其中,ci表示导航网格上编号为i的网格的中心位置,n(X)表示点X所在导航网格中的编号,由于导航网格上寻路起点和寻路终点互换不会影响寻路距离,将公式第一项的两个参数做了交换,以便后续的离散化处理,cn(S)和cn(T)分别用来作为对寻路起点和寻路终点位置的近似,这样参数范围就离散到了有限个导航网格的中心位置和预设主路径上的路点的组合,对应的DN值可以全部离线计算出。实际存储的DM和DN都是参数离散化后的版本,是(int,int)到float的映射,不妨记为和/>有如下关系:
其中,m(X)表示点X在预设主路径上对应的编号,即表示预设主路径的i号路点到j号路点,在预设主路径上的最短路线距离;/>表示预设主路径的i号路点,到导航网格的k号网格的中心位置,在导航网格上的寻路距离。
进一步地,在已知寻路起点的近似位置cn(S)后,入口路点的范围也受到了限制,依然以高速路类比,在某地出发,不论到任何地方,想要用时最短的话,可选择的高速路入口只有周边少数几个,一般不会出现越过近处的高速入口,到了很远的地方再上高速的情况。那么具体哪些入口是可选的,一种近似的方法是遍历所有ci,i≠n(S),分别找出使行进代价值cost最小的p,q,将p值汇总为集合即为对应cn(S)的可选入口编号集。
同理,在已知寻路终点的近似位置cn(T)后,出口路点的范围也有限制,使用类似方法可求出可选出口编号集如果使用的预设主路径是无方向限定的,还会有/>限定了取值范围后,需要离线计算和存储的DN值也会大大减少。
(3)实时路线生成
输入为路线的寻路始点S和寻路终点T,判断S和T在哪个导航网格上,获取nS=n(S)和nT=n(T);遍历中的路点和/>中的路点组合,求解使行进代价值最小的预设主路径目标入口路点和目标出口路点:
这里,Vp,Vq即为选定的预设主路径的入口路点和出口路点,根据多源最短路径算法的离线计算结果,即可得到预设主路径上Vp到Vq的路线所经过的路点,再结合路线的参数信息,得到具体的路线。
在本申请实施例中,根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
实施例二
基于同一申请构思,本申请实施例二中还提供了与实施例一提供的游戏中寻路路径的处理方法对应的游戏中寻路路径的处理装置,由于本申请实施例中的装置解决问题的原理与本申请上述实施例一的游戏中寻路路径的处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参见图3至图6所示,图3示出了本申请实施例二所提供的一种游戏中寻路路径的处理装置300的功能模块图之一;图4示出了本申请实施例二所提供的一种游戏中寻路路径的处理装置300的功能模块图之二;图5示出了图4中第二确定模块350的功能模块图;图6示出了图5中确定单元352的功能模块图;
如图3和图4所示,游戏中寻路路径的处理装置300包括:
第一获取模块310,用于获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线;
第二获取模块320,用于获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格;
计算模块330,用于根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合;
第一确定模块340,用于根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径;
第二确定模块350,用于根据所述至少一条候选路径,确定目标寻路路径。
在本申请实施例中,根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
在一种可能的实施方式中,如图4所示,所述游戏中寻路路径的处理装置300还包括第一生成模块360;所述第一生成模块360,用于根据以下步骤生成所述预设主路径:
根据游戏场景的场景信息,确定多个关键路径点;
在所述多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点;
根据添加的所述多个路径点和所述关键路径点,生成所述预设主路径。
在一种可能的实施方式中,所述预设主路径的数据信息包括以下信息中的至少一种:
所述路点的类型、所述路点的位置信息、所述路线的方向信息。
在一种可能的实施方式中,如图3所示,所述计算模块330,用于根据以下步骤计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合:
根据所述第一网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的入口路点对应的数据集合;以及,根据所述第二网格的位置信息和所述预设主路径的数据信息,从所述预设主路径的所有路点中,计算得到所述预设主路径上的出口路点对应的数据集合。
在一种可能的实施方式中,如图5所示,所述第二确定模块350包括:
计算单元351,用于针对所述至少一条候选路径中的每条候选路径,计算每条候选路径的行进代价值;
确定单元352,用于根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径。
在一种可能的实施方式中,如图5所示,所述计算单元351,用于根据以下步骤计算每条候选路径的行进代价值:
分别计算所述寻路起点到每条候选路径对应的所述入口路点之间的第一距离,以及每条候选路径对应的所述出口路点到所述寻路终点之间的第二距离;
计算每条候选路径对应的所述入口路点到所述出口路点之间的第三距离;
将所述第三距离与预设权重值相乘得到的第一数值,与所述第一距离和所述第二距离相加,得到的第二数值,并将所述第二数值确定为每条候选路径的行进代价值。
在一种可能的实施方式中,如图5所示,所述确定单元352,用于根据以下步骤确定所述目标寻路路径:
根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点;
将从所述寻路起点,经过所述预设主路径上的所述目标入口路点与所述目标出口路点,到达所述寻路终点的路径,确定为所述目标寻路路径。
在一种可能的实施方式中,如图6所示,所述确定单元352包括:
计算子单元3521,用于根据行进代价值最小的候选路径,计算从行进代价值最小的候选路径对应的所述入口路点进入所述预设主路径前的一段路径的行进方向,与从该入口路点进入所述预设主路径后的一段路径的行进方向之间的第一夹角;以及,计算从行进代价值最小的候选路径对应的所述出口路点离开所述预设主路径前的一段路径的行进方向,与从该出口路点离开所述预设主路径后的一段路径的行进方向之间的第二夹角;
第一确定子单元3522,用于若所述第一夹角小于第一预设角度,则将该入口路点,确定为所述目标入口路点,以及,若所述第二夹角小于第二预设角度,则将该出口路点,确定为所述目标出口路点;
第二确定子单元3523,用于若所述第一夹角大于所述第一预设角度,将小于所述第一预设角度且在所述预设主路径上与该入口路点最近的一个路点,确定为所述目标入口路点,以及,若所述第二夹角大于所述第二预设角度,将小于所述第二预设角度且在所述预设主路径上与该出口路点最近的一个路点,确定为所述目标出口路点。
在一种可能的实施方式中,所述预设主路径的数据信息是以连通图的形式存储。
在一种可能的实施方式中,所述路点的类型包括:调头路点和非调头路点,如图3所示,所述第一获取模块310,还用于:
对所述预设主路径中所述多个路点进行遍历,获取第一个非调头路点作为新的入口路点或出口路点。
在一种可能的实施方式中,如图5所示,所述确定单元352,还用于:
判定所述目标入口路点和所述目标出口路点是否位于同一位置,若是,则以所述寻路起点至所述寻路终点的网格寻路结果作为所述目标寻路路径。
在一种可能的实施方式中,如图4所示,所述游戏中寻路路径的处理装置300还包括第二生成模块370;所述第二生成模块370,用于根据以下步骤生成多个网格:
将游戏场景进行网格化处理,得到所述游戏场景对应的多个网格。
在本申请实施例中,根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
实施例三
基于同一申请构思,参见图7所示,为本申请实施例三提供的一种电子设备700的结构示意图,包括:处理器710、存储器720和总线730,所述存储器720存储有所述处理器710可执行的机器可读指令,当电子设备700运行时,所述处理器710与所述存储器720之间通过所述总线730进行通信,所述机器可读指令被所述处理器710运行时执行如实施例一所述的游戏中寻路路径的处理方法的步骤。
具体地,所述机器可读指令被所述处理器710执行时可以执行如下处理:
获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线;
获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格;
根据所述第一网格和所述第二网格分别对应的位置信息,以及所述预设主路径的数据信息,计算得到所述预设主路径上的入口路点和出口路点分别对应的数据集合;
根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径;
根据所述至少一条候选路径,确定目标寻路路径。
本申请实施例中,根据寻路起点所对应的第一网格和寻路终点所对应的第二网格分别对应的位置信息,以及预设主路径的数据信息,确定从寻路起点,经过预设主路径上的至少一个入口路点与至少一个出口路点,到达寻路终点的至少一条候选路径,并根据至少一条候选路径,确定出目标寻路路径。采用上述方案,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
实施例四
基于同一申请构思,本申请实施例四还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例一提供的游戏中寻路路径的处理方法的步骤。
具体地,所述存储介质能够为通用的存储介质,如移动磁盘、硬盘等,所述存储介质上的计算机程序被运行时,能够执行上述游戏中寻路路径的处理方法,通过将网格寻路和预先标记的主路径确定寻路路径,使确定出的目标寻路路径为倾向于主路径的路径,可以减少寻路的搜索时间,提高寻路的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应所述理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种游戏中寻路路径的处理方法,其特征在于,所述处理方法包括:
获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线;
获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格;
从预先存储的所述游戏场景中每个网格经过预设主路径中的部分路径到其他任一网格的至少一条路径的路径信息中,查找出所述寻路起点所在的第一网格到所述寻路终点所在的第二网格的路径中,进入预设主路径的入口路点和离开预设主路径的出口路点,并将靠近寻路起点的入口点作为第一网格对应的入口路点的数据集合,将靠近寻路终点的出口路点作为第二网格对应的出口路点的数据集合;所述路径信息包括所述预设主路径中的各个路点之间的距离,以及所述游戏场景中各个网格到预设主路径上所有路点之间的距离;
根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径;
根据所述至少一条候选路径,确定目标寻路路径。
2.根据权利要求1所述的处理方法,其特征在于,在所述获取预设主路径之前,所述处理方法还包括根据以下步骤生成所述预设主路径:
根据游戏场景的场景信息,确定多个关键路径点;
在所述多个关键路径点中相邻两个关键路径点之间,以预设间隔添加多个路径点;
根据添加的所述多个路径点和所述关键路径点,生成所述预设主路径。
3.根据权利要求1所述的处理方法,其特征在于,所述预设主路径的数据信息包括以下信息中的至少一种:
所述路点的类型、所述路点的位置信息、所述路线的方向信息。
4.根据权利要求1所述的处理方法,其特征在于,所述根据所述至少一条候选路径,确定目标寻路路径,包括:
针对所述至少一条候选路径中的每条候选路径,计算每条候选路径的行进代价值;
根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径。
5.根据权利要求4所述的处理方法,其特征在于,所述处理方法还包括根据以下步骤计算每条候选路径的行进代价值:
分别计算所述寻路起点到每条候选路径对应的所述入口路点之间的第一距离,以及每条候选路径对应的所述出口路点到所述寻路终点之间的第二距离;
计算每条候选路径对应的所述入口路点到所述出口路点之间的第三距离;
将所述第三距离与预设权重值相乘得到的第一数值,与所述第一距离和所述第二距离相加,得到的第二数值,并将所述第二数值确定为每条候选路径的行进代价值。
6.根据权利要求4所述的处理方法,其特征在于,所述根据所述至少一条候选路径中行进代价值最小的候选路径,确定所述目标寻路路径,包括:
根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点;
将从所述寻路起点,经过所述预设主路径上的所述目标入口路点与所述目标出口路点,到达所述寻路终点的路径,确定为所述目标寻路路径。
7.根据权利要求6所述的处理方法,其特征在于,所述根据行进代价值最小的候选路径对应的所述入口路点和所述出口路点,确定所述目标寻路路径对应的目标入口路点和目标出口路点,包括:
根据行进代价值最小的候选路径,计算从行进代价值最小的候选路径对应的所述入口路点进入所述预设主路径前的一段路径的行进方向,与从该入口路点进入所述预设主路径后的一段路径的行进方向之间的第一夹角;以及,计算从行进代价值最小的候选路径对应的所述出口路点离开所述预设主路径前的一段路径的行进方向,与从该出口路点离开所述预设主路径后的一段路径的行进方向之间的第二夹角;
若所述第一夹角小于第一预设角度,则将该入口路点,确定为所述目标入口路点,以及,若所述第二夹角小于第二预设角度,则将该出口路点,确定为所述目标出口路点;
若所述第一夹角大于所述第一预设角度,将小于所述第一预设角度且在所述预设主路径上与该入口路点最近的一个路点,确定为所述目标入口路点,以及,若所述第二夹角大于所述第二预设角度,将小于所述第二预设角度且在所述预设主路径上与该出口路点最近的一个路点,确定为所述目标出口路点。
8.根据权利要求1所述的处理方法,其特征在于,所述预设主路径的数据信息是以连通图的形式存储。
9.根据权利要求3所述的处理方法,其特征在于,所述路点的类型包括:调头路点和非调头路点,所述处理方法还包括:
对所述预设主路径中所述多个路点进行遍历,获取第一个非调头路点作为新的入口路点或出口路点。
10.根据权利要求6所述的处理方法,其特征在于,所述处理方法还包括:
判定所述目标入口路点和所述目标出口路点是否位于同一位置,若是,则以所述寻路起点至所述寻路终点的网格寻路结果作为所述目标寻路路径。
11.根据权利要求1所述的处理方法,其特征在于,在所述获取预设主路径的之前,所述处理方法还包括:
将游戏场景进行网格化处理,得到所述游戏场景对应的多个网格。
12.一种游戏中寻路路径的处理装置,其特征在于,所述处理装置包括:
第一获取模块,用于获取预设主路径,其中,所述预设主路径包括多个路点,以及由每两个相邻所述路点连接形成的路线;
第二获取模块,用于获取寻路起点所对应的游戏场景中的第一网格,以及寻路终点所对应的游戏场景中的第二网格;
计算模块,用于从预先存储的所述游戏场景中每个网格经过预设主路径中的部分路径到其他任一网格的至少一条路径的路径信息中,查找出所述寻路起点所在的第一网格到所述寻路终点所在的第二网格的路径中,进入预设主路径的入口路点和离开预设主路径的出口路点,并将靠近寻路起点的入口点作为第一网格对应的入口路点的数据集合,将靠近寻路终点的出口路点作为第二网格对应的出口路点的数据集合;所述路径信息包括所述预设主路径中的各个路点之间的距离,以及所述游戏场景中各个网格到预设主路径上所有路点之间的距离;
第一确定模块,用于根据所述寻路起点、所述寻路终点、以及所述预设主路径上的所述入口路点和所述出口路点分别对应的数据集合,确定从所述寻路起点,经过所述预设主路径上的至少一个所述入口路点与至少一个所述出口路点,到达所述寻路终点的至少一条候选路径;
第二确定模块,用于根据所述至少一条候选路径,确定目标寻路路径。
13.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至11任一所述的游戏中寻路路径的处理方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至11任一所述的游戏中寻路路径的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010152864.0A CN111375205B (zh) | 2020-03-06 | 2020-03-06 | 游戏中寻路路径的处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010152864.0A CN111375205B (zh) | 2020-03-06 | 2020-03-06 | 游戏中寻路路径的处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111375205A CN111375205A (zh) | 2020-07-07 |
CN111375205B true CN111375205B (zh) | 2023-09-26 |
Family
ID=71213644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010152864.0A Active CN111375205B (zh) | 2020-03-06 | 2020-03-06 | 游戏中寻路路径的处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111375205B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112088349A (zh) * | 2020-07-31 | 2020-12-15 | 深圳信息职业技术学院 | 目标追踪方法、装置、终端设备及存储介质 |
CN112023401A (zh) * | 2020-09-11 | 2020-12-04 | 北京冰封互娱科技有限公司 | 寻路恢复的处理方法、装置及电子设备 |
CN112076478A (zh) * | 2020-09-25 | 2020-12-15 | 网易(杭州)网络有限公司 | 游戏路径的生成方法及装置 |
CN112504276B (zh) * | 2020-11-20 | 2023-07-18 | 广州极飞科技股份有限公司 | 路径规划方法、装置、无人设备及存储介质 |
CN112650221B (zh) * | 2020-12-03 | 2021-12-03 | 广州极飞科技股份有限公司 | 平地路径生成方法、装置、处理设备及存储介质 |
CN113101665A (zh) * | 2021-05-10 | 2021-07-13 | 网易(杭州)网络有限公司 | 路网生成方法、装置、存储介质及计算机设备 |
CN113730915B (zh) * | 2021-09-16 | 2023-08-25 | 腾讯科技(深圳)有限公司 | 目标路径的确定方法、装置和存储介质及电子设备 |
CN116764225A (zh) * | 2023-06-09 | 2023-09-19 | 广州三七极梦网络技术有限公司 | 一种高效寻路的处理方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103198234A (zh) * | 2013-04-25 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 一种寻路方法和装置 |
CN103714234A (zh) * | 2013-08-09 | 2014-04-09 | 网易(杭州)网络有限公司 | 一种游戏中确定对象移动路径的方法和设备 |
-
2020
- 2020-03-06 CN CN202010152864.0A patent/CN111375205B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103198234A (zh) * | 2013-04-25 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 一种寻路方法和装置 |
CN103714234A (zh) * | 2013-08-09 | 2014-04-09 | 网易(杭州)网络有限公司 | 一种游戏中确定对象移动路径的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111375205A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111375205B (zh) | 游戏中寻路路径的处理方法、装置、电子设备及存储介质 | |
JP6828044B2 (ja) | ルート逸脱認識方法、端末、および記憶媒体 | |
WO2020029601A1 (zh) | 一种地图车道横向拓扑关系的构建方法、系统及存储器 | |
CN110812844B (zh) | 一种游戏中的寻路方法、终端及可读存储介质 | |
CN112985445B (zh) | 基于高精地图的车道级精度实时性运动规划方法 | |
CN110325935A (zh) | 用于自动驾驶车辆的路径规划的基于驾驶场景的车道引导线 | |
CN113682318B (zh) | 车辆行驶控制方法及装置 | |
CN112444263B (zh) | 全局路径规划方法及装置 | |
WO2009092327A1 (zh) | 一种地图寻路方法及系统 | |
EP1019843A1 (en) | Method for determining exits and entrances for a region in a network | |
US20080120022A1 (en) | Method and Device for Determining a Route with Points of Interest | |
CN107917716B (zh) | 固定线路导航方法、装置、终端及计算机可读存储介质 | |
CN113008261B (zh) | 一种导航方法、装置、电子设备及存储介质 | |
CN109974699A (zh) | 一种机器人及其地图自主探索方法和装置 | |
KR100690777B1 (ko) | 최적 경로 탐색 방법 | |
CN112033426B (zh) | 行驶路径规划方法、装置及电子设备 | |
CN115713856A (zh) | 一种基于交通流预测与实际路况的车辆路径规划方法 | |
Cai et al. | A novel vector-based dynamic path planning method in urban road network | |
Richter | Adaptable path planning in regionalized environments | |
CN114705180B (zh) | 高精地图的数据修正方法、装置、设备及存储介质 | |
US7831386B2 (en) | Loop-based route finding and navigation | |
CN114580796A (zh) | 一种旅游属性路径规划方法 | |
CN114777799A (zh) | 一种路口高精地图生成方法、装置、电子设备及存储介质 | |
CN112504288A (zh) | 基于动态规划的局部路径规划方法 | |
WO2020230277A1 (ja) | 経路探索装置、経路探索方法、及び経路探索プログラム |
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 |