掌桥专利:专业的专利平台
掌桥专利
首页

游戏中的寻路方法、装置、计算机设备及可读存储介质

文献发布时间:2023-06-19 19:20:08


游戏中的寻路方法、装置、计算机设备及可读存储介质

技术领域

本发明涉及游戏领域,尤其涉及一种游戏中的寻路方法、装置、计算机设备及可读存储介质。

背景技术

游戏内的寻路通常是基于CPU(Central Processing Unit,中央处理器)或者GPU(Graphics Processing Unit,图像处理器)执行如A-Star(A星)算法来实现。

但随着软硬件的不断升级,游戏场景不断扩大,甚至出现了大于8KM*8KM*8KM的超大游戏场景。也因此,若仍采用CPU或GPU来实现超大游戏场景中的寻路,将导致CPU需付出十分沉重的计算代价,且寻路效率低下。

发明内容

有鉴于此,本发明提供一种游戏中的寻路方法、装置、计算机设备及可读存储介质,用于改善采用CPU或GPU来实现超大游戏场景中的寻路,将导致CPU需付出十分沉重的计算代价,且寻路效率低下的现状。

第一方面,本发明实施例提供一种游戏中的寻路方法,应用于计算机设备,所述计算机设备包括中央处理器和现场可编程逻辑门阵列,所述方法包括:

将游戏地图划分为多个地图块,其中,所述地图块包括预设数量的格子节点;

基于高层综合工具,利用所述现场可编程逻辑门阵列生成所述预设数量的处理器模块;

响应寻路请求,获取所述寻路请求对应的移动目标的起始位置和终点位置,并确定所述起始位置所属的起始地图块和所述终点位置所属的终点地图块;

若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应,并利用所述处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至预设通道,其中,所述预设通道包括高速串行计算机扩展总线标准通道;

读取所述预设通道中的目标块内移动路径,得到所述寻路请求对应的目标移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述将游戏地图划分为多个地图块,包括:

将游戏地图划分为多个地图块,并基于每个所述地图块的邻接关系,确定相连的两个所述地图块的块间移动路径;

所述响应寻路请求,获取所述寻路请求对应的移动目标的起始位置和终点位置,并确定所述起始位置所属的起始地图块和所述终点位置所属的终点地图块之后,所述方法还包括:

若所述起始地图块与所述终点地图块不一致,则确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径;

针对每个所述目标地图块,将所述处理器模块与所述目标地图块的格子节点一一对应,并利用对应的处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至所述预设通道;

读取所述预设通道中的目标块内移动路径,并根据所述目标块间移动路径,得到所述寻路请求对应的目标移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述若所述起始地图块与所述终点地图块不一致,则确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径,包括:

若所述起始地图块与所述终点地图块不一致,则基于A星算法确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述格子节点包括障碍格子节点和非障碍格子节点;

所述若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应,并利用所述处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至预设通道,包括:

若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应;

利用所述起始位置和所述终点位置分别确定所述起始地图块中的起始格子节点和终止格子节点;

针对所述起始地图块中的除起始格子节点和已扫描节点之外的每个非障碍格子节点,所述非障碍格子节点对应的处理器模块以预设周期重复执行预设步骤,直至所述终止格子节点设置为已扫描节点时,利用所述终止格子节点对应的预设路径集确定目标块内移动路径,并将所述目标块内移动路径回写至预设通道;

所述预设步骤包括:

基于预设周期,检测预设范围内是否存在起始格子节点或已扫描节点;

若存在起始格子节点,则将所述起始格子节点指向所述非障碍格子节点的方向记录至所述非障碍格子节点的预设路径集;

若存在已扫描节点,则根据已扫描节点的预设路径集,将所有所述已扫描节点中,所述起始格子节点与所述非障碍格子节点的距离最小的目标节点,并将所述目标节点指向所述非障碍格子节点的方向和所述目标节点的预设路径集中的信息,记录至所述非障碍格子节点的预设路径集;

