CN115501596A - 游戏中的寻路方法、装置、电子设备及可读存储介质 - Google Patents
游戏中的寻路方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115501596A CN115501596A CN202211128479.8A CN202211128479A CN115501596A CN 115501596 A CN115501596 A CN 115501596A CN 202211128479 A CN202211128479 A CN 202211128479A CN 115501596 A CN115501596 A CN 115501596A
- Authority
- CN
- China
- Prior art keywords
- finding
- path
- way
- target
- dimensional
- 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
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
-
- 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/50—Controlling the output signals based on the game progress
- A63F13/53—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
- A63F13/537—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen
- A63F13/5372—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen for tagging characters, objects or locations in the game scene, e.g. displaying a circle under the character controlled by the player
-
- 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/30—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 characterized by output arrangements for receiving control signals generated by the game device
- A63F2300/303—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 characterized by output arrangements for receiving control signals generated by the game device for displaying additional data, e.g. simulating a Head Up Display
- A63F2300/306—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 characterized by output arrangements for receiving control signals generated by the game device for displaying additional data, e.g. simulating a Head Up Display for displaying a marker associated to an object or location in the game field
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- Optics & Photonics (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例提供了一种游戏中的寻路方法、装置、电子设备及可读存储介质,所述游戏中包括游戏场景和寻路虚拟对象,所述方法包括:响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式;在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图;根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径;控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。本发明实施例可以支持寻路虚拟对象在游戏场景中实现多种寻路方式,例如二维寻路方式和三维寻路方式,支持游戏内多样化的寻路需求。
Description
技术领域
本发明实施例涉及互联网技术领域,特别是涉及一种游戏中的寻路方法、一种游戏中的寻路装置、一种电子设备以及一种计算机可读存储介质。
背景技术
随着互联网技术的不断发展,游戏已经成为越来越多人的娱乐活动。在游戏中,玩家或者系统都可以控制虚拟对象,其中,玩家控制的寻路虚拟对象或者系统控制的虚拟对象,在游戏场景中可以从一个地点自动移动到另一个地点,实现在游戏中的自动寻路。
在实际游戏中,游戏中的角色自动寻路行为是影响游戏表现的一个重要功能,随着游戏功能的丰富,在某些游戏场景中既需要寻路虚拟对象贴近游戏场景中的地形表面进行二维寻路(2D寻路),又需要寻路虚拟对象在整个三维的游戏场景中进行三维寻路(3D寻路)。因此,如何同时支持寻路虚拟对象在游戏场景中实现二维寻路和三维寻路,是本领域技术人员亟需解决的一个问题。
发明内容
本发明实施例是提供一种游戏中的寻路方法、装置、电子设备以及计算机可读存储介质,以解决无法同时支持寻路虚拟对象在游戏场景中实现二维寻路和三维寻路的问题。
本发明实施例公开了一种游戏中的寻路方法,所述游戏中包括游戏场景和寻路虚拟对象,所述方法包括:
响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式;
在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图;
根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径;
控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。
可选地,所述方法还包括:
对所述游戏场景进行体素化,得到若干第一体素格子;所述第一体素格子具有对应的高度信息;
根据所述第一体素格子的所述高度信息,计算所述第一体素格子之间的高度差值;
将所述高度差值在预设高度阈值内的相邻的所述第一体素格子在所述游戏场景中对应的场景模型的表面,确定为可行走区域;
对所述可行走区域进行划分,得到若干多边形区域;
将所述多边形区域保存为所述游戏场景的二维寻路地图。
可选地,所述可行走区域的区域面积大于或等于第一预设区域面积且小于第二预设区域面积,所述第二预设区域面积大于所述第一预设区域面积。
可选地,所述可行走区域由原始边界包围形成,所述原始边界中包括原始顶点,在所述对所述可行走区域进行划分,得到若干多边形区域之前,所述方法还包括:
确定所述可行走区域中的区域连接顶点;所述区域连接顶点是衔接相邻所述可行走区域的顶点;
连接相邻的所述区域连接顶点,得到简化边界;
将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离大于预设距离阈值时,将所述目标原始顶点添加到所述简化边界中,并返回执行所述将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离小于或等于预设距离阈值时,将所述简化边界确定为目标简化边界;
将所述可行走区域更新为由所述目标简化边界包围形成的区域。
可选地,所述对所述可行走区域进行划分,得到若干多边形区域,包括:
将所述可行走区域划分为若干三角形区域;
将所述三角形区域组合为多边形区域;其中,所述多边形区域的形状为凸多边形。
可选地,所述方法还包括:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
对包含所述场景模型的所述第二体素格子进行标记,其中,标记的所述第二体素格子用于表征所述寻路虚拟对象不可通过;
确定所述第二体素格子之间的父子连接关系和/或邻居连接关系;所述父子连接关系用于表征不同分层的所述第二体素格子之间的连接关系,所述邻居连接关系用于表征同一分层的所述第二体素格子之间的连接关系;
将所述第二体素格子、所述第二体素格子之间所述父子连接关系和/或邻居连接关系,保存为所述游戏场景的三维寻路地图。
可选地,所述游戏场景中包括场景模型,所述对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子,包括:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
当所述第二体素格子中包括所述场景模型时,对包括所述场景模型的所述第二体素格子进行体素化,直至所述第二体素格子的体积小于或等于预设体素格子体积。
可选地,所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径,包括:
当所述目标寻路地图为二维寻路地图时,在所述二维寻路地图中查找所述起始地点和所述目标地点之间连通的多边形区域;
根据所述起始地点、所述连通的多边形区域中的二维路点和所述目标地点,生成二维寻路路径;其中,所述二维路点为采用指定路径搜索算法根据所述起始地点和所述目标地点计算得到的在所述多边形区域中的位置坐标点,相邻的所述二维路点之间允许直线通过。
可选地,所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径,包括:
当所述目标寻路地图为三维寻路地图时,在所述三维寻路地图中查找所述起始地点和所述目标地点之间连通的第二体素格子;
根据所述起始地点、三维路点和所述目标地点,生成三维寻路路径,其中,所述三维路点为相邻的所述连通的第二体素格子相交面的中心点。
可选地,在所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动之前,所述方法还包括:
确定所述寻路路径为有效路径。
可选地,所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动之前,还包括:
当确定所述寻路路径为无效路径时,将所述寻路虚拟对象当前所在的地点作为起始地点,并重新执行所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径。
可选地,所述方法还包括:
若所述寻路虚拟对象没有在寻路行走状态,或者,距离上一次生成寻路路径的时间超过预设时间间隔,或者,在目标寻路方式为三维寻路方式时所述寻路路径中的三维路点为零,或者,在目标寻路方式为三维寻路方式时所述寻路路径中的三维路点不为零,且所述虚拟寻路对象未到达的三维路点的数量小于预设路点阈值以及未到达的三维路点不包括目标地点,则确定所述寻路路径为无效路径。
可选地,所述方法还包括:
在目标寻路方式为二维寻路方式时,所述寻路路径中的所述起始地点或者所述目标地点不在所述二维寻路地图中的多边形区域,或者,在目标寻路方式为二维寻路方式时,所述寻路路径中的多边形区域的数量小于预设数量阈值,且所述目标地点不在所述寻路路径中的最后一个多边形区域中,则确定所述寻路路径为无效路径。
可选地,所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动,包括:
确定所述寻路虚拟对象在所述游戏场景中的当前地点;
确定所述寻路路径中所述当前地点后的下一个路点;
根据所述当前地点和所述下一个路点计算所述寻路虚拟对象的移动速度和移动方向;
控制所述寻路虚拟对象按照所述移动速度和所述移动方向,在所述游戏场景中从所述当前地点移动至所述下一个路点。
可选地,所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动,还包括:
当所述寻路虚拟对象移动至所述下一个路点后,若所述下一个路点与所述目标地点之间的距离小于预设路径阈值,则所述寻路虚拟对象结束寻路行走状态。
本发明实施例还公开了一种游戏中的寻路装置,所述游戏中包括游戏场景和寻路虚拟对象,所述装置包括:
寻路响应模块,用于响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式;
寻路地图加载模块,用于在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图;
寻路路径生成模块,用于根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径;
虚拟对象移动模块,用于控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。
可选地,所述装置还包括:二维寻路地图生成模块,用于:
对所述游戏场景进行体素化,得到若干第一体素格子;所述第一体素格子具有对应的高度信息;
根据所述第一体素格子的所述高度信息,计算所述第一体素格子之间的高度差值;
将所述高度差值在预设高度阈值内的相邻的所述第一体素格子在所述游戏场景中对应的场景模型的表面,确定为可行走区域;
对所述可行走区域进行划分,得到若干多边形区域;
将所述多边形区域保存为所述游戏场景的二维寻路地图。
可选地,所述可行走区域的区域面积大于或等于第一预设区域面积且小于第二预设区域面积,所述第二预设区域面积大于所述第一预设区域面积。
在一示例性实施例中,所述二维寻路地图生成模块,用于:
确定所述可行走区域中的区域连接顶点;所述区域连接顶点是衔接相邻所述可行走区域的顶点;
连接相邻的所述区域连接顶点,得到简化边界;
将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离大于预设距离阈值时,将所述目标原始顶点添加到所述简化边界中,并返回执行所述将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离小于或等于预设距离阈值时,将所述简化边界确定为目标简化边界;
将所述可行走区域更新为由所述目标简化边界包围形成的区域。
可选地,所述二维寻路地图生成模块,用于:
将所述可行走区域划分为若干三角形区域;
将所述三角形区域组合为多边形区域;其中,所述多边形区域的形状为凸多边形。
可选地,所述装置还包括:三维寻路地图生成模块,用于:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
对包含所述场景模型的所述第二体素格子进行标记,其中,标记的所述第二体素格子用于表征所述寻路虚拟对象不可通过;
确定所述第二体素格子之间的父子连接关系和/或邻居连接关系;所述父子连接关系用于表征不同分层的所述第二体素格子之间的连接关系,所述邻居连接关系用于表征同一分层的所述第二体素格子之间的连接关系;
将所述第二体素格子、所述第二体素格子之间所述父子连接关系和/或邻居连接关系,保存为所述游戏场景的三维寻路地图。
可选地,所述游戏场景中包括场景模型,所述三维寻路地图生成模块,用于:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
当所述第二体素格子中包括所述场景模型时,对包括所述场景模型的所述第二体素格子进行体素化,直至所述第二体素格子的体积小于或等于预设体素格子体积。
可选地,所述寻路路径生成模块,用于:
当所述目标寻路地图为二维寻路地图时,在所述二维寻路地图中查找所述起始地点和所述目标地点之间连通的多边形区域;
根据所述起始地点、所述连通的多边形区域中的二维路点和所述目标地点,生成二维寻路路径;其中,所述二维路点为采用指定路径搜索算法根据所述起始地点和所述目标地点计算得到的在所述多边形区域中的位置坐标点,相邻的所述二维路点之间允许直线通过。
可选地,所述寻路路径生成模块,用于:
当所述目标寻路地图为三维寻路地图时,在所述三维寻路地图中查找所述起始地点和所述目标地点之间连通的第二体素格子;
根据所述起始地点、三维路点和所述目标地点,生成三维寻路路径,其中,所述三维路点为相邻的所述连通的第二体素格子相交面的中心点。
可选地,所述装置还包括:寻路有效性确定模块,用于:
确定所述寻路路径为有效路径。
可选地,所述装置还包括:重新执行模块,用于:
当确定所述寻路路径为无效路径时,将所述寻路虚拟对象当前所在的地点作为起始地点,并重新执行所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径。
可选地,所述寻路有效性确定模块,用于:
若所述寻路虚拟对象没有在寻路行走状态,或者,距离上一次生成寻路路径的时间超过预设时间间隔,或者,在目标寻路方式为三维寻路方式时,所述寻路路径中的三维路点为零,或者,在目标寻路方式为三维寻路方式时,所述寻路路径中的三维路点不为零,且所述虚拟寻路对象未到达的三维路点的数量小于预设路点阈值以及未到达的三维路点不包括目标地点,则确定所述寻路路径为无效路径。
可选地,所述寻路有效性确定模块,用于:
在目标寻路方式为二维寻路方式时,所述寻路路径中的所述起始地点或者所述目标地点不在所述二维寻路地图中的多边形区域,或者在目标寻路方式为二维寻路方式时,所述寻路路径中的多边形区域的数量小于预设数量阈值,且所述目标地点不在所述寻路路径中的最后一个多边形区域中,则确定所述寻路路径为无效路径。
可选地,所述虚拟对象移动模块,用于:
确定所述寻路虚拟对象在所述游戏场景中的当前地点;
确定所述寻路路径中所述当前地点后的下一个路点;
根据所述当前地点和所述下一个路点计算所述寻路虚拟对象的移动速度和移动方向;
控制所述寻路虚拟对象按照所述移动速度和所述移动方向,在所述游戏场景中从所述当前地点移动至所述下一个路点。
可选地,所述虚拟对象移动模块,用于:
当所述寻路虚拟对象移动至所述下一个路点后,若所述下一个路点与所述目标地点之间的距离小于预设路径阈值,则所述寻路虚拟对象结束寻路行走状态。
本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
本发明实施例还公开了一种计算机程序产品,该程序产品被存储在存储介质中,该计算机程序产品被至少一个处理器执行以实现如本发明实施例所述的方法。
本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,响应于寻路指令,确定游戏中的寻路虚拟对象在游戏场景中的起始地点和目标地点,以及寻路虚拟对象在游戏场景中的目标寻路方式,在游戏场景中加载目标寻路方式对应的目标寻路地图,从而可以根据起始地点、目标地点和目标寻路地图生成寻路路径,控制寻路虚拟对象基于寻路路径在游戏场景中移动,实现在游戏中的自动寻路。本发明实施例可以同时支持寻路虚拟对象在游戏场景中实现多种寻路方式,例如二维寻路方式和三维寻路方式,能够支持游戏内多样化的寻路需求,为玩家带来更多的游戏体验。此外,由于玩家可以控制游戏中的寻路虚拟对象按照自身需求在游戏场景内选择对应的目标寻路方式,并随时在多种寻路方式中进行切换,提升了游戏的表现性和操作性。
附图说明
图1是本发明实施例中提供的一种游戏中的寻路方法的步骤流程图;
图2是本发明实施例中提供的一种可行走区域的示意图;
图3是本发明实施例中提供的一种更新后的可行走区域的区域轮廓的示意图;
图4是本发明实施例中提供的一种二维寻路地图的寻路网格的示意图;
图5是本发明实施例中提供的一种二维寻路地图生成的流程示意图;
图6是本发明实施例中提供的一种游戏场景分层SVO体素化的示意图;
图7是本发明实施例中提供的一种第二体素格子之间父子连接关系的示意图;
图8是本发明实施例中提供的一种第二体素格子之间邻居连接关系的示意图;
图9是本发明实施例中提供的一种三维寻路地图生成的流程示意图;
图10是本发明实施例中提供的一种游戏进程中寻路的初始化流程示意图;
图11是本发明实施例中提供的一种二维寻路路径的示意图;
图12是本发明实施例中提供的一种三维寻路路径的示意图;
图13是本发明实施例中提供的一种寻路帧的工作流程示意图;
图14是本发明实施例中提供的一种规划路径的流程示意图;
图15是本发明实施例中提供的一种确定所述寻路路径的寻路有效性的流程示意图;
图16是是本发明实施例提供的一种计算虚拟寻路对象的移动速度和移动方式的流程示意图;
图17是本发明实施例中提供的一种游戏中的寻路装置的结构框图;
图18是实现本发明各个实施例的一种电子设备的硬件结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
目前,在游戏中的寻路方式包括有如下几种:
路点图寻路:依靠人工或者自动化的方式,在游戏场景内布置若干个路点,然后,依赖路点之间的连接来进行寻路。
规则化网格寻路:将游戏场景分割成相同大小的网格,将有障碍物的网格和没有障碍物的网格分别标记,然后,在没有障碍物的网格中寻找连接通的网格来进行寻路。
Detour寻路:Detour寻路是基于平面的寻路网格的,在游戏场景的表面生成寻路的多边形网格并标记网格之间的连通性,通过寻找连通的多边形网格来生成寻路路径,进而根据寻路路径来进行寻路。
然而,目前在游戏中的寻路方式虽然能够实现在游戏中寻路,但是都存在一些缺点,具体是:
路点图寻路:可以同时支持二维寻路和三维寻路,但是,如果游戏场景的范围较大,若想得到比较好的寻路精度,需要在游戏场景内布置大量的路点,人工成本高。
规则化网格:可以同时支持二维寻路和三维寻路,但是,若想得到比较高的寻路精度,就需要将网格的粒度划分得足够细,但是,如果游戏场景内网格数量太多,寻找连通的网格的内存开销比较大,此外,存储网格的数据所需要占用的内存也较大。
Detour寻路:一般应用于二维寻路,但是如果将场景按照高度进行分层,每一分层生成一份寻路网格也能进行三维寻路。但是,基于分层网格的三维寻路的寻路精度也依赖于分层的精度,并且,寻路虚拟对象只能在贴近寻路网格的地方进行寻路,寻路效果不佳。
综上可知,目前在游戏中的寻路方式可以实现二维寻路和三维寻路,但是,若使用的是路点图寻路或者规则化网格的寻路方式,就需要较高的人工成本或者较大的内存开销,若是使用的是Detour寻路,虽然可以实现二维的寻路,但是若还需要实现三维的寻路,寻路效果不佳。可见,本发明实施例所要解决的技术问题是:提供了一种融合的寻路方法,使得寻路虚拟对象既可以在游戏场景的场景模型的表面中进行二维寻路,也可以在整个游戏场景的三维空间中进行三维寻路。
针对上述技术问题,本发明实施例提供的一种游戏中的寻路方法,能够支持游戏内多样化的寻路需求,即既可以实现二维寻路也可以实现三维寻路,并且,游戏中的寻路虚拟对象可以按照自身需求在游戏场景内进行二维寻路或者三维寻路,并随时在这两种寻路方式中进行切换,提升了游戏的表现性和操作性。并且,针对实现三维寻路内存开销比较大的问题,本发明实施例提出了对游戏场景中仅包括场景模型的区域才进行细粒度的划分,而没有场景模型的区域进行粗粒度的划分,如此,生成寻路地图中的寻路网格,相对于需要对整个游戏场景进行寻路网格划分的寻路方式而言,内存开销较小,具体地,减小的内存开销可以包括计算寻路路径时的内存开销,以及存储寻路网格时的内存开销。
在本发明其中一种实施例中的游戏中的寻路方法可以运行于本地终端设备或者是服务器。当游戏中的寻路方法运行于服务器时,该游戏中的寻路方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,游戏中的寻路方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,第一终端设备、电视机、计算机、掌上电脑等;但是进行游戏中的寻路方法的为云端的云游戏服务器。在进行游戏时,玩家操作客户端设备向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
在一可选的实施方式中,以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与玩家进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给玩家的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给玩家。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面以及控制图形用户界面在显示屏上的显示。
参照图1,示出了本发明实施例中提供的一种游戏中的寻路方法的步骤流程图,所述游戏中包括游戏场景和寻路虚拟对象,具体可以包括如下步骤:
步骤101、响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式。
在具体实现中,本发明实施例提供的游戏中的寻路方法,既可以应用在游戏客户端(终端设备侧),也可以应用在游戏服务端(服务器侧)。其中,当应用于游戏客户端时,可以为玩家提供图形用户界面,具体地,在终端设备上运行游戏应用时,可以在终端设备的触控显示器上渲染图形用户界面,图形用户界面所显示的内容至少部分地包含一局部或全部的游戏场景,游戏场景的具体形态可以是方形,也可以是其它形状,比如,圆形等。
具体地,游戏场景中包括至少一虚拟对象,该虚拟对象可以是玩家通过终端设备进行操控的游戏角色,或者,游戏开发者在某个具体游戏场景中预先设置的非玩家角色(Non-Practicing Character,NPC),可以通过图形用户界面所呈现,所呈现的内容可以包含虚拟对象的全部,也可以是虚拟对象的局部。例如,在第三人称视角游戏中,图形用户界面所呈现的内容可以包含虚拟对象的全部,或者,在第一人称视角游戏中,图形用户界面所呈现的内容可以包含虚拟对象的部分或者局部或者不呈现。
在本发明实施例中,寻路虚拟对象是指的游戏中被赋予自动寻路功能的虚拟对象。游戏场景可以是包含多种场景模型的三维地图,例如,包含城堡、栏杆、楼梯、墙壁、树木、飞行器以及海洋等场景模型的三维地图,在游戏场景中的场景模型,有些会限制寻路虚拟对象的移动,例如寻路虚拟对象无法跨越城堡、栏杆等场景模型,寻路虚拟对象只能绕过,或者需要通过使用技能或者道具才能跨越。
其中,游戏场景中为寻路虚拟对象设置了多种寻路方式,寻路方式至少可以包括二维寻路方式和三维寻路方式,具体地,二维寻路方式是指在游戏场景的地形表面中进行的二维寻路,三维寻路方式是指在整个游戏场景的三维空间中进行三维寻路。
在本发明实施例中,可以将寻路虚拟对象在游戏场景中的当前位置作为起始地点,然后,玩家可以在通过终端设备提供的图形用户界面中,通过点击操作等方式设置寻路虚拟对象的目标地点,进一步地,玩家还可以从多种寻路方式中选择一种寻路方式,例如二维寻路方式,作为寻路虚拟对象在游戏场景中的目标寻路方式,终端设备响应于上述的寻路指令,就可以确定寻路虚拟对象在游戏场景中的起始地点和目标地点,以及寻路虚拟对象在游戏场景中的目标寻路方式。
步骤102、在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图。
步骤103、根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径。
在本发明实施例中,针对各个寻路方式分别设置了对应的寻路地图,例如,二维寻路方式对应的二维寻路地图,三维寻路方式对应的三维寻路地图。在确定寻路虚拟对象在游戏场景中的目标寻路方式后,就可以在游戏场景中加载目标寻路方式对应的目标寻路地图,从而寻路虚拟对象可以根据目标寻路地图在游戏场景中进行寻路。
具体地,寻路地图中包括多个寻路网格,通过这些寻路网格可以表示整个游戏场景,因此可以根据起始地点和目标地点之间连通的寻路网格,来生成寻路虚拟对象在游戏场景中的寻路路径。其中,若寻路地图为二维寻路地图,则寻路网格可以是二维的平面网格,可以覆盖游戏场景中的地形表面,若寻路地图为三维寻路地图,则寻路网格可以是立体的立体网格(立方体格子),可以覆盖游戏场景的整个三维空间。
步骤104、控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。
在本发明实施例中,在生成寻路虚拟对象在游戏场景中的寻路路径后,就可以控制该寻路虚拟对象基于该寻路路径在游戏场景中移动,实现在游戏场景中的自动寻路。
在上述的游戏中的寻路方法中,响应于寻路指令,确定游戏中的寻路虚拟对象在游戏场景中的起始地点和目标地点,以及寻路虚拟对象在游戏场景中的目标寻路方式,在游戏场景中加载目标寻路方式对应的目标寻路地图,从而可以根据起始地点、目标地点和目标寻路地图生成寻路路径,控制寻路虚拟对象基于寻路路径在游戏场景中移动,实现在游戏中的自动寻路。本发明实施例可以同时支持寻路虚拟对象在游戏场景中实现多种寻路方式,例如二维寻路方式和三维寻路方式,能够支持游戏内多样化的寻路需求,为玩家带来更多的游戏体验。此外,由于玩家可以控制游戏中的寻路虚拟对象按照自身需求在游戏场景内选择对应的目标寻路方式,并随时在多种寻路方式中进行切换,提升了游戏的表现性和操作性。
在上述实施例的基础上,提出了上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在变型实施例中仅描述与上述实施例的不同之处。
在寻路虚拟对象基于寻路地图进行寻路之前,需要先准备好寻路地图。其中,寻路地图可以包括用于二维寻路的二维寻路地图,具体地,生成二维寻路地图的过程如下所示:
在一示例性实施例中,在所述步骤101、响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式之前,所述方法还可以包括如下步骤:
对所述游戏场景进行体素化,得到若干第一体素格子;所述第一体素格子具有对应的高度信息;
根据所述第一体素格子的所述高度信息,计算所述第一体素格子之间的高度差值;
将所述高度差值在预设高度阈值内的相邻的所述第一体素格子在所述游戏场景中对应的场景模型的表面,确定为可行走区域;
对所述可行走区域进行划分,得到若干多边形区域;
将所述多边形区域保存为所述游戏场景的二维寻路地图。
具体地,体素(体素格子)是体积元素的简称,体素本质上是像素的3D版,每一个体素在三维空间中都有一个位置以及与之相关的属性,体素化则是将某个物体(例如游戏场景中的场景模型)采用切割的方式,使之变成若干个体素格子。
在本发明实施例中,针对二维寻路地图,可以获取游戏场景的场景模型数据,基于该场景模型数据对游戏场景进行体素化,将游戏场景划分为多个第一体素格子,其中,每个第一体素格子具有其对应的高度信息,而在游戏中,通常寻路虚拟对象会设置为无法通过高度大于预设高度阈值的场景模型,因此,可以根据第一体素格子的高度信息,计算第一体素格子之间的高度差值,然后,可以根据高度差值在预设高度阈值内的相邻的第一体素格子,将游戏场景中对应的场景模型的表面,确定为可行走区域,其中,寻路虚拟对象可以在可行走区域内进行移动。例如,假设第一体素格子中的场景模型为楼梯中的梯段,梯段之间的高度差值是在预设高度阈值内,则基于这些体素格子可以将游戏场景对应的楼梯的表面,确定为可行走区域。其中,体素格子的大小根据寻路的精度自定义。
在游戏场景中确定出多个可行走区域后,可以对每个可行走区域继续进行划分,从而得到若干多边形区域,随后,就可以将这些多边形区域保存为游戏场景的二维寻路地图。其中,多边形区域可以是为凸多边形状的区域。示例性地,参照图2,是本发明实施例中提供的一种可行走区域的示意图,该图中灰度相同的一块区域,即表示一个可行走区域。
在一示例性实施例中,所述可行走区域由原始边界包围形成,所述原始边界中包括原始顶点,在所述对所述可行走区域进行划分,得到若干多边形区域之前,所述方法还可以包括如下步骤:
确定所述可行走区域中的区域连接顶点;所述区域连接顶点是衔接相邻所述可行走区域的顶点;
连接相邻的所述区域连接顶点,得到简化边界;
将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离大于预设距离阈值时,将所述目标原始顶点添加到所述简化边界中,并返回执行所述将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离小于或等于预设距离阈值时,将所述简化边界确定为目标简化边界;
将所述可行走区域更新为由所述目标简化边界包围形成的区域。
在具体实现中,可行走区域由原始边界包围形成,而原始边界是基于体素格子的边界形成的,因此可行走区域的原始边界是不规则的呈锯齿状的线条,若基于该可行走区域划分多边形区域,需要耗费大量内存开销,因此在对可行走区域划分多边形区域之前,可以先对可行走区域的原始边界进行简化,使得简化后的原始边界规则化。
其中,区域连接顶点是指的衔接可行走区域与其他可行走区域的顶点。具体地,对于可行走区域,先找到该可行走区域的区域连接顶点,连接相邻的区域连接顶点得到一条简化边界,具体地,相邻的区域连接顶点是该可行走区域的区域连接顶点与其距离最近的其他可行走区域的区域连接顶点,然后,计算原始边界上离简化边界上距离最远的原始顶点,如果这个原始顶点与简化边界之间的距离大于设定的预设距离阈值,就将这个原始顶点添加到简化边界中,并重新生成一条简化边界,重复执行这些步骤,直到原始边界中没有原始顶点与简化边界之间的距离大于设定的预设距离阈值,此时,可行走区域可以更新为简化边界所组成的区域。示例性地,更新后的可行走区域的区域轮廓,可以参照图3所示。
在一示例性实施例中,所述对所述可行走区域进行划分,得到若干多边形区域,可以包括如下步骤:
将所述可行走区域划分为若干三角形区域;
将所述三角形区域组合为多边形区域;其中,所述多边形区域的形状为凸多边形。
在本发明实施例中,可以按照预设三角形划分算法,将更新后的可行走区域划分为若干三角形区域,然后,可以将这些三角形区域组合为凸多边形形状的多边形区域,这些多边形区域用于作为二维寻路地图中的寻路网格。示例性地,二维寻路地图的寻路网格可以参照图4所示。可选地,预设三角形划分算法可以由研发人员定义的算法,例如内部角算法和相交边算法等其他算法,本发明实施例对此无需加以限制。
在具体实现中,可行走区域是通过将高度差值在预设高度阈值内的第一体素格子组合形成,可以理解,若可行走区域越大,则在将该可行走区域划分为若干三角形区域时需要耗费的内存开销越大,因此,在生成可行走区域,可以控制可行走区域的区域面积大小,具体地,可行走区域的区域面积可以设置为大于或等于第一预设区域面积且小于第二预设区域面积,其中,第二预设区域面积大于第一预设区域面积,如此,既可以避免由于可行走区域的区域面积过大导致内存开销过大,又可以避免由于可行走区域的区域面积过小,导致需要划分三角形区域的可行走区域数量过大导致内存开销过大。
可选地,在生成多边形区域后,还可以基于多边形区域对应的高度信息,对该多边形区域再次划分,使得二维寻路地图中的寻路网格的精度更高,进而寻路虚拟对象可以基于二维寻路地图进行高精度寻路。
为了使本领域技术人员更好地理解生成二维寻路地图的过程,以下采用示例进行说明。具体地,参照图5,是本发明实施例提供的一种二维寻路地图生成的流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S501、导入游戏场景的场景模型。
S502、对游戏场景进行体素化,划分成离散的立方体小格子(第一体素格子),其中,第一体素格子大小可以根据寻路的精度自定义。
S503、根据体素格子过滤出寻路虚拟对象在游戏场景中的可行走的表面。
S504、根据可行走的表面划分可行走区域,此可行走区域用于生成后续的凸多边形区域。
S505、对可行走区域的原始边界进行简化,生成简化边界(区域轮廓)。其中,将基于简化边界可以更新可行走区域。
S506、对更新后的可行走区域继续进行划分,划分成若干个凸多边形区域,其中,在寻路过程中寻路虚拟对象是通过查询起始地点和目标地点之间连通的凸多边形区域来生成寻路路径。
S507、凸多边形区域还可以添加高度信息再次进行划分来完善凸多边形区域。
S508、将凸多边形区域作为寻路网格按照格式写入文件,得到二维寻路地图导出。
通过上述方式,即可生成游戏场景中用于二维寻路的二维寻路地图。其中,寻路地图可以包括用于三维寻路的三维寻路地图,具体地,生成三维寻路地图的过程如下所示:
在一示例性实施例中,所述方法还可以包括如下步骤:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
对包含所述场景模型的所述第二体素格子进行标记,其中,标记的所述第二体素格子用于表征所述寻路虚拟对象不可通过;
确定所述第二体素格子之间的父子连接关系和/或邻居连接关系;所述父子连接关系用于表征不同分层的所述第二体素格子之间的连接关系,所述邻居连接关系用于表征同一分层的所述第二体素格子之间的连接关系;
将所述第二体素格子、所述第二体素格子之间所述父子连接关系和/或邻居连接关系,保存为所述游戏场景的三维寻路地图。
在本发明实施例中,针对三维寻路地图,可以获取游戏场景的场景模型数据,基于该场景模型数据按照不同的分层对游戏场景进行体素化,将游戏场景划分各个分层分别对应的第二体素格子。然后,可以对包含了场景模型的第二体素格子进行标记,以表示寻路虚拟对象不可以通过该第二体素格子,也就是说,在生成寻路路径时需要避开这些标记的第二体素格子,其中,游戏场景的分层的层数和第二体素格子的大小可以根据寻路的精度自定义。
然后,可以生成第二体素格子的父子连接关系,其中,父子连接关系用于表示上下分层的第二体素格子之间的连接,邻居连接关系则用于表示在同一分层的第二体素格子之间的连接,最后,可以将第二体素格子(包括标记的第二体素格子)、第二体素格子之间父子连接关系和/或邻居连接关系,保存为游戏场景的三维寻路地图。
在一示例性实施例中,所述游戏场景中包括场景模型,所述对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子,可以包括如下步骤:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
当所述第二体素格子中包括所述场景模型时,对包括所述场景模型的所述第二体素格子进行体素化,直至所述第二体素格子的体积小于或等于预设体素格子体积。
其中,对游戏场景中的场景模型进行体素化,采用是SVO(Sparse Voxel Octree,稀疏体素八叉树)来对场景模型进行体素化的,具体地,在采用SVO对场景模型进行体素化时,如果体素化后的第二体素格子内包含场景模型,则对该第二体素格子进一步采用SVO继续进行体素化,得到新的第二体素格子,直至第二体素格子的体积小于或等于预设体素格子体积,即,已经达到了预设第二体素格子的大小,可以不用再继续体素化。
在本发明实施例中,针对实现三维寻路内存开销比较大的问题,本发明实施例提出了对游戏场景中仅包括场景模型的区域才进行细粒度的划分,而没有场景模型的区域进行粗粒度的划分,如此,生成三维寻路地图中的寻路网格(第二体素格子),相对于需要对整个游戏场景进行寻路网格划分的寻路方式而言,内存开销较小,其中,减小的内存开销可以包括计算寻路路径时的内存开销,以及存储寻路网格时的内存开销。
示例性地,参照图6,游戏场景被划分为三个分层,分别是Layer0,Layer1和Layer2,图6中一个格子表示一个第二体素格子,黑色的第二体素格子表示标记的体素格子,其中,不同分层的第二体素格子的体素化的粒度可以不同。参照图7,是第二体素格子之间父子连接关系的示意图,例如,Layer2的部分第二体素格子可以与Layer1的第二体素格子连接。参照图8,是第二体素格子之间邻居连接关系的示意图,例如,Layer1和Layer2中相邻的第二体素格子连接,并且,Layer2的一个第二体素格子可以与Layer1中的两个第二体素格子连接。
为了使本领域技术人员更好地理解生成二维寻路地图的过程,以下采用示例进行说明。具体地,参照图9,是本发明实施例提供的一种三维寻路地图生成的流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S901、导入游戏场景的场景模型数据。
S902、对场景模型进行体素化,根据SVO对游戏场景划分第二体素格子,如果第二体素格子内有场景模型,则对该体素进一步根据SVO进行体素化。
S903、将第二体素格子中有场景模型的体素格子标记出来,寻路的时候要避开这些第二体素格子。
S904、生成第二体素格子的父子连接关系,即标记上下分层的第二体素格子之间连接。
S905、生成第二体素格子的邻居连接关系,即标记同一分层相邻的第二体素格子之间连接。
S906、将第二体素格子作为寻路网格按照格式写入文件,得到三维寻路地图导出。
通过上述方式,即可生成游戏场景中用于三维寻路的三维寻路地图。
在本发明实施例中,在得到二维寻路地图和三维寻路地图后,在寻路虚拟对象在游戏场景中寻路时,可以将二维寻路地图加载到游戏场景中进行二维寻路,和/或,将三维寻路地图加载到游戏场景中进行三维寻路。在虚拟寻路对象在游戏场景中寻路之前,可以进行寻路的初始化,具体地,参照图10,是本发明实施例提供的一种游戏进程中寻路的初始化流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S1001、游戏客户端/服务端的游戏进程启动。
S1002、在游戏场景中加载二维寻路地图。
S1003、根据二维寻路地图在游戏进程中构造二维的寻路网格。
S1004、判断是否是需要进行三维寻路。
S1005、若需要进行三维寻路,则在游戏场景中加载三维寻路地图。
S1006、根据三维寻路地图在游戏场景中构造三维的寻路网格。
S1007、寻路初始化完成。
需要说的是,本发明实施例中在游戏场景中加载二维寻路地图或者三维寻路地图,可以根据游戏设计的需求来加载,比如设计某些游戏场景中寻路虚拟对象可以在空中飞行,则可以加载三维寻路地图,或者在某些游戏场景中寻路虚拟对象只能够在地面行走,则可以加载二维寻路地图,或者在某些游戏场景中寻路虚拟对象既可以在空中飞行也可以在地面行走,则可以同时加载二维寻路地图和三维寻路地图,或者也可以根据玩家自己的需求来选择对应的寻路方式,进而加载对应的寻路地图,本发明实施例对此无需加以限制。
在一示例性实施例中,所述步骤103、根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径,可以包括如下步骤:
当所述目标寻路地图为二维寻路地图时,在所述二维寻路地图中查找所述起始地点和所述目标地点之间连通的多边形区域;
根据所述起始地点、所述连通的多边形区域中的二维路点和所述目标地点,生成二维寻路路径;其中,所述二维路点为采用指定路径搜索算法根据所述起始地点和所述目标地点计算得到的在所述多边形区域中的位置坐标点,相邻的所述二维路点之间允许直线通过。
其中,连通的多边形区域是指的允许虚拟寻路对象通过的多边形区域,例如,假设有三个多边形区域A,B和C,其中,A分别与B和C相邻,A和B为连通的多边形区域,则虚拟寻路对象可以从A移动到B,但是不可以从A移动到C。
在本发明实施例中,在寻路虚拟对象进行二维寻路时,则目标寻路地图为二维寻路地图,二维寻路地图中包括了寻路虚拟对象可以移动的多边形区域,此时,可以根据起始地点和目标地点之间连通的多边形区域,来生成二维寻路路径,随后,寻路虚拟对象可以按照二维寻路路径在游戏场景中移动。
在本发明实施例中,在计算二维寻路路径时可以采用A*算法。当然,也可以采用有深度优先搜索算法、广度优先搜索算法、Dijkstra算法和漏斗算法等路径搜索算法,本发明实施例对此无需加以限制。
其中,二维路点指的是在采用指定路径搜索算法计算二维寻路路径时,计算得到的需要经过的游戏场景中的位置坐标点,相邻的二维路点之间可以直线通过。具体地,参照图11,是本发明实施例的一种二维寻路路径的示意图,图中包括起点(起始地点)和终点(目标地点),其中的D点和G点则为二维路点,连接起点、路点(D点和G点)和终点,即可得到二维寻路路径,即图11中带箭头的线段。
在一示例性实施例中,所述步骤103、根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径,可以包括如下步骤:
当所述目标寻路地图为三维寻路地图时,在所述三维寻路地图中查找所述起始地点和所述目标地点之间连通的第二体素格子;
根据所述起始地点、三维路点和所述目标地点,生成三维寻路路径,其中,所述三维路点为相邻的所述连通的第二体素格子相交面的中心点。
在本发明实施例中,在寻路虚拟对象进行三维寻路时,则目标寻路地图为三维寻路地图,三维寻路地图中包括了第二体素格子,并且三维寻路地图中标记了包含场景模型的第二体素格子,并且还记录了第二体素格子之间父子连接关系和/或邻居连接关系,基于这些记录的信息可以三维寻路地图中查找起始地点和目标地点之间连通的第二体素格子,从而基于连通的第二体素格子生成三维寻路路径,随后,寻路虚拟对象可以按照三维寻路路径在游戏场景中移动。
在本发明实施例中,在计算三维寻路路径时可以采用A*算法。当然,也可以采用有深度优先搜索算法、广度优先搜索算法、Dijkstra算法和漏斗算法等路径搜索算法,本发明实施例对此无需加以限制。
其中,三维路点指的是相邻的连通的第二体素格子相交面的中心点。具体地,参照图12,是本发明实施例的一种三维寻路路径的示意图,图中包括Start(起始地点)和End(目标地点),在基于三维寻路地图中查找到可以连通起始地点和目标地点的连通的第二体素格子,这些连通的第二体素格子可以是一个立方体通路,将立方体通路中两个相邻的第二体素格子相交面的中心点作为三维路点,连接起始地点、三维路点和目标地点,即可得到三维寻路路径,即图12中的立方体通路中的线段。
在一示例性实施例中,在所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动之前,所述方法还可以包括如下步骤:
确定所述寻路路径为有效路径。
在本发明实施例中,在控制寻路虚拟对象基于生成的寻路路径(包括二维寻路路径和三维寻路路径)在游戏场景中移动之前,可以先确定该寻路路径是否为有效路径,当确定寻路路径为有效路径,开始控制寻路虚拟对象基于生成的寻路路径,避免由于寻路路径无效,导致虚拟寻路对象在游戏场景中错误寻路。
在一示例性实施例中,在所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动之前,所述方法还可以包括如下步骤:
当确定所述寻路路径为无效路径时,将所述寻路虚拟对象当前所在的地点作为起始地点,并重新执行所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径。
在具体实现中,寻路虚拟对象在游戏场景中的整个寻路是一个不断轮询的过程,即在寻路过程中可以包括多个寻路处理周期(寻路处理周期也可以称为寻路帧),一个寻路处理周期代表一个循环,一个寻路处理周期结束会马上进入下一个寻路处理周期,重复同样的逻辑,直至寻路虚拟对象在游戏场景中结束寻路。其中,在每次开始一个寻路处理周期,就需要重新规划路径,即,需要重新生成寻路路径。
在本发明实施例中,可以通过确定寻路路径的寻路有效性来确定是否需要进入下一个寻路处理周期,具体来说,如果确定寻路虚拟对象的寻路有效性为无效,则需要进入下一个寻路处理周期,即需要将寻路虚拟对象当前在游戏场景中的所在的地点作为起始地点,然后重新根据起始地点、目标地点和目标寻路地图生成寻路路径,如果确定寻路虚拟对象的寻路有效性为有效,则无需进入下一个寻路处理周期,继续采用已经计算得到的寻路路径在游戏场景中移动。
具体地,参照图13,是本发明实施例提供的一种寻路帧的工作流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S1301、新的一个寻路帧开始。
S1302、寻路路径的有效性判断。
S1303、若确定寻路路径的有效性为无效,则需要重新规划路径的的寻路虚拟对象的寻路路径,其中,规划路径的内容具体可以参照图13所示的步骤。其中,若是二维寻路是在二维寻路地图的凸多边形区域中采用A*算法去寻找连通的凸多边形区域(二维多边形通路),三维寻路是在三维寻路地图中采用A*算法寻找连通的第二体素格子(立方体通路)。
S1304、根据上一个步骤中找到的通路,通过漏斗算法去计算生成路点。其中,二维寻路的路点可以通过漏斗算法计算生成,三维寻路的路点为连通且相邻的第二体素格子中的相交面的中心点。
S1305、根据寻路虚拟对象当前的位置坐标和下一个路点的位置坐标去计算寻路虚拟对象的移动速度和移动方向。
S1306、寻路虚拟对象根据计算的移动速度和移动方向进行移动。
S1307、寻路虚拟对象移动后,要进行移动后的一些处理。其中,如果是在二维寻路状态,要将寻路虚拟对象移动完成后,将移动完成的多边形区域从二维多边形通路中移除。移动完成后计算当前的位置坐标和目标地点的距离,如果距离小于阈值则认为寻路已完成,并停止寻路状态。
S1308、当前寻路帧结束,准备开始下一寻路帧。
参照图14,是本发明实施例提供的一种规划路径的流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S1401、路径规划开始。
S1402、寻路虚拟对象是否需要重新规划路径。若是,则执行步骤S1403,若否,则执行步骤S1406。
S1403、寻路虚拟对象是否在三维寻路,若是,则执行步骤S1404,若否,则执行步骤S1405。
S1404、三维寻路地图中查询三维寻路路径。
S1405、二维寻路地图中查询二维寻路路径。
S1406、路径规划结束。
在一示例性实施例中,所述确定所述寻路路径的寻路有效性,可以包括如下步骤:
若所述寻路虚拟对象没有在寻路行走状态,或者,距离上一次生成寻路路径的时间超过预设时间间隔,在目标寻路方式为三维寻路方式时所述寻路路径中的三维路点为零,或者,在目标寻路方式为三维寻路方式时所述寻路路径中的三维路点不为零,且所述虚拟寻路对象未到达的三维路点的数量小于预设路点阈值以及未到达的三维路点不包括目标地点,则确定所述寻路路径为无效路径。
在目标寻路方式为二维寻路方式时,所述寻路路径中的所述起始地点或者所述目标地点不在所述二维寻路地图中的多边形区域,或者,在目标寻路方式为二维寻路方式时,所述寻路路径中的多边形区域的数量小于预设数量阈值,且所述目标地点不在所述寻路路径中的最后一个多边形区域中,则确定所述寻路路径为无效路径。
在本发明实施例中,确定寻路路径是否是无效路径的方式包括但不限于以下方式:起始地点和目标地点是否不在寻路网格上;当前行走的寻路路径是否还不能到达目标地点并且寻路路径太短;上一次路径规划的时间距当前时刻的时间差(targetReplanTime)是否大于预设阈值等等。如果满足其中任意一个条件,就需要重新虚拟寻路对象的路径规划,如果不满足其中任意一个条件,则虚拟寻路对象可以按照目前的寻路路径继续移动。
参照图15,是本发明实施例提供的一种确定所述寻路路径的寻路有效性的流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S1501、寻路路径有效性(即寻路路径是有效路径还是无效路径)判断开始。
S1502、寻路虚拟对象是否在寻路行走状态,若是,则执行步骤S1503,若否,则执行步骤S1511。
S1503、targetReplanTime是否大于阈值,即,距离上一次生成寻路路径的时间超过预设时间间隔。若是,则执行步骤S1504,若否,则执行步骤S1511。
S1504、是否在三维寻路,若是,则执行步骤S1510,若否,则执行步骤S1516。
S1505、寻路路径中路点的个数是否为0,若是,则执行步骤S1505,若否,则执行步骤S1511。
S1506、寻路路径中未到达路点数小于5且最后一个路点不是目标地点,若是,则执行步骤S1510,若否,则执行步骤S1511。
S1507、寻路路径中的起始地点是否在二维寻路地图的多边形区域,若是,则执行步骤S1508,若否,则执行步骤S1510。
S1508、目标地点是否在二维寻路地图的多边形区域,若是,则执行步骤S1509,若否,则执行步骤S1510。
S1509、寻路路径中多边形区域小于10个且目标地点不在寻路路径的多边形区域中,若是,则执行步骤S1510,若否,则执行步骤S1511。
S1510、重新规划寻路路径。
S1511、寻路路径有效性判断结束。
在一示例性实施例中,所述步骤104、控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动,可以包括如下步骤:
确定所述寻路虚拟对象在所述游戏场景中的当前地点;
确定所述寻路路径中所述当前地点后的下一个路点;
根据所述当前地点和所述下一个路点计算所述寻路虚拟对象的移动速度和移动方向;
控制所述寻路虚拟对象按照所述移动速度和所述移动方向,在所述游戏场景中从所述当前地点移动至所述下一个路点。
在具体实现中,根据寻路虚拟对象当前地点所在的位置坐标和下一个路点的位置坐标,去计算寻路虚拟对象的移动速度和移动方向,进而可以控制寻路虚拟对象按照移动速度和移动方向,在游戏场景中从当前地点移动至所述下一个路点,
在一示例性实施例中,所述步骤104、控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动,还可以包括如下步骤:
当所述寻路虚拟对象移动至所述下一个路点后,若所述下一个路点与所述目标地点之间的距离小于预设路径阈值,则所述寻路虚拟对象结束寻路行走状态。
在本发明实施例中,寻路虚拟对象根据计算得到的移动速度和移动方向,移动至寻路路径中的下一个路点后,若下一个路点与目标地点之间的距离小于预设路径阈值,例如,预设路径阈值可以为0.01,说明寻路虚拟对象已经达到目标地点,则寻路虚拟对象可以结束寻路行走状态,结束寻路。
示例性地,参照图16,是本发明实施例提供的一种计算虚拟寻路对象的移动速度和移动方式的流程示意图,图中每一个步骤右侧有对应的编号,具体步骤流程包括:
S1601、计算移动速度和移动方向开始。
S1602、寻路虚拟对象是否在寻路行走状态,若是,则执行步骤S1603。
S1603、寻路虚拟对象是否在三维寻路,若是,则执行步骤S1604,若否,则执行步骤S1608。
S1604、寻路虚拟对象当前地点距离下一个路点位置小于0.01,若是,则执行步骤S1605,若否,则执行步骤S1607。
S1605、下一个路点是否为寻路路径中最后一个路点,若是,则将移动速度设置为0,并执行步骤S1610,若否,则执行步骤S1606。
S1606、下一个路点设置为寻路路径中后的后一个路点。
S1607、根据寻路虚拟对象当前地点和下一个路点位置计算移动速度和移动方向。
S1608、是否有还有拐点,若是,则执行步骤S1609,若否,则则将移动速度设置为0,并执行步骤S1610。
S1609、根据寻路虚拟对象当前位置和下一个路点计算移动速度和移动方向。
S1610、计算移动速度和移动方向结束。
综上可知,应用本发明实施例,能够支持游戏内多样化的寻路需求,游戏中的寻路虚拟对象可以按照自身需求在场景内使用二维寻路或者三维寻路来进行寻路,并随时在这两种寻路方式中进行切换,提升了游戏的表现性和操作性。并且通过使用SVO方法对游戏场景划分时,可以仅对游戏场景中有场景模型的区域才进行细粒度的划分,而没有场景模型的区域进行粗粒度的划分,如此,生成的寻路地图对内存的消耗会更小,可以避免由于内存开销过大造成的游戏卡顿,保证了玩家的游戏体验。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图17,示出了本发明实施例中提供的一种游戏中的寻路装置的结构框图,所述游戏中包括游戏场景和寻路虚拟对象,具体可以包括如下模块:
寻路响应模块1701,用于响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式;
寻路地图加载模块1702,用于在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图;
寻路路径生成模块1703,用于根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径;
虚拟对象移动模块1704,用于控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。
在一示例性实施例中,所述装置还包括:二维寻路地图生成模块,用于:
对所述游戏场景进行体素化,得到若干第一体素格子;所述第一体素格子具有对应的高度信息;
根据所述第一体素格子的所述高度信息,计算所述第一体素格子之间的高度差值;
将所述高度差值在预设高度阈值内的所述第一体素格子在所述游戏场景中对应的场景模型的表面,确定为可行走区域;
对所述可行走区域进行划分,得到若干多边形区域;
将所述多边形区域保存为所述游戏场景的二维寻路地图。
在一示例性实施例中,所述可行走区域的区域面积大于或等于第一预设区域面积且小于第二预设区域面积,所述第二预设区域面积大于所述第一预设区域面积。
在一示例性实施例中,所述二维寻路地图生成模块,用于:
确定所述可行走区域中的区域连接顶点;所述区域连接顶点是衔接相邻所述可行走区域的顶点;
连接相邻的所述区域连接顶点,得到简化边界;
将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离大于预设距离阈值时,将所述目标原始顶点添加到所述简化边界中,并返回执行所述将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离小于或等于预设距离阈值时,将所述简化边界确定为目标简化边界;
将所述可行走区域更新为由所述目标简化边界包围形成的区域。
在一示例性实施例中,所述二维寻路地图生成模块,用于:
将所述可行走区域划分为若干三角形区域;
将所述三角形区域组合为多边形区域;其中,所述多边形区域的形状为凸多边形。
在一示例性实施例中,所述装置还包括:三维寻路地图生成模块,用于:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
对包含所述场景模型的所述第二体素格子进行标记,其中,标记的所述第二体素格子用于表征所述寻路虚拟对象不可通过;
确定所述第二体素格子之间的父子连接关系和/或邻居连接关系;所述父子连接关系用于表征不同分层的所述第二体素格子之间的连接关系,所述邻居连接关系用于表征同一分层的所述第二体素格子之间的连接关系;
将所述第二体素格子、所述第二体素格子之间所述父子连接关系和/或邻居连接关系,保存为所述游戏场景的三维寻路地图。
在一示例性实施例中,所述游戏场景中包括场景模型,所述三维寻路地图生成模块,用于:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
当所述第二体素格子中包括所述场景模型时,对包括所述场景模型的所述第二体素格子进行体素化,直至所述第二体素格子的体积小于或等于预设体素格子体积。
在一示例性实施例中,所述寻路路径生成模块,用于:
当所述目标寻路地图为二维寻路地图时,在所述二维寻路地图中查找所述起始地点和所述目标地点之间连通的多边形区域;
根据所述起始地点、所述连通的多边形区域中的二维路点和所述目标地点,生成二维寻路路径;其中,所述二维路点为采用指定路径搜索算法根据所述起始地点和所述目标地点计算得到的在所述多边形区域中的位置坐标点,相邻的所述二维路点之间允许直线通过。
在一示例性实施例中,所述寻路路径生成模块,用于:
当所述目标寻路地图为三维寻路地图时,在所述三维寻路地图中查找所述起始地点和所述目标地点之间连通的第二体素格子;
根据所述起始地点、三维路点和所述目标地点,生成三维寻路路径,其中,所述三维路点为相邻的所述连通的第二体素格子相交面的中心点。
在一示例性实施例中,所述装置还包括:寻路有效性确定模块,用于:
确定所述寻路路径为有效路径。
在一示例性实施例中,所述装置还包括:重新执行模块,用于:
当确定所述寻路路径为无效路径时,将所述寻路虚拟对象当前所在的地点作为起始地点,并重新执行所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径。
在一示例性实施例中,所述寻路有效性确定模块,用于:
若所述寻路虚拟对象没有在寻路行走状态,或者,距离上一次生成寻路路径的时间超过预设时间间隔,或者,在目标寻路方式为三维寻路方式时,所述寻路路径中的三维路点为零,或者,在目标寻路方式为三维寻路方式时,所述寻路路径中的三维路点不为零,且所述虚拟寻路对象未到达的三维路点的数量小于预设路点阈值以及未到达的三维路点不包括目标地点,则确定所述寻路路径为无效路径。
在一示例性实施例中,所述寻路有效性确定模块,用于:
在目标寻路方式为二维寻路方式时,所述寻路路径中的所述起始地点或者所述目标地点不在所述二维寻路地图中的多边形区域,或者,在目标寻路方式为二维寻路方式时,所述寻路路径中的多边形区域的数量小于预设数量阈值,且所述目标地点不在所述寻路路径中的最后一个多边形区域中,则确定所述寻路路径为无效路径。
在一示例性实施例中,所述虚拟对象移动模块,用于:
确定所述寻路虚拟对象在所述游戏场景中的当前地点;
确定所述寻路路径中所述当前地点后的下一个路点;
根据所述当前地点和所述下一个路点计算所述寻路虚拟对象的移动速度和移动方向;
控制所述寻路虚拟对象按照所述移动速度和所述移动方向,在所述游戏场景中从所述当前地点移动至所述下一个路点。
在一示例性实施例中,所述虚拟对象移动模块,用于:
当所述寻路虚拟对象移动至所述下一个路点后,若所述下一个路点与所述目标地点之间的距离小于预设路径阈值,则所述寻路虚拟对象结束寻路行走状态。
通过上述方式,本发明实施例可以同时支持寻路虚拟对象在游戏场景中实现多种寻路方式,例如二维寻路方式和三维寻路方式,能够支持游戏内多样化的寻路需求,为玩家带来更多的游戏体验。此外,由于玩家可以控制游戏中的寻路虚拟对象按照自身需求在游戏场景内选择对应的目标寻路方式,并随时在多种寻路方式中进行切换,提升了游戏的表现性和操作性。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述游戏中的寻路方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述游戏中的寻路方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本发明实施例还提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述游戏中的寻路方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
图18为实现本发明各个实施例的一种电子设备的硬件结构示意图。
该电子设备1800包括但不限于:射频单元1801、网络模块1802、音频输出单元1803、输入单元1804、传感器1805、显示单元1806、用户输入单元1807、接口单元1808、存储器1809、处理器1810、以及电源1811等部件。本领域技术人员可以理解,图18中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
应理解的是,本发明实施例中,射频单元1801可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器1810处理;另外,将上行的数据发送给基站。通常,射频单元1801包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元1801还可以通过无线通信系统与网络和其他设备通信。
电子设备通过网络模块1802为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元1803可以将射频单元1801或网络模块1802接收的或者在存储器1809中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元1803还可以提供与电子设备1800执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元1803包括扬声器、蜂鸣器以及受话器等。
输入单元1804用于接收音频或视频信号。输入单元1804可以包括图形处理器(Graphics Processing Unit,GPU)18041和麦克风18042,图形处理器18041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元1806上。经图形处理器18041处理后的图像帧可以存储在存储器1809(或其它存储介质)中或者经由射频单元1801或网络模块1802进行发送。麦克风18042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元1801发送到移动通信基站的格式输出。
电子设备1800还包括至少一种传感器1805,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板18061的亮度,接近传感器可在电子设备1800移动到耳边时,关闭显示面板18061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器1805还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元1806用于显示由用户输入的信息或提供给用户的信息。显示单元1806可包括显示面板18061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板18061。
用户输入单元1807可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元1807包括触控面板18071以及其他输入设备18072。触控面板18071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板18071上或在触控面板18071附近的操作)。触控面板18071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1810,接收处理器1810发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板18071。除了触控面板18071,用户输入单元1807还可以包括其他输入设备18072。具体地,其他输入设备18072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板18071可覆盖在显示面板18061上,当触控面板18071检测到在其上或附近的触摸操作后,传送给处理器1810以确定触摸事件的类型,随后处理器1810根据触摸事件的类型在显示面板18061上提供相应的视觉输出。虽然在图18中,触控面板18071与显示面板18061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板18071与显示面板18061集成而实现电子设备的输入和输出功能,具体此处不做限定。
接口单元1808为外部装置与电子设备1800连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元1808可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备1800内的一个或多个元件或者可以用于在电子设备1800和外部装置之间传输数据。
存储器1809可用于存储软件程序以及各种数据。存储器1809可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1809可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1810是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1809内的软件程序和/或模块,以及调用存储在存储器1809内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器1810可包括一个或多个处理单元;优选的,处理器1810可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1810中。
电子设备1800还可以包括给各个部件供电的电源1811(比如电池),优选的,电源1811可以通过电源管理系统与处理器1810逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,电子设备1800包括一些未示出的功能模块,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (18)
1.一种游戏中的寻路方法,其特征在于,所述游戏中包括游戏场景和寻路虚拟对象,所述方法包括:
响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式;
在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图;
根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径;
控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述游戏场景进行体素化,得到若干第一体素格子;所述第一体素格子具有对应的高度信息;
根据所述第一体素格子的所述高度信息,计算所述第一体素格子之间的高度差值;
将所述高度差值在预设高度阈值内的相邻的所述第一体素格子在所述游戏场景中对应的场景模型的表面,确定为可行走区域;
对所述可行走区域进行划分,得到若干多边形区域;
将所述多边形区域保存为所述游戏场景的二维寻路地图。
3.根据权利要求2所述的方法,其特征在于,所述可行走区域的区域面积大于或等于第一预设区域面积且小于第二预设区域面积,所述第二预设区域面积大于所述第一预设区域面积。
4.根据权利要求2所述的方法,其特征在于,所述可行走区域由原始边界包围形成,所述原始边界中包括原始顶点,在所述对所述可行走区域进行划分,得到若干多边形区域之前,所述方法还包括:
确定所述可行走区域中的区域连接顶点;所述区域连接顶点是衔接相邻所述可行走区域的顶点;
连接相邻的所述区域连接顶点,得到简化边界;
将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离大于预设距离阈值时,将所述目标原始顶点添加到所述简化边界中,并返回执行所述将所述原始边界中与所述简化边界之间距离最远的原始顶点,确定为目标原始顶点;
当所述目标原始顶点与所述简化边界之间的距离小于或等于预设距离阈值时,将所述简化边界确定为目标简化边界;
将所述可行走区域更新为由所述目标简化边界包围形成的区域。
5.根据权利要求2或4所述的方法,其特征在于,所述对所述可行走区域进行划分,得到若干多边形区域,包括:
将所述可行走区域划分为若干三角形区域;
将所述三角形区域组合为多边形区域;其中,所述多边形区域的形状为凸多边形。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
对包含所述场景模型的所述第二体素格子进行标记,其中,标记的所述第二体素格子用于表征所述寻路虚拟对象不可通过;
确定所述第二体素格子之间的父子连接关系和/或邻居连接关系;所述父子连接关系用于表征不同分层的所述第二体素格子之间的连接关系,所述邻居连接关系用于表征同一分层的所述第二体素格子之间的连接关系;
将所述第二体素格子、所述第二体素格子之间所述父子连接关系和/或邻居连接关系,保存为所述游戏场景的三维寻路地图。
7.根据权利要求6所述的方法,其特征在于,所述游戏场景中包括场景模型,所述对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子,包括:
对所述游戏场景按照不同的分层进行体素化,得到各个分层对应的若干第二体素格子;
当所述第二体素格子中包括所述场景模型时,对包括所述场景模型的所述第二体素格子进行体素化,直至所述第二体素格子的体积小于或等于预设体素格子体积。
8.根据权利要求2所述的方法,其特征在于,所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径,包括:
当所述目标寻路地图为二维寻路地图时,在所述二维寻路地图中查找所述起始地点和所述目标地点之间连通的多边形区域;
根据所述起始地点、所述连通的多边形区域中的二维路点和所述目标地点,生成二维寻路路径;其中,所述二维路点为采用指定路径搜索算法根据所述起始地点和所述目标地点计算得到的在所述多边形区域中的位置坐标点,相邻的所述二维路点之间允许直线通过。
9.根据权利要求6所述的方法,其特征在于,所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径,包括:
当所述目标寻路地图为三维寻路地图时,在所述三维寻路地图中查找所述起始地点和所述目标地点之间连通的第二体素格子;
根据所述起始地点、三维路点和所述目标地点,生成三维寻路路径,其中,所述三维路点为相邻的所述连通的第二体素格子相交面的中心点。
10.根据权利要求1所述的方法,其特征在于,在所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动之前,所述方法还包括:
确定所述寻路路径为有效路径。
11.根据权利要求1所述的方法,其特征在于,在所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动之前,所述方法还包括:
当确定所述寻路路径为无效路径时,将所述寻路虚拟对象当前所在的地点作为起始地点,并重新执行所述根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
若所述寻路虚拟对象没有在寻路行走状态,或者,距离上一次生成寻路路径的时间超过预设时间间隔,或者,在目标寻路方式为三维寻路方式时,所述寻路路径中的三维路点为零,或者,在目标寻路方式为三维寻路方式时,所述寻路路径中的三维路点不为零,且所述虚拟寻路对象未到达的三维路点的数量小于预设路点阈值以及未到达的三维路点不包括目标地点,则确定所述寻路路径为无效路径。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
在目标寻路方式为二维寻路方式时,所述寻路路径中的所述起始地点或者所述目标地点不在所述二维寻路地图中的多边形区域,或者,在目标寻路方式为二维寻路方式时,所述寻路路径中的多边形区域的数量小于预设数量阈值,且所述目标地点不在所述寻路路径中的最后一个多边形区域中,则确定所述寻路路径为无效路径。
14.根据权利要求1所述的方法,其特征在于,所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动,包括:
确定所述寻路虚拟对象在所述游戏场景中的当前地点;
确定所述寻路路径中所述当前地点后的下一个路点;
根据所述当前地点和所述下一个路点计算所述寻路虚拟对象的移动速度和移动方向;
控制所述寻路虚拟对象按照所述移动速度和所述移动方向,在所述游戏场景中从所述当前地点移动至所述下一个路点。
15.根据权利要求14所述的方法,其特征在于,所述控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动,还包括:
当所述寻路虚拟对象移动至所述下一个路点后,若所述下一个路点与所述目标地点之间的距离小于预设路径阈值,则所述寻路虚拟对象结束寻路行走状态。
16.一种游戏中的寻路装置,其特征在于,所述游戏中包括游戏场景和寻路虚拟对象,所述装置包括:
寻路响应模块,用于响应于寻路指令,确定所述寻路虚拟对象在所述游戏场景中的起始地点和目标地点,以及所述寻路虚拟对象在所述游戏场景中的目标寻路方式;
寻路地图加载模块,用于在所述游戏场景中加载所述目标寻路方式对应的目标寻路地图;
寻路路径生成模块,用于根据所述起始地点、所述目标地点和所述目标寻路地图生成寻路路径;
虚拟对象移动模块,用于控制所述寻路虚拟对象基于所述寻路路径在所述游戏场景中移动。
17.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如权利要求1-15任一项所述的方法。
18.一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-15任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211128479.8A CN115501596A (zh) | 2022-09-16 | 2022-09-16 | 游戏中的寻路方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211128479.8A CN115501596A (zh) | 2022-09-16 | 2022-09-16 | 游戏中的寻路方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115501596A true CN115501596A (zh) | 2022-12-23 |
Family
ID=84503056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211128479.8A Pending CN115501596A (zh) | 2022-09-16 | 2022-09-16 | 游戏中的寻路方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115501596A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116764225A (zh) * | 2023-06-09 | 2023-09-19 | 广州三七极梦网络技术有限公司 | 一种高效寻路的处理方法、装置、设备及介质 |
CN117839217A (zh) * | 2023-06-29 | 2024-04-09 | 高世超 | 网络游戏区块链路地图时空高效路径搜索方法 |
WO2024156218A1 (zh) * | 2023-01-28 | 2024-08-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机及可读存储介质 |
-
2022
- 2022-09-16 CN CN202211128479.8A patent/CN115501596A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024156218A1 (zh) * | 2023-01-28 | 2024-08-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机及可读存储介质 |
CN116764225A (zh) * | 2023-06-09 | 2023-09-19 | 广州三七极梦网络技术有限公司 | 一种高效寻路的处理方法、装置、设备及介质 |
CN116764225B (zh) * | 2023-06-09 | 2024-08-27 | 广州三七极梦网络技术有限公司 | 一种高效寻路的处理方法、装置、设备及介质 |
CN117839217A (zh) * | 2023-06-29 | 2024-04-09 | 高世超 | 网络游戏区块链路地图时空高效路径搜索方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11221726B2 (en) | Marker point location display method, electronic device, and computer-readable storage medium | |
US11565181B2 (en) | Virtual object control method and apparatus, computer device, and storage medium | |
CN115501596A (zh) | 游戏中的寻路方法、装置、电子设备及可读存储介质 | |
CN109962939B (zh) | 位置推荐方法、装置、服务器、终端及存储介质 | |
JP7026819B2 (ja) | カメラの位置決め方法および装置、端末並びにコンピュータプログラム | |
EP3832605B1 (en) | Method and device for determining potentially visible set, apparatus, and storage medium | |
KR102109585B1 (ko) | 건물 내 위치 기반 서비스 구현 방법, 저장 매체, 서버 및 전자 장치 | |
CN107952242B (zh) | 一种终端软件体验方法、终端及计算机可读存储介质 | |
JP2022505457A (ja) | 仮想環境において建築物を建設する方法、装置、機器及びプログラム | |
JP2024509064A (ja) | 位置マークの表示方法及び装置、機器並びにコンピュータプログラム | |
JP7483056B2 (ja) | 選択ターゲットの決定方法、装置、機器、及びコンピュータプログラム | |
CN112699208B (zh) | 地图寻路方法、装置、设备及介质 | |
CN112915541B (zh) | 跳点搜索方法、装置、设备及存储介质 | |
TW202243713A (zh) | 虛擬物件的控制方法與裝置、電子設備、非臨時性電腦可讀存儲介質及電腦程式產品 | |
CN111984755B (zh) | 确定目标停车点的方法、装置、电子设备及存储介质 | |
CN116955428A (zh) | 基于路线的天气显示方法、装置、计算机设备及存储介质 | |
CN113144595B (zh) | 虚拟道路的生成方法、装置、终端及存储介质 | |
EP4006845B1 (en) | Map element adding method, device, terminal, and storage medium | |
CN113101664B (zh) | 寻路指示方法、装置、终端和存储介质 | |
CN116402880B (zh) | 含油面积确定方法、装置、设备及存储介质 | |
KR20210057605A (ko) | 게임 콘텐츠 생성 방법 및 장치 | |
CN115869624B (zh) | 游戏区域的标记方法、装置、设备及存储介质 | |
CN113384902A (zh) | 虚拟对象的移动控制方法、装置、设备及存储介质 | |
CN117782115B (zh) | 自动驾驶路由的生成方法 | |
JP7465976B2 (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 |