基于Jump Point Search算法的寻路方法及系统

文档序号:146221 发布日期:2021-10-26 浏览:46次 >En<

阅读说明:本技术 基于Jump Point Search算法的寻路方法及系统 (Way finding method and system based on Jump Point Search algorithm ) 是由 徐白鹿 陈孟青 邓华斌 于 2021-07-26 设计创作,主要内容包括:本发明涉及计算机技术的技术领域,尤其是涉及一种基于JPS算法的寻路方法及系统,基于JPS算法的寻路方法包括以下步骤:S10:打开对应的美术地图,并打开地图编辑器,导出地图,创建寻路系统的载体;S20:通过场景编辑器打开对应的导出地图,编辑可行走、怪物、战斗、安全等区域信息,建立自动寻路系统必要的辨识信息;S30:导出场景配置,从上述过程生成的数据中获取JPS算法所需的加速数据信息;S40:读取上一步骤所获得的数据信息,对该二维数组进行分类,使用JPS算法加速配置,x-boundary和y-boundary字段,加速计算出跳点,快速得出寻路路径。本发明具有使游戏更加智能化,减轻玩家负担的效果。(The invention relates to the technical field of computer technology, in particular to a JPS algorithm-based path finding method and a JPS algorithm-based path finding system, wherein the JPS algorithm-based path finding method comprises the following steps: s10: opening a corresponding art map, opening a map editor, exporting the map, and creating a carrier of a path-finding system; s20: opening a corresponding export map through a scene editor, editing information of regions such as walkable, monster, battle, safety and the like, and establishing necessary identification information of the automatic road finding system; s30: deriving scene configuration, and acquiring acceleration data information required by a JPS algorithm from data generated in the process; s40: and reading the data information obtained in the last step, classifying the two-dimensional array, and using a JPS algorithm to accelerate configuration, and using x _ boundary and y _ boundary fields to accelerate the calculation of the jump point so as to quickly obtain the routing path. The invention has the effects of making the game more intelligent and reducing the burden of the player.)

基于Jump Point Search算法的寻路方法及系统

技术领域

本发明涉及计算机技术的技术领域,尤其是涉及一种基于Jump Point Search算法的寻路方法及系统。

背景技术

目前,随着科技的发展,人们生活水平的不断提高,手机、平板电脑等移动终端设备快速发展,手机、平板电脑已经占据人们生活很重要的地位,其中包括各种丰富人们生活的软件,例如手机游戏。

目前市场上的MMORGP游戏玩家已经普遍适应了自动寻路,寻路系统已经成为标配。一个性能优越,路径规划优雅的寻路系统,能为游戏增色不少,提高玩家的体验。传统的寻路算法为AStar,只能适用较小的地图,而目前的MMORPG游戏都是大地图趋势。NavMesh寻路是对AStar的改进,极大的提升了效率,但其因算法特点,会有莫名的折返问题,和贴边走问题。这两种方法都无法完美满足用户需求,存在影响用户体验的情况,进而导致用户流失,因此存在改进空间。

发明内容

本发明的目的是提供一种性能优越,路径规划优雅的基于JPS算法的寻路系统加载方法及系统。

本发明的上述发明目的一是通过以下技术方案得以实现的:

一种基于JPS算法的寻路方法,所述基于JPS算法的寻路方法包括以下步骤:

S10:打开对应的美术地图,并打开地图编辑器,导出地图,创建寻路方法的载体;

S20:通过场景编辑器打开对应的导出地图,编辑可行走、怪物、战斗、安全等区域信息,建立自动寻路系统必要的辨识信息;

S30:导出场景配置,从上述过程生成的数据中获取JPS算法所需的加速数据信息;

S40:读取上一步骤所获得的数据信息,对该二维数组进行分类,使用JPS算法加速配置,x_boundary和y_boundary字段,加速计算出跳点,快速得出寻路路径。

通过采用上述技术方案,通过场景编辑器对美术地图进行信息编辑,再使用JPS算法进行计算,快速计算出跳点,不会折返,内存节省。且结合有向距离场(SDF),可约束JPS算法得到不贴边行走的路径,在效率与优雅之间取得平衡,使玩家可以拥有性能优越,路径规划优雅的寻路路径。

本发明进一步设置为:步骤S20中的将打开地图,编辑区域信息具体包括如下步骤:

S21:通过基于Unity开发的场景编辑器打开对应的导出地图,设置好编辑器的基本配置;

S22:在场景编辑器的基础上,编辑可行走、怪物、战斗、安全等区域信息,将地图上的区域信息转化为数据代码。

通过采用上述技术方案,对已完成的美术地图进行技术上的信息分类和编辑,可以给后续寻路系统的建设提供数据基础,提高程序运行的效率。

本发明进一步设置为:步骤S30包括:

S31:完成场景编辑后,保存并导出场景配置;

S32:获取导出过程中生成的两份数据,一份为客户端数据,一份为服务端数据;

S33:选择客户端数据进行分析;

S34:提取客户端.lua文件中JPS算法需要用到的加速数据和SDF数据。

通过采用上述技术方案,在计算寻路跳点前,对导出的场景配置信息进行分类,并只对客户端数据中的加速数据和SDF数据进行分析,能够减少数据分析的次数,进而提高数据分析的效率。

本发明进一步设置为:在步骤S40之后,所述基基于JPS算法的寻路方法还包括:

S41:将作为二维数组的场景配置数据,进行行走、高度、SDF等方面的维度分析;

S42:对上述数据进行位运算,读取出相关的数值;

S43:使用JPS算法加速配置,x_boundary和y_boundary字段等,加速计算出JPS算所需的跳点,快速得出寻路路径。

通过采用上述技术方案,能够对地图数据进行快速处理且计算出寻路需要的跳点,从而能使玩家在游戏时快速而方便地进行寻路,且遵循一条较为优雅的路线,进而提升了用户的使用体验。

本发明的上述发明目的二是通过以下技术方案得以实现的:

一种基于Jump Point Search算法的寻路系统,其特征在于,所述基于Jump PointSearch算法的寻路系统包括:

算法模块,采用JPS算法,用于根据地图数据快速计寻路路径,使游戏角色的移动有可以遵循的轨迹;

数据计算模块,利用有向距离场SDF,并根据JPS算法特性,生成加速计算数据,用于计算得出行走区域数据,防止游戏角色寻路路径贴近不可行走的区域如墙等;

数据序列化模块,根据Lua特性实现高压缩,用于快速反序列化的持久化储存行走区域数据、SDF数据和加速数据,方便计算寻路路径时引用读取。

通过采用上述技术方案,通过对地图编辑器导出的地图配置数据进行快速计算,并计算出可供游戏角色行走的区域等信息,且对这些信息进行压缩存储随时调用,从而能够使得用户在体验游戏自动寻路时,避免莫名折返和贴墙走,有助于提升用户体验和留存率。

综上所述,本发明的有益技术效果为:

1.通过对地图编辑器导出的地图配置数据进行快速计算,并计算出可供游戏角色行走的区域等信息,且对这些信息进行压缩存储随时调用,从而能够使得用户在体验游戏自动寻路时,避免莫名折返和贴墙走,有助于提升用户体验和留存率;

2.能够有效提高自动寻路的效率,节省用户内存调用量,使得自动寻路更加流畅,有助于提升用户体验和在线时间。

附图说明

图1是本发明一实施例中基于基于Jump Point Search算法的寻路方法的一流程图;

图2是本发明一实施例中基于Jump Point Search算法的寻路方法中步骤S10的实现流程图;

图3是本发明一实施例中基于Jump Point Search算法的寻路方法中步骤S20的实现流程图;

图4是本发明一实施例中基于Jump Point Search算法的寻路方法中的另一流程图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

实施例一:

在一实施例中,如图1所示,本发明公开了一种基于Jump Point Search算法的寻路方法,具体包括如下步骤:

S10:打开对应的美术地图,并打开地图编辑器,导出地图,创建寻路方法的载体。

在本实施例中,美术地图是美术部门使用地图编辑器制作完成的一张游戏场景地图。该地图数据包括有该场景地图的地形、植被、建筑等所有数据。美术部门在该款游戏策划好之后,通过设计地图原画、建立场景模型和进行地图编辑等获得该地图的最终数据。其中,地图编辑器是使用untiy开发的,该Unity游戏引擎是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

具体地,在开发人员调用该地图数据时,需要美术部门打开地图编辑器,打开需要配置寻路系统的地图,并且导出可以用以程序编辑的地图数据,以助于进行后面的步骤。

S20:通过场景编辑器打开对应的导出地图,编辑可行走、怪物、战斗、安全等区域信息,建立自动寻路系统必要的辨识信息。

在本实施例中,可行走、怪物、战斗、安全等区域信息是指用来指导自动寻路系统计算安全的,无怪物和战斗以及水体、树木、建筑物等障碍物的可行走区域的区域信息。

具体地,打开需要建立寻路系统的目标地图,根据策划和美术提供的信息,将地图的各个区域辨析分类,并对其命名和编辑区域信息,使其信息成为程序算法可识别的数据。

S30:导出场景配置,从上述过程生成的数据中获取JPS算法所需的加速数据信息。

在本实施例中,场景配置是指从地图数据中导出的可行走、怪物、战斗、安全等区域所占地图位置以及是否可以行走等信息。加速数据信息是指JPS算法开始运行时需要的最直接代码。

具体地, 技术人员在完成对地图中各个区域及模型类型的信息编辑后,保存并导出该配置。选取导出过程中生成的两份数据中的客户端数据,使用技术手段提取客户端.lua文件中JPS算法需要用到的加速数据和SDF数据。

S40:读取上一步骤所获得的数据信息,对该二维数组进行分类,使用JPS算法加速配置,x_boundary和y_boundary字段,加速计算出跳点,快速得出寻路路径。

在本实施例中,二维数组是指上一步骤中,通过对地图配置数据的提取选择后,留存的加速数据和SDF数据。跳点是指角色移动路径中经过的一个个点,跳点连接起来即可成为寻路路径。

具体地,将作为二维数组的场景配置数据,进行行走、高度、SDF等方面的维度分析。对上述数据进行位运算,读取出相关的数值,使用JPS算法加速配置,x_boundary和y_boundary字段等,加速计算出JPS算所需的跳点,快速得出寻路路径。

在一实施例中,如图3所示,在步骤S20中,即将所述辅助功能数据打包,得到待触发安装包,具体包括如下步骤:

S21:通过基于Unity开发的场景编辑器打开对应的导出地图,设置好编辑器的基本配置

在本实施例中,编辑器的基本配置是指编辑器的界面、偏好设定等,用于优化技术人员在编辑地图信息过程中的体验。

具体地,打开地图数据时,对编辑器的热键等进行设置。

S22:在场景编辑器的基础上,编辑可行走、怪物、战斗、安全等区域信息,将地图上的区域信息转化为数据代码。

具体地,技术人员打开目标地图,根据策划和美术提供的信息,将地图的各个区域辨析分类,并对其命名和编辑区域信息,使其信息成为程序算法可识别的数据。

在一实施例中,如图4所示,在步骤S30中,即导出场景配置,从上述过程生成的数据中获取JPS算法所需的加速数据信息,具体包括如下步骤:

S31:完成场景编辑后,保存并导出场景配置。

在本实施例中,场景配置是指从地图数据中导出的可行走、怪物、战斗、安全等区域所占地图位置以及是否可以行走等信息。

具体地,技术人员在完成对场景区域信息的编辑后,需要在场景编辑器中导出相关的场景配置表。

S32:获取导出过程中生成的两份数据,一份为客户端数据,一份为服务端数据。

在本实施例中,客户端数据是用户可以直接接触体验到的客户端相关数据,服务端数据是指游戏后台底层程序相关数据。

具体地,从场景配置表中,存储和区分客户端和服务端数据。

S33:选择客户端数据进行分析。

具体地,由于寻路系统属于客户端功能,所以只选择客户端数据进行分析。

S34:提取客户端.lua文件中JPS算法需要用到的加速数据和SDF数据。

具体地,从客户端地图配置文件中使用技术手段抽取需要的加速数据和SDF数据。

在一实施例中,步骤S40之还包括如下步骤:

S41:将作为二维数组的场景配置数据,进行行走、高度、SDF等方面的维度分析。

在本实施例中,二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

具体地,技术人员获取对应二维数据数据后,对其进行行走、高度、SDF等类型的分类和分析。

S42:对上述数据进行位运算,读取出相关的数值。

在本实施例中,程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。

具体地,技术人员对分类后的二维数据数据进行位运算,可以读出相关的具体数值,以供运算。

S43:使用JPS算法加速配置,x_boundary和y_boundary字段等,加速计算出JPS算所需的跳点,快速得出寻路路径。

具体地,当所有数据获取、提取和分析完以后,使用JPS算法加速配置和x_boundary和y_boundary字段等,计算从用户角色目前所在的场景地点到达指定到达的地点之间需要经过哪些跳点,形成高效又优雅的寻路路径。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例二:

在一实施例中,提供一种一种基于Jump Point Search算法的寻路系统,该一种基于Jump Point Search算法的寻路系统与上述实施例中一种基于Jump Point Search算法的寻路方法一一对应。该一种基于Jump Point Search算法的寻路系统包括算法模块10、数据计算模块20、数据序列化模块30。各功能模块详细说明如下:

算法模块10,采用JPS算法,用于根据地图数据快速计寻路路径,使游戏角色的移动有可以遵循的轨迹;

数据计算模块20,利用有向距离场SDF,并根据JPS算法特性,生成加速计算数据,用于计算得出行走区域数据,防止游戏角色寻路路径贴近不可行走的区域如墙等;

数据序列化模块30,根据Lua特性实现高压缩,用于快速反序列化的持久化储存行走区域数据、SDF数据和加速数据,方便计算寻路路径时引用读取。

优选地,数据计算模块20包括:

数据生成子模块21,用于根据美术创建的地表Mesh生成NavMesh;

二维数组子模块22,用于根据NavMesh和SDF算法生成可行区域二维数组;

加速计算子模块23,用于根据数组计算出JPS算法需要的加速数据。

优选地,数据序列化模块30包括:

高压缩子模块31,用于使用Lua特性使区域信息等地图数据进行高压缩,方便存储;

信息存储子模块32,用于快速反序列化的持久化储存行走区域数据、SDF数据和加速数据;

信息读取子模块33,当JPS算法实时计算游戏角色自动寻路路径时,对存储的信息进行读取和调用。

优选地,基于Jump Point Search算法的寻路系统还包括:

更新模块41,用于若所述寻路系统为旧版本,则从云端服务器获取更新数据包,更新为新版本的寻路系统。

关于基于Jump Point Search算法的寻路系统的具体限定可以参见上文中对于基于Jump Point Search算法的寻路方法的限定,在此不再赘述。上述基于Jump PointSearch算法的寻路系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:虚拟资源的投放控制方法、装置、计算机设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类