将所述非障碍格子节点设置为已扫描节点。

可选的,在本发明实施例提供的一种可行方式中,所述预设步骤还包括:

若所述已扫描节点的预设路径集中记录的方向的数量超过预设数量,则将所述已扫描节点设置为不可行走节点。

第二方面,本发明实施例提供一种游戏中的寻路装置,应用于计算机设备,所述计算机设备包括中央处理器和现场可编程逻辑门阵列,所述装置包括:

划分模块,用于将游戏地图划分为多个地图块,其中,所述地图块包括预设数量的格子节点;

生成模块,用于基于高层综合工具,利用所述现场可编程逻辑门阵列生成所述预设数量的处理器模块;

响应模块,用于响应寻路请求,获取所述寻路请求对应的移动目标的起始位置和终点位置,并确定所述起始位置所属的起始地图块和所述终点位置所属的终点地图块;

回写模块,用于若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应,并利用所述处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至预设通道,其中,所述预设通道包括高速串行计算机扩展总线标准通道;

读取模块,用于读取所述预设通道中的目标块内移动路径,得到所述寻路请求对应的目标移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述划分模块还用于将游戏地图划分为多个地图块,并基于每个所述地图块的邻接关系,确定相连的两个所述地图块的块间移动路径;

所述装置还包括:

确定模块,用于若所述起始地图块与所述终点地图块不一致,则确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径;

路径回写模块,用于针对每个所述目标地图块,将所述处理器模块与所述目标地图块的格子节点一一对应,并利用对应的处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至所述预设通道;

路径确定模块,用于读取所述预设通道中的目标块内移动路径,并根据所述目标块间移动路径,得到所述寻路请求对应的目标移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述确定模块还用于若所述起始地图块与所述终点地图块不一致,则基于A星算法确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径。

第三方面,本发明实施例提供一种计算机设备,包括存储器以及处理器,存储器存储有计算机程序,计算机程序在处理器上运行时执行如第一方面中任一种公开的游戏中的寻路方法。

第四方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序在处理器上运行时执行如第一方面中任一种公开的游戏中的寻路方法。

本发明实施例提供的游戏中的寻路方法中,计算机设备将游戏地图划分为多个地图块,进而在后续过程根据尺寸较小的地图块完成寻路,以避免直接对完整的游戏地图进行寻路而导致的负载较高的情形;接着,基于高层综合工具,利用现场可编程逻辑门阵列生成预设数量的处理器模块,以在后续过程中,以处理器模块模拟替换地图块中格子节点以执行相应的寻路算法,从而降低中央处理器的压力;随后,在接收到寻路请求时,获取寻路请求对应的移动目标的起始位置和终点位置,并确定起始位置所属的起始地图块和终点位置所属的终点地图块;然后,若起始地图块与终点地图块一致,则将处理器模块与起始地图块的格子节点一一对应,以通过处理器模块模拟地图块中的格子节点,并利用处理器模块基于预设算法确定目标块内移动路径,及将目标块内移动路径回写至预设通道;最后,中央处理器读取预设通道中的目标块内移动路径,得到寻路请求对应的目标移动路径。基于此,本发明实施例使得寻路算法的执行主要依赖于现场可编程逻辑门阵列生成的处理器模块,从而降低中央处理在寻路时的负荷;同时,因本发明实施例利用生成的多个处理器模块执行寻路算法,使得训练算法的各个步骤将由各个处理器模块分别执行,使得寻路算法的执行效率得以提升。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。

图1示出了本发明实施例提供的第一种游戏中的寻路方法的流程示意图;

图2示出了本发明实施例提供的第二种游戏中的寻路方法的流程示意图;

图3示出了本发明实施例提供的第三种游戏中的寻路方法的流程示意图;

图4示出了本发明实施例提供的游戏中的寻路装置的结构示意图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。

