CN112121435A - 游戏寻路方法、装置、服务器和存储介质 - Google Patents
游戏寻路方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN112121435A CN112121435A CN202010984562.XA CN202010984562A CN112121435A CN 112121435 A CN112121435 A CN 112121435A CN 202010984562 A CN202010984562 A CN 202010984562A CN 112121435 A CN112121435 A CN 112121435A
- Authority
- CN
- China
- Prior art keywords
- data
- navigation
- client
- grid
- game
- 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.)
- Granted
Links
Images
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
Abstract
本发明实施例公开了一种游戏寻路方法、装置、服务器和存储介质;本发明实施例可以获取预设寻路模块;根据预设寻路模块进行适配处理,得到适配后的寻路模块;从客户端获取客户端网格数据;从客户端网格数据中提取预设导航网格数据;采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;根据适配后的导航网格数据进行游戏寻路,得到寻路结果;将所述寻路结果发送给客户端,以展示所述寻路结果。在本发明实施例中,通过适配后的寻路模块来根据适配后的导航网格数据进行寻路,可以使得服务器的寻路结果更加准确。由此,本方案可以提升游戏寻路方法的准确性。
Description
技术领域
本发明涉及计算机领域,具体涉及一种游戏寻路方法、装置、服务器和存储介质。
背景技术
在游戏中,游戏角色可以自动地通过游戏程序中的寻路算法来从起点走到终点,期间该游戏角色会避开游戏场景中的障碍物,如箱子、树木等。而在网络游戏中,为了保证多个玩家之间看到的非玩家角色(Non-Player Character,NPC)的位置和移动保持同步,因此,NPC的寻路路径需要在服务器中计算,并由服务器将计算得到的寻路路径发送给多个玩家的客户端。
然而,目前服务器通过计算得到的寻路路径相比于玩家客户端计算得到的寻路路径往往有较大的差异,因此,目前游戏寻路方法准确的低。
发明内容
本发明实施例提供一种游戏寻路方法、装置、服务器和存储介质,可以提升游戏寻路的准确度。
本发明实施例提供一种游戏寻路方法,适用于服务器,包括:
获取预设寻路模块;
根据预设寻路模块进行适配处理,得到适配后的寻路模块;
获取客户端网格数据;
从客户端网格数据中提取预设导航网格数据;
采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;
根据适配后的导航网格数据进行游戏寻路,得到寻路结果;
将寻路结果发送给客户端,以展示寻路结果。
本发明实施例提供一种游戏寻路方法,适用于客户端,客户端搭载有游戏引擎;
游戏寻路方法,包括:
获取游戏场景数据;
采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据;
将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
本发明实施例还提供一种游戏寻路装置,适用于服务器,包括:
模块获取单元,用于获取预设寻路模块;
模块适配单元,用于根据预设寻路模块进行适配处理,得到适配后的寻路模块;
网格获取单元,用于获取客户端网格数据;
提取单元,用于从客户端网格数据中提取预设导航网格数据;
网格适配单元,用于采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;
寻路单元,用于根据适配后的导航网格数据进行游戏寻路,得到寻路结果;
结果发送单元,用于将寻路结果发送给客户端,以展示寻路结果。
在一些实施例中,模块适配单元,包括:
寻路结构子单元,用于确定预设寻路模块中的寻路数据结构;
模块适配子单元,用于根据预设导航网格数据的导航数据结构修改寻路数据结构,得到适配后的寻路模块。
在一些实施例中,模块适配子单元,用于:
确定寻路数据结构中的寻路数据元素;
在预设导航网格数据的导航数据结构中,确定与寻路数据元素对应的导航数据元素;
当寻路数据元素的数值范围不小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为导航数据元素的数值范围;
当寻路数据元素的数值范围小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为预设数值范围。
在一些实施例中,预设导航网格数据包括至少一个导航网格的网格数据,提取单元,包括:
剔除子单元,用于对客户端网格数据进行字节剔除处理,得到剔除后客户端网格数据;
数量子单元,用于根据剔除后客户端网格数据,确定导航网格的数量N,其中,N为正整数;
网格子单元,用于在剔除后客户端网格数据中提取N个导航网格的网格数据。
在一些实施例中,数量子单元,用于:
确定第一数值a,其中,a为正整数;
根据剔除后客户端网格数据的前a个字节,确定导航网格的数量N。
在一些实施例中,网格子单元,用于:
确定第二数值b和第三数值i,其中,b为正整数,i为小于N的正整数;
确定第i-1个导航网格的字节长度Li-1;
根据剔除后客户端网格数据的第a+(i-1)b+∑Li-1个至第a+ib+∑Li-1个字节,确定第i个导航网格的字节长度Li;
将剔除后客户端网格数据的第a+ib+∑Li-1个至第a+ib+∑Li个字节,确定第i个导航网格的网格数据;
更新i;
返回并执行步骤确定第i-1个导航网格的字节长度Li-1,直至i不小于N。
在一些实施例中,网格适配单元,包括:
中间子单元,用于生成中间文件;
中间结构子单元,用于将预设导航网格数据中的数据结构作为中间文件的中间数据结构;
中间修改子单元,用于采用适配后的寻路模块对中间文件进行修改,得到适配后的导航网格数据。
在一些实施例中,中间修改子单元,用于:
确定中间文件的中间数据结构中的中间数据元素;
在适配后的寻路模块中确定与中间数据元素对应的寻路数据元素;
根据寻路数据元素对中间文件的中间数据元素进行修改,得到适配后的导航网格数据。
在一些实施例中,适配后的寻路模块中包括预设的寻路算法集合,寻路单元,用于:
从预设的寻路算法集合中确定目标寻路算法;
采用目标寻路算法根据适配后的导航网格数据进行游戏寻路。
本发明实施例还提供一种游戏寻路装置,适用于客户端,包括:
场景单元,用于获取游戏场景数据;
烘培单元,用于采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据;
网格发送单元,用于将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
在一些实施例中,烘培单元,用于:
采用游戏引擎对场景数据进行栅格化处理,得到光栅集合;
对光栅集合进行可行走筛选处理,得到可行走光栅集合;
根据可行走光栅集合,生成可行走区域;
确定可行走区域的区域简化轮廓;
对区域简化轮廓进行网格切分,得到多个导航网格的客户端网格数据。
本发明实施例还提供一种服务器,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本发明实施例所提供的任一种游戏寻路方法中的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种游戏寻路方法中的步骤。
本发明实施例可以获取预设寻路模块;根据预设寻路模块进行适配处理,得到适配后的寻路模块;获取客户端网格数据;从客户端网格数据中提取预设导航网格数据;采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;根据适配后的导航网格数据进行游戏寻路,得到寻路结果;将寻路结果发送给客户端,以展示寻路结果。
在本发明中,通过直接获取完整的客户端网格数据,并对客户端网格数据进行适配后,可以获得精度高、导航信息丰富的导航网格数据,在对预设寻路模块适配后,适配后的寻路模块就可以根据该适配后的高精度导航网格数据进行寻路了。由此,提升了游戏寻路的准确度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的游戏寻路方法的场景示意图;
图1b是本发明实施例提供的游戏寻路方法的流程示意图;
图1c是本发明实施例提供的游戏寻路方法的寻路网格示意图;
图1d是本发明实施例提供的游戏寻路方法的客户端网格数据的构成示意图;
图1e是本发明实施例提供的游戏寻路方法的提取预设导航网格数据的流程示意图;
图2a是本发明实施例提供的游戏寻路方法的场景示意图;
图2b是本发明实施例提供的游戏寻路方法的客户端寻路结果的示意图;
图2c是本发明实施例提供的游戏寻路方法的服务器传统寻路结果示意图;
图2d是本发明实施例提供的游戏寻路方法的本方案服务器寻路结果示意图;
图3是本发明实施例提供的游戏寻路装置的结构示意图;
图4是本发明实施例提供的游戏寻路装置的结构示意图;
图5是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种游戏寻路方法、装置、服务器和存储介质。
其中,该游戏寻路装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(Personal Computer,PC)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
在一些实施例中,该游戏寻路装置还可以集成在多个电子设备中,比如,游戏寻路装置可以集成在多个服务器中,由多个服务器来实现本发明的游戏寻路方法。
在一些实施例中,服务器也可以以终端的形式来实现。
例如,参考图1a,提供了一种游戏寻路系统,该游戏寻路系统包括了服务器和客户端A、客户端B,其中:
该客户端A可以是一种搭载了游戏引擎的服务器或终端,该客户端A可以获取游戏场景数据;采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据;将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
该服务器可以获取预设寻路模块;根据预设寻路模块进行适配处理,得到适配后的寻路模块;从客户端A获取客户端网格数据;从客户端网格数据中提取预设导航网格数据;采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;根据适配后的导航网格数据进行游戏寻路,得到寻路结果;将寻路结果发送给客户端B,以展示寻路结果。
该客户端B也可以搭载游戏引擎,该客户端B可以从服务器获取寻路结果,并渲染游戏画面,使得游戏画面展示该寻路结果。
其中,需要注意的是,客户端A和客户端B可以是同一个客户端,也可以是不同的客户端。
例如,例如,客户端A和客户端B可以是同一个客户端,集成在玩家的个人电脑中;再例如,客户端A和客户端B可以不是同一个客户端,客户端A可以集成在服务器中,客户端B可以集成在玩家的个人电脑中;再例如,客户端A和客户端B可以不是同一个客户端,客户端A可以集成在玩家X的个人电脑中,客户端B可以集成在玩家B的个人电脑中,等等。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
游戏引擎(Game Engine)是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。游戏引擎可以包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、寻路导航系统、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
其中,游戏引擎中的寻路导航系统可以用于为游戏角色规划从起点至终点的路径。不同的游戏引擎可以具有不同的寻路导航系统。例如,游戏引擎Unity提供了NavMesh模块来提供寻路导航功能。
游戏的客户端可以搭载游戏引擎,并采用该游戏引擎中自带的寻路导航系统,使用更高的精度与更长的时间,来为游戏场景中游戏角色的导航。
然而需要注意的是,游戏引擎中自带的寻路导航系统往往是不开源的,因此,由于网络游戏的服务器并不搭载游戏引擎,游戏的服务器无法使用游戏引擎中自带的寻路导航工具。
此外,服务器寻路由于要服务多个实体,因此用于寻路的计算资源较少,以及要求寻路耗时较短。
故目前服务器寻路往往只能去获取低精度的寻路数据来寻路,导致了服务器寻路结果与客户端不符的问题,例如,在客户端寻路中,悬崖上的一个点被判断为可以站立的,但是在服务器寻路中,由于寻路数据精度低够,该悬崖上的点被判定为了不可站立,最终便导致了NPC无法通过寻路移动到悬崖的该点上,等等。
因此,在本实施例中,为了使得服务器和客户端保持一致的导航寻路逻辑,得到同样的寻路路径,在本实施例提供了一种游戏寻路方法,适用于服务器,如图1b所示,该游戏寻路方法的具体流程可以如下:
101、获取预设寻路模块。
其中,预设寻路模块是指游戏引擎中预设的具有寻路功能的程序,该预设寻路模块可以自动地规划从起点至终点的寻路路径。
在一些实施例中,预设寻路模块可提供多种寻路算法,不同的寻路算法在规划寻路路径时具有不同的效果。
比如,预设寻路模块可提供A*寻路算法(A-star Algorithm)、B*寻路算法(B-starAlgorithm)、贪心寻路算法、迪杰斯特拉寻路算法(Dijkstra Algorithm),等等。
例如,以A*寻路算法为例,A*寻路算法是一种静态路网中求解最短路径最有效的直接搜索方法,该A*寻路算法的公式表示为:
f(n)=g(n)+h(n)
其中,f(n)是从起点经由中间点n到终点的估计距离,g(n)是在从起点到中间点n的实际距离,h(n)是从中间点n到终点的估计距离。
在一些实施例中,预设寻路模块可以是一种开源的寻路导航系统。比如,预设寻路模块可以是Recast Navigation中的Detour部分。
其中,Recast Navigation是一个开源的寻路引擎,Recast Navigation分为Recast部分和Detour部分,Recast部分用于根据游戏场景生成用于寻路的导航网格(Navigation Mesh)数据,Detour部分用于根据Recast部分生成的导航网格数据进行寻路。
102、根据预设寻路模块进行适配处理,得到适配后的寻路模块。
由于服务器采用Recast Navigation的Recast部分来生成的导航网格数据,往往与客户端采用游戏引擎自带的寻路导航系统生成的导航网格数据不同,故在本方案中,服务器可以采用预设寻路模块,如Detour,来从客户端生成的客户端网格数据中提取预设导航网格,并采用预设导航网格数据进行寻路,使得寻路结果与客户端中的寻路结果相同。
其中,客户端网格数据是游戏引擎通过其自带的寻路导航系统所生成的一种导航网格数据,该游戏引擎可以根据该客户端网格数据进行寻路。
其中,导航网格数据是一种用于在复杂空间中导航寻路、标记可行走区域的多边形网格数据结构。参考图1c,该导航网格数据中包括多个导航网格的网格数据,每个导航网格都可以为一个凸多边形(Convex Polygon,Poly Mesh),在图1c中,凸多边形以虚线构成的三角形表示。在同个导航网格中的起点和终点是可以直线到达的;若起点和终点位于不同的导航网格,则可以利用导航网格数据和Detour中的寻路算法(比如A*算法)算出需要经过的导航网格,从而算出具体的寻路路径。
由于预设寻路模块无法处理游戏引擎生成的客户端网格数据,因此,在步骤102中需要对预设寻路模块进行适配处理,得到适配后的寻路模块,此外,还需要在步骤103~105对客户端网格数据进行一系列的处理,得到适配后的导航网格数据,最终使得适配后的寻路模块可以处理适配后的导航网格数据。
以下将介绍如何根据预设寻路模块进行适配处理,得到适配后的寻路模块:
由于预设寻路模块中对于导航网格的数据结构与游戏引擎中对于导航网格的数据结构在布局上不同,因此,在本实施例中需要对预设寻路模块中对于导航网格的数据结构进行调整,使其适配。
适配是指自动地修改预设寻路模块中的源代码,使得适配后的寻路模块可以处理步骤105中适配后的导航网格数据。
因此,在一些实施例中,步骤102可以包括如下步骤:
(1)确定预设寻路模块中的寻路数据结构;
(2)根据预设导航网格数据的导航数据结构修改寻路数据结构,得到适配后的寻路模块。
其中,寻路数据结构是指预设寻路模块中定义导航网格的数据结构,导航数据结构是指预设导航网格数据中定义导航网格的数据结构。
数据结构(data structure)是指相互之间存在一种或多种特定关系的数据元素的集合。
例如,在一些实施例中,寻路数据结构dtPolyDetail定义如下:
Struct dtPolyDetail{
Unsigned int vertBase;
Unsigned int triBase;
Unsigned char vertCount;
Unsigned char triCount;
};
其中,寻路数据结构dtPolyDetail由4个数据元素构成,分别是顶点(Vertex)的地址vertBase、三角形(Triangle)的地址triBase、顶点数量vertCount和三角形数量triCount。
在一些实施例中,寻路数据结构中数据元素的数据类型和导航数据结构中数据元素的数据类型有所不同,即预设寻路模块中的部分代码与预设导航网格数据中的部分代码不兼容,因此,可以根据预设导航网格数据的导航数据结构修改寻路数据结构,得到适配后的寻路模块。
比如,在一些实施例中,步骤“(2)根据预设导航网格数据的导航数据结构修改寻路数据结构,得到适配后的寻路模块”可以包括如下步骤:
确定寻路数据结构中的寻路数据元素;
在预设导航网格数据的导航数据结构中,确定与寻路数据元素对应的导航数据元素;
当寻路数据元素的数值范围不小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为导航数据元素的数值范围;
当寻路数据元素的数值范围小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为预设数值范围。
其中,寻路数据元素是指寻路数据结构中的数据元素,导航数据元素是指导航数据结构中的数据元素。
寻路数据元素的数值范围是指寻路数据元素所属数据类型的取值范围。
例如,在上述确定寻路数据结构dtPolyDetail中确定寻路数据元素vertCount、triCount,在预设导航网格数据的导航数据结构中,确定与寻路数据元素vertCount和triCount对应的导航数据元素。由于vertCount和triCount的数据类型均为unsignedchar,unsigned char的取值范围为0~255,可知,vertCount和triCount的数值范围均为0~255。
同理,导航数据元素的数值范围是指导航数据元素所属数据类型的取值范围。
当寻路数据元素的数值范围不小于导航数据元素的数值范围时,由于寻路数据元素的数值范围足以覆盖导航数据元素的数值范围,因此,可以将寻路模块中所有寻路数据元素的数值范围修改为导航数据元素的数值范围,使得寻路数据元素的数值范围与导航数据元素的数值范围兼容,同时寻路数据元素中的数据不会丢失。
而当寻路数据元素的数值范围小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为预设数值范围。
其中,预设数值范围应大于导航数据元素的数值范围。
例如,预设数值范围可以设为0~65535,即,数据类型unsigned short的取值范围,因此,将寻路数据元素的数据类型修改为unsigned short后,可以使得寻路数据元素的数值范围为0~65535,使得寻路数据元素的数值范围与导航数据元素的数值范围兼容,同时寻路数据元素中的数据不会丢失。
例如,具体地,在一些实施例中,步骤“将寻路模块中所有寻路数据元素的数值范围修改为预设数值范围”可以包括如下步骤:
在寻路数据模块的代码中找到寻路数据结构dtPolyDetail;
将寻路数据结构dtPolyDetail中的寻路数据元素vertCount和triCount的数据类型均修改为unsigned short,使得寻路数据元素vertCount和triCount的数值范围为0~65535;
在寻路数据模块的代码中找到出现的所有vertCount、triCount;
将所有的vertCount、triCount的数据类型均修改为unsigned short。
103、获取客户端网格数据。
其中,服务器可以从客户端获取客户端网格数据,即,客户端根据其搭载的游戏引擎生成的导航网格数据。
比如,服务器可以通过网络从客户端获取客户端网格数据。
在一些实施例中,服务器中可以模拟客户端的虚拟环境,并在该虚拟环境中运行客户端。
例如,在一些实施例中,服务器可以搭载有客户端的虚拟机,该虚拟机可以是为了运行客户端而设计的。其中,虚拟机(Virtual Machine)是通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能,使得运行在虚拟机上的客户端被局限在虚拟机提供的资源里。
因此,在一些实施例中,服务器可以通过与虚拟机中的客户端交互,获取客户端生成的客户端网格数据。
其中,客户端是指安装有游戏引擎、可以运行游戏的应用程序。该客户端可以集成在玩家终端中,也可以集成在服务器的虚拟机中,等等。
在步骤201~203中将介绍客户端如何根据其搭载的游戏引擎生成的导航网格数据,以及,客户端如何采用游戏引擎根据客户端网格数据进行游戏导航,因此,在此不做赘述。
104、从客户端网格数据中提取预设导航网格数据。
其中,由于客户端网格数据中包含适配后寻路模块无法处理的数据,故在此可以通过从中提取适配后寻路模块可用的数据。
例如,在一些实施例中,预设导航网格数据可以包括至少一个导航网格的网格数据,步骤104可以包括如下步骤:
(1)对客户端网格数据进行字节剔除处理,得到剔除后客户端网格数据;
(2)根据剔除后客户端网格数据,确定导航网格的数量N,其中,N为正整数;
(3)在剔除后客户端网格数据中提取N个导航网格的网格数据。
比如,在一些实施例中,客户端网格数据是由8128字节的公共开头数据、4字节的导航网格数量数据、4字节的导航网格长度数据,和导航网格数据构成。
例如,参考图1d,在图1d中,客户端网格数据是由8128成的公共开头、由4字节构成的导航网格数量、由导航网格数量个字节构成的导航网格数据构成。
在一些实施例中,每个导航网格的导航网格数据后还可以含有该导航网格数据的16字节的哈希码,该哈希码可用于测试导航网格数据的完整性。
因此,可以通过剔除客户端网格数据中预设数值的字节,来剔除客户端网格数据中的公共开头数据。
通过读取剔除后客户端网格数据中前4字节,而可以确定导航网格数量。
例如,剔除后客户端网格数据中前4字节为[12 00 00 00],则可以根据16进制确定网格数量为36。因此,导航网格的数量N=36
通过继续读取剔除后客户端网格数据,即可在剔除后客户端网格数据中提取18个导航网格的网格数据。
例如,在一些实施例中,步骤“(2)根据剔除后客户端网格数据,确定导航网格的数量N”可以包括如下步骤:
确定第一数值a,其中,a为正整数;
根据剔除后客户端网格数据的前a个字节,确定导航网格的数量N。
其中,第一数值a是指剔除后客户端网格数据中构成的导航网格数量的前a个字节。
比如,如图1d,剔除后客户端网格数据中是由前4字节构成的导航网格数量,则第一数值a可设为4。
在一些实施例中,步骤“(3)在剔除后客户端网格数据中提取N个导航网格的网格数据,可以包括如下步骤:
确定第二数值b和第三数值i,其中,b为正整数,i为小于N的正整数;
确定第i-1个导航网格的字节长度Li-1;
根据剔除后客户端网格数据的第a+(i-1)b+∑Li-1个至第a+ib+∑Li-1个字节,确定第i个导航网格的字节长度Li;
将剔除后客户端网格数据的第a+ib+∑Li-1个至第a+ib+∑Li个字节,确定第i个导航网格的网格数据;
更新i;
返回并执行步骤确定第i-1个导航网格的字节长度Li-1,直至i不小于N。
其中i是指当前读取的第i个导航网格,i-1是指上一次读取的导航网格,i+1是指下一次读取的导航网格。
例如,当前读取的是第4个导航网格,则上一次读取的是第3个导航网格,下一次读取的是第5个导航网格。
其中,第二数值b是指剔除后客户端网格数据中构成的导航网格长度的第a~b个字节。
比如,如图1d,剔除后客户端网格数据中是由第4~8字节构成的导航网格数量,则第二数值b可设为4。
例如,剔除后客户端网格数据中第4~8字节为[06 00 00 00],则根据16进制可以确定导航网格长度为12,因此,导航网格的长度L=12。
因此,具体地,在一些实施例中,参考图1e,步骤104可以包括如下步骤:
将客户端网格数据读取在内存中;
读取内存中的前8182字节并将其删除;
读取内存中的前4个字节的导航网格数量,并将其赋值为N;
重复执行如下步骤,直至读取到第N个导航网格:
读取内存中的4个字节的导航网格长度,并将其赋值为L;
读取内存中的L个字节的导航网格的导航网格数据,并将该导航网格的导航网格数据存储为预设导航网格数据。
105、采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据。
比如,在一些实施例中,步骤105可以包括如下步骤:
(1)生成中间文件;
(2)将预设导航网格数据中的数据结构作为中间文件的中间数据结构;
(3)采用适配后的寻路模块对中间文件进行修改,得到适配后的导航网格数据。
其中,中间文件是指生成的新建程序文件。
比如,可以新建程序文件,并在其中定义与预设导航网格数据相同的数据结构,然后,在其中定义与适配后寻路模块中寻路数据结构相同的寻路数据元素。
因此,在一些实施例中,步骤“(3)采用适配后的寻路模块对中间文件进行修改,得到适配后的导航网格数据,可以包括:
确定中间文件的中间数据结构中的中间数据元素;
在适配后的寻路模块中确定与中间数据元素对应的寻路数据元素;
根据寻路数据元素对中间文件的中间数据元素进行修改,得到适配后的导航网格数据。
例如,可以新建程序文件A,并在A中定义预设导航网格数据相同的数据结构UnityNavmeshDataHeader与数据结构UnityNavmeshPoly。
然后,根据寻路模块中寻路数据结构的寻路数据元素,定义UnityNavmeshDataHeader与UnityNavmeshPoly如下:
106、根据适配后的导航网格数据进行游戏寻路,得到寻路结果。
通过步骤101~105,得到了相互适配的适配后的寻路模块和适配后导航网格数据,因此,可以采用适配后的寻路模块来根据配后的导航网格数据进行游戏寻路,得到寻路结果。
比如,可以创建导航网格数据实体(如dtNavMesh),采用其中的数据载入接口(如dtNavMesh::addTile)来将适配后的导航网格数据载入到该导航网格数据实体中;然后,可以创建导航网格询问实体(如dtNavMeshQuery),采用其中的初始化接口(如dtNavMeshQuery::init)对导航网格询问实体进行初始化,最后采用适配后的寻路模块与导航网格询问实体进行寻路。
比如,采用适配后的寻路模块中的某一寻路算法,来通过导航网格询问实体进行寻路。
例如,在一些实施例中,适配后的寻路模块中可以包括预设的寻路算法集合,步骤106可以包括如下步骤:
从预设的寻路算法集合中确定目标寻路算法;
采用目标寻路算法根据适配后的导航网格数据进行游戏寻路。
此外,在一些实施例中,导航网格数据包括权重数据,该权重数据可用于平滑寻路路径,在根据适配后的导航网格数据进行游戏寻路,得到寻路结果时,由于适配前后导航网格数据的权重均未被改变,因此,客户端采用适配前的导航网格数据进行寻路,与服务器根据适配后的导航网格数据进行寻路所得到的寻路路径的平滑程度相同。
107、将寻路结果发送给客户端,以展示寻路结果。
其中,寻路结果可以是寻路路径、寻路节点等。
当客户端收到寻路结果时,游戏角色可以根据寻路结果在客户端显示的游戏场景中移动。
此外,在本实施例中还提供了一种游戏寻路方法,适用于客户端,如图2a所示,该游戏寻路方法的具体流程可以如下:
201、获取游戏场景数据。
其中,游戏场景数据可以包括由游戏模型构成的游戏场景的数据,例如,游戏场景数据可以包括游戏建筑、游戏地形、游戏角色、游戏道具等游戏模型构成的场景数据。
202、采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据。
该客户端中可以搭载有游戏引擎,该游戏引擎可以具有寻路导航系统。
在一些实施例中,游戏引擎自带的寻路导航系统可以对场景数据进行网格烘培处理,从而使得客户端得到客户端网格数据。
网格烘焙处理是指根据游戏场景构造Navmesh的过程。
其中,在一些实施例中,步骤202可以包括如下步骤:
(1)采用游戏引擎对场景数据进行栅格化处理,得到光栅集合;
(2)对光栅集合进行可行走筛选处理,得到可行走光栅集合;
(3)根据可行走光栅集合,生成可行走区域;
(4)确定可行走区域的区域简化轮廓;
(5)对区域简化轮廓进行网格切分,得到多个导航网格的客户端网格数据。
为了更准确地确定游戏场景中的可行走区域,在本实施例中,可以对场景数据进行栅格化处理,得到光栅集合,并对其进行筛选、剪裁。
其中,光栅(grating)也可以称为体素,即三维空间中的一个有大小的点,栅格化是渲染中的一个流程,指将游戏模型的图元数据转换成多个光栅。
其中,可以在对光栅集合进行可行走筛选处理时,过滤低垂的光栅、过滤凸起的光栅、过滤代表障碍物的光栅,等等。
然后,可以确定可行走区域的区域简化轮廓,其中,区域简化轮廓是指由可行走区域的边缘构成的轮廓,在一些实施例中,该轮廓可以被进一步地优化其长度,使得边缘长度在预设范围内。
最后,对区域简化轮廓进行网格切分,比如切分为多个凸多边形,从而得到多个导航网格的客户端网格数据。
例如,凸多边形可以为三角形,可以通过遍历区域简化轮廓的所有边,来对于每组三个顶点形成一个有效的候选三角形。对于所有候选三角形,选取形成最短新边的那一个候选三角形作为导航网格,对剩余顶点继续这个过程,直至完成整个区域简化轮廓的网格切分。
203、将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
然后,将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
在一些实施例中,由于导航网格数据包括权重数据,该权重数据可用于平滑寻路路径,在根据适配后的导航网格数据进行游戏寻路,得到寻路结果时,由于适配前后导航网格数据的权重均未被改变,因此,客户端采用适配前的导航网格数据进行寻路,与服务器根据适配后的导航网格数据进行寻路所得到的寻路路径的平滑程度相同。
例如,参考图2b,客户端在采用游戏引擎根据客户端网格数据生成从起点A到终点B的寻路路径时,客户端可以根据客户端网格数据中导航网格的权重来进行规划平滑的寻路路径,使得游戏角色可以根据寻路路径地绕过图2b中的餐桌,其中,图2b中浅色区域和深色区域中导航网格的权重不同。
参考图2c,服务器采用传统导航技术生成从起点A到终点B的寻路路径时,由于是根据低精度的导航数据进行寻路,故游戏角色往往倾向于走最近的道路,在图2c中,游戏角色靠着餐桌的边缘移动的行为在游戏中显得非常不自然,且该行为会造成游戏角色卡在餐桌的边缘无法移动等问题。
参考图2d,采用本方案的服务器所生成的寻路路径与客户端生成的寻路路径一致,游戏角色可以根据寻路路径地绕过图2d中的餐桌。
本发明实施例提供的游戏寻路方案可以应用在各种游戏场景中。
比如,以NPC在1200米*1200米大小的游戏场景中寻路为例,参考表1,采用本方案(即方案A)和目前现有方案(即方案B)进行从起点至终点的游戏寻路所消耗的时间,以及寻路路径点的数量如下:
起点坐标 | (409,534) | (409,553) | (383,625) | (554,521) | … |
终点坐标 | (407,615) | (553,496) | (406,430) | (556,288) | … |
方案B寻路耗时 | 1002us | 1058us | 1131us | 1300us | … |
方案A寻路耗时 | 43us | 134us | 170us | 80us | … |
方案B路径点数量 | 4 | 42 | 14 | 28 | … |
方案A路径点数量 | 2 | 7 | 7 | 3 | … |
表1
根据表1所提供的数据计算可得,本方案平均的寻路耗时为136us,而目前现有方案的寻路耗时为1328us,本方案平均的寻路路径点为6个,而目前现有方案平均的寻路路径点为17个。
因此,相比于现有方案,本方案寻路的效率更高。
此外,发明人经随机起始点测试后,得到如表2所示的寻路性能,如下:
寻路方式 | 平均耗时(us) |
现有方案 | 869 |
本方案 | 140 |
表2
其中,发明人将起点和终点的坐标设置为(x,y),其中,x取值范围为350~450,y取值范围为350~750,寻路次数设置为1000次,最终得到本方案平均寻路耗时为140us,现有方案平均寻路耗时为869us,本方案计算寻路路径时间更短,效率更高。
因此,在本技术方案中,服务器的寻路精度与客户端同步,避免客户端寻路结果与服务器寻路结果不一致。
由上可知,在本发明实施例中,服务器可以获取预设寻路模块,并根据预设寻路模块进行适配处理,得到适配后的寻路模块。客户端可以获取游戏场景数据,并采用其搭载的游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据,然后将完整的客户端网格数据发送给服务器。
服务器从客户端获取了完整的客户端网格数据后,可以从客户端网格数据中提取预设导航网格数据,并采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据,然后根据适配后的导航网格数据进行游戏寻路,得到寻路结果,最后将寻路结果发送给客户端,以展示寻路结果。
本方案可以从完整的客户端网格数据中提取高精度的预设导航网格数据,因此适配后的导航网格数据精度高,没有数据细节的损失,故依据其进行游戏寻路得到的寻路路径,可以与客户端寻路得到的寻路路径相同。
因此,本方案可以做到寻路精度上与客户端同步,避免了客户端寻路与服务寻路的寻路结果不同的情况。由此,本方案可以提升游戏寻路的准确度。
为了更好地实施以上方法,本发明实施例还提供一种游戏寻路装置,该游戏寻路装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
比如,在本实施例中,将以游戏寻路装置具体集成在服务器中为例,对本发明实施例的方法进行详细说明。
例如,如图3所示,该游戏寻路装置可以包括模块获取单元301、模块适配单元302、网格获取单元303、提取单元304、网格适配单元305、寻路单元306以及结果发送单元307,如下:
(一)模块获取单元301:
模块获取单元301可以用于获取预设寻路模块。
(二)模块适配单元302:
模块适配单元302可以用于根据预设寻路模块进行适配处理,得到适配后的寻路模块。
在一些实施例中,模块适配单元302可以包括寻路结构子单元和模块适配子单元,如下:
(1)寻路结构子单元:
寻路结构子单元用于确定预设寻路模块中的寻路数据结构。
(2)模块适配子单元:
模块适配子单元用于根据预设导航网格数据的导航数据结构修改寻路数据结构,得到适配后的寻路模块。
在一些实施例中,模块适配子单元可以用于:
确定寻路数据结构中的寻路数据元素;
在预设导航网格数据的导航数据结构中,确定与寻路数据元素对应的导航数据元素;
当寻路数据元素的数值范围不小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为导航数据元素的数值范围;
当寻路数据元素的数值范围小于导航数据元素的数值范围时,将寻路模块中所有寻路数据元素的数值范围修改为预设数值范围。
(三)网格获取单元303:
网格获取单元303可以用于从客户端获取客户端网格数据。
(四)提取单元304:
提取单元304可以用于从客户端网格数据中提取预设导航网格数据。
在一些实施例中,预设导航网格数据可以包括至少一个导航网格的网格数据,提取单元304,可以包括剔除子单元、数量子单元以及网格子单元,如下:
(1)剔除子单元:
剔除子单元可以用于对客户端网格数据进行字节剔除处理,得到剔除后客户端网格数据。
(2)数量子单元:
数量子单元可以用于根据剔除后客户端网格数据,确定导航网格的数量N,其中,N为正整数。
(3)网格子单元:
网格子单元可以用于在剔除后客户端网格数据中提取N个导航网格的网格数据。
在一些实施例中,数量子单元可以用于执行如下步骤:
确定第一数值a,其中,a为正整数;
根据剔除后客户端网格数据的前a个字节,确定导航网格的数量N。
在一些实施例中,网格子单元可以用于执行如下步骤:
确定第二数值b和第三数值i,其中,b为正整数,i为小于N的正整数;
确定第i-1个导航网格的字节长度Li-1;
根据剔除后客户端网格数据的第a+(i-1)b+∑Li-1个至第a+ib+∑Li-1个字节,确定第i个导航网格的字节长度Li;
将剔除后客户端网格数据的第a+ib+∑Li-1个至第a+ib+∑Li个字节,确定第i个导航网格的网格数据;
更新i;
返回并执行步骤确定第i-1个导航网格的字节长度Li-1,直至i不小于N。
(五)网格适配单元305:
网格适配单元305可以用于采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据。
在一些实施例中,网格适配单元305,可以包括中间子单元、中间结构子单元以及中间修改子单元,如下:
(1)中间子单元:
中间子单元可以用于生成中间文件。
(2)中间结构子单元:
中间结构子单元可以用于将预设导航网格数据中的数据结构作为中间文件的中间数据结构。
(3)中间修改子单元:
中间修改子单元可以用于采用适配后的寻路模块对中间文件进行修改,得到适配后的导航网格数据。
在一些实施例中,中间修改子单元可以用于执行如下步骤:
确定中间文件的中间数据结构中的中间数据元素;
在适配后的寻路模块中确定与中间数据元素对应的寻路数据元素;
根据寻路数据元素对中间文件的中间数据元素进行修改,得到适配后的导航网格数据。
(六)寻路单元306:
寻路单元306可以用于根据适配后的导航网格数据进行游戏寻路,得到寻路结果。
在一些实施例中,适配后的寻路模块中可以包括预设的寻路算法集合,寻路单元306可以用于执行如下步骤:
从预设的寻路算法集合中确定目标寻路算法;
采用目标寻路算法根据适配后的导航网格数据进行游戏寻路。
(七)结果发送单元307:
结果发送单元307可以用于将寻路结果发送给客户端,以展示寻路结果。
比如,在本实施例中,将以游戏寻路装置集成在安装有游戏引擎的客户端,该客户端为服务器为例,对本发明实施例的方法进行详细说明。
该游戏寻路装置可以适用于客户端,如图4所示,该游戏寻路装置可以包括场景单元401、烘培单元402以及网格发送单元403,如下:
(一)场景单元401:
场景单元401可以用于获取游戏场景数据。
(二)烘培单元402:
烘培单元402可以用于采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据。
在一些实施例中,烘培单元402可以用于执行如下步骤:
采用游戏引擎对场景数据进行栅格化处理,得到光栅集合;
对光栅集合进行可行走筛选处理,得到可行走光栅集合;
根据可行走光栅集合,生成可行走区域;
确定可行走区域的区域简化轮廓;
对区域简化轮廓进行网格切分,得到多个导航网格的客户端网格数据。
(三)网格发送单元403:
网格发送单元403可以用于将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的游戏寻路装置由模块获取单元获取预设寻路模块;由模块适配单元根据预设寻路模块进行适配处理,得到适配后的寻路模块;由网格获取单元从客户端获取客户端网格数据;由提取单元从客户端网格数据中提取预设导航网格数据;由网格适配单元采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;由寻路单元根据适配后的导航网格数据进行游戏寻路,得到寻路结果;由结果发送单元将寻路结果发送给客户端,以展示寻路结果。。
此外,本实施例的游戏寻路装置由场景单元获取游戏场景数据;由烘培单元采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据;由网格发送单元将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
由此,本发明实施例可以提升提高游戏寻路的准确度。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的游戏寻路装置由。
由此,本发明实施例可以提升提高游戏寻路的准确度。
本发明实施例还提供一种电子设备,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑,等等;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,等等。
在一些实施例中,该游戏寻路装置还可以集成在多个电子设备中,比如,游戏寻路装置可以集成在多个服务器中,由多个服务器来实现本发明的游戏寻路方法。
在本实施例中,将以本实施例的电子设备是服务器为例进行详细描述,比如,如图5所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、电源503、输入模块504以及通信模块505等部件。本领域技术人员可以理解,图5中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。在一些实施例中,处理器501可包括一个或多个处理核心;在一些实施例中,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。
服务器还包括给各个部件供电的电源503,在一些实施例中,电源503可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入模块504,该输入模块504可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
该服务器还可包括通信模块505,在一些实施例中通信模块505可以包括无线模块,服务器可以通过该通信模块505的无线模块进行短距离无线传输,从而为用户提供了无线的宽带互联网访问。比如,该通信模块505可以用于帮助用户收发电子邮件、浏览网页和访问流式媒体等。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能。
例如,在一些实施例中,适用于服务器的功能如下:
获取预设寻路模块;
根据预设寻路模块进行适配处理,得到适配后的寻路模块;
从客户端获取客户端网格数据;
从客户端网格数据中提取预设导航网格数据;
采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;
根据适配后的导航网格数据进行游戏寻路,得到寻路结果;
将寻路结果发送给客户端,以展示寻路结果。
例如,在一些实施例中,适用于客户端的的功能如下:
获取游戏场景数据;
采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据;
将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本发明实施例可以提高游戏寻路的准确度。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种游戏寻路方法中的步骤。
例如,在一些实施例中,适用于服务器的指令可以执行如下步骤:
获取预设寻路模块;
根据预设寻路模块进行适配处理,得到适配后的寻路模块;
从客户端获取客户端网格数据;
从客户端网格数据中提取预设导航网格数据;
采用适配后的寻路模块对预设导航网格数据进行适配处理,得到适配后的导航网格数据;
根据适配后的导航网格数据进行游戏寻路,得到寻路结果;
将寻路结果发送给客户端,以展示寻路结果。
例如,在一些实施例中,适用于客户端的指令可以执行如下步骤:
获取游戏场景数据;
采用游戏引擎基于场景数据进行网格烘培处理,得到客户端网格数据;
将客户端网格数据发送给服务器,以便服务器根据客户端网格数据获得预设导航网格数据。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中提供的游戏寻路方面或者游戏导航方面的各种可选实现方式中提供的方法。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种游戏寻路方法中的步骤,因此,可以实现本发明实施例所提供的任一种游戏寻路方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种游戏寻路方法、装置、服务器和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种游戏寻路方法,其特征在于,适用于服务器,包括:
获取预设寻路模块;
根据所述预设寻路模块进行适配处理,得到适配后的寻路模块;
获取客户端网格数据;
从所述客户端网格数据中提取预设导航网格数据;
采用所述适配后的寻路模块对所述预设导航网格数据进行适配处理,得到适配后的导航网格数据;
根据所述适配后的导航网格数据进行游戏寻路,得到寻路结果;
将所述寻路结果发送给客户端,以展示所述寻路结果。
2.如权利要求1所述的游戏寻路方法,其特征在于,所述根据所述预设寻路模块进行适配处理,得到适配后的寻路模块,包括:
确定所述预设寻路模块中的寻路数据结构;
根据所述预设导航网格数据的导航数据结构修改所述寻路数据结构,得到适配后的寻路模块。
3.如权利要求2所述的游戏寻路方法,其特征在于,所述根据所述预设导航网格数据的导航数据结构修改所述寻路数据结构,得到适配后的寻路模块,包括:
确定所述寻路数据结构中的寻路数据元素;
在所述预设导航网格数据的导航数据结构中,确定与所述寻路数据元素对应的导航数据元素;
当所述寻路数据元素的数值范围不小于所述导航数据元素的数值范围时,将所述寻路模块中所有寻路数据元素的数值范围修改为所述导航数据元素的数值范围;
当所述寻路数据元素的数值范围小于所述导航数据元素的数值范围时,将所述寻路模块中所有寻路数据元素的数值范围修改为预设数值范围。
4.如权利要求1所述的游戏寻路方法,其特征在于,所述预设导航网格数据包括至少一个导航网格的网格数据,所述从所述客户端网格数据中提取预设导航网格数据,包括:
对所述客户端网格数据进行字节剔除处理,得到剔除后客户端网格数据;
根据所述剔除后客户端网格数据,确定导航网格的数量N,其中,N为正整数;
在所述剔除后客户端网格数据中提取N个导航网格的网格数据。
5.如权利要求4所述的游戏寻路方法,其特征在于,所述根据所述剔除后客户端网格数据,确定导航网格的数量N,包括:
确定第一数值a,其中,a为正整数;
根据所述剔除后客户端网格数据的前a个字节,确定导航网格的数量N。
6.如权利要求4所述的游戏寻路方法,其特征在于,所述在所述剔除后客户端网格数据中提取N个导航网格的网格数据,包括:
确定第二数值b和第三数值i,其中,b为正整数,i为小于N的正整数;
确定第i-1个导航网格的字节长度Li-1;
根据所述剔除后客户端网格数据的第a+(i-1)b+∑Li-1个至第a+ib+∑Li-1个字节,确定第i个导航网格的字节长度Li;
将所述剔除后客户端网格数据的第a+ib+∑Li-1个至第a+ib+∑Li个字节,确定第i个导航网格的网格数据;
更新所述i;
返回并执行步骤确定第i-1个导航网格的字节长度Li-1,直至i不小于N。
7.如权利要求1所述的游戏寻路方法,其特征在于,所述采用所述适配后的寻路模块对所述预设导航网格数据进行适配处理,得到适配后的导航网格数据,包括:
生成中间文件;
将所述预设导航网格数据中的数据结构作为所述中间文件的中间数据结构;
采用所述适配后的寻路模块对所述中间文件进行修改,得到适配后的导航网格数据。
8.如权利要求7所述的游戏寻路方法,其特征在于,所述采用所述适配后的寻路模块对所述中间文件进行修改,得到适配后的导航网格数据,包括:
确定所述中间文件的中间数据结构中的中间数据元素;
在所述适配后的寻路模块中确定与所述中间数据元素对应的寻路数据元素;
根据所述寻路数据元素对所述中间文件的中间数据元素进行修改,得到适配后的导航网格数据。
9.如权利要求1所述的游戏寻路方法,其特征在于,所述适配后的寻路模块中包括预设的寻路算法集合,所述根据所述适配后的导航网格数据进行游戏寻路,包括:
从预设的寻路算法集合中确定目标寻路算法;
采用所述目标寻路算法根据所述适配后的导航网格数据进行游戏寻路。
10.一种游戏寻路方法,其特征在于,适用于客户端,所述客户端搭载有游戏引擎;
所述游戏寻路方法,包括:
获取游戏场景数据;
采用所述游戏引擎基于所述场景数据进行网格烘培处理,得到客户端网格数据;
将所述客户端网格数据发送给服务器,以便服务器根据所述客户端网格数据获得预设导航网格数据。
11.如权利要求10所述的游戏寻路方法,其特征在于,所述采用所述游戏引擎基于所述场景数据进行网格烘培处理,得到客户端网格数据,包括:
采用所述游戏引擎对所述场景数据进行栅格化处理,得到光栅集合;
对所述光栅集合进行可行走筛选处理,得到可行走光栅集合;
根据所述可行走光栅集合,生成可行走区域;
确定所述可行走区域的区域简化轮廓;
对所述区域简化轮廓进行网格切分,得到多个导航网格的客户端网格数据。
12.一种游戏寻路装置,其特征在于,适用于服务器,包括:
模块获取单元,用于获取预设寻路模块;
模块适配单元,用于根据所述预设寻路模块进行适配处理,得到适配后的寻路模块;
网格获取单元,用于获取客户端网格数据;
提取单元,用于从所述客户端网格数据中提取预设导航网格数据;
网格适配单元,用于采用所述适配后的寻路模块对所述预设导航网格数据进行适配处理,得到适配后的导航网格数据;
寻路单元,用于根据所述适配后的导航网格数据进行游戏寻路,得到寻路结果;
结果发送单元,用于将所述寻路结果发送给客户端,以展示所述寻路结果。
13.一种游戏寻路装置,其特征在于,适用于客户端,包括:
场景单元,用于获取游戏场景数据;
烘培单元,用于采用所述游戏引擎基于所述场景数据进行网格烘培处理,得到客户端网格数据;
网格发送单元,用于将所述客户端网格数据发送给服务器,以便服务器根据所述客户端网格数据获得预设导航网格数据。
14.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行如权利要求1~11任一项所述的游戏寻路方法中的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1~11任一项所述的游戏寻路方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010984562.XA CN112121435B (zh) | 2020-09-18 | 2020-09-18 | 游戏寻路方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010984562.XA CN112121435B (zh) | 2020-09-18 | 2020-09-18 | 游戏寻路方法、装置、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112121435A true CN112121435A (zh) | 2020-12-25 |
CN112121435B CN112121435B (zh) | 2022-04-08 |
Family
ID=73842354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010984562.XA Active CN112121435B (zh) | 2020-09-18 | 2020-09-18 | 游戏寻路方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112121435B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114177613A (zh) * | 2022-02-15 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 导航网格更新方法、装置、设备及计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270576A1 (en) * | 2007-04-09 | 2008-10-30 | Ian Cummings | Apparatus and methods for reducing data transmission in wireless client-server navigation systems |
CN104548597A (zh) * | 2014-12-26 | 2015-04-29 | 北京像素软件科技股份有限公司 | 导航网格的自动生成方法和装置 |
CN106075910A (zh) * | 2016-06-02 | 2016-11-09 | 深圳市豹风网络股份有限公司 | 移动终端网络游戏的三维导航系统 |
CN106600697A (zh) * | 2016-12-13 | 2017-04-26 | 东北大学 | 一种面向3d场景的导航网格地图表示方法 |
US10406437B1 (en) * | 2015-09-30 | 2019-09-10 | Electronic Arts Inc. | Route navigation system within a game application environment |
CN110523081A (zh) * | 2019-08-08 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN110672098A (zh) * | 2018-06-14 | 2020-01-10 | 百度在线网络技术(北京)有限公司 | 室内导航线模型获取方法、装置、设备以及存储介质 |
CN111298439A (zh) * | 2020-01-21 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、介质及电子设备 |
-
2020
- 2020-09-18 CN CN202010984562.XA patent/CN112121435B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270576A1 (en) * | 2007-04-09 | 2008-10-30 | Ian Cummings | Apparatus and methods for reducing data transmission in wireless client-server navigation systems |
CN104548597A (zh) * | 2014-12-26 | 2015-04-29 | 北京像素软件科技股份有限公司 | 导航网格的自动生成方法和装置 |
US10406437B1 (en) * | 2015-09-30 | 2019-09-10 | Electronic Arts Inc. | Route navigation system within a game application environment |
CN106075910A (zh) * | 2016-06-02 | 2016-11-09 | 深圳市豹风网络股份有限公司 | 移动终端网络游戏的三维导航系统 |
CN106600697A (zh) * | 2016-12-13 | 2017-04-26 | 东北大学 | 一种面向3d场景的导航网格地图表示方法 |
CN110672098A (zh) * | 2018-06-14 | 2020-01-10 | 百度在线网络技术(北京)有限公司 | 室内导航线模型获取方法、装置、设备以及存储介质 |
CN110523081A (zh) * | 2019-08-08 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN111298439A (zh) * | 2020-01-21 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、介质及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114177613A (zh) * | 2022-02-15 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 导航网格更新方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112121435B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xia et al. | Dynamic view-dependent simplification for polygonal models | |
Luebke | Level of detail for 3D graphics | |
CN110523081B (zh) | 导航寻路路径的规划方法及装置 | |
CN107358649B (zh) | 地形文件的处理方法和装置 | |
JP4937907B2 (ja) | ルールベースの手続的地形生成 | |
JP4824019B2 (ja) | ルールベースの手続的地形生成用地形編集ツール | |
JP4733116B2 (ja) | ルールベースの手続的地形生成用資源管理 | |
CN107578467B (zh) | 一种医疗器械三维建模方法及装置 | |
WO2000041139A1 (fr) | Dispositif de compression de donnees squelette a base tridimensionnelle | |
CN112717414B (zh) | 游戏场景编辑方法、装置、电子设备以及存储介质 | |
US11494980B2 (en) | Virtual asset map and index generation systems and methods | |
US10482629B2 (en) | System, method and computer program product for automatic optimization of 3D textured models for network transfer and real-time rendering | |
CN112386911A (zh) | 导航网格生成方法、装置、非易失性存储介质及电子装置 | |
CN115018992A (zh) | 发型模型的生成方法、装置、电子设备及存储介质 | |
CN112121435B (zh) | 游戏寻路方法、装置、服务器和存储介质 | |
CN112221151B (zh) | 一种地图生成方法、装置、计算机设备及存储介质 | |
CN109697748A (zh) | 模型压缩处理方法、模型贴图处理方法装置、存储介质 | |
Oliveira et al. | Incremental scenario representations for autonomous driving using geometric polygonal primitives | |
CN114842122B (zh) | 模型渲染方法、装置、设备及存储介质 | |
US11875445B2 (en) | Seamless image processing of a tiled image region | |
CN113094460B (zh) | 一种结构层级的三维建筑物渐进式编码与传输方法及系统 | |
Pérez et al. | Visualization of large terrain using non-restricted quadtree triangulations | |
JP3178808B2 (ja) | オブジェクト再構成方法及びオブジェクト近似方法及び空間描画方法 | |
CN116912817A (zh) | 三维场景模型拆分方法、装置、电子设备和存储介质 | |
CN113703864A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40035454 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |