CN115501607A - 寻路图的重建方法、装置和电子设备 - Google Patents
寻路图的重建方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115501607A CN115501607A CN202211015177.XA CN202211015177A CN115501607A CN 115501607 A CN115501607 A CN 115501607A CN 202211015177 A CN202211015177 A CN 202211015177A CN 115501607 A CN115501607 A CN 115501607A
- Authority
- CN
- China
- Prior art keywords
- scene
- information
- block
- target
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 238000010586 diagram Methods 0.000 claims abstract description 52
- 239000007787 solid Substances 0.000 claims description 15
- 230000000694 effects Effects 0.000 abstract description 27
- 230000008569 process Effects 0.000 description 23
- 230000001788 irregular Effects 0.000 description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005293 physical law Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
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/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/573—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using trajectories of game objects, e.g. of a golf ball according to the point of impact
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种寻路图的重建方法、装置和电子设备,获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;场景信息包括场景对象信息和初始寻路图;如果目标场景中的第一场景对象发生更新,在镜像场景中基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,在目标场景中,将初始寻路图中的至少部分寻路块替换为重建后的寻路块,得到重建后的寻路图。该方式中,根据目标场景的场景信息,重建镜像场景中发生更新的场景对象对应的寻路块,并将目标场景中的寻路块替换为镜像场景中重建后的寻路块,避免了缓存整个目标场景的相关信息,减少了服务器的计算量和内存占用,提高了重建效率和寻路图的效果,降低了工作成本。
Description
技术领域
本发明涉及游戏技术领域,尤其是涉及一种寻路图的重建方法、装置和电子设备。
背景技术
在一些游戏中,NPC(Non-Player Character,非玩家角色)的行为是由服务端中的寻路系统驱动的,通常通过服务端预先生成NPC在游戏场景的寻路图,在运行目标场景时根据预先生成的寻路图,控制NPC在目标场景中移动。但是,如果正在运行的目标场景中的场景对象发生更新,此时需要根据更新的场景对象动态更新寻路图。
相关技术中,通常在离线状态下将生成目标场景的寻路图的体素化信息预先进行缓存,在服务端运行目标场景时加载体素化信息,以在目标场景中的场景对象发生更新时,直接利用缓存的体素化信息进行寻路图的重新构建。但是,该方式中,需要缓存整个目标场景的体素化信息,占用的内存较大;另外,由于发生更新的场景对象可能是不规则的形状,且预先设置的参数为规则图形,因此需要采用规则的图形将场景对象覆盖的范围的寻路图区域全部覆盖,导致重建后的寻路图效果不佳,同时设计人员的工作成本较高。
发明内容
有鉴于此,本发明的目的在于提供一种寻路图的重建方法、装置和电子设备,通过镜像场景和场景信息,只针对发生更新的场景对应的寻路块进行重建,避免缓存整个目标场景的体素化信息,减少内存占用,同时提高寻路图的效果,降低工作成本。
第一方面,本发明实施例提供了一种寻路图的重建方法,该方法包括:获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;其中,镜像场景的场景信息与目标场景的场景信息相同;场景信息包括场景对象信息和指定角色的初始寻路图;初始寻路图包括多个寻路块;如果目标场景中的第一场景对象发生更新,将更新后的第一场景对象同步至镜像场景中,在镜像场景中,基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,得到目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
进一步的,基于更新后的第一场景对象重建初始寻路图的至少部分寻路块,得到目标寻路块的步骤,包括:获取更新后的第一场景对象的第一场景对象信息;其中,第一场景对象信息包括:第一场景对象在目标场景中的位置信息,以及第一场景对象的形状信息;根据位置信息和形状信息,从初始寻路图中确定第一场景对象所占用的第一寻路块;基于第一场景对象信息,重建第一寻路块,得到目标寻路块。
进一步的,第一对象信息还包括:第一场景对象的姿态信息和属性信息;基于第一场景对象信息,重建第一寻路块,得到目标寻路块的步骤,包括:根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果;其中,体素化结果包括:第一寻路块划分的多个子方块;第二场景对象为第一寻路块内除第一场景对象以外的场景对象;根据第一寻路块的体素化结果,构建目标寻路块。
进一步的,根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果的步骤,包括:将第一寻路块划分为多个子方块;根据形状信息、姿态信息、属性信息和第二场景对象的第二场景对象信息,为每个子方块配置对应的配置信息,得到第一寻路块的体素化结果;其中,配置信息至少包括属性信息对应的寻路标签。
进一步的,根据第一寻路块的体素化结果,构建目标寻路块的步骤,包括:根据第一寻路块的体素化结果中的配置信息,构建多个子方块的实心高度场;将构建实心高度场后的多个子方块进行区域划分,生成多个寻路区域;其中,多个寻路区域包括更新后的第一场景对象对应的第一寻路区域,和第二场景对象对应的第二寻路区域;生成每个寻路区域的区域轮廓,得到目标寻路块。
进一步的,根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之后,上述方法还包括:将体素化结果缓存至预设的第一存储空间。
进一步的,根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之前,上述方法还包括:判断预设的第一存储空间内是否缓存有第一寻路块的体素化结果,如果否,执行根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤;如果是,从预设的第一存储空间内获取第一寻路块的体素化结果。
进一步的,如果目标场景中的第一场景对象发生更新的步骤之后,上述方法还包括:判断初始寻路图中第一场景对象所占用的第一寻路块是否正在参与重建,如果第一寻路块正在参与重建,将第一场景对象的更新请求缓存至预设的第二存储空间。
进一步的,在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图的步骤,包括:从镜像场景中获取目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
进一步的,上述方法还包括:每隔预设时间,从预设的第二存储空间中确定是否有缓存的更新请求;如果有,执行如果目标游戏场景中的第一场景对象发生更新,基于更新后的第一场景对象的第一场景对象信息,对初始寻路图中受第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。
第二方面,本发明实施例提供了一种寻路图的重建装置,装置包括:镜像场景的建立模块,用于获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;其中,镜像场景的场景信息与目标场景的场景信息相同;场景信息包括场景对象信息和指定角色的初始寻路图;初始寻路图包括多个寻路块;寻路块的重建模块,用于如果目标场景中的第一场景对象发生更新,将更新后的第一场景对象同步至镜像场景中,在镜像场景中,基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,得到目标寻路块;寻路块的替换模块,用于在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现第一方面任一项的寻路图的重建方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面任一项的寻路图的重建方法。
本发明实施例带来了以下有益效果:
本发明提供了一种寻路图的重建方法、装置和电子设备,获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;场景信息包括场景对象信息和初始寻路图;如果目标场景中的第一场景对象发生更新,在镜像场景中基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,在目标场景中,将初始寻路图中的至少部分寻路块替换为重建后的寻路块,得到重建后的寻路图。该方式中,根据目标场景的场景信息,重建镜像场景中发生更新的场景对象对应的寻路块,并将目标场景中的寻路块替换为镜像场景中重建后的寻路块,避免了缓存整个目标场景的相关信息,减少了服务器的计算量和内存占用,提高了重建效率和寻路图的效果,降低了工作成本。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种动态寻路方案的示意图;
图2为本发明实施例提供的另一种动态寻路方案的示意图;
图3为本发明实施例提供的一种寻路图的重建方法的流程图;
图4为本发明实施例提供的另一种寻路图的重建方法的流程图;
图5为本发明实施例提供的一种重建寻路图的示意图;
图6为本发明实施例提供的另一种重建寻路图的示意图;
图7为本发明实施例提供的一种寻路图的重建装置的结构示意图;
图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在大型多人在线角色扮演游戏中,不同玩家的游戏客户端通过网络连接到同一服务端,玩家在游戏中的虚拟角色可以被其他玩家所感知。玩家可以通过操控行为控制虚拟角色,然后将具体虚拟角色被操控的行为发送至服务端,服务端再进行网络同步回给其他客户端,从而让游戏中的所有玩家进行感知并且交互。然而,游戏中NPC的行为是由服务端当中的寻路系统驱动的。在正常情况下,NPC从游戏场景的A点走到B点的过程中,所使用的寻路信息,是在服务端运行游戏之前已经预先生成好的。但是,如果在服务器运行的时候,A点和B点之间多了一个障碍物,那么此时如果需要NPC绕开这个障碍物走,则需要动态寻路的技术,即重新生成寻路图。
相关技术中,通常在离线状态下将生成目标场景的寻路图的体素化信息预先进行缓存,在服务端运行目标场景时加载体素化信息,以在目标场景中的场景对象发生更新时,直接利用缓存的体素化信息进行寻路图的重新构建。但是,该方式中,需要缓存整个目标场景的体素化信息,占用的内存较大,通常占用内存会达到原寻路图的4-5倍;在目标场景中如果放置新的场景对象时,会传入设计者预先填好的范围参数,但是这些参数只能是规则的图形,如果放置的场景对象是一种特别不规则的图形,如图1所示,放置的场景对象是为圆形,则重建后的寻路图中该场景对象可能为矩形,所以可能会导致重建后的寻路图的效果与真实情况不太吻合。另外,设计者往往需要判断该场景对象的具体大小,然后用具体的规则图形尽可能得包裹住它,这对设计者造成了额外工作成本。同时,因为重建寻路图的方法是直接将原来可行走的区域设置为不可行走,如图2所示,如果更新的虚拟对象是,放置了一个楼梯,由于没有考虑到场景对象的属性信息,会导致NPC会将该楼梯视为障碍物,不可以在楼梯上行走,导致实际的运行效果不佳。
基于此,本发明实施例提供的一种寻路图的重建方法、装置和电子设备,该技术可以应用于服务器等电子设备,尤其可以应用于具有寻路系统的服务器。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种寻路图的重建方法进行详细介绍,如图3所示,该方法包括如下步骤:
步骤S302,获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;其中,镜像场景的场景信息与目标场景的场景信息相同;场景信息包括场景对象信息和指定角色的初始寻路图;初始寻路图包括多个寻路块;
上述目标场景可以是网络游戏的游戏场景,比如多人在线角色扮演游戏等,其中包括场景地图、场景对象、玩家控制的虚拟角色、以及非玩家角色,其中场景对象可以是可移动的对象也可以是不可移动的对象。另外,上述目标场景可以是物理场景,目的是为了参考现实的物理规律来模拟碰撞(如子弹命中,碰撞模拟等)。上述场景对象信息通常包括场景对象的名称(比如树、楼梯等)、形状、大小、位置、朝向、对象属性(比如水、地板、墙等),上述指定角色为目标场景中的非玩家角色,由服务器的控制其执行特定的行为,由服务器的寻路系统控制其寻路,上述初始寻路图是指非玩家角色在目标场景中移动过程中所依据的数据,寻路系统需要基于寻路图控制非玩家角色在目标场景中移动,且该初始寻路图为三维的寻路图,上述寻路块为寻路图构建的基本单位,一张寻路图由多张寻路块拼接而成,且该寻路块也是三维的。
具体的,目标场景初始化时,会在主线程加载运行目标场景所需的场景对象信息和初始寻路图,并根据该场景对象信息构建目标场景,并将初始寻路图配置在目标场景中,同时,在另一个子线程中,也会获取上述场景对象信息和初始寻路图,并根据该场景对象信息和初始寻路图构建一个目标场景的镜像场景。镜像场景中的场景对象与目标场景中的场景对象具相同,即目标场景中的每一个场景对象都会在镜像场景中拥有对应的镜像,并且这些镜像具有一一对象的关系。
步骤S304,如果目标场景中的第一场景对象发生更新,将更新后的第一场景对象同步至镜像场景中,在镜像场景中,基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,得到目标寻路块;
上述第一场景对象发生更新可以是在目标场景中添加了一个新的场景对象,即上述第一场景对象,比如在目标场景中添加了一个树木、楼梯、水池等,也可以是将目标场景中的第一场景对象删除,还可以是将目标场景中的第一场景对象更新为一个其他的场景对象,比如,将目标场景中的水池更新为草地,或者将目标场景中位于第一位置的地板更新为第二位置。上述至少部分寻路块是指寻路图中,受更新后的第一场景对象影响的寻路块,或者可以理解为,更新后的第一场景对象所占用的寻路块。比如,在目标场景的第一位置添加了一个地板,则该地板所占用的寻路块,包括地板上方的寻路块,均为上述至少部分寻路块。
具体的,当目标场景中第一场景对象更新时,可以从目标场景中提取到该第一场景对象的场景对象信息,可以称为物理信息(在实际游戏运行时,会参考现实世界的物理规律,从而模拟出类似的物理现象所利用到的信息),然后将该第一场景对象的场景对象信息同步至子线程,即同步至镜像场景中。在镜像场景中根据第一场景对象的场景对象信息确定上述至少部分寻路块,最后对该至少部分寻路块进行重建,该重建的过程可以是将至少部分寻路块放入线程池进行重建。其中,重建的过程中,需要考虑第一场景对象的形状、对象属性等信息,使得重建的寻路块能够包含第一场景对象的属性信息。另外,镜像场景对象是可以通过该场景对象索引到,如果目标场景中的场景对象发生了移动,那么可以记录下移动的信息,从镜像场景中可以确定该场景对象的镜像,并产生相同的移动。
上述重建的过程通常需要生成寻路块的体素化结果,即将多边形切分成许多相同大小的正方形后(如小于一个正方形则填充至一个正方形),然后基于第一场景对象的场景对象信息和体素化结果,重新构建寻路块,使第一场景对象参与到重新构建寻路块的过程中。
步骤S306,在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
实际实现时,构建目标场景的主线程,将镜像场景中已经重建完成的目标寻路块提取出来,并将初始寻路图中的至少部分寻路块替换为目标寻路块,即可得到重建后的寻路图,通过替换的方式不会对指定角色(NPC)的寻路行为产生实时影响,且通过镜像场景对至少部分寻路块进行重建,避免了在目标场景中重建寻路块,不会影响目标场景的运行效果。
本发明实施例提供了一种寻路图的重建方法,获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;场景信息包括场景对象信息和初始寻路图;如果目标场景中的第一场景对象发生更新,在镜像场景中基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,在目标场景中,将初始寻路图中的至少部分寻路块替换为重建后的寻路块,得到重建后的寻路图。该方式中,根据目标场景的场景信息,重建镜像场景中发生更新的场景对象对应的寻路块,并将目标场景中的寻路块替换为镜像场景中重建后的寻路块,避免了缓存整个目标场景的相关信息,减少了服务器的计算量和内存占用,提高了重建效率和寻路图的效果,降低了工作成本。
上述步骤S304,基于更新后的第一场景对象重建初始寻路图的至少部分寻路块,得到目标寻路块的步骤,一种可能的实施方式:
步骤1,获取更新后的第一场景对象的第一场景对象信息;其中,第一场景对象信息包括:第一场景对象在目标场景中的位置信息,以及第一场景对象的形状信息;
实际实现时,通过主线程获取更新后的第一场景对象在目标场景中的位置信息,比如位置坐标等,以及更新后的第一场景对象的形状信息,比如圆形、球形、矩形、或不规则的形状等,然后将第一场景对象信息同步至镜像场景,使镜像场景能够获取到更新后的第一场景对象的第一场景对象信息,另外,上述第一场景对象信息通常还包括对象属性、更新信息(比如移动更新和移动距离、方向等,再如添加更新和添加位置等)、对象朝向等。
步骤2,根据位置信息和形状信息,从初始寻路图中确定第一场景对象所占用的第一寻路块;
具体的,在镜像场景中,根据更新后的第一场景对象的位置信息首先从初始寻路图中确定更新后的第一场景对象所在的位置,以及该位置对应的寻路块,然后根据更新后的第一场景对象形状,从该位置的寻路块中确定该形状范围内的第一寻路块,可以理解为,该形状范围内占用的寻路块为第一寻路块,其中第一场景对象的形状信息可以是二维形状也可以是三维形状。比如,如图1和图5所示,可以计算出更新的场景对象同时占着第一行第一列和第一行第二列两个寻路块。
步骤3,基于第一场景对象信息,重建第一寻路块,得到目标寻路块。
为了使更新后的第一场景对象能够参与到寻路块的重建过程中,可以根据第一场景对象信息,重建第一寻路块,得到目标寻路块。
该方式中,在镜像场景中,根据预先加载的场景信息,针对初始寻路块中受更新后的第一场景对象影响的第一寻路块进行重建,无需对全部寻路块进行重建,且不会对主线程造成卡顿,导致目标场景的运行效果不佳。
上述第一对象信息还包括:第一场景对象的姿态信息和属性信息;姿态信息通常是指第一场景对象的朝向等,属性信息通常是指第一场景对象的对象名称,比如水、地板、山丘、石头、墙等。
上述步骤3,基于第一场景对象信息,重建第一寻路块,得到目标寻路块的步骤,一种可能的实施方式:
(1)根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果;其中,体素化结果包括:第一寻路块划分的多个子方块;第二场景对象为第一寻路块内除第一场景对象以外的场景对象;
(2)根据第一寻路块的体素化结果,构建目标寻路块。
实际实现时,可以对第一寻路块进行体素化方法,即将第一寻路块切分成许多相同大小相同的子方块,比如正方形或正方体。其中,被划分的块,如果小于一个子方块则填充至一个子方块。
上述第二场景对象是指占用第一寻路块的场景对象。实际上在重建第一寻路块的过程中,不仅第一场景对象要参与重建,本来就位于第一寻路块中的第二场景对象也需要参与重建,以保证寻路图的完整性和时效性。具体的,可以先对第一寻路块进行子方块的划分,然后根据形状信息、姿态信息、属性信息和第二场景对象的第二场景对象信息,对各个子方块配置各种标签,以使拿到一个子方块时,能够根据体素化结果了解到该子方块的形状、属性、位置属于那个场景对象等。最后可以根据第一寻路块的体素化结果,重新构建各个子方块,得到上述目标寻路块。该方式中,通过体素化信息重建第一子方块,只需要对受到影响第一寻路块的彻底重建,在实际的目标场景的表现上效果更好,设计者不再需要判断到底该用多大的规则图形去包裹不规则的场景对象,减少了设计者的理解和使用成本。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果的步骤,一种可能的实施方式:将第一寻路块划分为多个子方块;根据形状信息、姿态信息、属性信息和第二场景对象的第二场景对象信息,为每个子方块配置对应的配置信息,得到第一寻路块的体素化结果;其中,配置信息至少包括属性信息对应的寻路标签。
上述配置信息通常还包括子方块的形状标签,区域标签、姿态标签等。根据配置信息可以确定哪些子方块是属于第一场景对象占用的,哪些子方块是属于第二场景对象占用的,还可以确定子方块的实心部分和空间部分,还可以确定子方块属于什么场景对象等。
上述寻路标签用于指示第一场景对象的属性信息。比如,当第一场景对象的属性信息为水,在重建过程中,可以在第一场景对象对应的第一寻路区域配置该属性信息对应的寻路标签,使得只有涉水能力的NPC才可以在该寻路区域对应的场景中移动。再如,当第一场景对象的属性信息为地板,在重建过程中,可以在第一场景对象对应的第一寻路区域配置该属性信息对应的寻路标签,使得NPC在寻路过程中,遇到该寻路区域时,可以直接在该寻路区域对应的场景中行走。该方式中,通过为第一场景对象对应的寻路区域设置寻路标签,实现了在重建寻路块的过程中考虑第一场景对象的属性信息的功能,进一步提高了目标场景的运行效果。
上述根据第一寻路块的体素化结果,构建目标寻路块的步骤,一种可能的实施方式:根据第一寻路块的体素化结果中的配置信息,构建多个子方块的实心高度场;将构建实心高度场后的多个子方块进行区域划分,生成多个寻路区域;其中,多个寻路区域包括更新后的第一场景对象对应的第一寻路区域,和第二场景对象对应的第二寻路区域;生成每个寻路区域的区域轮廓,得到目标寻路块。
由于寻路块为三维的,因此可以根据配置信息指示形状的标签,确定每个子方块中属于障碍区或场景对象的部分,即实心的部分,以及不属于障碍区和场景对象的部分,即空心部分,构建每个子方块的实心高度场,然后根据属性信息中指示区域的标签,确定哪些子方块属于一个区域,即属于一种场景对象,将其划分为一个寻路区域,通常包括更新后的第一场景对象对应的第一寻路区域,和第二场景对象对应的第二寻路区域,其中第一场景对象和第二场景对象也可能会包括多个,所以第一寻路区域和第二寻路区域也可能会包括多个。具体可以将每个寻路区域中的子方块生成上述目标寻路块。
举例说明,第一场景对象为地板,根据地板的形状和姿态,从多个子方块中确定地板占用的第一目标子方块,如果是三维子方块,说明NPC可以在地板上行走,还可以确定地板上方的子方块也为第一目标子方块,将第一目标子方块确定为第一寻路区域。同样的,如果第一寻路块内还有其他场景对象,即上述第二场景对象,根据第二场景对象的第二场景对象信息(形状、姿态和属性等),,从多个子方块中确定第二场景对象占用的第二目标子方块,得到第二寻路区域,最后得到上述多个寻路区域。其中,以位于目标场景的场景对象为单位完成寻路块的重建,并且在场景对象更新时能够自动计算出需要重建的范围然后进行自动重建,减少了服务器的计算量。
该方式中,对受到影响第一寻路块的彻底重建,在实际的目标场景的表现上效果更好,设计者不再需要判断到底该用多大的规则图形去包裹不规则的场景对象,减少了设计者的理解和使用成本。
在根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之后,上述方法还包括:将体素化结果缓存至预设的第一存储空间。具体的,为了方便后续场景对象更新时重建寻路块的目的,可以将重建过程中计算得到的体素化结果进行缓存,以方便后续第一寻路块再次重建时,可以直接从第一存储空间获取对应的体素化结果,该方式中,只需在运行过程中缓存局部的,有重建需求的寻路块的体素化信息,减少了内存占用。
由于在寻路块重建的过程中会缓存寻路块的体素化结果,因此,为了进一步提高寻路图的高重建效率,根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之前,上述方法还包括:判断预设的第一存储空间内是否缓存第一寻路块的体素化结果;如果预设的第一存储空间内未缓存第一寻路块的体素化结果,执行根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤,即计算第一寻路块的体素化结果;如果预设的第一存储空间内缓存第一寻路块的体素化结果,从预设的第一存储空间内获取第一寻路块的体素化结果。该方式中,可以直接从第一存储空间获取对应的体素化结果,无需重新计算第一寻路块的体素化结果,提高了重建效率。
由于目标场景同一位置可能会陆续发生多次场景对象的更新,如果当前寻路块正在进行重建,此时占用该寻路块场景中又发生了的场景对象更新,会发生重建重叠的情况,因此在如果目标场景中的第一场景对象发生更新的步骤之后,上述方法还包括:判断初始寻路图中第一场景对象所占用的第一寻路块是否正在参与重建,如果第一寻路块正在参与重建,将第一场景对象的更新请求缓存至预设的第二存储空间。
实际实现时,当目标场景中的第一场景对象发生更新时,需要判断初始寻路图中第一场景对象所占用的第一寻路块是否正在参与重建,如果第一寻路块正在参与重建,更新目标场景中的第一场景对象,但是先不要将第一场景对象同步至镜像场景,而是先将第一场景对象的更新请求缓存至预设的第二存储空间,以避免同时对同一个寻路块进行重建。
进一步的,上述方法还包括:每隔预设时间,从预设的第二存储空间中确定是否有缓存的更新请求;如果有,执行如果目标游戏场景中的第一场景对象发生更新,基于更新后的第一场景对象的第一场景对象信息,对初始寻路图中受第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。
上述预设时间可以是2秒、3秒或者10秒等,具体可以根据实际需求进行设置。实际实现时,主线程会每隔预设时间,查询是否有还没更新的场景对象,对应上述从预设的第二存储空间中确定是否有缓存的更新请求的步骤,如果有则继续基于更新后的第一场景对象的第一场景对象信息,对初始寻路图中受第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。通过主线程定期查询是否有还没更新的场景对象,不仅避免了同时对同一个寻路块进行重建问题,还能够有条不紊的使发生了更新的场景对象对应的寻路块进行重建。
在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图的步骤,一种可能的实施方式:从镜像场景中获取目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
实际实现时,如果第一寻路块重建完成,得到目标寻路块后,重建线程会通知主线程去同步结果,即主线程从镜像场景中获取目标寻路块,然后在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。通过在其他线程中重建寻路块,主线程只需要进行寻路块的替换,避免了主线程造成任务的卡顿,提高了主线程的运行效果。
下面描述一种具体的实施方式,如图4所示,首先加载场景,加载场景的物理信息(对应前述的场景对象信息)、寻路图(对应前述的场景对象信息),对应前述获取目标场景的场景信息的步骤,同步到镜像场景中,意思是将物理信息和寻路图同步到镜像场景中,对应前述基于场景信息建立目标场景的镜像场景的步骤,当出现添加、移动、删除场景对象的情况,对应前述如果目标场景中的第一场景对象发生更新的步骤,计算受到影响的范围,即计算发生更新的场景对象所占用的寻路块,对应前述从初始寻路图中确定第一场景对象所占用的第一寻路块的步骤,然后需要判断是否已经缓存有该第一寻路块的体素化信息(即体素化结果),如果是,则直接将缓存的体素化信息提取出来,进行第一寻路块的重建,如果否,则先计算第一寻路块的体素化信息,同时进行缓存,然后再进行第一寻路块的重建,完成重建后将目标场景中的寻路块替换为重建后的寻路块。
其中,重建的过程如图5所示,图中的主线程场景对应前述的目标场景,子线程场景对应前述的镜像场景,当目标场景中放置了一个场景对象(即前述的第一场景对象),则将第一场景对象同步至镜像场景,在镜像场景的初始寻路图中,根据第一场景对象的第一场景对象信息重建第一场景对象占用的寻路块,即前述的第一寻路块,最后完成重建后,主线程会从中提取重建后的第一寻路块,并替换为目标场景中对应的寻路块,进而完成寻路图的重建。以第一场景对象为可行走的楼梯为例,如图6所示为寻路图重建后的效果,由于在重建寻路块的时候考虑了第一场景对象的属性信息,因此在重建完成后Actor(即前述指定角色)能够在该第一场景对象上行走。
上述方式中,以位于目标场景的场景对象为单位完成寻路图的重建,并且在场景对象的增加、删除、移动时能够自动计算出需要重建的范围然后进行自动重建。仅缓存局部的、有动态需求的区域体素化信息。在重建的过程中对场景中已经携带的物理信息进行了有效利用,对重建范围中的所有场景对象进行了彻底重建,达到了更快更优的效果,且重建过程中采用了并行化多线程的设计更是加速了重建的过程,重建完成后,会通知主线程去同步结果,不会对主线程造成任务的卡顿。另外,还能够根据场景对象本身的信息来完成一些寻路标签的设置,并进行划分操作,比如游戏中摆放的水体,其物理信息中是存有这个标记的,那么重建的时候就可以利用这个标记,给水体覆盖的范围的寻路信息中设置水体的标签,那么此后就只有那些有涉水能力的NPC才可以走过这里。
对应上述方法实施例,本发明实施例提供了一种寻路图的重建装置,如图7所示,该装置包括:
镜像场景的建立模块71,用于获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;其中,镜像场景的场景信息与目标场景的场景信息相同;场景信息包括场景对象信息和指定角色的初始寻路图;初始寻路图包括多个寻路块;
寻路块的重建模块72,用于如果目标场景中的第一场景对象发生更新,将更新后的第一场景对象同步至镜像场景中,在镜像场景中,基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,得到目标寻路块;
寻路块的替换模块73,用于在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
本发明实施例提供了一种寻路图的重建装置,获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;场景信息包括场景对象信息和初始寻路图;如果目标场景中的第一场景对象发生更新,在镜像场景中基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,在目标场景中,将初始寻路图中的至少部分寻路块替换为重建后的寻路块,得到重建后的寻路图。该方式中,根据目标场景的场景信息,重建镜像场景中发生更新的场景对象对应的寻路块,并将目标场景中的寻路块替换为镜像场景中重建后的寻路块,避免了缓存整个目标场景的相关信息,减少了服务器的计算量和内存占用,提高了重建效率和寻路图的效果,降低了工作成本。
进一步的,上述寻路块的重建模块还用于:获取更新后的第一场景对象的第一场景对象信息;其中,第一场景对象信息包括:第一场景对象在目标场景中的位置信息,以及第一场景对象的形状信息;根据位置信息和形状信息,从初始寻路图中确定第一场景对象所占用的第一寻路块;基于第一场景对象信息,重建第一寻路块,得到目标寻路块。
进一步的,上述第一对象信息还包括:第一场景对象的姿态信息和属性信息;上述寻路块的重建模块还用于:根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果;其中,体素化结果包括:第一寻路块划分的多个子方块;第二场景对象为第一寻路块内除第一场景对象以外的场景对象;根据第一寻路块的体素化结果,构建目标寻路块。
进一步的,上述寻路块的重建模块还用于:将第一寻路块划分为多个子方块;根据形状信息、姿态信息、属性信息和第二场景对象的第二场景对象信息,为每个子方块配置对应的配置信息,得到第一寻路块的体素化结果;其中,配置信息至少包括属性信息对应的寻路标签。
进一步的,上述寻路块的重建模块还用于:根据第一寻路块的体素化结果中的配置信息,构建多个子方块的实心高度场;将构建实心高度场后的多个子方块进行区域划分,生成多个寻路区域;其中,多个寻路区域包括更新后的第一场景对象对应的第一寻路区域,和第二场景对象对应的第二寻路区域;生成每个寻路区域的区域轮廓,得到目标寻路块。
进一步的,上述装置还包括结果缓存模块,用于:将体素化结果缓存至预设的第一存储空间。
进一步的,上述寻路块的重建模块还用于:如果预设的第一存储空间内未缓存第一寻路块的体素化结果,计算第一寻路块的体素化结果;如果预设的第一存储空间内缓存第一寻路块的体素化结果,从预设的第一存储空间内获取第一寻路块的体素化结果。
进一步的,上述装置方法还包括重建判断模块,用于:判断初始寻路图中第一场景对象所占用的第一寻路块是否正在参与重建,如果第一寻路块正在参与重建,将第一场景对象的更新请求缓存至预设的第二存储空间。
进一步的,上述寻路块的替换模块还用于:从镜像场景中获取目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。
进一步的,上述装置还包括更新判断模块,用于:每隔预设时间,从预设的第二存储空间中确定是否有缓存的更新请求;如果有,执行如果目标游戏场景中的第一场景对象发生更新,基于更新后的第一场景对象的第一场景对象信息,对初始寻路图中受第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。
本发明实施例提供的寻路图的重建装置,与上述实施例提供的寻路图的重建方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述寻路块的重建方法。该电子设备可以是服务器,也可以是终端设备。
参见图8所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述寻路块的重建方法。
进一步地,图8所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
其中,存储器101可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。该方法具体包括:
获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;其中,镜像场景的场景信息与目标场景的场景信息相同;场景信息包括场景对象信息和指定角色的初始寻路图;初始寻路图包括多个寻路块;如果目标场景中的第一场景对象发生更新,将更新后的第一场景对象同步至镜像场景中,在镜像场景中,基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,得到目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。该方式中,根据目标场景的场景信息,重建镜像场景中发生更新的场景对象对应的寻路块,并将目标场景中的寻路块替换为镜像场景中重建后的寻路块,避免了缓存整个目标场景的相关信息,减少了服务器的计算量和内存占用,提高了重建效率和寻路图的效果,降低了工作成本。
上述基于更新后的第一场景对象重建初始寻路图的至少部分寻路块,得到目标寻路块的步骤,包括:获取更新后的第一场景对象的第一场景对象信息;其中,第一场景对象信息包括:第一场景对象在目标场景中的位置信息,以及第一场景对象的形状信息;根据位置信息和形状信息,从初始寻路图中确定第一场景对象所占用的第一寻路块;基于第一场景对象信息,重建第一寻路块,得到目标寻路块。该方式中,在镜像场景中,根据预先加载的场景信息,针对初始寻路块中受更新后的第一场景对象影响的第一寻路块进行重建,无需对全部寻路块进行重建,且不会对主线程造成卡顿,导致目标场景的运行效果不佳。
上述第一对象信息还包括:第一场景对象的姿态信息和属性信息;基于第一场景对象信息,重建第一寻路块,得到目标寻路块的步骤,包括:根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果;其中,体素化结果包括:第一寻路块划分的多个子方块;第二场景对象为第一寻路块内除第一场景对象以外的场景对象;根据第一寻路块的体素化结果,构建目标寻路块。该方式中,通过体素化信息重建第一子方块,只对受到影响第一寻路块的彻底重建,在实际的目标场景的表现上效果更好,设计者不再需要判断到底该用多大的规则图形去包裹不规则的场景对象,减少了设计者的理解和使用成本。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果的步骤,包括:将第一寻路块划分为多个子方块;根据形状信息、姿态信息、属性信息和第二场景对象的第二场景对象信息,为每个子方块配置对应的配置信息,得到第一寻路块的体素化结果;其中,配置信息至少包括属性信息对应的寻路标签。通过为第一场景对象对应的寻路区域设置寻路标签,实现了在重建寻路块的过程中考虑第一场景对象的属性信息的功能,进一步提高了目标场景的运行效果。
上述根据第一寻路块的体素化结果,构建目标寻路块的步骤,包括:根据第一寻路块的体素化结果中的配置信息,构建多个子方块的实心高度场;将构建实心高度场后的多个子方块进行区域划分,生成多个寻路区域;其中,多个寻路区域包括更新后的第一场景对象对应的第一寻路区域,和第二场景对象对应的第二寻路区域;生成每个寻路区域的区域轮廓,得到目标寻路块。通过配置信息完成寻路块的重建,并且在场景对象更新时能够自动计算出需要重建的范围然后进行自动重建,减少了服务器的计算量。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之后,上述方法还包括:将体素化结果缓存至预设的第一存储空间。该方式中,只需在运行过程中缓存局部的,有重建需求的寻路块的体素化信息,减少了内存占用。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之前,上述方法还包括:判断预设的第一存储空间内是否缓存有第一寻路块的体素化结果,如果否,执行根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤;如果是,从预设的第一存储空间内获取第一寻路块的体素化结果。该方式中,可以直接从第一存储空间获取对应的体素化结果,无需重新计算第一寻路块的体素化结果,提高了重建效率。
上述如果目标场景中的第一场景对象发生更新的步骤之后,上述方法还包括:判断初始寻路图中第一场景对象所占用的第一寻路块是否正在参与重建,如果第一寻路块正在参与重建,将第一场景对象的更新请求缓存至预设的第二存储空间。该方式中,将第一场景对象的更新请求缓存至预设的第二存储空间,以避免同时对同一个寻路块进行重建。
上述在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图的步骤,包括:从镜像场景中获取目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。该方式中,通过在其他线程中重建寻路块,主线程只需要进行寻路块的替换,避免了主线程造成任务的卡顿,提高了主线程的运行效果。
上述方法还包括:每隔预设时间,从预设的第二存储空间中确定是否有缓存的更新请求;如果有,执行如果目标游戏场景中的第一场景对象发生更新,基于更新后的第一场景对象的第一场景对象信息,对初始寻路图中受第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。该方式中,通过主线程定期查询是否有还没更新的场景对象,不仅避免了同时对同一个寻路块进行重建问题,还能够有条不紊的使发生了更新的场景对象对应的寻路块进行重建。
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述寻路块的重建方法。该方法具体包括:
获取目标场景的场景信息,基于场景信息建立目标场景的镜像场景;其中,镜像场景的场景信息与目标场景的场景信息相同;场景信息包括场景对象信息和指定角色的初始寻路图;初始寻路图包括多个寻路块;如果目标场景中的第一场景对象发生更新,将更新后的第一场景对象同步至镜像场景中,在镜像场景中,基于更新后的第一场景对象重建初始寻路图中的至少部分寻路块,得到目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。该方式中,根据目标场景的场景信息,重建镜像场景中发生更新的场景对象对应的寻路块,并将目标场景中的寻路块替换为镜像场景中重建后的寻路块,避免了缓存整个目标场景的相关信息,减少了服务器的计算量和内存占用,提高了重建效率和寻路图的效果,降低了工作成本。
上述基于更新后的第一场景对象重建初始寻路图的至少部分寻路块,得到目标寻路块的步骤,包括:获取更新后的第一场景对象的第一场景对象信息;其中,第一场景对象信息包括:第一场景对象在目标场景中的位置信息,以及第一场景对象的形状信息;根据位置信息和形状信息,从初始寻路图中确定第一场景对象所占用的第一寻路块;基于第一场景对象信息,重建第一寻路块,得到目标寻路块。该方式中,在镜像场景中,根据预先加载的场景信息,针对初始寻路块中受更新后的第一场景对象影响的第一寻路块进行重建,无需对全部寻路块进行重建,且不会对主线程造成卡顿,导致目标场景的运行效果不佳。
上述第一对象信息还包括:第一场景对象的姿态信息和属性信息;基于第一场景对象信息,重建第一寻路块,得到目标寻路块的步骤,包括:根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果;其中,体素化结果包括:第一寻路块划分的多个子方块;第二场景对象为第一寻路块内除第一场景对象以外的场景对象;根据第一寻路块的体素化结果,构建目标寻路块。该方式中,通过体素化信息重建第一子方块,只对受到影响第一寻路块的彻底重建,在实际的目标场景的表现上效果更好,设计者不再需要判断到底该用多大的规则图形去包裹不规则的场景对象,减少了设计者的理解和使用成本。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定第一寻路块的体素化结果的步骤,包括:将第一寻路块划分为多个子方块;根据形状信息、姿态信息、属性信息和第二场景对象的第二场景对象信息,为每个子方块配置对应的配置信息,得到第一寻路块的体素化结果;其中,配置信息至少包括属性信息对应的寻路标签。通过为第一场景对象对应的寻路区域设置寻路标签,实现了在重建寻路块的过程中考虑第一场景对象的属性信息的功能,进一步提高了目标场景的运行效果。
上述根据第一寻路块的体素化结果,构建目标寻路块的步骤,包括:根据第一寻路块的体素化结果中的配置信息,构建多个子方块的实心高度场;将构建实心高度场后的多个子方块进行区域划分,生成多个寻路区域;其中,多个寻路区域包括更新后的第一场景对象对应的第一寻路区域,和第二场景对象对应的第二寻路区域;生成每个寻路区域的区域轮廓,得到目标寻路块。通过配置信息完成寻路块的重建,并且在场景对象更新时能够自动计算出需要重建的范围然后进行自动重建,减少了服务器的计算量。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之后,上述方法还包括:将体素化结果缓存至预设的第一存储空间。该方式中,只需在运行过程中缓存局部的,有重建需求的寻路块的体素化信息,减少了内存占用。
上述根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之前,上述方法还包括:判断预设的第一存储空间内是否缓存有第一寻路块的体素化结果,如果否,执行根据形状信息、姿态信息、属性信息、以及第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤;如果是,从预设的第一存储空间内获取第一寻路块的体素化结果。该方式中,可以直接从第一存储空间获取对应的体素化结果,无需重新计算第一寻路块的体素化结果,提高了重建效率。
上述如果目标场景中的第一场景对象发生更新的步骤之后,上述方法还包括:判断初始寻路图中第一场景对象所占用的第一寻路块是否正在参与重建,如果第一寻路块正在参与重建,将第一场景对象的更新请求缓存至预设的第二存储空间。该方式中,将第一场景对象的更新请求缓存至预设的第二存储空间,以避免同时对同一个寻路块进行重建。
上述在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图的步骤,包括:从镜像场景中获取目标寻路块;在目标场景中,将初始寻路图中的至少部分寻路块替换为目标寻路块,得到重建后的寻路图。该方式中,通过在其他线程中重建寻路块,主线程只需要进行寻路块的替换,避免了主线程造成任务的卡顿,提高了主线程的运行效果。
上述方法还包括:每隔预设时间,从预设的第二存储空间中确定是否有缓存的更新请求;如果有,执行如果目标游戏场景中的第一场景对象发生更新,基于更新后的第一场景对象的第一场景对象信息,对初始寻路图中受第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。该方式中,通过主线程定期查询是否有还没更新的场景对象,不仅避免了同时对同一个寻路块进行重建问题,还能够有条不紊的使发生了更新的场景对象对应的寻路块进行重建。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种寻路图的重建方法,其特征在于,所述方法包括:
获取目标场景的场景信息,基于所述场景信息建立所述目标场景的镜像场景;其中,所述镜像场景的场景信息与所述目标场景的场景信息相同;所述场景信息包括场景对象信息和指定角色的初始寻路图;所述初始寻路图包括多个寻路块;
如果所述目标场景中的第一场景对象发生更新,将更新后的所述第一场景对象同步至所述镜像场景中,在所述镜像场景中,基于更新后的所述第一场景对象重建所述初始寻路图中的至少部分寻路块,得到目标寻路块;
在所述目标场景中,将所述初始寻路图中的所述至少部分寻路块替换为所述目标寻路块,得到重建后的寻路图。
2.根据权利要求1所述的方法,其特征在于,基于更新后的所述第一场景对象重建所述初始寻路图的至少部分寻路块,得到目标寻路块的步骤,包括:
获取更新后的所述第一场景对象的第一场景对象信息;其中,所述第一场景对象信息包括:所述第一场景对象在所述目标场景中的位置信息,以及所述第一场景对象的形状信息;
根据所述位置信息和形状信息,从所述初始寻路图中确定所述第一场景对象所占用的第一寻路块;
基于所述第一场景对象信息,重建所述第一寻路块,得到所述目标寻路块。
3.根据权利要求2所述的方法,其特征在于,所述第一对象信息还包括:所述第一场景对象的姿态信息和属性信息;
基于所述第一场景对象信息,重建所述第一寻路块,得到所述目标寻路块的步骤,包括:
根据所述形状信息、所述姿态信息、所述属性信息、以及所述第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果;其中,所述体素化结果包括:所述第一寻路块划分的多个子方块;所述第二场景对象为所述第一寻路块内除所述第一场景对象以外的场景对象;
根据所述第一寻路块的体素化结果,构建所述目标寻路块。
4.根据权利要求3所述的方法,其特征在于,根据所述形状信息、所述姿态信息、所述属性信息、以及所述第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤,包括:
将所述第一寻路块划分为多个子方块;
根据所述形状信息、所述姿态信息、所述属性信息和所述第二场景对象的第二场景对象信息,为每个所述子方块配置对应的配置信息,得到所述第一寻路块的体素化结果;其中,所述配置信息至少包括所述属性信息对应的寻路标签。
5.根据权利要求3所述的方法,其特征在于,根据所述第一寻路块的体素化结果,构建所述目标寻路块的步骤,包括:
根据所述第一寻路块的体素化结果中的配置信息,构建所述多个子方块的实心高度场;
将构建所述实心高度场后的所述多个子方块进行区域划分,生成多个寻路区域;其中,所述多个寻路区域包括更新后的所述第一场景对象对应的第一寻路区域,和所述第二场景对象对应的第二寻路区域;
生成每个所述寻路区域的区域轮廓,得到所述目标寻路块。
6.根据权利要求3所述的方法,其特征在于,根据所述形状信息、所述姿态信息、所述属性信息、以及所述第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之后,所述方法还包括:
将所述体素化结果缓存至预设的第一存储空间。
7.根据权利要求3所述的方法,其特征在于,根据所述形状信息、所述姿态信息、所述属性信息、以及所述第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤之前,所述方法还包括:
判断预设的第一存储空间内是否缓存有所述第一寻路块的体素化结果,如果否,执行根据所述形状信息、所述姿态信息、所述属性信息、以及所述第一寻路块内的第二场景对象,确定所述第一寻路块的体素化结果的步骤;
如果是,从所述预设的第一存储空间内获取所述第一寻路块的体素化结果。
8.根据权利要求1所述的方法,其特征在于,如果所述目标场景中的第一场景对象发生更新的步骤之后,所述方法还包括:
判断所述初始寻路图中所述第一场景对象所占用的第一寻路块是否正在参与重建,如果所述第一寻路块正在参与重建,将所述第一场景对象的更新请求缓存至预设的第二存储空间。
9.根据权利要求1所述的方法,其特征在于,在所述目标场景中,将所述初始寻路图中的所述至少部分寻路块替换为所述目标寻路块,得到重建后的寻路图的步骤,包括:
从所述镜像场景中获取所述目标寻路块;
在所述目标场景中,将所述初始寻路图中的所述至少部分寻路块替换为所述目标寻路块,得到重建后的寻路图。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
每隔预设时间,从预设的第二存储空间中确定是否有缓存的更新请求;
如果有,执行所述如果所述目标游戏场景中的第一场景对象发生更新,基于更新后的所述第一场景对象的第一场景对象信息,对所述初始寻路图中受所述第一场景对象影响的寻路块进行重建处理,得到目标寻路块的步骤。
11.一种寻路图的重建装置,其特征在于,所述装置包括:
镜像场景的建立模块,用于获取目标场景的场景信息,基于所述场景信息建立所述目标场景的镜像场景;其中,所述镜像场景的场景信息与所述目标场景的场景信息相同;所述场景信息包括场景对象信息和指定角色的初始寻路图;所述初始寻路图包括多个寻路块;
寻路块的重建模块,用于如果所述目标场景中的第一场景对象发生更新,将更新后的所述第一场景对象同步至所述镜像场景中,在所述镜像场景中,基于更新后的所述第一场景对象重建所述初始寻路图中的至少部分寻路块,得到目标寻路块;
寻路块的替换模块,用于在所述目标场景中,将所述初始寻路图中的所述至少部分寻路块替换为所述目标寻路块,得到重建后的寻路图。
12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1-10任一项所述的寻路图的重建方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1-10任一项所述的寻路图的重建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211015177.XA CN115501607A (zh) | 2022-08-23 | 2022-08-23 | 寻路图的重建方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211015177.XA CN115501607A (zh) | 2022-08-23 | 2022-08-23 | 寻路图的重建方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115501607A true CN115501607A (zh) | 2022-12-23 |
Family
ID=84501401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211015177.XA Pending CN115501607A (zh) | 2022-08-23 | 2022-08-23 | 寻路图的重建方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115501607A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110523081A (zh) * | 2019-08-08 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN111054074A (zh) * | 2019-12-27 | 2020-04-24 | 网易(杭州)网络有限公司 | 游戏中虚拟对象的移动方法、装置及电子设备 |
CN112221144A (zh) * | 2020-11-03 | 2021-01-15 | 网易(杭州)网络有限公司 | 三维场景寻路方法及装置、三维场景地图处理方法及装置 |
CN112295225A (zh) * | 2020-11-02 | 2021-02-02 | 不鸣科技(杭州)有限公司 | 一种寻路网格的多线程更新方法 |
CN112973123A (zh) * | 2021-04-08 | 2021-06-18 | 网易(杭州)网络有限公司 | 游戏中的寻路方法及装置、计算机存储介质、电子设备 |
CN113274732A (zh) * | 2021-05-17 | 2021-08-20 | 多益网络有限公司 | 一种导航网格的重构方法、装置及存储介质 |
CN114177613A (zh) * | 2022-02-15 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 导航网格更新方法、装置、设备及计算机可读存储介质 |
CN114404984A (zh) * | 2021-12-30 | 2022-04-29 | 北京像素软件科技股份有限公司 | 游戏场景的数据处理方法、装置、计算机设备及介质 |
-
2022
- 2022-08-23 CN CN202211015177.XA patent/CN115501607A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110523081A (zh) * | 2019-08-08 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN111054074A (zh) * | 2019-12-27 | 2020-04-24 | 网易(杭州)网络有限公司 | 游戏中虚拟对象的移动方法、装置及电子设备 |
CN112295225A (zh) * | 2020-11-02 | 2021-02-02 | 不鸣科技(杭州)有限公司 | 一种寻路网格的多线程更新方法 |
CN112221144A (zh) * | 2020-11-03 | 2021-01-15 | 网易(杭州)网络有限公司 | 三维场景寻路方法及装置、三维场景地图处理方法及装置 |
CN112973123A (zh) * | 2021-04-08 | 2021-06-18 | 网易(杭州)网络有限公司 | 游戏中的寻路方法及装置、计算机存储介质、电子设备 |
CN113274732A (zh) * | 2021-05-17 | 2021-08-20 | 多益网络有限公司 | 一种导航网格的重构方法、装置及存储介质 |
CN114404984A (zh) * | 2021-12-30 | 2022-04-29 | 北京像素软件科技股份有限公司 | 游戏场景的数据处理方法、装置、计算机设备及介质 |
CN114177613A (zh) * | 2022-02-15 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 导航网格更新方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109701273B (zh) | 游戏数据的处理方法、装置、电子设备及可读存储介质 | |
CN108463273B (zh) | 基于游戏者的移动历史来进行非游戏者角色的路径寻找的游戏系统 | |
US8308570B2 (en) | Synchronizing mission progress in peer-to-peer cooperative games | |
US11335058B2 (en) | Spatial partitioning for graphics rendering | |
CN112717404B (zh) | 虚拟对象的移动处理方法、装置、电子设备及存储介质 | |
US11045729B2 (en) | Game processing program and game system | |
US11110352B2 (en) | Object moving method and apparatus, storage medium, and electronic apparatus | |
US20220040583A1 (en) | Map generation method and apparatus, electronic device, and computer storage medium | |
JP7009087B2 (ja) | ゲーム環境内の位置にキャラクタアニメーションを配置する方法及びシステム | |
CN112927332B (zh) | 骨骼动画更新方法、装置、设备及存储介质 | |
US10702778B2 (en) | Dynamic modification of navigation maps | |
US10719985B2 (en) | Model object building method, server, and system | |
CN111202985A (zh) | 2d游戏中的路径规划方法、系统及电子设备 | |
CN109289198B (zh) | 一种感兴趣区域确定方法和装置 | |
CN111013146B (zh) | 超大地图的可动态修改的寻路导航方法和装置 | |
CN115501607A (zh) | 寻路图的重建方法、装置和电子设备 | |
EP3381524B1 (en) | Controlling locomotion of a plurality of non-player characters in a simulated multi-dimensional world space | |
CN114359469A (zh) | 生成主控对象投影的方法、装置、设备及介质 | |
CN114307150A (zh) | 虚拟对象之间的互动方法、装置、设备、介质及程序产品 | |
WO2024139738A1 (zh) | 关卡画面的显示方法、装置、设备、介质和程序产品 | |
WO2024199200A1 (zh) | 碰撞事件的确定方法、装置、存储介质、电子设备及程序产品 | |
CN114404948A (zh) | 游戏地图显示方法、装置、电子设备及计算机可读存储介质 | |
CN103893969B (zh) | 一种游戏中寻路的方法和设备 | |
CN116245987A (zh) | 虚拟场景中虚拟角色的显示方法、装置、设备及存储介质 | |
CN118831331A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230104 Address after: Room 2047, Floor 2, No. 24, Lane 315, Fenggu Road, Xuhui District, Shanghai, 200000 Applicant after: Shanghai NetEasy Brilliant Network Technology Co.,Ltd. Address before: 310000 7 storeys, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: NETEASE (HANGZHOU) NETWORK Co.,Ltd. |