实施例1

参照图1,示出了本发明实施例提供的第一种游戏中的寻路方法的流程示意图,本发明实施例提供的游戏中的寻路方法应用于计算机设备,所述计算机设备包括中央处理器和现场可编程逻辑门阵列。

需理解的是,因超大游戏场景的出现,使得中央处理器执行寻路算法需耗费较沉重的计算代价,且效率低下。因此,本发明实施例采用中央处理器和现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)并行控制/组合控制的方式,以通过现场可编程逻辑门阵列对寻路机制/功能进行特定优化,从而降低中央处理器在寻路上的负载。

基于此,本发明实施例提供的所述游戏中的寻路方法包括:

步骤S110,将游戏地图划分为多个地图块,其中,所述地图块包括预设数量的格子节点。

也即,本发明实施例首先将完整的游戏地图划分为多个分块,即地图块,进而在进行寻路时,通过对尺寸较小的地图块分批次地进行逐段/逐个寻路,以避免直接对完整游戏地图执行寻路算法时所导致的高负载和低效率。

可以理解的是,一个完整的游戏场景由多个格子节点组成,格子节点表示游戏场景中一定尺寸大小的地形,如游戏场景为100米*100米时,游戏场景可由100个10米*10米的格子节点组成,每个格子节点均能指代游戏场景的一部分。

可选的,在一种可行方式中,格子节点分为天空节点、海洋节点以及地面节点。也即,格子节点将根据实际对应的地形而划分为不同的类别。

在本发明实施例提供的另一种可行方式中,格子节点包括障碍格子节点和非障碍格子节点。

不难理解的是,障碍格子节点代表游戏人物/对象无法行走或前往的位置/区域,如一个格子节点对应的游戏场景中仅包含无法穿透/行走的岩石,则格子节点将被作为障碍格子节点。

而非障碍格子节点则代表游戏人物可行走的位置,如格子节点对应的游戏场景中仅包含地形高度小于预设值的地面,或是由多个树木对象构成的森林场景,则格子节点将被作为非障碍格子节点。

步骤S120,基于高层综合工具,利用所述现场可编程逻辑门阵列生成所述预设数量的处理器模块。

可以理解的是,高层综合(High Level Synthesis,HLS)工具能将现场可编程逻辑门阵列的组件在软件环境下进行仿真模拟,能较为高效地实现指定的功能。

基于此,本发明实施例利用高层综合工具,在软件环境下将现场可编程逻辑门阵列的各个组件模拟/仿真为地图块中的各个格子节点,也即,生成与地图块的格子节点数量相同的处理器模块,进而在后续过程中,使每个处理器模块并行完成相应的算法步骤,以实现高效寻路。

步骤S130,响应寻路请求,获取所述寻路请求对应的移动目标的起始位置和终点位置,并确定所述起始位置所属的起始地图块和所述终点位置所属的终点地图块。

可以理解的是,本发明实施例中寻路请求对应的移动目标代表需进行移动行为的游戏对象,可视作为由玩家或服务器控制的游戏角色。

进一步的,起始位置表示移动目标当前所在位置,也即起点。终点位置表示移动目标最终需到达的位置,也即终点。

基于此,本发明实施例中的计算机设备在接收到寻路请求时,将获取寻路请求对应的移动目标的起始/当前位置和终点位置,并根据起始位置确定移动目标当前所在的地图块,和根据终点位置确定移动目标最终需到达的地图块,也即,确定起始地图块和终点地图块。

步骤S140,若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应,并利用所述处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至预设通道,其中,所述预设通道包括高速串行计算机扩展总线标准通道。

可以理解的是,若起始地图块和终点地图块为同一个地图块,即起始位置和终点位置属于同一个地图块,则计算机设备仅需确定/寻找移动目标在地图块内的移动路径即可完成寻路。

正因此,本发明实施例将起始地图块/终点地图块的格子节点与先前生成的处理器模块一一对应,以使每个处理器模块能等同于起始地图块中的格子节点,进而在进行执行寻路算法时,每个处理器模块能相应地完成寻路算法中的各个步骤。

示范性的,设起始地图块/终点地图块对应的游戏场景为二维场景,且当目标块内移动路径为通过A*算法或Dijkstra算法而得到,则在第一轮迭代中,起始位置对应的处理器模块检测上、下、左、右、上左、上右、下左及下右,共计8个方向的8个顶点/格子节点是否为尚未检查的顶点。

若是,则在下轮循环中,此8个格子节点转换为已检查的顶点,且8个格子节点对应的处理器模块亦将执行“检测自身的8个方向上的格子节点是否为尚未检查的顶点”。以此循环,直至检测到终止位置对应的格子节点。

不难发现,此种情形下的寻路算法的各个步骤将由相应的处理器模块执行,从而能避免中央处理器需完整执行寻路算法所有步骤的情形,降低了中央处理器的负荷,同时,因寻路算法由多个处理器模块执行,从而计算机设备能以较高的效率执行寻路逻辑。

进一步的,因目标块内移动路径由处理器模块生成,也即,由现场可编程逻辑门阵列生成,但移动目标的移动行为触发或移动指令生成等任务,仍需中央处理器执行,因此,本发明实施例将中的处理器模块在生成目标块内移动路径后,还将目标块内移动路径回写至预设通道,以使中央处理器能通过读取预设通道中的数据,从而得到目标块内移动路径。

需说明的是,因高速串行计算机扩展总线标准(Peripheral ComponentInterconnect express,PCIe)通道具备高数据传输速率的特性,故本发明实施例采用高速串行计算机扩展总线标准通道作为中央处理器和现场可编程逻辑门阵列的通信通道。但不难理解的是,预设通道的种类为可根据实际情况设置的内容,上述高速串行计算机扩展总线标准通道仅为本发明实施例采用的优选方式。

此外,还可以理解的是,若起始地图块和终点地图块不为同一个地图块,则计算机设备将执行的步骤为可根据实际情况设置的内容,如在本发明实施例提供的一种可行方式中,计算机设备需确定移动目标需途径的每个地图块,并确定移动目标在每个途径的地图块中的块内移动路径。

步骤S150,读取所述预设通道中的目标块内移动路径,得到所述寻路请求对应的目标移动路径。

也即,中央处理器访问预设通道以获取预设通道中的目标移动路径,进而确定移动目标在起始地图块/终点地图块中的目标移动路径,由此完成寻路。

基于此,本发明实施例使得寻路算法的执行主要依赖于现场可编程逻辑门阵列生成的处理器模块,从而降低中央处理在寻路时的负荷;同时,因本发明实施例利用生成的多个处理器模块执行寻路算法,使得训练算法的各个步骤将由各个处理器模块分别执行,使得寻路算法的执行效率得以提升。

可选的,在本发明实施例提供的一种可行方式中,具体可参考图2,示出了本发明实施例提供的第二种游戏中的寻路方法的流程示意图,此种可行方式下,对于上述步骤S110,在本发明实施例提供的可行方式中,具体包括:

步骤S111,将游戏地图划分为多个地图块,并基于每个所述地图块的邻接关系,确定相连的两个所述地图块的块间移动路径;

进而,所述步骤S130之后,所述方法还包括:

步骤S160,若所述起始地图块与所述终点地图块不一致,则确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径;

步骤S170,针对每个所述目标地图块,将所述处理器模块与所述目标地图块的格子节点一一对应,并利用对应的处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至所述预设通道;

步骤S180,读取所述预设通道中的目标块内移动路径,并根据所述目标块间移动路径,得到所述寻路请求对应的目标移动路径。

也即,本发明实施例在将游戏地图划分为多个地图块的同时,还将确定所有地图块中,相连的两个地图块的块间移动路径,进而当移动目标需途径两个及两个以上的地图块时,计算机设备将根据块间移动路径确定移动目标的目标块间移动路径。

进一步的,因起始地图块和终点地图块不为相同的地图块,故移动目标从起始位置前往终点位置的过程中,需途径至少两个不同的地图块。同时,因不同的地图块对应的游戏场景不一样,且移动目标在不同的地图块的起点和终点也不一致,故本发明实施例将针对移动目标途径的每个地图块,生成/确定对应的块内移动路径。

也即,针对每个目标地图块,将目标地图块的格子节点与处理器模块与一一对应,控制处理器模块根据预设算法,确定移动目标在目标地图块中的目标块内移动路径。

在任意一个目标地图块的目标块内移动路径确定后,或是所有目标地图块的目标块内移动路径均确定后,处理器模块将确定的目标块内移动路径回写至预设通道中,以使中央处理器能访问预设通道以确定移动目标的移动路径。

可选的,在本发明实施例提供的一种可行方式中,中央处理器将基于A*算法确定目标块间移动路径,也即,上述步骤S160具体包括:

若所述起始地图块与所述终点地图块不一致,则基于A星算法确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径。

可以理解的是,A星算法是静态路网中求解最短路径最有效的直接搜索方法,因此,本发明实施例为确保寻路机制/功能的有效性,故采用A星算法确定目标块间移动路径。

也即,中央处理器将根据A星算法确定移动目标需途径的地图块/目标地图块;同时,因本发明实施例以预先确定相连的两个地图块的块间移动路径,故在确定目标地图块后,中央处理器通过读取预先确定相连的块间移动路径,从而得到所有目标地图块对应的目标块间移动路径。

可选的,在本发明实施例提供的一种可行方式中,具体参考图3,示出了本发明实施例提供的第三种游戏中的寻路方法的流程示意图,此种可行方式下,所述格子节点包括障碍格子节点和非障碍格子节点;

进而,上述步骤S140,在本发明实施例提供的此种可行方式中,具体包括:

S141,若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应;

S142,利用所述起始位置和所述终点位置分别确定所述起始地图块中的起始格子节点和终止格子节点;

S143,针对所述起始地图块中的除起始格子节点和已扫描节点之外的每个非障碍格子节点,所述非障碍格子节点对应的处理器模块以预设周期重复执行预设步骤,直至所述终止格子节点设置为已扫描节点时,利用所述终止格子节点对应的预设路径集确定目标块内移动路径,并将所述目标块内移动路径回写至预设通道;

所述预设步骤包括:

基于预设周期,检测预设范围内是否存在起始格子节点或已扫描节点;

若存在起始格子节点,则将所述起始格子节点指向所述非障碍格子节点的方向记录至所述非障碍格子节点的预设路径集;

若存在已扫描节点,则根据已扫描节点的预设路径集,将所有所述已扫描节点中,所述起始格子节点与所述非障碍格子节点的距离最小的目标节点,并将所述目标节点指向所述非障碍格子节点的方向和所述目标节点的预设路径集中的信息,记录至所述非障碍格子节点的预设路径集;

将所述非障碍格子节点设置为已扫描节点。

可以理解的是,若游戏场景为二维场景,则格子节点的预设范围则表示上、下、左、右、上左、上右、下左及下右,共计8个方向,距离格子节点距离最近的8个格子节点所构成的区域。而若游戏场景为三维场景,则格子节点的预设范围则表示以自身为中心而构成的正方体,包含距离自身最近的且方向不同的26个格子节点。

进一步的,设本发明实施例中,玩家操控的游戏人物仅可在二维平面中移动,则在第一次循环中,起始格子节点周围8个方向的非障碍格子节点均将扫描到起始格子节点。

非障碍格子节点对应的处理器模块将记录起始格子节点指向自身的方向,如起始格子节点右侧的格子节点将记录{‘右’},同时,此非障碍格子节点转变为已扫描节点。

在第二次循环中,起始格子节点周围8个方向的非障碍格子节点均将转变为已扫描节点,设在第一次循环中,起始格子节点右侧的非障碍格子节点记做lattice1,lattice1右侧邻接的非障碍格子节点记做lattice2,则在第二次循环中,lattice1的上方和下方均为已扫描节点,lattice1的右、上右和下右均不为已扫描节点。

进一步的,lattice2将检测到3个已扫描节点,但根据lattice1上下两方的已扫描节点的预设路径集,并设两个相连的格子节点的位于同一列或同一行时距离为5,位于对角线方向时距离为7,则可知,从起始格子节点,途径这两个已扫描节点,到lattice2的距离为12。而起始格子节点-lattice1-lattice2所构成的距离为10,故lattice2的预设路径集将记录{‘右’,‘右’}的内容。

基于此种循环,当最终止格子节点设置为已扫描节点时,则本发明实施例将根据以转变为已扫描节点的终止格子节点的预设路径集,确定目标块内移动路径。

此外,可以理解的是,若起始地图块与终点地图块不一致,也即,存在两个或两个以上的目标地图块时,计算机设备需根据起始格子节点和块间移动路径,确定目标地图块的起点和终点。

示范性的,设目标块间移动路径为第一地图块-第二地图块-第三地图块,第一地图块为起始地图块,第三地图块为终点地图块,第一地图块的非障碍格子节点lattice3与第二地图块的非障碍格子节点lattice4构成第一地图块与第二地图块的块间移动路径,即lattice3-lattice4;第二地图块的非障碍格子节点lattice5与第三地图块的非障碍格子节点lattice6构成第二地图块与第三地图块的块间移动路径,即lattice5-lattice6。

基于此,第一地图块的起点为起始位置对应的起始格子节点,终点为lattice3;在第二地图块中,起点为lattice4,终点为lattice5;第三地图块中,起点为lattice6,终点为终点位置对应的终止格子节点。

可以想到的是,不同地图块中的起点和终点决定不同地图块中寻路算法的执行具体过程。

可选的,为进一步优化寻路结果,提高游戏玩家/用户的游玩体验,在本发明实施例提供的一种可行方式中,所述预设步骤还包括:

若所述已扫描节点的预设路径集中记录的方向的数量超过预设数量,则将所述已扫描节点设置为不可行走节点。

可以理解的是,若已扫描节点的预设路径集中,记录有过多个方向,则根据此已扫描节点的预设路径集的记录,需途径多个格子节点,也即,若移动目标需途径此已扫描节点,则块内移动路径较长,移动效率低。

基于此,为避免因块内移动路径较长,导致寻路结果的质量较低的情况出现,本发明实施例将对已扫描节点的预设路径集所记录的方向的数量进行检验,以判断已扫描节点的预设路径集是否记录过多次方向。若是,则将此已扫描节点设置为不可行走节点,进而后续循环中,非障碍格子节点将忽略不可行走节点。

在一个实例中,每个处理器模块基于一个64位的无符号整型(unsigned integer,uint)实现预设路径集。同时,此无符号整型的每3位可代表0-7,共计8个数字,分别对应8个方向;进而,此无符号整型可记录21个方向。也因此,此种实例下,若任意一个处理器模块需要记录21个以上的方向,则认为这条路径不可行,进而将此处理器模块对应的非障碍格子节点标记为不可行走节点。

实施例2

与本发明实施例1提供的游戏中的寻路方法相对应的,本发明实施例2还提供一种游戏中的寻路装置,参照图4,示出了本发明实施例提供的游戏中的寻路装置的结构示意图,本发明实施例提供的游戏中的寻路装置200,应用于计算机设备,所述计算机设备包括中央处理器和现场可编程逻辑门阵列,所述装置包括:

划分模块210,用于将游戏地图划分为多个地图块,其中,所述地图块包括预设数量的格子节点;

生成模块220,用于基于高层综合工具,利用所述现场可编程逻辑门阵列生成所述预设数量的处理器模块;

响应模块230,用于响应寻路请求,获取所述寻路请求对应的移动目标的起始位置和终点位置,并确定所述起始位置所属的起始地图块和所述终点位置所属的终点地图块;

回写模块240,用于若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应,并利用所述处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至预设通道,其中,所述预设通道包括高速串行计算机扩展总线标准通道;

读取模块250,用于读取所述预设通道中的目标块内移动路径,得到所述寻路请求对应的目标移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述划分模块还用于将游戏地图划分为多个地图块,并基于每个所述地图块的邻接关系,确定相连的两个所述地图块的块间移动路径;

所述装置还包括:

确定模块,用于若所述起始地图块与所述终点地图块不一致,则确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径;

路径回写模块,用于针对每个所述目标地图块,将所述处理器模块与所述目标地图块的格子节点一一对应,并利用对应的处理器模块基于预设算法确定目标块内移动路径,及将所述目标块内移动路径回写至所述预设通道;

路径确定模块,用于读取所述预设通道中的目标块内移动路径,并根据所述目标块间移动路径,得到所述寻路请求对应的目标移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述确定模块还用于若所述起始地图块与所述终点地图块不一致,则基于A星算法确定所述寻路请求对应的所有目标地图块,并确定所有目标地图块对应的目标块间移动路径。

可选的,在本发明实施例提供的一种可行方式中,所述格子节点包括障碍格子节点和非障碍格子节点;

所述回写模块,包括:

对应子模块,用于若所述起始地图块与所述终点地图块一致,则将所述处理器模块与所述起始地图块的格子节点一一对应;

节点确定子模块,用于利用所述起始位置和所述终点位置分别确定所述起始地图块中的起始格子节点和终止格子节点;

循环子模块,用于针对所述起始地图块中的除起始格子节点和已扫描节点之外的每个非障碍格子节点,所述非障碍格子节点对应的处理器模块以预设周期重复执行预设步骤,直至所述终止格子节点设置为已扫描节点时,利用所述终止格子节点对应的预设路径集确定目标块内移动路径,并将所述目标块内移动路径回写至预设通道;

所述预设步骤包括:

基于预设周期,检测预设范围内是否存在起始格子节点或已扫描节点;

若存在起始格子节点,则将所述起始格子节点指向所述非障碍格子节点的方向记录至所述非障碍格子节点的预设路径集;

若存在已扫描节点,则根据已扫描节点的预设路径集,将所有所述已扫描节点中,所述起始格子节点与所述非障碍格子节点的距离最小的目标节点,并将所述目标节点指向所述非障碍格子节点的方向和所述目标节点的预设路径集中的信息,记录至所述非障碍格子节点的预设路径集;

将所述非障碍格子节点设置为已扫描节点。

可选的,在本发明实施例提供的一种可行方式中,所述预设步骤还包括:

若所述已扫描节点的预设路径集中记录的方向的数量超过预设数量,则将所述已扫描节点设置为不可行走节点。

本申请实施例提供的游戏中的寻路装置200能够实现实施例1对应的游戏中的寻路方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

本发明实施例还提供一种计算机设备,包括存储器以及处理器,存储器存储有计算机程序,计算机程序在处理器上运行时执行如实施例1中所述的游戏中的寻路方法。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序在处理器上运行时执行如实施例1中所述的游戏中的寻路方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 存储设备的数据删除方法、装置及计算机可读存储介质
  • 一种数据存储方法、装置、设备及计算机可读存储介质
  • 动态表情生成方法、装置、计算机可读存储介质和计算机设备
  • 游戏中的寻路方法、装置、电子设备及可读存储介质
  • 游戏中的寻路方法、装置、存储介质及计算机设备
技术分类

06120115870417