WO2018130135A1 - 一种控制模拟对象寻路的方法、装置及服务器 - Google Patents
一种控制模拟对象寻路的方法、装置及服务器 Download PDFInfo
- Publication number
- WO2018130135A1 WO2018130135A1 PCT/CN2018/071882 CN2018071882W WO2018130135A1 WO 2018130135 A1 WO2018130135 A1 WO 2018130135A1 CN 2018071882 W CN2018071882 W CN 2018071882W WO 2018130135 A1 WO2018130135 A1 WO 2018130135A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- path
- finding
- target
- simulation object
- unit
- Prior art date
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
-
- 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
本申请要求于2017年1月13日提交中国专利局、申请号为2017100261664、发明名称为“一种控制模拟对象寻路的方法及服务器”;2017年1月24日提交中国专利局、申请号为2017100602118、发明名称为“一种控制对象的方法及装置”;2017年3月24日提交中国专利局、申请号为2017101842049、发明名称为“一种寻路方法以及装置”;2017年4月27日提交中国专利局、申请号为2017102880071、发明名称为“多单位寻路方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本发明涉及互联网技术领域,尤其涉及一种控制模拟对象寻路的方法、装置及服务器。
随着互联网技术的不断发展,体验大型多人在线角色扮演游戏(英文全称:Massive Multiplayer Online Role-Playing Game,英文缩写:MMORPG)游渐渐成为人们热衷的娱乐项目。在MMORPG中,为了增加趣味性,往往会在游戏中增加非玩家控制的活动实体(英文全称:Non-Player Controlled Character,英文缩写:NPC),模拟玩家的行为对游戏中的玩家进行攻击、追击或者执行游戏内的逻辑行为。
现有的NPC寻路主要包括三种方式:
第一种,基于预设NPC路径的寻路机制,即所有NPC的行走路径都是被预先设计好的,为每个NPC设计行走的路径点,所有同类的NPC按照预先规划好的线路进行行走。然而这种NPC的行为通过配置被固化了,由于NPC对需要攻击的玩家有追击状态,且玩家的行为不可预测,所以通常NPC只能闪现或者无视地形直接返回,这显然会影响MMORPG的互动性以及合理性。
第二种,基于预设路径点的寻路机制,路径点之间两两直线可达,在地图上NPC可能通过的点附近预先配置一些路径点,当NPC偏离预设路径时,先直线移动到最近的路径点处,然后再从当前路径点移动到下一个路径点。然而每个地图都要维护预设路径点信息,使得维护成本高,而且容易出错。
第三种,基于A*的寻路机制,可以智能地绕开地图中所有障碍物,从起 始点开始,对路径上每个已探测点计算该点的开销和到达终点的估计开销,并从所有已探测点中选择最优路径作为下一个路径点,如此循环直至到达最优路径点。然而A*算法的搜索开销很大,占用服务器较多计算资源。
在交互式应用的应用界面中,一般将应用界面划分为多个格子。如果玩家走到某个格子,则标记此格子被占据,并实时更新玩家所在的格子,那么其它玩家便无法通过被玩家占据的该格子。
这种机制中,玩家寻路时,每次碰到路线上有阻挡格子时都需要重新寻路,需要频繁的检查被阻挡的格子,这样会频繁的触发寻路算法,效率较低。特别是应用界面有很多玩家在寻路时,会导致寻路被频繁打断和寻路失败。
A*搜寻算法俗称A星算法,这是一种在图形平面上从多个节点的路径中求出最低通过成本的算法。常用于游戏中的玩家角色(英文全称:Player Character,缩写:PC)的移动计算,或线上游戏的机器人(robot)的移动计算上。
现有技术中存在导航网格寻路技术,是将游戏地图中的行走区域划分成若干导航网格,然后使用A星算法实现寻路。该A星算法将寻路区域分成多个相连的多边形网格(例如三角形),每个多边形网格是寻路的节点。从起点到目标点的导航网格寻路,就是计算从起点所在的网格,到目标点所在的网格,中间需要经过哪些网格路径。想要得到这些网格路径列表,现有技术中一般采用A星算法计算出需要经过的导航网格路径列表,得出需要经过的导航网格路径列表后,再计算通行的路径点列表,将路径点连线,即是最终确定出的寻路路径。
然而,在现有技术中每次进行寻路都会应用A星算法,由于A星算法比较耗时,导致计算寻路路径的过程比较耗时。
在角色互动类应用程序中,应用程序中通常会包括多个在地图中可以移动的单位。比如,游戏地图中可以包括多个可以移动的士兵等等。
相关方案中,为了使得各个单位能够到达指定的位置,终端会对每个单位分别进行自动寻路,并控制各个单位沿着自动寻路得到的路径移动。
在单位的数量较多时,上述方案中终端的寻路效率较低。
发明内容
本发明实施例提供了一种控制模拟对象寻路的方法及服务器,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
有鉴于此,本发明第一方面提供一种控制模拟对象寻路的方法,包括:
当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
本发明第二方面提供服务器,包括:
第一获取模块,用于当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
第一检测模块,用于根据所述第一获取模块获取的所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
控制模块,用于若所述第一检测模块检测到存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,提供了一种控制模拟对象寻路的方法,具体为当服务器接收到第一模拟对象触发的交互指令时,可以获取第一模拟对象的移动路径,然后服务器根据第一模拟对象的移动路径,检测预置路径信息集合中是否存在与移动路径匹配的寻路路径,若存在,则控制第二模拟对象按照寻路路径向所述第一模拟对象移动。通过上述方式,第二模拟对象的路径可以与第一模拟对象的移动路径达到同步,从而提升方案是合理性,此外,服务器无需维护交互式应用地图中的所有路径点信息,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时, 服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
本发明提供了一种控制对象的方法及装置,能够解决现有技术中终端设备控制对象寻路的效率较低的问题。
第一方面提供一种控制对象的方法,该方法包括:
接收用户针对第一模拟对象的操作指令;
根据所述操作指令控制第一模拟对象向第二模拟对象所在的位置移动,所述第二模拟对象具有一个控制范围,所述第二模拟对象的控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域;
当所述第一模拟对象在所述第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。
本发明第二方面提供一种控制对象的装置,具有实现对应于上述第一方面提供的控制对象的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述装置包括:
收发模块,用于接收用户针对第一模拟对象的操作指令;
控制模块,用于根据所述收发模块接收到的所述操作指令控制所述第一模拟对象向第二模拟对象所在的位置移动,所述第二模拟对象具有一个控制范围,所述第二模拟对象的控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域;当所述第一模拟对象在所述第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。
相较于现有技术,本发明提供的方案中,通过对应用界面上的对象设置控制范围,控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域。使得在控制第一模拟对象寻路到第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。通过这种子控制区域的划分机制,使得寻路第二模拟对象的各模拟对象能够有序的选择到第二模拟对象的控制范围内的某个子控制区域,而不会与其他对寻路第二模拟对象的对象造成竞争,也无需另外启动寻路,能够有效的 提高寻路的效率和准确率,一定程度上也减少频繁启动寻路算法带来的功耗。
本发明实施例提供了一种寻路方法以及装置,用于根据模拟对象的起始点与目标点之间所处的寻路路径,采用对应的寻路策略,在包含多种寻路路径的游戏场景地图的情况下,可以有效地减少在寻路过程中使用A星算法,从而减少计算寻路路径的时间。
有鉴于此,本发明实施例第一方面提供了一种寻路方法,该寻路方法包括:
确定模拟对象的起始点以及目标点;
根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径;
根据所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。
本发明实施例第二方面提供了一种寻路装置,包括:
第一确定模块,用于确定模拟对象的起始点以及目标点;
第二确定模块,用于根据所述第一确定模块确定的所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径;
寻路模块,用于根据所述第二确定模块确定的所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。
从以上技术方案可以看出,本发明实施例提出了一种寻路方法,确定模拟对象的起始点以及目标点,根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径,根据所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。即在本发明实施例中,不是采用的一刀切的方式,即不是每次寻路,都会应用A星算法这一寻路策略进行寻路,而是根据模拟对象的起始点与目标点之间所处的寻路路径,在采用寻路路径的类型对应的寻路策略,在包含多种寻路路径的地图的情况下,可以有效地减少在寻路过程中使用A星算法,从而减少计算寻路路径的时间。
为了解决现有技术中存在的问题,本发明实施例提供了一种多单位寻路方法及装置。技术方案如下:
根据本发明实施例的第一方面,提供一种多单位寻路方法,该方法包括:
对单位群组进行自动寻路,生成沿着地图中的目标路径移动的寻路向导;所述单位群组中包括n个单位,n为大于1的整数,所述单位是指在界面的地图中可以移动的模拟对象,所述寻路向导是指用于引导至少一个单位按照计算的寻路路径移动的对象,所述寻路向导用于确定地图中从起始点至结束点之间的移动路径;
控制所述单位群组中的单位跟随所述寻路向导移动;
当所述单位群组中的单位与所述地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制所述单位群组中的单位跟随所述避让向导绕过所述障碍物移动。
根据本发明实施例的第二方面,提供一种多单位寻路装置,该装置包括:
生成模块,用于对单位群组进行自动寻路,生成沿着地图中的目标路径移动的寻路向导;所述单位群组中包括n个单位,n为大于1的整数,所述单位是指在界面的地图中可以移动的模拟对象,所述寻路向导是指用于引导至少一个单位按照计算的寻路路径移动的对象,所述寻路向导用于确定地图中从起始点至结束点之间的移动路径;
控制模块,用于控制所述单位群组中的单位跟随所述寻路向导移动;
移动模块,用于在所述单位群组中的单位与所述地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制所述单位群组中的单位跟随所述避让向导绕过所述障碍物移动。
本发明实施例提供的技术方案带来的有益效果是:
通过将n个单位作为一个单位群组,生成该单位群组的寻路向导,控制单位群组中的单位跟随寻路向导移动,并在单位群组中的单位与地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制单位群组中的单位跟随避让向导绕过障碍物移动;也即通过将多个单位作为一个整体进行自动寻路,进而只有在与障碍物之间的距离较小时生成避让向导,解决了相关技术中分别对每个单位进行寻路时,寻路效率较低的问题;达到了可以提高寻路效率的效果。
图1为本发明实施例中控制模拟对象寻路的架构图;
图2为本发明实施例中控制模拟对象寻路的方法一个实施例示意图;
图3为本发明实施例中基于路径池的寻路流程示意图;
图4为本发明应用场景中的NPC配置示意图;
图5为本发明应用场景中基于路径池的返回寻路流程示意图;
图6为本发明实施例中服务器一个实施例示意图;
图7为本发明实施例中服务器另一个实施例示意图;
图8为本发明实施例中服务器另一个实施例示意图;
图9为本发明实施例中服务器另一个实施例示意图;
图10为本发明实施例中服务器另一个实施例示意图;
图11为本发明实施例中服务器另一个实施例示意图;
图12为本发明实施例中服务器另一个实施例示意图;
图13为本发明实施例中服务器另一个实施例示意图;
图14为本发明实施例中服务器一个结构示意图;
图15为本实施例中轮盘的一种结构示意图;
图16为本实施例中控制对象的一种流程示意图;
图17为现有机制中两个对象产生竞争的一种示意图;
图18为本实施例中通过轮盘避免竞争的一种示意图;
图19为本实施例中两个对象产生竞争的另一种示意图;
图20为本实施例中通过轮盘避免竞争的另一种示意图;
图21为本实施例中通过轮盘选择子控制区域后的各虚拟角色散开的示意图;
图22为本实施例中控制对象的装置的一种结构示意图;
图23为本实施例中控制对象的手机的一种结构示意图;
图24为本发明实施例一种寻路方法中一个游戏场景地图示意图;
图25为本发明实施例一种寻路方法中另一游戏场景地图示意图;
图26为本发明实施例一种寻路方法中管道寻路路径一个索引方式示意图;
图27为本发明实施例一种寻路方法另一游戏场景地图示意图;
图28为本发明实施例一种寻路方法一个实施例流程示意图;
图29为本发明实施例一种寻路方法另一实施例流程示意图;
图30为本发明实施例一种寻路装置另一实施例结构示意图;
图31为本发明实施例一种寻路装置另一实施例结构示意图;
图32是本发明一个实施例提供的多单位寻路方法的流程图;
图33是本发明一个实施例提供的多单位寻路方法中确定的寻路向导的位置的示意图;
图34是本发明一个实施例提供的多单位寻路方法中与障碍物碰撞之后的移动方向的示意图;
图35是本发明一个实施例提供的多单位寻路方法中与障碍物碰撞后的各种可能的场景的示意图;
图36是本发明一个实施例提供的多单位寻路方法中与障碍物碰撞后的各种可能的场景的再一种示意图;
图37是本发明一个实施例提供的多单位寻路方法中确定的分散向导的位置的示意图;
图38是本发明一个实施例提供的多单位寻路方法中分散向导移动的一种可能的示意图;
图39是本发明一个实施例提供的多单位寻路方法中j个单位的各个单位的移动轨迹的示意图;
图40是本发明一个实施例提供的多单位寻路装置的示意图;
图41是本发明一个实施例提供的终端的示意图。
本发明实施例提供了一种控制模拟对象寻路的方法及服务器,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里 描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本发明应用于控制模拟对象寻路系统,请参阅图1,图1为本发明实施例中控制模拟对象寻路的架构图,如图1所示,在控制模拟对象寻路系统中包一台服务器以及多部终端,其中,图中的两个终端仅为一个示意,并不应理解为对本发明的限定,图中的服务器主要为交互式应用服务器,该交互式应用具体可以是MMORPG。对于不同的MMORPG而言,其角色以及MMORPG内数据都是相互独立的,一般情况下也就为每个MMORPG单独配备一台数据库服务器,以减轻数据库的压力。所以,整体的服务器结构应该是一个大区有一台帐号交互式应用服务器,所有的登录服都连接到这里。而每个MMORPG都有自己的数据库服务器,只允许与本MMORPG内的服务器连接。
MMORPG中分为客户端和服务器两部分,客户端安装于终端。玩家从客户端通过互联网连接,登陆服务器端后才能进行游戏。玩家的资料保存在服务器端。游戏的过程,是玩家扮演的角色和其他玩家控制的角色在网络虚拟空间中实时互动。而NPC则往往是在游戏中提供特殊服务的人物,如销售虚拟物品,提供任务等。游戏开发商或者代理商提供服务器供玩家游戏,负责管理游戏中的虚拟世界,并不断为游戏做出更新,以便留住玩家以及吸引其他人来玩这款游戏。
NPC分为剧情NPC和功能性NPC,有时这两种类型的NPC也会合二为一,即一个NPC同时具备这两种NPC的特征。剧情NPC,顾名思义是游戏剧情故事中必不可少的组成部分,用于推动整个剧情情节的发展。功能性NPC包括服务型NPC以及可战斗NPC,服务型NPC为游戏中的玩家角色提供各种服务。可战斗NPC具体还可以分为玩家对战类NPC,击杀这类NPC后可能获得荣誉的NPC,还有一种为玩家对战环境类NPC,击杀这类NPC后可能获得经验值的NPC。本发明主要涉及的NPC为可战斗NPC。
下面将从服务器端的角度,对本发明中控制模拟对象寻路的方法进行介 绍,请参阅图2,本发明实施例中控制模拟对象寻路的方法一个实施例包括:
101、当接收到第一模拟对象触发的交互指令时,获取第一模拟对象的移动路径;
本实施例中,在MMORPG进行时,第一模拟对象可以对第二模拟对象进行交互操作,并生成相应的交互指令,服务器收到该交互指令后,即需要获取第一模拟对象的移动路径。
其中,第一模拟对象通常是指玩家,而第二模拟对象则是NPC,在MMORPG中,玩家与NPC之间可以进行交互操作。交互操作包括但不仅限于攻击操作、追逐操作、买卖操作和询问操作,根据不同的操作内容生成相应的交互操作指令。第一模拟对象的移动路径即为玩家在与NPC进行交互后的移动路径。
102、根据第一模拟对象的移动路径,检测预置路径信息集合中是否存在与移动路径匹配的第一寻路路径;
本实施例中,服务器在获取到玩家的移动路径后,若第二模拟对象与第一模拟对象之间存在障碍物,则需要从预置路径信息集合中检测是否存在于该移动路径匹配的第一寻路路径。
如果从第二模拟对象到第一模拟对象之间不存在障碍物,即直线可达时,就无需从预置路径信息集合中查找相应的第一寻路路径,而是直接向第一模拟对象移动。
其中,预置路径信息集合也称为“路径池”,包含了至少一条已经被存储的寻路路径,且被存储的寻路路径是根据多名玩家的历史数据生成的,例如,有95%以上的玩家在碰到某个NPC后会选择一条向上的路径逃脱,于是这条路径就可以认为是高概率寻路路径,即NPC会沿着这条寻路路径追赶玩家一段时间后再返回。
需要说明的是,在对玩家的历史数据进行分析后,可将大于60%的移动路径作为高概率路径,在实际应用中,还能够按照需要设定高概率路径的概率门限值,此处不作限定。
103、若存在第一寻路路径,则控制第二模拟对象按照第一寻路路径向第一模拟对象移动。
本实施例中,如果服务器在预置路径信息集合中找到的与玩家移动路径匹配的第一寻路路径,则可以控制NPC按照第一寻路路径向玩家移动。
本发明实施例中,提供了一种控制模拟对象寻路的方法,具体为当服务器接收到第一模拟对象触发的交互指令时,可以获取第一模拟对象的移动路径,然后服务器根据第一模拟对象的移动路径,检测预置路径信息集合中是否存在与移动路径匹配的寻路路径,若存在,则控制第二模拟对象按照寻路路径向所述第一模拟对象移动。通过上述方式,第二模拟对象的路径可以与第一模拟对象的移动路径达到同步,从而提升方案是合理性,此外,服务器无需维护第二模拟对象的所有路径点信息,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
可选地,在上述图2对应的实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第一个可选实施例中,检测预置路径信息集合中是否存在与移动路径匹配的第一寻路路径之后,还可以包括:
若不存在第一寻路路径,则确定与移动路径匹配的第二寻路路径。
本实施例中,如果服务器没有从预置路径信息集合中检测到与玩家移动路径相匹配的第一寻路路径,则开始采用其他搜索算法来获取与玩家移动路径匹配的第二寻路路径。
具体地,为了得到更优的第二寻路路径,通常情况下,可以在MMORPG的地图范围内执行A*搜索算法。A*搜索算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。
A*搜索算法的公式表示为f(n)=g(n)+h(n)。
其中,f(n)表示从初始状态经由状态n到目标状态的代价估计,g(n)表示在状态空间中从初始状态到状态n的实际代价,h(n)表示从状态n到目标状态的最佳路径的估计代价。对于路径搜索问题,状态就是地图范围中的节点,代价就是距离。
为了找到最短路径,关键在于估价函数f(n)的选取,或者是h(n)的选取, 如果以d(n)表达状态n到目标状态的距离,那么h(n)的选取有如下三种情况:
第一种,如果h(n)≤d(n),这种情况下,搜索的点数多,搜索范围大,效率低,但能得到最优解。
第二种,如果h(n)=d(n),即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行,此时的搜索效率是最高的。
第三种,如果h(n)>d(n),则搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。
需要说明的是,在实际应用中,除了能够采用A*搜索算法计算得到第二寻路路径,还可以采用如局部择优搜索法、优先搜索法、预设路径法或者预设路径节点法等方式计算第二寻路路径,此处不作限定。
其次,本发明实施例中,服务器在检测到预置路径信息集合中不存在与移动路径匹配的第一寻路路径时,则开始执行其他的搜索算法,以计算得到相应的第二寻路路径。通过上述方式,可以提升MMORPG的操作可行性,也就是说,即便预置路径信息集合中没有相应的寻路路径,仍旧可以保证NPC在合理的区域内对玩家进行追踪,从而提升方案的可操作性。
可选地,在上述图2对应的第一个实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第二个可选实施例中,确定与移动路径匹配的第二寻路路径之后,还可以包括:
获取第二寻路路径的开销数据,开销数据用于表示计算资源当前的使用量,所述计算资源是指服务器中用于计算寻路路径的资源;
判断第二寻路路径的开销数据是否大于目标开销门限;
若第二寻路路径的开销数据大于目标开销门限,则将第二寻路路径加入至预置路径信息集合中;
若第二寻路路径的开销数据不大于目标开销门限,则根据第二寻路路径的开销数据更新服务器本地存储的历史开销数据,历史开销数据用于更新目标开销门限。
本实施例中,将介绍一种构建预置路径信息集合的方式,即说明如何构建路径池。
具体地,服务器在采用搜索算法计算得到第二寻路路径之后,首先需要对 该条第二寻路路径进行开销数据的判断,开销数据包括但不仅限于遍历次数和单次寻路时间,在本方案中,区域间寻路的开销数据计算公式还可以为,区域间寻路的开销数据=单次寻路开销×寻路调用次数。
得到开销数据后,判断该开销数据是否大于目标开销门限,若是,则说明这条第二寻路路径开销数据较大,如果多次重复计算这条路径则会导致服务器计算资源的浪费,于是将该第二寻路路径加入到预置路径信息集合中,也就是之后不再进行重复计算即可调用此路径。如果第二寻路路径的开销数据不大于目标开销门限,则还可以在服务器后台更新历史开销数据。
假设历史开销数据的平均值为90,且设定目标开销门限比历史开销数据的平均值高出10,那么目标开销门限可以为100。后续得到第二寻路路径的开销数据为80,将其与历史开销数据进行求平均计算后得到新的均值X,采用A寻路路径的开销数据为50,将其与历史开销数据进行求平均计算后得到新的均值Y,采用B寻路路径的开销数据为20,将其与历史开销数据进行求平均计算后得到新的均值Z,于是下一轮的目标开销门限则可以更新为80X+50Y+20Z。
再次,本发明实施例中,介绍了一种根据路径开销数据来判断是否可以加入预置路径信息集合的方法,即当路径开销数据较大时,将这条路径存储至预置路径信息集合中。通过上述方式,可以使得预置路径信息集合中存储相对而言开销数据较大的寻路路径,以此在采用这类寻路路径时无需服务器再次执行路径搜索算法,而是直接提取相应的路径即可,从而缓解了服务器的计算压力,避免了由于开销数据较大而带来过高的计算资源耗费的情况,提升了方案的实用性。
可选地,在上述图2对应的第一个实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第三个可选实施例中,确定与移动路径匹配的第二寻路路径之后,所述方法还包括:
获取第二寻路路径的热度数据,第二寻路路径的热度数据用于表示第二寻路路径的使用频率,其他寻路路径的热度数据同理,不作赘述;
判断第二寻路路径的热度数据是否大于目标热度门限;
若第二寻路路径的热度数据大于目标热度门限,则将第二寻路路径加入至 预置路径信息集合中;
若第二寻路路径的热度数据不大于目标热度门限,则根据第二寻路路径的热度数据更新历史热度数据,历史热度数据用于更新目标热度门限。
本实施例中,服务器在采用搜索算法计算得到第二寻路路径之后,首先需要对该条第二寻路路径进行热度数据的判断,热度数据包括但不仅限于一段时间内不同玩家选择这条第二寻路路径的次数,且第二寻路路径可以是两个可达区域之间形成的路径线。
具体地,得到热度数据后,判断该热度数据是否大于目标热度门限,若是,则说明这条第二寻路路径的热度数据较大,如果多次重复计算这条路径则会导致服务器计算资源的浪费,于是将该第二寻路路径加入到预置路径信息集合中,也就是之后不再进行重复计算即可调用此路径。如果第二寻路路径的热度数据不大于目标热度门限,则还可以在服务器后台更新目标热度门限。
假设目标热度门限为80%,第二寻路路径的热度数据为1分钟内10个玩家中有5个玩家也选择了第二寻路路径,即50%,于是将第二寻路路径的热度数据更新至历史热度数据,可以根据历史热度数据灵活地更新目标热度门限,这样可以使得目标热度门限的确定更为合理化。
为了便于说明,请参阅图3,图3为本发明实施例中基于路径池的寻路流程示意图,如图所示:
步骤201中,MMORPG的开启;
步骤202中,首先玩家在MMORPG地图中的一个区域看到一个可战斗NPC,于是玩家向该NPC发动了攻击,此时触发了NPC的寻路流程;
步骤203中,当玩家发现这个NPC并不容易击倒时,开始往一个方向逃跑,而这个时候,NPC还会追击该玩家一段时间。服务器先检测后台存储的路径池中是否包括与玩家逃跑路线最接近的路径,如果存在,则跳转至步骤207,并且采用该路径追击玩家,如果不存在,则进入步骤204。
步骤204中,在路径池中不存在相应的路径时,服务器可以采用A*搜索算法,计算地图范围内的追击路径;
步骤205中,判断这条计算出来的路径是否需要加入路径池中,若是,则进入步骤206,反之,则进入步骤207;
步骤206中,将这条路径加入路径池后,即可淘汰该路径,这是因为路径池已经记录了该路径,后续再遇到类似的玩家逃跑路线时,就直接从路径池中提取这条追击路径即可;
步骤207中,根据路径池中调用路径的情况以及将新路径加入路径池的情况,实时更新路径热度和/或开销数据;
步骤208中,至此,完成基于路径池的寻路流程。
再次,本发明实施例中,介绍了一种根据路径选择热度来判断是否可以加入预置路径信息集合的方法,即当路径选择热度较高时,将这条路径存储至预置路径信息集合中。通过上述方式,可以使得预置路径信息集合中存储相对而言选择热度较高的寻路路径,以此在采用这类寻路路径时无需服务器再次执行路径搜索算法,而是直接提取相应的路径即可,从而缓解了服务器的计算压力,避免了由于开销数据较大而带来过高的计算资源耗费的情况,提升了方案的灵活性和实用性。
可选地,在上述图2对应的第一个实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第四个可选实施例中,确定与移动路径匹配的第二寻路路径,可以包括:
获取第一模拟对象当前的第一位置以及第二模拟对象当前的第二位置;
根据第一位置与第二位置确定第二模拟对象的第一目标移动位置,第一目标移动位置与第一位置之间的距离小于预置门限,第二位置与第一目标移动位置构成第二寻路路径。
本实施例中,将说明如何根据第一模拟对象的移动位置确定第二模拟对象的移动位置。
具体地,首先服务器获取第一模拟对象,即玩家的第一位置,假设第一位置为A点,同时服务器还需要获取第二模拟对象,即NPC的第二位置,假设第二位置为B点。服务器确定NPC将要向A点靠近,但是并非与A点重合,在A点周边还可以存在多个可站立点,这些点均能作为NPC将要达到的第一目标移动位置,即C点。当然,在实际应用中,C点距离A点之间的距离小于预置门限,也就是不能距离A点太远,否则就无法实现追击的效果。服务器控制NPC从B点移动至C点,直线BC就构成了与玩家移动路径匹配的第 二寻路路径。
再次,本发明实施例中,介绍了一种服务器确定第二寻路路径的具体实现方式,即根据第一模拟对象的移动位置来部署第二模拟对象的移动位置,多个位置最后构成一条较优的第二寻路路径。通过上述方式,使得第二模拟对象能够实时地根据玩家的移动路径进行路径规划,并且得到的第二寻路路径更贴近真实情况,使得第二模拟对象可以准确地向玩家靠近,从而提升方案的可行性。
可选地,在上述图2对应的第四个实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第五个可选实施例中,根据第一位置确定第二模拟对象的目标移动位置之后,还可以包括:
当第一模拟对象发生移动时,获取第一模拟对象的第三位置以及第二模拟对象的第四位置;
根据第三位置与第四位置确定第二模拟对象的第二目标移动位置,第二目标移动位置与第三位置之间的距离小于预置门限,第二位置与第一目标移动位置更新第二寻路路径。
本实施例中,在图2对应的第四个实施例中说明NPC从B点移动至C点的方式,而在实际应用中,NPC追击玩家的过程是具有连贯性的,也就是说,玩家还会继续从A点移动至其他位置。
具体地,当服务器检测到玩家从A点开始移动时,需要获取玩家的第三位置,即D点,而此时的NPC可能还在直线BC的某个点上,并未到达C点,于是假设此时的NPC位置点为E点,则服务器又进一步确定NPC需要从E点向D点靠近。同样地,E点与D点未必重合,在D点周边还可以存在多个可站立点,这些点均能作为NPC将要达到的第二目标移动位置,即F点。当然,在实际应用中,F点距离D点之间的距离也小于预置门限,也就是不能距离D点太远,否则就无法实现追击的效果。服务器控制NPC从E点移动至F点,从B点经过E点到达F点的路径即构成了与玩家移动路径匹配的第二寻路路径。
进一步地,本发明实施例中,如果第一模拟对象继续移动,则服务器也将控制第二模拟对象紧随其后,继续与第一模拟对象靠近,并且实时地更新第二寻路路径。通过上述方式,解决在第一模拟对象持续移动的情况下,如何构建 第二寻路路径的问题,从而提升了方案的灵活性和实用性。
可选地,在上述图2对应的第四或第五个实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第六个可选实施例中,还可以包括:
分别将第二位置、第一目标移动位置以及第二目标移动位置依次存储于路径堆栈;
检测从第二位置到第二目标移动位置之间是否满足直线移动条件,若是,则从路径堆栈中清除第一目标移动位置。
本实施例中,上述介绍的实施例中可以得到,每次第二模拟对象移动时都会通过若干个位置点,本方案需要将这些位置点都进行相应的记录。
具体为,在服务器的路径堆栈中会存储一系列的位置点,但是这些位置点需要满足直线可达的条件。假设NPC一共走过了10个位置点,分别按照经过的顺序记录如下表1所示:
表1
原始路径堆栈 |
001 |
002 |
003 |
003 |
004 |
005 |
006 |
007 |
008 |
009 |
010 |
然后,并非所有位置点之间都是直线可达的,假设位置点001与位置点003所构成的直线上刚好存在位置点002,于是认为位置点002可以忽略,假设位置点005到位置点006之间具有障碍物,位置点008到位置点010之间直 线可达。从而服务器会根据上述的情况重新建立路径堆栈,分别按照经过的顺序记录如下表2所示:
表2
路径堆栈 |
001 |
003 |
004 |
005 |
007 |
008 |
010 |
更进一步地,本发明实施例中,对应第二模拟对象而言,还可以为其建立一个路径堆栈,在该路径堆栈中按照存储第二模拟对象每次经过的位置点。通过上述方式,能够使得服务器记忆第二模拟对象所经过的寻路路径,为后续第二模拟对象按照原路返回提供了有效的解决手段,从而提升方案的实用性,并且采用堆栈的数据结构在实际应用中也具有较好的可行性。
可选地,在上述图2对应的第六个实施例的基础上,本发明实施例提供的控制模拟对象寻路方法第七个可选实施例中,控制第二模拟对象按照第一寻路路径向第一模拟对象移动之后,还可以包括:
若第二模拟对象的移动位置满足寻路返回条件,则根据路径堆栈中的位置点构建第三寻路路径,第三寻路路径用于第二模拟对象返回至初始位置。
本实施例中,服务器可以控制第二模拟对象追逐第一模拟对象,然而,在实际应用中,第二模拟对象不会无止境地追逐第一模拟对象,通常我们会给这段追逐的过程设定一个合理的追逐时间或者追逐距离,超过该追逐时间或者追逐距离后,第二模拟对象将不再继续追逐第一模拟对象,于是也需要启动第二模拟对象的返回机制。
具体地,假设第一模拟对象仍为玩家,第二模拟对象为NPC。当NPC距离自身初始位置的距离大于阈值时,或者当NPC追逐玩家的时间超过阈值时, 均触发寻路返回条件,于是从已经建立的路径堆栈中找寻追逐玩家的过程中所存储的有效位置点,假设得到的有效位置点按顺序排列依次为A、B、D、G、H和I,那么第三寻路路径就是依次由I、H、G、D、B和A所构成的,第三寻路路径也可以称为寻路返回路径,用于使得NPC退回到预先给它设定的初始位置。
再进一步地,本发明实施例中,介绍了在第二模拟对象在追逐第一模拟对象一段时间或者一段距离后需要执行的返回机制,该返回机制主要利用堆栈的思路,达到先进后出的效果。通过上述方式,第二模拟对象在返回时无需服务器再次计算返回路径,而是直接按照原来寻路路径返回即可,从而在返回的过程中减少了服务器的计算量,并节省了服务器的计算资源。
为便于理解,下面可以以一个具体应用场景对本发明中控制模拟对象寻路过程进行详细描述,具体为:
目前,某公司开发了一款MMORPG,并且可以为这款MMORPG的NPC配置合理的行走路径,请参阅图4,图4为本发明应用场景中的NPC配置示意图,确定MMORPG中NPC的初始位置,并存储于服务器后台。
接下来将介绍如何利用服务器中的路径池,控制NPC进行移动,具体请参阅图5,图5为本发明应用场景中基于路径池的返回寻路流程示意图,在预设路径位置点机制中,预先在地图上埋下两两直线可达的路径位置点,事实上,NPC的行为在时间上是具有连贯性的。NPC在追击过程中,一般情形下走过的相邻路径位置点之间都是直线可达的,并且追击的始末点就是返回模式下寻路的始末点,因此追击模式下生成的位置点信息可以作为返回模式下的参考数据。
步骤301中,MMORPG的开启;
步骤302中,首先玩家在MMORPG地图中的一个区域看到一个可战斗NPC,于是玩家向该NPC发动了攻击,此时触发了NPC的寻路流程;
步骤303中,NPC记录当前自身的站立点,并且以玩家的站立点为寻路目标点开始执行寻路;
步骤304中,服务器根据NPC的寻路路径构建路径栈,路径栈即为路径堆栈,遵循先进后出的原则;
步骤305中,路径栈中第一个记录的位置就是NPC初始的站立位置,然后在一段连贯的追击过程中,路径栈还会按顺序记录后续的位置点;
步骤306中,判断新入路径栈的位置点和已经在路径栈中的位置点是否两两直线可达,如果是,则进入步骤307,反之,则进入步骤308;
步骤307中,若是存在一个位置点与新入路径栈的位置点直线可达,则执行路径融合过程,即将这两个位置点之间所经过的其他位置点都从路径栈中去掉;
步骤308中,判断NPC是否完成对玩家的追击,若是,则进入步骤309,反之,则跳转至步骤303,也就是再次根据玩家的移动位置确定NPC的追击路径;
步骤309中,如果本次NPC完成对玩家的追击,那么退出路径栈的构建构成,利用堆栈中先进后出的原理,沿着追击过程中形成的追击路径构建返回路径;
步骤310中,判断路径栈是否为空,若是,则说明已经利用路径栈中的位置点完成了NPC的返回,进入步骤311,若否,则说明还需要继续利用路径栈中的位置点构建相应的返回路径,即再次进入步骤309;
步骤311中,至此,完成基于路径池的寻路流程。
下面对本发明中的服务器进行详细描述,请参阅图6,本发明实施例中的服务器包括:
第一获取模块401,用于当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
第一检测模块402,用于根据所述第一获取模块401获取的所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
控制模块403,用于若所述第一检测模块402检测到存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
本实施例中,当接收到第一模拟对象触发的交互指令时,第一获取模块401获取所述第一模拟对象的移动路径,第一检测模块402根据所述第一获取模块401获取的所述第一模拟对象的移动路径,检测预置路径信息集合中是否 存在与所述移动路径匹配的第一寻路路径,若所述第一检测模块402检测到存在所述第一寻路路径,则控制模块403控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
本发明实施例中,提供了一种控制模拟对象寻路的服务器,具体为当服务器接收到第一模拟对象触发的交互指令时,可以获取第一模拟对象的移动路径,然后服务器根据第一模拟对象的移动路径,检测预置路径信息集合中是否存在与移动路径匹配的寻路路径,若存在,则控制第二模拟对象按照寻路路径向所述第一模拟对象移动。通过上述方式,第二模拟对象的路径可以与第一模拟对象的移动路径达到同步,从而提升方案是合理性,此外,服务器无需维护第二模拟对象的所有路径点信息,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
可选地,在上述图6所对应的实施例的基础上,请参阅图7,本发明实施例提供的服务器的另一实施例中,
所述服务器40还包括:
确定模块404,用于所述第一检测模块402检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径之后,若不存在所述第一寻路路径,则确定与所述移动路径匹配的第二寻路路径。
其次,本发明实施例中,服务器在检测到预置路径信息集合中不存在与移动路径匹配的第一寻路路径时,则开始执行其他的搜索算法,以计算得到相应的第二寻路路径。通过上述方式,可以提升MMORPG的操作可行性,也就是说,即便预置路径信息集合中没有相应的寻路路径,仍旧可以保证NPC在合理的区域内对玩家进行追踪,从而提升方案的可操作性。
可选地,在上述图7所对应的实施例的基础上,请参阅图8,本发明实施例提供的服务器的另一实施例中,
所述服务器40还包括:
第二获取模块405A,用于所述确定模块404确定与所述移动路径匹配的第二寻路路径之后,获取所述第二寻路路径的开销数据,所述开销数据用于表 示计算资源当前的使用量,所述计算资源是指服务器中用于计算寻路路径的资源;
第一判断模块405B,用于判断所述第二获取模块405A获取的所述第二寻路路径的开销数据是否大于目标开销门限;
第一加入模块405C,用于若所述第一判断模块405B判断得到所述第二寻路路径的开销数据大于所述目标开销门限,则将所述第二寻路路径加入至所述预置路径信息集合中;
第一更新模块405D,用于若所述第一判断模块405B判断得到所述第二寻路路径的开销数据不大于所述目标开销门限,则根据所述第二寻路路径的开销数据更新历史开销数据,所述历史开销数据用于更新所述目标开销门限。
再次,本发明实施例中,介绍了一种根据路径开销数据来判断是否可以加入预置路径信息集合的方法,即当路径开销数据较大时,将这条路径存储至预置路径信息集合中。通过上述方式,可以使得预置路径信息集合中存储相对而言开销数据较大的寻路路径,以此在采用这类寻路路径时无需服务器再次执行路径搜索算法,而是直接提取相应的路径即可,从而缓解了服务器的计算压力,避免了由于开销数据较大而带来过高的计算资源耗费的情况,提升了方案的实用性。
可选地,在上述图7所对应的实施例的基础上,请参阅图9,本发明实施例提供的服务器的另一实施例中,
所述服务器40还包括:
第三获取模块406A,用于所述确定模块404确定与所述移动路径匹配的第二寻路路径之后,获取所述第二寻路路径的热度数据,所述第二寻路路径的热度数据用于表示第二寻路路径的使用频率;
第二判断模块406B,用于判断所述第三获取模块406A获取的所述第二寻路路径的热度数据是否大于目标热度门限;
第二加入模块406C,用于若所述第二判断模块406B判断得到所述第二寻路路径的热度数据大于所述目标热度门限,则将所述第二寻路路径加入至所述预置路径信息集合中;
第二更新模块407D,用于若所述第二判断模块406B判断得到所述第二 寻路路径的热度数据不大于所述目标热度门限,则根据所述第二寻路路径的热度数据更新历史热度数据,所述历史热度数据用于更新所述目标热度门限。
再次,本发明实施例中,介绍了一种根据路径选择热度来判断是否可以加入预置路径信息集合的方法,即当路径选择热度较高时,将这条路径存储至预置路径信息集合中。通过上述方式,可以使得预置路径信息集合中存储相对而言选择热度较高的寻路路径,以此在采用这类寻路路径时无需服务器再次执行路径搜索算法,而是直接提取相应的路径即可,从而缓解了服务器的计算压力,避免了由于开销数据较大而带来过高的计算资源耗费的情况,提升了方案的灵活性和实用性。
可选地,在上述图7所对应的实施例的基础上,请参阅图10,本发明实施例提供的服务器的另一实施例中,
所述确定模块404包括:
第一获取单元4041,用于获取所述第一模拟对象当前的第一位置以及所述第二模拟对象当前的第二位置;
第一确定单元4042,用于根据所述第一获取单元4041获取的所述第一位置与所述第二位置确定所述第二模拟对象的第一目标移动位置,所述第一目标移动位置与所述第一位置之间的距离小于预置门限,所述第二位置与所述第一目标移动位置构成所述第二寻路路径。
再次,本发明实施例中,介绍了一种服务器确定第二寻路路径的具体实现方式,即根据第一模拟对象的移动位置来部署第二模拟对象的移动位置,多个位置最后构成一条较优的第二寻路路径。通过上述方式,使得第二模拟对象能够实时地根据玩家的移动路径进行路径规划,并且得到的第二寻路路径更贴近真实情况,使得第二模拟对象可以准确地向玩家靠近,从而提升方案的可行性。
可选地,在上述图10所对应的实施例的基础上,请参阅图11,本发明实施例提供的服务器的另一实施例中,
所述确定模块404还包括:
第二获取单元4043,用于所述第一确定单元4042根据所述第一位置确定所述第二模拟对象的目标移动位置之后,当所述第一模拟对象发生移动时,获取所述第一模拟对象的第三位置以及所述第二模拟对象的第四位置;
第二确定单元4044,用于根据所述第二获取单元4043获取的所述第三位置与所述第四位置确定所述第二模拟对象的第二目标移动位置,所述第二目标移动位置与所述第三位置之间的距离小于预置门限;
所述第二更新模块用于根据所述第二位置与所述第一目标移动位置更新所述第二寻路路径。
进一步地,本发明实施例中,如果第一模拟对象继续移动,则服务器也将控制第二模拟对象紧随其后,继续与第一模拟对象靠近,并且实时地更新第二寻路路径。通过上述方式,解决在第一模拟对象持续移动的情况下,如何构建第二寻路路径的问题,从而提升了方案的灵活性和实用性。
可选地,在上述图10或11所对应的实施例的基础上,请参阅图12,本发明实施例提供的服务器的另一实施例中,
所述服务器40还包括:
存储模块408A,用于分别将所述第二位置、所述第一目标移动位置以及所述第二目标移动位置依次存储于路径堆栈;
第二检测模块408B,用于检测从所述第二位置到所述第二目标移动位置之间是否满足直线移动条件,若是,则从所述存储模块408A存储的所述路径堆栈中清除所述第一目标移动位置。
更进一步地,本发明实施例中,对应第二模拟对象而言,还可以为其建立一个路径堆栈,在该路径堆栈中按照存储第二模拟对象每次经过的位置点。通过上述方式,能够使得服务器记忆第二模拟对象所经过的寻路路径,为后续第二模拟对象按照原路返回提供了有效的解决手段,从而提升方案的实用性,并且采用堆栈的数据结构在实际应用中也具有较好的可行性。
可选地,在上述图12所对应的实施例的基础上,请参阅图13,本发明实施例提供的服务器的另一实施例中,
所述服务器40还包括:
构建模块409,用于所述控制模块403控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动之后,若所述第二模拟对象的移动位置满足寻路返回条件,则根据所述路径堆栈中的位置点构建第三寻路路径,所述第三寻路路径用于所述第二模拟对象返回至初始位置。
再进一步地,本发明实施例中,介绍了在第二模拟对象在追逐第一模拟对象一段时间或者一段距离后需要执行的返回机制,该返回机制主要利用堆栈的思路,达到先进后出的效果。通过上述方式,第二模拟对象在返回时无需服务器再次计算返回路径,而是直接按照原来寻路路径返回即可,从而在返回的过程中减少了服务器的计算量,并节省了服务器的计算资源。
图14是本发明实施例提供的一种服务器结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。
服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图14所示的服务器结构。
其中,处理器522用于,
当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
本发明实施例提供了一种控制对象的方法及装置,可用于互联网技术领 域,能够提高终端设备控制对象寻路的效率,降低终端设备的功耗。以下进行详细说明。
本发明中的对象是指某个物理区域的动态物体或静态物体,例如赛场中被遥控控制的机器人等;或者对象可以指应用界面上的动态物体或静态物体,例如游戏界面中的虚拟角色、各种装备或障碍物等。每个对象在应用界面上都有对应的操作范围,可以在自己的操作范围内对其他对象进行操作,或者与其他对象进行交互。例如游戏场景中,虚拟角色和装备都有对应的攻击范围,在其攻击范围内才能对目标进行攻击。
控制范围是指对象的可控制范围,可以在自身的可控制范围内进行对应的操作,例如标记之类的编辑操作等。本发明中的控制范围可包括至少一个控制区域,每个控制区域包括多个子控制区域,每个子控制区域容纳一个对象。其中,对于同一个控制区域所包括的子控制区域,相邻的子控制区域之间可连续或不连续,且各子控制区域的大小可相同或不相同。控制范围可以采用轮盘的形式体现,也可以采用其他的形式体现,控制区域和子控制区域的划分和形状可动态设计,可以是规则形状或者不规则形状,具体本发明不作限定。此外,每个对象的控制范围的布局可相同或不同,也可以在移动过程中,根据临近的对象实时动态计算生成,具体本发明不作限定。控制区域的个数和子控制区域的个数同样不作限定。
如图15所示,为轮盘的一种示意图,轮盘由一个圆环区域和一个圆形区域组成,二者同圆心,圆心代表对象A在应用界面上的位置。分别对圆环区域和圆形区域进行划分,形成多个子区域,圆环区域的半径和圆形区域的半径可动态调整。圆环区域的半径和圆形区域的半径可根据应用界面上的各模拟对象的操作范围计算得到,可以将属于某个数值区间的多个操作范围对应一个圆环区域或者圆形区域。然后根据应用界面上各模拟对象的体积计算出至少能够容纳一定数量的对象的子控制区域,例如可以取所有对象的体积的中值或者最大值,也可以取大于某个阈值的权值,使得大多数对象在处于对象A的子控制区域时,能够与对象A的控制范围内,与其相邻的子控制区域的对象散开,彼此不会影响到对方的移动。在设计完控制区域和子控制区域后,最终形成一个如图15所示的轮盘。图15中的轮盘的圆心O就是对象当前在应用界面的 位置,圆环的半径可以根据其它战场单位的攻击距离来设定,每个圆环区域内的分割块表示该对象周围可以使用的区域。内外圆环都被分割成8各等分块,表示O周围有16个子控制区域可以被使用。需要说明的是,分割子控制区域可考虑战场单位的体积,一个子控制区域最好能够将大部分对象包裹在内,可取战场单位的中值或最大值。
由于不同的对象的操作范围可能不同,对于不同操作范围的对象,被操作的对象到的作为操作发起方的对象的控制范围可动态变化。考虑到一个对象在应用界面中近距离交互的对象有限,为减少控制范围布局的复杂度,可以将属于同一个数值区间的操作范围划定为一个控制区域,从而简化控制范围的布局,每个对象可以都使用相同的公用控制范围的布局。例如,在游戏场景中,为提高游戏的流畅率,所有的虚拟角色都是用相同的轮盘。由于不同的虚拟角色的攻击距离不同,对于不同攻击距离的虚拟角色,被攻击虚拟角色到的轮盘半径可动态变化。一般情况下,游戏里所有虚拟角色都是用同一的轮盘。
为解决上述技术问题,本发明实施例主要提供以下技术方案:
根据对象A的操作范围定义控制区域,根据对象的体积定义子控制区域,以对象为中心,生成一个围绕对象的控制区域。当有其他对象(例如对象B和对象C)在该对象A的控制范围内时,若对象B和对象C都要与对象A交互,为避免二者对对象A的同一个子控制区域进行竞争,若对象B选择了对象A的子控制区域1,那么对象C会绕开子控制区域1,去选择其他的子控制区域2,子控制区域2可以与子控制区域1属于同一个控制区域,可以属于不同的控制区域。控制区域2可以与子控制区域1相邻或不相邻,只要对象B和对象C占据对象A的不同的子控制区域,即可实现避免竞争带来的资源冲突,且无需在对象B已经占据了子控制区域1的前提下,对象C只能重新启动寻路算法的弊端。
由此可见,通过以上技术方案,能够有效的提高寻路的效率和准确率,一定程度上也减少频繁启动寻路算法带来的功耗。
需要说明的是,需要说明的是,本发明所述的方法可以应用到安装了交互式应用的终端设备,也可以是作为交互式应用的客户端,还可以应用于模拟控制软件等,应用于控制交互式应用的后台服务器,具体本发明不作限定。
请参照图16,以下对本发明提供一种控制对象的方法进行举例说明,本 发明实施例包括:
101、接收用户针对第一模拟对象的操作指令。
其中,所述操作指令指示所述第一模拟对象的移动路径。
102、根据所述操作指令指示的移动路径匹配的寻路路径,控制第一模拟对象向第二模拟对象所在的位置移动。
其中,第一模拟对象和第二模拟对象都具有一个控制范围,第一模拟对象和第二模拟对象的控制范围都包括至少一个控制区域,每个控制区域包括多个子控制区域。
可选的,所述第二模拟对象的控制范围为圆环空间,所述控制范围中的各子控制区域为对所述圆环空间进行等分后得到的子空间。
所述第一模拟对象的控制范围中的各控制区域,以及所述第二模拟对象的控制范围中的各控制区域可根据所述应用界面上的各模拟对象的操作范围划分。例如可以将属于同一个数值区间的操作范围划定为一个控制区域。
所述第一模拟对象的控制范围的子控制区域,以及所述第二模拟对象的控制范围的子控制区域满足如下项:
根据应用界面上的各模拟对象的体积划分,以及至少容纳应用界面上的预定义数量的对象。具体来说,根据应用界面上各模拟对象的体积计算出至少能够容纳一定数量的对象的子控制区域,每个子控制区域最多容纳一个对象。例如可以取所有对象的体积的中值或者最大值,也可以取大于某个阈值的权值,使得第一模拟对象在处于第二模拟对象的子控制区域时,能够与第二模拟对象的控制范围内,与其相邻的子控制区域的其他对象散开,彼此不会影响到对方的移动。
103、当所述第一模拟对象在所述第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。
相较于现有技术,本发明提供的方案中,通过对应用界面上的对象设置控制范围,控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域。使得在控制第一模拟对象寻路到第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控 制区域。通过这种子控制区域的划分机制,使得寻路第二模拟对象的各模拟对象能够有序的选择到第二模拟对象的控制范围内的某个子控制区域,而不会与其他对寻路第二模拟对象的对象造成竞争,也无需另外启动寻路,能够有效的提高寻路的效率和准确率,一定程度上也减少频繁启动寻路算法带来的功耗。
可选的,在一些发明实施例中,所述按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域,包括:
当所述第一模拟对象在占据所述第二模拟对象的控制范围的第一子控制区域时,判断所述第一子控制区域是否被占据。
若被占据,则控制所述第一模拟对象占据所述第二模拟对象的控制范围中除第一子控制区域之外的其它子控制区域。考虑到每个对象的操作范围有限,一般选择与之相邻的子控制区域。
若未被占据,则控制所述第一模拟对象占据所述第一子控制区域。
可选的,在一些发明实施例中,在控制所述第一模拟对象占据所述第二模拟对象的控制范围的一个子控制区域后,所述方法还包括:
在所述第二模拟对象的控制范围标记所述第一模拟对象占据的有效子控制区域,和/或,标记所述第一模拟对象的控制范围上被除所述第一模拟对象之外的对象占据的子控制区域。也就是说,若第一模拟对象占据第二模拟对象的某个子控制区域,那么需要在第二模拟对象的控制范围内的该子控制区域标记被该第一模拟对象占据;若其他对象(包括第二模拟对象)占据第一模拟对象的某些子控制区域,也需要在第一模拟对象的控制范围内标记对应的被占据的子控制区域,使得其它对象绕开被标记的子控制区域。并且每个对象都能够知晓自身占据的子控制区域,以及自身的控制范围内被占据的子控制区域。
当确定占据所述第一模拟对象的控制范围上的任意子控制区域的第三对象离开所述第一模拟对象的控制范围,且所述第三对象与所述第一模拟对象的距离大于预设阈值后,取消所述第三对象占据的子控制区域的标记。
为便于理解,下面以游戏场景进行说明。在游戏界面中,在无动态阻挡情况下,虚拟角色寻路时,会直接朝着战斗目标走过去,由于各虚拟角色无视其它虚拟角色潜在的阻挡,所以虚拟角色之间,或者各虚拟角色控制的装备之间很容易出现位置冲突的问题。下面用游戏中存在的2个主要位置冲突的场景进 行说明:
场景一中:多个虚拟角色寻路攻击同一个目标时
当多个虚拟角色寻敌攻击同一个目标时,容易出现重叠的问题。如图17,作为敌方的虚拟角色A和虚拟角色B寻路走到可攻击O的位置时出现了位置冲突,虚拟角色C因为攻击距离远,所以没有和虚拟角色A和虚拟角色B位置冲突.虚拟角色O维护一个轮盘,作为敌方的虚拟角色只能寻路到虚拟角色O的轮盘上可用的子控制区域,当某个子控制区域被敌方虚拟角色占据后,其它虚拟角色只能占据该轮盘上其他的子控制区域(考虑到虚拟角色的攻击距离有限,一般选择与之相邻的子控制区域)。如图18所示,根据虚拟角色之外的虚拟角色的攻击距离,对虚拟角色O维护了一个2层轮盘,图18中的数字标号表示一个子控制区域的索引,可将8指示的子控制区域简称为#8子控制区域,其他同理,类似之处,不再赘述。虚拟角色A先寻路到了虚拟角色O的#8子控制区域,B发现虚拟角色O的#8子控制区域被占据,则虚拟角色B选择了相邻的可用的#1子控制区域,这样虚拟角色A和虚拟角色B成功的散开。
场景二中:多个虚拟角色相互寻路攻击时
当多个虚拟角色相互寻路攻击对方时,容易出现位置冲突的问题。如图19所示,虚拟角色A寻路攻击虚拟角色C,虚拟角色B寻路攻击虚拟角色A,当虚拟角色A和虚拟角色B都在虚拟角色C的攻击范围内后,最终出现了虚拟角色B和虚拟角色C的位置相互冲突。
由于每个虚拟角色都维护一个自己的轮盘,当寻路到对方的轮盘上的可用子控制区域时,除了标记自己占据对方的子控制区域,还要标记自己轮盘上被其它虚拟角色占据的子控制区域。如图20所示,虚拟角色A寻路到虚拟角色C到虚拟角色C的轮盘上的#8子控制区域时,标记虚拟角色C占用虚拟角色A的轮盘的#4子控制区域,虚拟角色B寻路时发现A的#4子控制区域被占用,便会改用虚拟角色A的#3子控制区域,从而使得虚拟角色B和虚拟角色C被成功散开。
由此可见,虚拟角色的轮盘上的子控制区域一旦被标记使用,其它寻路的虚拟角色就只能选择该轮盘上其它的可用子控制区域。标记在占据该子控制区域的虚拟角色死亡或者离开一段距离后会从该轮盘上取消,以供后续寻路到该 轮盘的虚拟角色使用。
其中,对于各虚拟角色的轮盘的维护,各虚拟角色寻路时采用的寻路算法跟时间复杂度相关。其中,时间复杂度定量的描述了该时间复杂度算法的运行时间,寻路算法的时间复杂度越低,那么寻路算法的效率越高。本方案中,寻路算法的时间复杂度可达到O(1),由此可见,在实际游戏场景中,采用本寻路算法能够明显提高寻路的效率。如图21展示了采用本方案的寻路算法,使得射程不同的跑车、远程兵和近程兵攻击敌方跑车时散开效果,玩家可以轻松的观察每个虚拟角色或装备,从而选择要攻击的目标。
以上对本发明中一种控制对象的方法进行说明,以下对执行上述控制对象的的方法的控制对象的装置进行描述。
一、参照图22,对控制对象的装置80进行说明,所述控制对象的装置80包括:
收发模块801,用于接收用户针对第一模拟对象的操作指令;
控制线程模块802,用于根据所述收发模块801接收到的所述操作指令指示的移动路径匹配的寻路路径,控制第一模拟对象向第二模拟对象所在的位置移动,所述第二模拟对象具有一个控制范围,所述第二模拟对象的控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域;当所述第一模拟对象在所述第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。
本发明实施例中,预先对应用界面上的对象设置控制范围,使得控制线程模块801在控制第一模拟对象寻路到第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。通过这种子控制区域的划分机制,使得寻路第二模拟对象的各模拟对象能够有序的选择到第二模拟对象的控制范围内的某个子控制区域,而不会与其他对寻路第二模拟对象的对象造成竞争,也无需另外启动寻路,能够有效的提高寻路的效率和准确率,一定程度上也减少频繁启动寻路算法带来的功耗。
可选的,在一些发明实施例中,所述控制线程模块801具体用于:
当所述第一模拟对象在占据所述第二模拟对象的控制范围的第一子控制区域时,判断所述第一子控制区域是否被占据;
若被占据,则控制所述第一模拟对象占据所述第二模拟对象的控制范围中除第一子控制区域之外的其它子控制区域;
若未被占据,则控制所述第一模拟对象占据所述第一子控制区域。
可选的,在一些发明实施例中,所述第一模拟对象具有一个控制范围,所述控制线程模块801在控制所述第一模拟对象占据所述第二模拟对象的控制范围的一个子控制区域后,还用于:
在所述第二模拟对象的控制范围标记所述第一模拟对象占据的有效子控制区域,和/或,标记所述第一模拟对象的控制范围上被除所述第一模拟对象之外的对象占据的子控制区域。
可选的,在一些发明实施例中,所述控制线程模块801还用于:
当确定占据所述第一模拟对象的控制范围上的任意子控制区域的第三对象离开所述第一模拟对象的控制范围,且所述第三对象与所述第一模拟对象的距离大于预设阈值后,取消所述第三对象占据的子控制区域的标记。
可选的,在一些发明实施例中,所述第二模拟对象的控制范围为圆环空间,所述控制范围中的各子控制区域为对所述圆环空间进行等分后得到的子空间。
可选的,在一些发明实施例中,所述第二模拟对象的控制范围的子控制区域满足如下项:
根据应用界面上的各模拟对象的体积划分,以及至少容纳应用界面上的预定义数量的对象。
可选的,在一些发明实施例中,所述第二模拟对象的控制范围中的各控制区域根据所述应用界面上的各模拟对象的操作范围划分。
上面从单元化功能实体的角度对本发明实施例中的装置进行了描述,下面从硬件处理的角度对本发明实施例中的装置进行描述。
本发明实施例还提供了一种终端设备,该终端设备具体为一种控制对象的方法中描述的终端设备,如图23所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。下面以终端设备为手机为例:
图23示出的是与本发明实施例提供的移动终端相关的手机的部分结构的框图。参考图23,手机包括:射频(英文全称:Radio Frequency,英文简称:RF)电路910、存储器920、输入单元930、显示单元940、传感器940、音频电路940、无线保真(英文全称:wireless fidelity,英文简称:Wi-Fi)模块960、处理器980、以及电源990等部件。本领域技术人员可以理解,图23中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图23对手机的各个构成部件进行具体的介绍:
RF电路910可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器980处理;另外,将设计上行的数据发送给基站。通常,RF电路910包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low Noise Amplifier,英文简称:LNA)、双工器等。此外,RF电路910还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文简称:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:Code Division Multiple Access,英文简称:CDMA)、宽带码分多址(英文全称:Wideband Code Division Multiple Access,英文简称:WCDMA)、长期演进(英文全称:Long Term Evolution,英文简称:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,英文简称:SMS)等。
存储器920可用于存储软件程序以及模块,处理器980通过运行存储在存储器920的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元930可用于接收输入的数字或字符信息,以及产生与手机的用户 设置以及功能控制有关的键信号输入。具体地,输入单元930可包括触控面板931以及其他输入设备932。触控面板931,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板931上或在触控面板931附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板931。除了触控面板931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元940可包括显示面板941,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文简称:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文简称:OLED)等形式来配置显示面板941。进一步的,触控面板931可覆盖显示面板941,当触控面板931检测到在其上或附近的触摸操作后,传送给处理器980以确定触摸事件的类型,随后处理器980根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图23中,触控面板931与显示面板941是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板931与显示面板941集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器940,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在手机移动到耳边时,关闭显示面板941和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还 可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路940、扬声器941,传声器942可提供用户与手机之间的音频接口。音频电路940可将接收到的音频数据转换后的电信号,传输到扬声器9641,由扬声器941转换为声音信号输出;另一方面,传声器942将收集的声音信号转换为电信号,由音频电路940接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910以发送给比如另一手机,或者将音频数据输出至存储器920以便进一步处理。
Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块960可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图23示出了Wi-Fi模块960,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器980是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或单元、模块,以及调用存储在存储器920内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器980可包括一个或多个处理单元;优选的,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器980中。
手机还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该手机所包括的处理器980还具有控制执行控制对象的方法中由终端设备执行的方法流程。
本发明实施例提供了一种寻路方法以及装置,用于根据模拟对象的起始点与目标点之间所处的寻路路径采用对应的寻路策略,在包含多种寻路路径的地图的情况下,可以有效地减少在寻路过程中使用A星算法,从而减少计算寻 路路径的时间。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本发明实施例,下面先将介绍下本发明实施例涉及到的一些基本概念以及总的核心思想。
本发明实施例将游戏场景地图划分为可行走区域以及不可行走区域,其中,游戏场景地图中的可行走区域又划分成若干个导航网格,具体将可行走区域划分为多少个导航网格由实际游戏场景地图以及所采用的导航网格生成方式确定,具体此处不做限定。导航网格生成方式可以是通过手动方式生成导航网格,即通过人工配置生成,手动生成方式常用于游戏场景地图比较小,简单的情况下使用。也可以是通过自动方式生成导航网格,即通过一些导航网格自动生成算法,例如点集的三角剖分算法(Delaunay triangulation algorithm)等算法,自动生成方式常用于游戏场景地图比较大,复杂的情况下使用,可以减少手动生成方式带来的繁琐操作。
本发明实施例核心点在于首先根据模拟对象,即游戏场景地图中的控制对象在可行走区域中的起始点以及目标点的位置,识别出模拟对象本次寻路是否出现本发明实施例指定的特殊地形,如果有,则避开使用A星算法,针对具体的特殊地形,采用该特殊地形的类型相应的寻路策略。如果没有本发明实施 例指定的特殊地形,则使用A星算法,寻找起始点到目标点所要经过的一系列导航网格,最后生成寻路路径。寻路地形也可称为寻路路径,具体本申请不作限定。为了便于理解,下面将结合具体的游戏场景图对本发明实施中的游戏场景地图的划分以及本发明实施例所提的特殊地形先做介绍:
如图24所示的,图24为本发明实施例一种寻路方法一个游戏场景地图示意图,本发明实施例中将图24所示的游戏场景地图划分为可行走区域以及不可行走区域,粗黑线外的区域为不可行走区域(在游戏场景中为建筑物等障碍),在不可行走区域中没有划分导航网格,粗黑线表示游戏场景地图中模拟对象的不可通过边,粗黑线内的区域为可行走区域,本发明实施例中将可行走区域划分为若干个导航网格,生成对应的导航网格数据。其中,导航网格优选地划分三个角形导航网格,为了便于说明,下面在本发明实施例中所描述的导航网格均以三角形导航网格进行描述,如图24中的细黑线所构成的三角形导航网格。另外需要说明的是,在本发明实施例中,可行走区域中的导航网格还可以是其他的多边形,例如四边形等,具体在本发明实施例中不做限定。
如图25所示,图25为本发明实施例一种寻路方法另一游戏场景地图示意图,在本发明实施例中,将游戏场景地图的可行走区域的寻路路径划分为如下三类寻路路径:
1、特殊地形一:直线寻路路径,直线寻路路径是指模拟对象在起始点到目标点可直线行走的地形,则说明模拟对象的在起始点到目标点之间的寻路路径为直线寻路路径。比如在图25中,模拟对象的起始点为A点,目标点为B点,而A点到B点之间可直线行走(无障碍物),则说明模拟对象在A点到B点在游戏场景地图的寻路路径为直线寻路路径。
2、特殊地形二:管道寻路路径,管道寻路路径是指模拟对象在起始点至目标点的地形不是直线可行走地形,呈现“管道式”形状,管道内的三角形导航网格序列具有连续的导航索引,管道周围的边为不可通过边,管道内的每个三角形导航网格有且仅有一个边是不可通过边,且延管道的任一方向,三角形导航网格的索引值是连续的,比如上图25所示,模拟对象从a点到b点的寻路路径即是管道寻路路径。在本发明实施例中,通过游戏设计人员人为勾出出管道寻路路径,在起始点往目标点方向,为管道寻路路径中的三角形导航网格进 行索引编号,生成三角形导航网格序列索引值,并记录生成的索引值,具体如图26所示,图26为本发明实施例一种寻路方法中管道寻路路径一个索引方式示意图。需要说明的是,图26所示的导航网格序列索引方式在这里只是举例说明,在实际应用中可以有多种索引方式,具体此处不做限定。
3、地形三:将不是上述直线寻路路径,以及不是上述管道寻路路径的寻路路径在本发明实施例中定义为地形三,具体如图27所示,图27为本发明实施例一种寻路方法另一游戏场景地图示意图,模拟对象(许翠柏)从当前位置,寻路到孙铁匠处,有上下两条路线,中间的假山,即为障碍物。这种地形,说明既不是上述描述中的可直线行走的地形,也不是上述描述中的管道寻路路径。
在本发明实施例中,通过识别游戏场景地图中的控制对象在可行走区域中的起始点以及目标点的位置,识别本次寻路是否出现本发明实施例指定的直线寻路路径以及管道寻路路径,如果有,则避开使用A星算法,针对具体寻路路径,采用寻路路径的类型相应的寻路策略。下面通过具体的实施例对本发明实施例进行描述:
请参阅图28,图28为本发明实施例一种寻路方法一个实施例流程示意图,包括:
101、确定模拟对象的起始点以及目标点。
在用户操作模拟对象,即操作游戏场景中的被控制对象时,一般会通过点击目标点,在本发明实施例,可以确定模拟对象在游戏场景地图中的起始点以及目标点。
本发明实施例主要适用于安装有游戏应用的终端设备中,例如,该终端设备可以是包括,但不局限于电脑,手机,笔记本,个人数字助理(英文全称:Personal Digital Assistant,缩写:PDA)等终端设备,具体此处不做限定。
另外需要说明的是,本发明实施例适用于各种各样的游戏应用中,比如游戏应用泛指各种各样的角色扮演游戏(Role-playing game)类的单机游戏或网页游戏等,例如以手机游戏为例,具体可以是指王者荣耀、王者之剑,等新御剑天涯手机游戏,具体此处不做任何限定。
102、根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的 寻路路径。
当确定了模拟对象的起始点以及目标点之后,根据起始点以及目标点确定模拟对象在游戏场景地图上的寻路路径。
103、根据所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略。
在本发明实施例中,当根据模拟对象的起始点以及目标点确定了模拟对象的在游戏场景地图上的寻路路径后,根据寻路路径的类型对模拟对象采取与寻路路径的类型对应的寻路策略,其中,不同的寻路路径的类型配置有不同的寻路策略。
从以上技术方案可以看出,本发明实施例提出了一种寻路方法,通过确定模拟对象的起始点以及目标点,根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径,根据所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。即在本发明实施例中,不是采用的一刀切的方式,即不是每次寻路,都会应用A星算法这一寻路策略进行寻路,而是根据模拟对象的起始点与目标点之间所处的寻路路径是不是本发明实施中描述的特殊地形,再根据寻路路径的类型采用对应的寻路策略,可以有效地减少在寻路过程中使用A星算法,从而减少计算寻路路径的时间。
其中,在本发明实施例中,所述游戏场景地图被划分出可行走区域,所述可行走区域被划分为至少2个导航网格,其中,具体的可行走区域被划分为多少个导航网格由实际的游戏场景地图确定,具体此处不做限定。
另外,优选地,在本发明实施例中,导航网格优选为三角形导航网格,还可以是其他的多边形导航网格,例如四变形等,具体此处不做限定。
所述根据起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径,包括:
a、确定所述目标点是否在第一导航网格内,若所述目标点在所述第一导航网格内,则确定所述寻路路径为所述直线寻路路径,其中,所述第一导航网格为所述起始点所在的导航网格,应理解,起始点与目标点在同一导航网格内,则起始点与目标点必定在同一平面上,即起始点与目标点必定能直线行走,起 始点到目标点在游戏场景地图中的寻路路径为直线寻路路径。
b、若所述目标点不在所述第一导航网格内,则确定所述第一导航网格中是否有可通过边与目标直线相交,所述目标直线为所述起始点到所述目标点的直线;
c、若确定所述第一导航网格中有可通过边与所述目标直线相交,则将所述第二导航网格作为所述第一导航网格,所述第二导航网格为所述可通过边相邻的导航网格;
d、重新执行步骤a至c,直至确定所述第一导航网格中无可通过边与所述目标直线相交;
e、若确定所述第一导航网格中无可通过边与所述目标直线相交,则确定所述寻路路径不是所述直线寻路路径。
即在本发明实施例中,首先通过确定起始点与目标点是否同在一导航网格内,若在则说明起始点与目标点之间肯定在同一个平面上,模拟对象从起始点往目标点可直线行走,说明模拟对象在起始点与目标点之前的寻路路径为直线寻路路径。若起始点与目标点不在同一导航网格内,此时则通过起始点与目标点之间的直线,判断模拟对象在始点与目标点之间的寻路路径是否为直线寻路路径。
在本发明实施例中,在一种可能的实现中,所述游戏场景地图中的可行走区域的2导航网格作为导航网格序列,其中,所述导航网格序列中的导航网格相邻,本发明实施例中的导航网格序列为前述描述中,人为配置的管道寻路路径中的导航网格序列,导航网格序列配置有对应的索引值。
所述根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径,还包括:
当确定所述寻路路径不是所述直线寻路路径时,确定所述第一导航网格与第三导航网格是否在同一导航网格序列中,其中,所述第三导航网格为所述目标点所在的导航网格;
若是,则确定所述寻路路径为管道寻路路径;
若否,则确定所述寻路路径不是所述管道寻路路径。
即上述提出了一种确定起始点到目标点在游戏场景地图中是否为直线寻 路路径,以及是否为管道寻路路径的方法,增加了方案的可实施性。
为了便于理解上述描述的确定寻路路径是否为直线寻路路径以及管道寻路路径的方式,下面通过具体例子对直线寻路路径以及管道寻路路径的识别过程分别进行举例说明;
一、关于直线寻路路径识别过程:
1、假设在本发明实施例中,游戏场景地图中可行走区域被划分为三角形导航网格数据为Data1,在该Data1中包含每个三角形导航网格的对应的索引值,假设模拟对象的起始点为A,目标点为B,从A点到B点打一条直线(可以是以A为起始点,延B的方向的射线),记为R。
2、设三角形导航网格T1为A所在的三角形导航网格。
3、检测目标点B是否在T1内,如果检测到目标点B在T1内,说明A以及B在同一个三角形导航网内,则算法结束,说明从A点到B点可直线行走,即A点到B点在游戏场景地图上的地形为直线寻路路径。
4、若在步骤2中确定出目标点B不在T1内,则比较T1中是否有可通过边与R相交,如果T1中没有可通过边与R相交,则算法结束,说明A点到B点之间直线行走时存在障碍物,即从A点到B点不可直线行走。
如果T1中有可通过边与R相交,则从Data1取出该T1可通过边的相邻三角形导航网格,记为T2;
5、将T2赋给T1,即T1=T2,重新执行上述步骤。
通过上述步骤可以判断出起始点A与目标点B之间在游戏场景地图上的寻路路径是否为直线寻路路径。
其中,需要说明的是,在本发明实施例,确定一个点是否在一个三角形导航网格内有多种方法,例如,以上述例子为例,确定目标点B是否在T1内有多种检测方法,比如通过以下向量法的方式进行计算:
假设三角形为T,三角形的三个顶点分别为P1、P2以及P3。计算向量P1P2和向量P1B的叉乘,记为V1,计算向量P2P3和向量P2B的叉乘,记为V2,计算向量P3P1和向量P3B的叉乘,记为V3。其中,上述V1、V2、V3是三维向量,记他们的三维值分别为z1、z2、z3。比较z1、z2、z3符号,如果都相同,则说明B点在T1内,有不相同的,则说明B点不在T1内。
需要说明的是,确定一个点是否在一个三角形内可以有多种方法,具体此处不做限定。比如面积法,例如通过面积法确定一个点是否在一个三角形内,例如,如果三角形BP1P2、BP1P3和BP2P3的面积之和与三角形P1P2P3的面积相等,则可确定点B在三角形P1P2P3内。又比如,还可以通过线段法确定一个点是否在一个三角形导航网格内,例如以下一个简单的线段法:如果线段BP1与线段BP3、或者线段BP2与线段P1CP3、或者线段P2P3与线段P1P2有交点,则可确定点B在三角形P1P2P2之外,反之,则可确定B点在三角形P1P2P2内。
二、关于管道寻路路径识别过程:
1、假设人为配置的管道寻路路径中的导航网格序列数据为Data2,当确定寻路路径不是直线寻路路径后,确定A点所在的三角形导航网格,从Data1中取出A点所在的三角形导航网格对应的索引值,记为M1;确定B点所在的三角形导航网格,从Data1中取出B点所在的三角形导航网格的索引值,记为M2。
2、遍历本发明实施例游戏地图场景中所有的Data2数据,如果M1和M2都属于某一Data2数据的三角形导航网格序列中的值,则A点到B点寻路的寻路路径是个管道寻路路径,否则不是。
在本发明实施例中,所述根据所述寻路路径采用对应的寻路策略,包括:
当所述寻路路径为所述直线寻路路径时,则将所述起始点以及目标点的直线连接路径作为所述模拟对象的寻路路径进行寻路;
当所述寻路路径为所述管道寻路路径时,则将所述起始点与所述目标点之间的导航网格序列作为所述模拟对象的寻路路径进行寻路。比如,假设起始点所处的三角形导航网格索引值是T0,目标点所处的三角形导航网索引值是Tn,则[T0,Tn]的三角形导航网格序列的索引区间,即是寻路路径对应的三角形导航网格序列。
当所述寻路路径不是所述直线寻路路径,并且不是所述管道寻路路径时,则根据A星算法计算所述模拟对象的寻路路径进行寻路。
即在本发明实施例中,不是采用的一刀切的方式,即不是每次寻路,都会应用A星算法这一寻路策略进行寻路,而是根据模拟对象的起始点与目标点 之间所处的寻路路径是不是本发明实施中的特殊地形,再根据寻路路径的类型采用对应的寻路策略,可以有效地减少在寻路过程中使用A星算法,从而减少计算寻路路径的时间。
在本发明实施例中,所述根据A星算法计算所述模拟对象的寻路路径进行寻路,包括:
将所述第一导航网格的边上的中点到所述目标点的直线距离作为所述A星算法的估值函数;根据所述估值函数,通过所述A星算法计算出的所述模拟对象的寻路路径进行寻路。
即在本发明实施例中,如果直线寻路路径以及管道寻路路径都没有识别出来,则采用优化后的A星算法对A点到B点进行寻路,其中优化的部分是估值函数。为了便于理解,下面先对A星算法做个简单的介绍:
由前述背景技术描述可知,A星算法,是一种启发式的算法,是对于一个有多个寻路节点的地图上找到起始点到达目标点的算法。假设从寻路起始点到地图中任何节点的距离表示为g(m),该任何节点至寻路目标点距离设为h(m),那么本算法的公式可以表示为:
f(m)=g(m)+h(m);
其中,A星算法的步骤可以概括为:
1、假设寻路地图存在有很多节点(Node),包括寻路的起始点S和寻路目标点E。
2、将与寻路起始点S相邻的所有节点依次加入一个表,记为OPEN_TABLE。
3、遍历OPEN_TABLE表中所有的Node,依次求出每个Node的f(m)值,即OPEN_TABLE表中每个Node到寻路目标点E的距离,设f(m)值最小的Node是P,则将P从OPEN_TABLE表去除,并加入到另一个表CLOSED_TABLE中。
4、遍历与上述节点P相邻的所有节点,如果遍历的节点在CLOSED_TABLE中,则不做任何处理,如果遍历的节点在上述OPEN_TABLE中,假设遍历出的节点为节点1,则求出节点1到达目标点的f(m)值,若节点1到达目标点的f(m)值小于已有的f(m)值,则更新该节点1的f(m) 值为最新的f(m)值。如果遍历出的节点1不在上述OPEN_TABLE表中,则把节点1加到OPEN_TABLE中。
5、重复执行步骤3和步骤4,直到发现节点P相邻的所有节点中,有节点为寻路目标点E,则寻路结束。
6、如果步骤5中找到寻路目标点E,则依次遍历节点P的路径节点,得到到达目标点所要经过的节点列表。
在本发明实施例中,三角形导航网格的边,即为上述A星算法介绍中的节点,估值函数h(m),即为三角形导航网格的边的中点至目标点的距离。即本方案采用三角形边的中点到目标点的直线距离,作为估值函数的值,而不是三角形导航网格三角形的顶点至目标点的距离作为估值函数的值,经这一优化后,大大降低了模拟对象在寻路采用A星算法时发生绕远情况的发生。
至此,本发明实施例方法部分介绍完毕,下面结合具体图29所示的流程图对本发明实施例的完整流程进行简要概括:
相关美术人员制作游戏场景的完整场景图,美术人员将该场景图导入3ds max软件中,并将不可行走区域进行“勾边”,使用3ds max软件自身的功能,生成三角形导航网格数据,在生成的三角形导航网格中,通过人为方式识别出管道寻路路径,当从起始点A点向目标点B点寻路时,A点到B点是否属于直线寻路路径,若是则从A到B的直线连接路径作为寻路路径进行寻路;若不是直线寻路路径,则识别A点到B点是否属于管道寻路路径,若识别A点到B点是管道寻路路径,则从A到B的导航网格序列作为寻路路径进行寻路,若识别A点到B点不是管道寻路路径,则采用本发明实施例中优化后的A星算法进行描述,具体细节详见上述实施例中对应的描述。
上面对本发明实施例中一种寻路方法进行了介绍,下面对本发明实施例中的寻路装置进行介绍:
请参阅图30,图30为本发明实施例一种寻路装置一个实施例结构示意图,包括:
第一确定模块101,用于确定模拟对象的起始点以及目标点;
第二确定模块102,用于根据所述第一确定模块101确定的所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径;
寻路模块103,用于根据所述第二确定模块102确定的所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。
在一种可能的实现中,所述游戏场景地图被划分出可行走区域,所述可行走区域被划分为至少2个导航网格;
所述第二确定模块102具体用于:
a、确定所述目标点是否在第一导航网格内,若所述目标点在所述第一导航网格内,则确定所述寻路路径为所述直线寻路路径,所述第一导航网格为所述起始点所在的导航网格;
b、若所述目标点不在所述第一导航网格内,则确定所述第一导航网格中是否有可通过边与目标直线相交,所述目标直线为所述起始点到所述目标点的直线;
c、若确定所述第一导航网格中有可通过边与所述目标直线相交,则将所述第二导航网格作为所述第一导航网格,所述第二导航网格为所述可通过边相邻的导航网格;
d、重新执行步骤a至c,直至确定所述第一导航网格中无可通过边与所述目标直线相交;
e、若确定所述第一导航网格中无可通过边与所述目标直线相交,则确定所述寻路路径不是所述直线寻路路径。
在一种可能的实现中,所述游戏场景地图中的至少2导航网格作为导航网格序列,所述导航网格序列中的导航网格相邻;
所述第二确定模块102具体还用于:
当确定所述寻路路径不是所述直线寻路路径时,确定所述第一导航网格与第三导航网格是否在同一导航网格序列中,所述第三导航网格为所述目标点所在的导航网格;
若是,则确定所述寻路路径为管道寻路路径;
若否,则确定所述寻路路径不是所述管道寻路路径。
在一种可能的实现中,所述寻路模块具体用于:
当所述寻路路径为所述直线寻路路径时,则将所述起始点以及目标点的直线连接路径作为所述模拟对象的寻路路径进行寻路;
当所述寻路路径为所述管道寻路路径时,则将所述起始点与所述目标点之间的导航网格序列作为所述模拟对象的寻路路径进行寻路;
当所述寻路路径不是所述直线寻路路径,并且不是所述管道寻路路径时,则根据A星算法计算所述模拟对象的寻路路径进行寻路。
在一种可能的实现中,所述寻路模块具体用于包括:
当所述寻路路径不是所述直线寻路路径,并且不是所述管道寻路路径时,将所述第一导航网格的边上的中点到所述目标点的直线距离作为所述A星算法的估值函数;
根据所述估值函数,通过所述A星算法计算所述模拟对象的寻路路径进行寻路。
上面从模块化功能的角度对本申请实施例中的寻路装置进行了描述,下面从硬件处理的角度对本申请实施例中的寻路装置进行描述,如图31所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例对应的方法部分,请参阅图31,本申请实施例提供的一种寻路装置另一实例结构示意图,该寻路装置200包括处理器201、存储器202和通信接口203。其中,处理器201、存储器202和通信接口203之间通过总线204相互连接。
处理器201是寻路装置200的控制中心,利用各种接口和线路连接整个寻路装置各个部分,例如通过总线的方式进行连接,通过运行或执行存储在存储器202内的软件程序和/或模块,以及调用存储在存储器202内的数据,执行寻路装置的各种功能和处理数据,可选的,处理器201可包括一个或多个处理单元;优选的,处理器201可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器201中。
其中,处理器201可以是中央处理器(英文全称:central processing unit, 缩写:CPU),网络处理器(英文全称:network processor,缩写:NP)或者CPU和NP的组合。处理器还可以进一步包括硬件芯片,具体可以是专用集成电路(英文全称:application-specific integrated circuit,缩写:ASIC),可编程逻辑器(英文全称:programmable logic device,缩写:PLD)或其组合。另外PLD可以是复杂可编程逻辑器件(英文全称:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文全称:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文全称:generic array logic,缩写:GAL)或其任意组合,在本发明实施例中不做任何限定。
存储器202可以包括易失性存储器(英文全称:volatile memory),例如随机存取存储器(英文全称:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文全称:non-volatile memory),例如快闪存储器(英文全称:flash memory),硬盘(英文全称:hard disk drive,缩写:HDD)或固态硬盘(英文全称:solid-state drive,缩写:SSD);存储器还可以包括上述种类的存储器的组合。
总线204可以是外设部件互连标准(英文全称:peripheral component interconnect,缩写:PCI)总线或扩展工业标准结构(英文全称:extended industry standard architecture,缩写:EISA)总线等。所述总线还可以分为地址总线、数据总线、控制总线等。为便于表示,图31仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,通信接口203用于发送或者接收上述对应方法实施例中所用到的指令或者信息,例如接收用户的对游戏场景地图中,模拟对象的操作指令,从而本发明实施例中的寻路装置可以确定出模拟对象寻路的起始点以及目标点。
另外,本发明实施例中的寻路装置,还可以包括射频(RF)电路,通过RF电路实现通信接口203的功能更,可用于测试消息的接收和发送,此外,RF电路还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,缩写:GPRS)、码分多址(英文全称:Code Division Multiple Access,缩写:CDMA)、宽带码分多址(英文全称:Wideband Code Division Multiple Access,缩写:WCDMA)、长期演进(英文全称:Long Term Evolution,缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,缩写:SMS)等。
存储器202可以存储程序代码205,还可以存储上述方法实施例中寻路装置所用到的数据206,例如数据206可以是上述方法实施例描述到数据,生成的导航网格数据。处理器201可以调用该存储器中存储的程序代码205,执行上述方法实施例中对应的步骤,使得最终寻路装置可以实现上述方法实施例中的行为或功能。
其中,在本发明实施例中,处理器201被配置用于执行以下功能:
确定模拟对象的起始点以及目标点;
根据起始点以及目标点确定模拟对象在游戏场景地图上的寻路路径;
根据寻路路径的类型对模拟对象采取与类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。
在一种可能的实现中,游戏场景地图被划分出可行走区域,可行走区域被划分为至少2个导航网格;
处理器201还用于:
a、确定目标点是否在第一导航网格内,若目标点在第一导航网格内,则确定寻路路径为直线寻路路径,第一导航网格为起始点所在的导航网格;
b、若目标点不在第一导航网格内,则确定第一导航网格中是否有可通过边与目标直线相交,目标直线为起始点到目标点的直线;
c、若确定第一导航网格中有可通过边与目标直线相交,则将第二导航网格作为第一导航网格,第二导航网格为可通过边相邻的导航网格;
d、重新执行步骤a至c,直至确定第一导航网格中无可通过边与目标直线相交;
e、若确定第一导航网格中无可通过边与目标直线相交,则确定寻路路径不是直线寻路路径。
在一种可能的实现中,游戏场景地图中的至少2导航网格作为导航网格序列,导航网格序列中的导航网格相邻;
根据起始点以及目标点确定模拟对象在游戏场景地图上的寻路路径,还包 括:
当确定寻路路径不是直线寻路路径时,确定第一导航网格与第三导航网格是否在同一导航网格序列中,第三导航网格为目标点所在的导航网格;
若是,则确定寻路路径为管道寻路路径;
若否,则确定寻路路径不是管道寻路路径。
在一种可能的实现中,处理器201还用于:
当寻路路径为直线寻路路径时,则将起始点以及目标点的直线连接路径作为模拟对象的寻路路径进行寻路;
当寻路路径为管道寻路路径时,则将起始点与目标点之间的导航网格序列作为模拟对象的寻路路径进行寻路;
当寻路路径不是直线寻路路径,并且不是管道寻路路径时,则根据A星算法计算模拟对象的寻路路径进行寻路。
在一种可能的实现中,处理器201还用于:
将第一导航网格的边上的中点到目标点的直线距离作为A星算法的估值函数;根据估值函数,通过A星算法计算模拟对象的寻路路径进行寻路。
资源处理装置200还包括给各个部件供电的电源207(比如电池),优选的,电源可以通过电源管理系统与处理器201逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,进一步地,本发明实施例中的寻路装置还包括输入单元、触控面板以及其他的输入设备,显示单元等显示装置。
需要说明的是,图31中示出的寻路装置系统结构并不构成对本发明实施例中的寻路装置构成限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不一一赘述。
本发明实施例中由寻路装置200所执行的步骤可以基于该图41所示的寻路装置的结构示意图,具体可以参考前述方法实施例的对应过程,在此不再赘述。
本申请实施例中还提供一种多单位寻路方法及装置。为了便于理解,首先对各个实施例中所涉及的术语做简单介绍。
单位:在界面的地图中可以移动的对象。比如,在游戏地图中,单位是指可以移动的怪兽或者人物等等。
向导:用于引导至少一个单位移动的对象。通常情况下,向导为虚拟的,地图中并不会展示该向导。
在下述各个实施例中,将地图中的n个单位看作为一个整体(也即单位群组),对单位群组进行寻路,生成沿着目标路径移动的寻路向导,然后控制单位群组中的n个单位跟随寻路向导移动,n为大于等于2的整数,目标路径为从地图中的起始点移动至结束点之间的路径,起始点为根据单位群组中的各个单位的位置确定的位置,结束点为地图中预设的位置。由于寻路向导已经经过一次寻路,因此寻路向导在移动过程中并不会碰到障碍物,然而由于n个单位之间以及n个单位与寻路向导之间会存在一定距离,因此,在n个单位跟随寻路向导移动的过程中,n个单位中的某个或者某几个单位可能会碰到障碍物。此时,为了使得单位可以绕过障碍物,终端可以生成避让向导,并控制单位群组中的单位跟随避让向导绕过障碍物移动。
上述所说的n个单位为地图中移动规律一致的各个单位。可选地,该n个单位可以为地图中的所有单位,也可以为地图中按照某一规律分布的部分单位,比如,n个单位为地图中阵列分布并阵列移动的单位,本实施例对此并不做限定。
请参考图32,其示出了本发明一个实施例提供的多单位寻路方法的方法流程图,如图32所示,该多单位寻路方法可以包括:
步骤101,对单位群组进行自动寻路,生成沿着地图中的目标路径移动的寻路向导;单位群组中包括n个单位,n为大于1的整数,所述单位是指在界面的地图中可以移动的模拟对象,所述寻路向导是指用于引导至少一个单位按照计算的寻路路径移动的对象。
各个单位在地图中都有一个对应的位置,终端可以根据单位群组中的各个单位的位置来确定寻路向导的初始位置,生成从起始点至结束点之间的目标路径,进而得到从初始位置开始、以预设速度沿着生成的目标路径移动的寻路向导。其中,起始点为生成的初始位置,结束点为系统中预设的位置或者用户在地图中自定义的位置,对此并不做限定;预设速度为默认的速度或者用户自定 义的速度,本实施例对此也并不做限定。
终端根据各个单位的位置确定寻路向导的初始位置的步骤包括:计算各个单位的位置的加权平均,将得到的加权平均后的位置作为该寻路向导的初始位置。比如,请参考图33,假设n个单位的位置如图所示,则终端确定得到的寻路向导的位置可以为图中21所示的位置。当然,实际实现时,终端还可以将各个单位的位置的重心位置或者垂心位置作为该寻路向导的初始位置,本实施例对其计算方式并不做限定。
终端生成从起始点至结束点之间的目标路径的步骤包括:终端在确定的初始位置的基础上根据预设寻路算法得到该目标路径。其中,预设寻路算法为ASTAR(A星)算法或者网格寻路算法,本实施例对此并不做限定。
步骤102,控制单位群组中的单位跟随寻路向导移动。
n个单位在跟随寻路向导移动的过程中,n个单位的移动速度与寻路向导的移动速度相同,且n个单位与寻路向导之间的相对位置保持不变。
步骤103,当单位群组中的单位与障碍物之间的距离小于所述预设距离时,单位群组中的i个单位朝向障碍物的一侧移动,并生成i个单位所对应的分散向导,控制i个单位与分散向导的相对距离不变,i为小于等于n的整数。
分散向导是指用于引导i个单位绕过碰撞的障碍物的向导。
障碍物是指设置在地图中的用于阻碍单位的移动的对象。实际实现时,该障碍物可以是位置静态不动的对象,比如,障碍物可以为山、河流、建筑物或者其它任何位置静态不动的对象;也可以是位置可以动态变化的对象,比如,障碍物可以为单位前进图中的怪兽、敌军等等。并且,地图中的障碍物可以有一个,也可以有至少两个,本实施例对此并不做限定。
本实施例中,单位群组中的单位与障碍物之间的距离小于预设距离是指单位群组中的任一单位与障碍物之间的距离小于预设距离。其中,预设距离可以为系统中预先设定的距离,也可以为用户自定义的数值,并且通常情况下,该预设距离为数值较小的数值,比如可以为0。下述除特殊说明外,均以预设距离为0也即发生碰撞来举例说明。
单位群组中的单位在与障碍物碰撞之后的移动方向,与单位与障碍物碰撞的角度有关。可选地,单位与障碍物碰撞之后,朝向单位与障碍物的切线方向移动。比如,请参考图34,假设单位群组中与障碍物碰撞的两个单位与障碍 物的碰撞位置如图所示,则其中单位31朝向障碍物32的上侧34移动,而单位33朝向障碍物32的下侧35移动。
障碍物的一侧是指单位群组碰撞的所有障碍物的一侧。比如,若单位群组碰撞的障碍物为一个,则障碍物的一侧即为该一个障碍物的某一侧;而若单位群组碰撞的障碍物为至少两个,则障碍物的一侧即为该至少两个障碍物的一侧,也即将该至少两个障碍物作为一个整体,障碍物的一侧为该整体的一侧。
实际实现时,根据实际的碰撞场景,可能会包括如下几种情况。
第一种,只包括朝向障碍物一侧移动的单位。比如,请参考图35,其示出了一种可能的碰撞示意图。如图35中的(1)图所示,在单位群组中的单位与障碍物碰撞之后,单位群组中的所有单位朝向障碍物的上侧移动。其中,图35中的各图均以填充的为障碍物,未填充的为单位为例。
第二种,同时包括朝向障碍物两侧移动的单位。其中,朝向障碍物两侧移动的单位的个数可以相同或者不同,本实施例对此并不做限定。比如,请参考图36,其示出了另一种可能的碰撞示意图。如图35中的(2)图所示,假设单位群组中的单位有4个,则在与障碍物碰撞之后,其中2个单位向障碍物的上侧移动,3个单位向障碍物的下侧移动。
第三种,只包括朝向两个障碍物中间移动的单位。比如,请参考图35中的(3)图,其示出了一种可能的碰撞示意图。
第四种,同时包括朝向障碍物一侧移动的单位以及朝向障碍物中间移动的单位。请参考图35中的(4)图,其示出了此时的一种可能的碰撞示意图。
第五种,同时包括朝向障碍物两侧移动的单位以及朝向障碍物中间移动的单位。请参考图35中的(5)图,其示出了此时的一种可能的碰撞示意图。
当然实际实现时,依据障碍物的分布,朝向障碍物中间移动的单位中,可以包括朝向两个单位的中间移动的单位,也可以同时包括朝向3个障碍物中每两个障碍物中间移动的单位,比如,请参考图36,其示出了一种可能的碰撞示意图。
基于上述碰撞场景,分散向导可以有一个,也可以有两个。比如,在上述第一种和第四种场景中,分散向导有一个,而在第二种和第五种场景中,分散向导有两个,本实施例对分散向导的个数并不做限定。
i个单位在跟随分散向导移动的过程中,保持与分散向导的相对位置不变。
步骤104,当单位群组中的单位与障碍物之间的距离小于预设距离时,单位群组中的j个单位朝向障碍物中的两个障碍物的中间移动,并生成j个单位所对应的聚拢向导,控制j个单位跟随聚拢向导向两个障碍物的中间聚拢,j为小于等于n的正整数。
聚拢向导是指用于引导j个单位朝向碰撞的两个障碍物的中间聚拢的向导,该聚拢向导跟随寻路移动。
终端可以将j个单位进行部分交叠,进而使得交叠后的j个单位可以向两个障碍物的中间聚拢。可选地,若j个单位中相邻两个单位之间存在间隙,则终端还可以去除间隙,进而使得j个单位向两个障碍物的中间聚拢,实际实现时,若去除间隙之后,j个单位仍然无法从两个障碍物的中间聚拢,则终端可以对j个单位进行部分交叠,本实施例对此并不做限定。本实施例采用交叠的方式来使得j个单位向两个障碍物的中间聚拢,保证了各个单位的正常显示。实际实现时,终端还可以对j个单位进行等比缩小,本实施例对此并不做限定。
综上所述,本实施例提供的多单位寻路方法,通过将n个单位作为一个单位群组,生成该单位群组的寻路向导,控制单位群组中的单位跟随寻路向导移动,并在单位群组中的单位与地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制单位群组中的单位跟随避让向导绕过障碍物移动;也即通过将多个单位作为一个整体进行自动寻路,进而只有在与障碍物之间的距离较小时生成避让向导,解决了相关技术中分别对每个单位进行寻路时,寻路效率较低的问题;达到了可以提高寻路效率的效果
在步骤103中,生成i个单位所对应的分散向导的步骤可以包括:
第一,根据i个单位的位置确定分散向导的第一位置。
比如,结合图37图,终端可以根据朝向障碍物的上侧移动的单位61和62的位置确定得到分散向导66的第一位置,根据朝向障碍物的下侧移动的单位63、64和65的位置确定得到分散向导67的第一位置。
本步骤中确定第一位置的确定方式与上述实施例中步骤101中确定寻路向导的位置的确定方式类似,在此不再赘述。
第二,生成初始位置为第一位置且按照预设移动方式移动的分散向导,预设移动方式包括以障碍物为中心、目标数值为半径且单位时间段内在预设方向 上移动的距离为预设距离,目标数值为第一位置与碰撞的障碍物之间的距离,预设方向为寻路向导的移动方向,预设距离为寻路向导在单位时间段内在预设方向上移动的距离。
终端确定得到分散向导的第一位置之后,终端可以计算该第一位置与该分散向导所对应的i个单位所碰撞的障碍物之间的距离,将该距离作为目标数值R。
为了保证各个单位可以与寻路向导同步向前移动,分散向导在在单位时间段内在寻路向导的移动方向上移动的距离S与寻路向导在移动方向上移动的距离S相同,也即分散向导在寻路向导的移动方向上的移动速度与寻路向导的移动速度相同。比如,请参考图38,分散向导可以按照图中所示的移动方式移动。
由于分散向导在单位时间段内在预设方向上移动的距离与寻路向导在预设方向上移动的距离相同,因此,单位群组中的各个单位可以同时到达结束点。
在步骤104中,生成j个单位所对应的聚拢向导的步骤可以包括:
第一,根据j个单位的位置确定聚拢向导的第二位置。
本步骤与上述实施例中确定寻路向导的位置的步骤类似,在此不再赘述。并且,在本实施例中,若j=n,也即单位群组中的所有单位均向两个障碍物中间移动,则此时,确定得到的第二位置与单位群组中的单位与障碍物碰撞时寻路向导所处的位置重合,本实施例在此不再赘述。
第二,生成初始位置为第二位置且跟随寻路向导移动的聚拢向导。
聚拢向导的移动速度与寻路向导的移动速度一致,对此并不做限定。
相应的,步骤104中,控制j个单位跟随聚拢向导向两个障碍物的中间聚拢的步骤可以包括:
第一,对于j个单位中的每个单位,根据各单位的位置以及各单位在目标连线上的投影位置分别确定各单位的移动轨迹,目标连线为两个障碍物的连线。
单位在目标连线上的投影位置是指j个单位在交叠且移动至目标连线后在目标连线中的位置。在本实施例中,j个单位同时移动至目标连线处。
可选地,终端确定单位在目标连线上的投影位置的步骤包括:终端计算目 标连线的总长度,根据总长度、j个单位中每个单位的大小以及相邻两个单位之间的距离计算j个单位同时分布在目标连线中时每个单位的位置。比如,j=4假设总长度为10、单位的直径为5且相邻两个单位之间的距离为0,则4个单位在到达目标连线后,其两两交叠2/3,比如,请参考图39,其示出了一种可能的分布方式。
在确定得到各个单位在目标连线中的位置之后,终端可以将单位的位置以及确定得到的该单位在目标连线上的投影位置的连线作为移动轨迹,如图39,其示出了确定得到的移动轨迹的示意图。
需要说明的是,上述仅以j个单位在到达目标连线之后,分布在整个目标连线上为例,可选地,j个单位还可以只占据目标连线中的部分位置,本实施例对此并不做限定。
第二,分别控制j个单位沿着移动轨迹移动。
可选地,本步骤可以包括:
(1)、计算聚拢向导移动至聚拢向导的过程中,所述j个单位各自在目标连线上的投影位置时所需的时间。
可选地,聚拢向导在目标连线上的投影位置是指聚拢向导跟随寻路向导移动后在移动至目标连线时所处的位置。实际实现时,该投影位置可以为目标连线的中心位置,本实施例对此并不做限定。
可选地,终端可以计算第二位置与投影位置之间的距离,计算该距离与预设速度的比值,将计算得到的比值作为该时间。其中,预设速度是指寻路向导移动的速度。
(2)、根据移动轨迹的长度以及时间确定单位的移动速度。
计算移动轨迹的长度与确定的时间的比值,将该比值作为该单位的移动速度。其中,由于不同单位所对应的移动轨迹的长度可能不同,而确定得到的时间相同,因此确定得到的不同单位的移动速度可能不同。
(3)、控制单位以移动速度沿着移动轨迹移动。
由于j个单位中的每个单位按照上述确定的速度跟随聚拢向导移动,聚拢向导跟随寻路向导移动,因此,各个单位可以同时到达结束点。
在上述各个实施例中,在单位群组跟随避让向导绕过障碍物之后,单位群 组中的各个单位恢复至跟随避让向导之前的分布并跟随寻路向导继续移动。
本实施例所说的单位群组跟随避让向导绕过障碍物是指,单位群组中的单位绕过障碍物且避让向导的前进方向与寻路向导的前进方向一致。比如,在分散向导带领i个单位绕过障碍物之后,i个单位可以继续跟随寻路向导移动。又比如,在j个单位跟随聚拢向导到达目标连线之后,j个单位可以恢复至聚拢前的阵形并继续跟随寻路向导移动。
请参考图40,其示出了本发明一个实施例提供的多单位寻路装置的结构示意图,如图40所示,该多单位寻路装置可以包括:生成模块910、控制模块920和移动模块930。
生成模块910,用于对单位群组进行自动寻路,生成沿着地图中的目标路径移动的寻路向导;所述单位群组中包括n个单位,n为大于1的整数,所述单位是指在界面的地图中可以移动的模拟对象,所述寻路向导是指用于引导至少一个单位按照计算的寻路路径移动的对象,所述寻路向导用于确定地图中从起始点至结束点之间的移动路径;
控制模块920,用于控制所述单位群组中的单位跟随所述寻路向导移动;
移动模块930,用于当所述单位群组中的单位与所述地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制所述单位群组中的单位跟随所述避让向导绕过所述障碍物移动。
综上所述,本实施例提供的多单位寻路装置,通过将n个单位作为一个单位群组,生成该单位群组的寻路向导,控制单位群组中的单位跟随寻路向导移动,并在单位群组中的单位与地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制单位群组中的单位跟随避让向导绕过障碍物移动;也即通过将多个单位作为一个整体进行自动寻路,进而只有在与障碍物之间的距离较小时生成避让向导,解决了相关技术中分别对每个单位进行寻路时,寻路效率较低的问题;达到了可以提高寻路效率的效果
基于上述实施例提供的多单位寻路装置,可选的,所述移动模块930,还用于:
当所述单位群组中的单位与所述障碍物之间的距离小于所述预设距离时,所述单位群组中的i个单位朝向所述障碍物的一侧移动,并生成所述i个单位 所对应的分散向导,控制所述i个单位与所述分散向导的相对距离不变,i为小于等于n的整数;
当所述单位群组中的单位与所述障碍物之间的距离小于所述预设距离时,所述单位群组中的j个单位朝向所述障碍物中的两个障碍物的中间移动,并生成所述j个单位所对应的聚拢向导,控制所述j个单位跟随所述聚拢向导向所述两个障碍物的中间聚拢,j为小于等于n的正整数。
可选的,所述移动模块930,还用于:
根据所述i个单位的位置确定所述分散向导的第一位置;
生成初始位置为所述第一位置且按照预设移动方式移动的所述分散向导,所述预设移动方式包括以所述障碍物为中心、目标数值为半径且单位时间段内在预设方向上移动的距离为预设距离,所述目标数值为所述第一位置与碰撞的障碍物之间的距离,所述预设方向为所述寻路向导的移动方向,所述预设距离为所述寻路向导在所述单位时间段内在所述预设方向上移动的距离。
可选的,所述移动模块930,还用于:
根据所述j个单位的位置确定所述聚拢向导的第二位置;
生成初始位置为所述第二位置且跟随所述寻路向导移动的所述聚拢向导。
可选的,所述移动模块930,还用于:
对于所述j个单位中的每个单位,根据各单位的位置以及各单位在目标连线上的投影位置分别确定各单位的移动轨迹,所述目标连线为所述两个障碍物的连线;
分别控制所述j个单位沿着所述移动轨迹移动。
可选的,所述移动模块930,还用于:
计算所述聚拢向导移动至所述聚拢向导的过程中,所述j个单位各自在所述目标连线上的投影位置时所需的时间;
根据所述移动轨迹的长度以及所述时间确定所述单位的移动速度;
分别控制所述j个单位以所述移动速度沿着所述移动轨迹移动。
可选的,所述装置还包括:
恢复模块,用于在所述单位群组跟随所述避让向导绕过所述障碍物之后,所述单位群组中的各个单位恢复至跟随所述避让向导之前的分布并跟随所述寻路向导继续移动。
需要说明的是:上述实施例提供的多单位寻路装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的多单位寻路装置和多单位寻路方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行上述多单位寻路方法。
图41其示出了本发明一个实施例提供的终端1000的框图,该终端可以包括射频(RF,Radio Frequency)电路1001、包括有一个或一个以上计算机可读存储介质的存储器1002、输入单元1003、显示单元1004、传感器1005、音频电路1006、无线保真(Wi-Fi,Wireless-Fidelity)模块1007、包括有一个或者一个以上处理核心的处理器1008、以及电源1009等部件。本领域技术人员可以理解,图41中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路1001可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器1008处理;另外,将涉及上行的数据发送给基站。通常,RF电路1001包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路1001还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器1002可用于存储软件程序以及模块,处理器1008通过运行存储在存储器1002的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1002还可以包括存储器控制器,以提供处理器1008和输入单元1003对存储器1002的访问。
输入单元1003可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元1003可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1008,并能接收处理器1008发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元1003还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1004可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元1004可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显 示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器1008以确定触摸事件的类型,随后处理器1008根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图41中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器1005,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1006、扬声器,传声器可提供用户与终端之间的音频接口。音频电路1006可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路1006接收后转换为音频数据,再将音频数据输出处理器1008处理后,经RF电路1001以发送给比如另一终端,或者将音频数据输出至存储器1002以便进一步处理。音频电路1006还可能包括耳塞插孔,以提供外设耳机与终端的通信。
Wi-Fi属于短距离无线传输技术,终端通过Wi-Fi模块1007可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图41示出了Wi-Fi模块1007,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1008是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1008可包括一个或多个处理核心;优选的,处理器1008可集成应用处理器和调制解调处理器,其中,应用处理器主要处 理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1008中。
终端还包括给各个部件供电的电源1010(比如电池),优选的,电源可以通过电源管理系统与处理器1008逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1010还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器1008会运行存储在存储器1002中的一个或一个以上的程序指令,从而实现上述各个方法实施例中所提供的终端。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (55)
- 一种控制模拟对象寻路的方法,其特征在于,包括:当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
- 根据权利要求1所述的方法,其特征在于,所述检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径之后,所述方法还包括:若不存在所述第一寻路路径,则确定与所述移动路径匹配的第二寻路路径。
- 根据权利要求2所述的方法,其特征在于,所述确定与所述移动路径匹配的第二寻路路径之后,所述方法还包括:获取所述第二寻路路径的开销数据,所述开销数据用于表示计算资源当前的使用量,所述计算资源是指服务器中用于计算寻路路径的资源;判断所述开销数据是否大于目标开销门限;若所述开销数据大于所述目标开销门限,则将所述第二寻路路径加入至所述预置路径信息集合中;若所述开销数据不大于所述目标开销门限,则根据所述开销数据更新历史开销数据。
- 根据权利要求2所述的方法,其特征在于,所述确定与所述移动路径匹配的第二寻路路径之后,所述方法还包括:获取所述第二寻路路径的热度数据,所述第二寻路路径的热度数据用于表示所述第二寻路路径的使用频率;判断所述第二寻路路径的热度数据是否大于目标热度门限;若所述第二寻路路径的热度数据大于所述目标热度门限,则将所述第二寻路路径加入至所述预置路径信息集合中;若所述第二寻路路径的热度数据不大于所述目标热度门限,则根据所述第二寻路路径的热度数据更新历史热度数据,所述历史热度数据用于更新所述目 标热度门限。
- 根据权利要求2所述的方法,其特征在于,所述确定与所述移动路径匹配的第二寻路路径,包括:获取所述第一模拟对象当前的第一位置以及所述第二模拟对象当前的第二位置;根据所述第一位置与所述第二位置确定所述第二模拟对象的第一目标移动位置,所述第一目标移动位置与所述第一位置之间的距离小于预置门限;根据所述第二位置与所述第一目标移动位置构成所述第二寻路路径。
- 根据权利要求5所述的方法,其特征在于,所述根据所述第一位置确定所述第二模拟对象的目标移动位置之后,所述方法还包括:当所述第一模拟对象发生移动时,获取所述第一模拟对象当前的第三位置以及所述第二模拟对象当前的第四位置;根据所述第三位置与所述第四位置确定所述第二模拟对象的第二目标移动位置,所述第二目标移动位置与所述第三位置之间的距离小于预置门限;根据所述第二当前位置与所述第一目标移动位置更新所述第二寻路路径。
- 根据权利要求5或6所述的方法,其特征在于,所述方法还包括:分别将所述第二位置、所述第一目标移动位置以及所述第二目标移动位置依次存储于路径堆栈;检测从所述第二位置到所述第二目标移动位置之间是否满足直线移动条件,若是,则从所述路径堆栈中清除所述第一目标移动位置。
- 根据权利要求7所述的方法,其特征在于,所述控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动之后,所述方法还包括:若所述第二模拟对象的移动位置满足寻路返回条件,则根据所述路径堆栈中的位置点构建第三寻路路径,所述第三寻路路径用于所述第二模拟对象返回至初始位置。
- 一种服务器,其特征在于,包括:第一获取模块,用于当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;第一检测模块,用于根据所述第一获取模块获取的所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路 径;控制模块,用于若所述第一检测模块检测到存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
- 根据权利要求9所述的服务器,其特征在于,所述服务器还包括:确定模块,用于所述第一检测模块检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径之后,若不存在所述第一寻路路径,则确定与所述移动路径匹配的第二寻路路径。
- 根据权利要求10所述的服务器,其特征在于,所述服务器还包括:第二获取模块,用于所述确定模块确定与所述移动路径匹配的第二寻路路径之后,获取所述第二寻路路径的开销数据,所述开销数据用于表示计算资源当前的使用量,所述计算资源是指服务器中用于计算寻路路径的资源;第一判断模块,用于判断所述第二获取模块获取的所述开销数据是否大于目标开销门限;第一加入模块,用于若所述第一判断模块判断得到所述开销数据大于所述目标开销门限,则将所述第二寻路路径加入至所述预置路径信息集合中;第一更新模块,用于若所述第一判断模块判断得到所述开销数据不大于所述目标开销门限,则根据所述开销数据更新历史开销数据,所述历史开销数据用于更新所述目标开销门限。
- 根据权利要求10所述的服务器,其特征在于,所述服务器还包括:第三获取模块,用于所述确定模块确定与所述移动路径匹配的第二寻路路径之后,获取所述第二寻路路径的热度数据,所述第二寻路路径的热度数据用于表示第二寻路路径的使用频率;第二判断模块,用于判断所述第三获取模块获取的所述第二寻路路径的热度数据是否大于目标热度门限;第二加入模块,用于若所述第二判断模块判断得到所述第二寻路路径的热度数据大于所述目标热度门限,则将所述第二寻路路径加入至所述预置路径信息集合中;第二更新模块,用于若所述第二判断模块判断得到所述第二寻路路径的热度数据不大于所述目标热度门限,则根据所述第二寻路路径的热度数据更新历史热度数据,所述历史热度数据用于更新所述目标热度门限。
- 根据权利要求10所述的服务器,其特征在于,所述确定模块包括:第一获取单元,用于获取所述第一模拟对象当前的第一位置以及所述第二模拟对象当前的第二位置;第一确定单元,用于根据所述第一获取单元获取的所述第一位置与所述第二位置确定所述第二模拟对象的第一目标移动位置,所述第一目标移动位置与所述第一位置之间的距离小于预置门限,所述第二位置与所述第一目标移动位置构成所述第二寻路路径。
- 根据权利要求13所述的服务器,其特征在于,所述确定模块还包括:第二获取单元,用于所述第一确定单元根据所述第一位置确定所述第二模拟对象的目标移动位置之后,当所述第一模拟对象发生移动时,获取所述第一模拟对象的第三位置以及所述第二模拟对象的第四位置;第二确定单元,用于根据所述第二获取单元获取的所述第三位置与所述第四位置确定所述第二模拟对象的第二目标移动位置,所述第二目标移动位置与所述第三位置之间的距离小于预置门限;所述第二更新模块用于根据所述第二位置与所述第一目标移动位置更新所述第二寻路路径。
- 根据权利要求13或14所述的服务器,其特征在于,所述服务器还包括:存储模块,用于分别将所述第二位置、所述第一目标移动位置以及所述第二目标移动位置依次存储于路径堆栈;第二检测模块,用于检测从所述第二位置到所述第二目标移动位置之间是否满足直线移动条件,若是,则从所述存储模块存储的所述路径堆栈中清除所述第一目标移动位置。
- 根据权利要求15所述的服务器,其特征在于,所述服务器还包括:构建模块,用于所述控制模块控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动之后,若所述第二模拟对象的移动位置满足寻路返回条件,则根据所述路径堆栈中的位置点构建第三寻路路径,所述第三寻路路径用于所述第二模拟对象返回至初始位置。
- 一种控制模拟对象的方法,其特征在于,所述方法包括:接收用户针对第一模拟对象的操作指令,所述操作指令指示所述第一模拟 对象的移动路径;根据与所述操作指令指示的移动路径匹配的寻路路径,控制所述第一模拟对象向第二模拟对象所在的位置移动,所述第二模拟对象具有一个控制范围,所述第二模拟对象的控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域;当所述第一模拟对象在所述第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。
- 根据权利要求17所述的方法,其特征在于,所述按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域,包括:当所述第一模拟对象在占据所述第二模拟对象的控制范围的第一子控制区域时,判断所述第一子控制区域是否被占据;若被占据,则控制所述第一模拟对象占据所述第二模拟对象的控制范围中除第一子控制区域之外的其它子控制区域;若未被占据,则控制所述第一模拟对象占据所述第一子控制区域。
- 根据权利要求18所述的方法,其特征在于,所述第一模拟对象具有一个控制范围,在控制所述第一模拟对象占据所述第二模拟对象的控制范围的一个子控制区域后,所述方法还包括:在所述第二模拟对象的控制范围标记所述第一模拟对象占据的有效子控制区域,和/或,标记所述第一模拟对象的控制范围上被除所述第一模拟对象之外的对象占据的子控制区域。
- 根据权利要求19所述的方法,其特征在于,所述方法还包括:当确定占据所述第一模拟对象的控制范围上的任意子控制区域的第三模拟对象离开所述第一模拟对象的控制范围,且所述第三模拟对象与所述第一模拟对象的距离大于预设阈值后,取消所述第三模拟对象占据的子控制区域的标记。
- 根据权利要求17-20任一所述的方法,其特征在于,所述第二模拟对象的控制范围为圆环空间,所述控制范围中的各子控制区域为对所述圆环空间 进行等分后得到的子空间。
- 根据权利要求21所述的方法,其特征在于,所述第二模拟对象的控制范围的子控制区域满足如下项:根据应用界面上的各模拟对象的体积划分,以及至少容纳应用界面上的预定义数量的对象。
- 根据权利要求22所述的方法,其特征在于,所述第二模拟对象的控制范围中的各控制区域根据所述应用界面上的各模拟对象的操作范围划分。
- 一种控制对象的装置,其特征在于,所述装置包括:收发模块,用于接收用户针对第一模拟对象的操作指令,所述操作指令指示所述第一模拟对象的移动路径;控制线程模块,用于根据于所述收发模块接收到的所述操作指令指示的移动路径匹配的寻路路径,控制所述第一模拟对象向第二模拟对象所在的位置移动,所述第二模拟对象具有一个控制范围,所述第二模拟对象的控制范围包括至少一个控制区域,每个控制区域包括多个子控制区域;当所述第一模拟对象在所述第二模拟对象的控制范围时,按照预设的选择规则控制所述第一模拟对象占据所述第二模拟对象的控制范围中的一个子控制区域。
- 根据权利要求24所述的装置,其特征在于,所述控制线程模块具体用于:当所述第一模拟对象在占据所述第二模拟对象的控制范围的第一子控制区域时,判断所述第一子控制区域是否被占据;若被占据,则控制所述第一模拟对象占据所述第二模拟对象的控制范围中除第一子控制区域之外的其它子控制区域;若未被占据,则控制所述第一模拟对象占据所述第一子控制区域。
- 根据权利要求25所述的装置,其特征在于,所述第一模拟对象具有一个控制范围,所述控制线程模块在控制所述第一模拟对象占据所述第二模拟对象的控制范围的一个子控制区域后,还用于:在所述第二模拟对象的控制范围标记所述第一模拟对象占据的有效子控制区域,和/或,标记所述第一模拟对象的控制范围上被除所述第一模拟对象之外的对象占据的子控制区域。
- 根据权利要求26所述的装置,其特征在于,所述控制线程模块还用于:当确定占据所述第一模拟对象的控制范围上的任意子控制区域的第三模拟对象离开所述第一模拟对象的控制范围,且所述第三模拟对象与所述第一模拟对象的距离大于预设阈值后,取消所述第三模拟对象占据的子控制区域的标记。
- 根据权利要求24-27任一所述的装置,其特征在于,所述第二模拟对象的控制范围为圆环空间,所述控制范围中的各子控制区域为对所述圆环空间进行等分后得到的子空间。
- 根据权利要求28所述的装置,其特征在于,所述第二模拟对象的控制范围的子控制区域满足如下项:根据应用界面上的各模拟对象的体积划分,以及至少容纳应用界面上的预定义数量的对象。
- 根据权利要求29所述的装置,其特征在于,所述第二模拟对象的控制范围中的各控制区域根据所述应用界面上的各模拟对象的操作范围划分。
- 一种寻路方法,其特征在于,包括:确定模拟对象的起始点以及目标点;根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径;根据所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。
- 根据权利要求31所述的方法,其特征在于,所述游戏场景地图被划分出可行走区域,所述可行走区域被划分为至少2个导航网格;所述根据起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径,包括:a、若所述目标点在第一导航网格内,则确定所述寻路路径为所述直线寻路路径,所述第一导航网格为所述起始点所在的导航网格;b、若所述目标点不在所述第一导航网格内,则确定所述第一导航网格中是否有可通过边与目标直线相交,所述目标直线为所述起始点到所述目标点的 直线;c、若确定所述第一导航网格中有可通过边与所述目标直线相交,则将所述第二导航网格作为所述第一导航网格,所述第二导航网格为所述可通过边相邻的导航网格;d、重新执行步骤a至c,直至确定所述第一导航网格中无可通过边与所述目标直线相交;e、若确定所述第一导航网格中无可通过边与所述目标直线相交,则确定所述寻路路径不是直线寻路路径。
- 根据权利要求32所述的方法,其特征在于,所述游戏场景地图中的至少2导航网格作为导航网格序列,所述导航网格序列中的导航网格相邻;所述根据所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径,还包括:当确定所述寻路路径不是所述直线寻路路径时,则确定所述第一导航网格与第三导航网格是否在同一导航网格序列中,所述第三导航网格为所述目标点所在的导航网格;若是,则确定所述寻路路径为管道寻路路径;若否,则确定所述寻路路径不是所述管道寻路路径。
- 根据权利要求33所述的方法,其特征在于,所述根据所述寻路路径采用对应的寻路策略,包括:当所述寻路路径为所述直线寻路路径时,则将所述起始点以及目标点的直线连接路径作为所述模拟对象的寻路路径进行寻路;当所述寻路路径为所述管道寻路路径时,则将所述起始点与所述目标点之间的导航网格序列作为所述模拟对象的寻路路径进行寻路;当所述寻路路径不是所述直线寻路路径,且所述寻路路径不是所述管道寻路路径时,则根据A星算法计算所述模拟对象的寻路路径并进行寻路。
- 根据权利要求34所述的方法,其特征在于,所述根据A星算法计算所述模拟对象的寻路路径进行寻路,包括:将所述第一导航网格的边上的中点到所述目标点的直线距离作为所述A星算法的估值函数;根据所述估值函数,通过所述A星算法计算所述模拟对象的寻路路径并 进行寻路。
- 根据权利要求32-35任一项所述的方法,其特征在于,所述导航网格为三角形导航网格。
- 一种寻路装置,其特征在于,包括:第一确定模块,用于确定模拟对象的起始点以及目标点;第二确定模块,用于根据所述第一确定模块确定的所述起始点以及目标点确定所述模拟对象在游戏场景地图上的寻路路径;寻路模块,用于根据所述第二确定模块确定的所述寻路路径的类型对所述模拟对象采取与所述类型对应的寻路策略,其中,不同类型的寻路路径配置有不同的寻路策略。
- 根据权利要求37所述的装置,其特征在于,所述游戏场景地图被划分出可行走区域,所述可行走区域被划分为至少2个导航网格;所述第二确定模块具体用于:a、确定所述目标点是否在第一导航网格内,若所述目标点在所述第一导航网格内,则确定所述寻路路径为所述直线寻路路径,所述第一导航网格为所述起始点所在的导航网格;b、若所述目标点不在所述第一导航网格内,则确定所述第一导航网格中是否有可通过边与目标直线相交,所述目标直线为所述起始点到所述目标点的直线;c、若确定所述第一导航网格中有可通过边与所述目标直线相交,则将所述第二导航网格作为所述第一导航网格,所述第二导航网格为所述可通过边相邻的导航网格;d、重新执行步骤a至c,直至确定所述第一导航网格中无可通过边与所述目标直线相交;e、若确定所述第一导航网格中无可通过边与所述目标直线相交,则确定所述寻路路径不是所述直线寻路路径。
- 根据权利要求38所述的装置,其特征在于,所述游戏场景地图中的至少2导航网格作为导航网格序列,所述导航网格序列中的导航网格相邻;所述第二确定模块具体还用于:当确定所述寻路路径不是所述直线寻路路径时,确定所述第一导航网格与 第三导航网格是否在同一导航网格序列中,所述第三导航网格为所述目标点所在的导航网格;若是,则确定所述寻路路径为管道寻路路径;若否,则确定所述寻路路径不是所述管道寻路路径。
- 根据权利要求39所述的装置,其特征在于,所述寻路模块具体用于:当所述寻路路径为所述直线寻路路径时,则将所述起始点以及目标点的直线连接路径作为所述模拟对象的寻路路径进行寻路;当所述寻路路径为所述管道寻路路径时,则将所述起始点与所述目标点之间的导航网格序列作为所述模拟对象的寻路路径进行寻路;当所述寻路路径不是所述直线寻路路径,且所述寻路路径不是所述管道寻路路径时,则根据A星算法计算所述模拟对象的寻路路径进行寻路。
- 根据权利要求40所述的装置,其特征在于,所述寻路模块具体用于包括:当所述寻路路径不是所述直线寻路路径,并且所述寻路路径不是所述管道寻路路径时,将所述第一导航网格的边上的中点到所述目标点的直线距离作为所述A星算法的估值函数;根据所述估值函数,通过所述A星算法计算所述模拟对象的寻路路径并进行寻路。
- 一种多单位寻路方法,其特征在于,所述方法包括:对单位群组进行自动寻路,生成沿着地图中的目标路径移动的寻路向导;所述单位群组中包括n个单位,n为大于1的整数,所述单位是指在界面的地图中可以移动的模拟对象,所述寻路向导是指用于引导至少一个单位按照计算的寻路路径移动的对象;控制所述单位群组中的单位跟随所述寻路向导移动;当所述单位群组中的单位与所述地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制所述单位群组中的单位跟随所述避让向导绕过所述障碍物移动。
- 根据权利要求42所述的方法,其特征在于,所述当所述单位群组中的单位与所述地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制所述单位群组中的单位跟随所述避让向导绕过所述障碍物移动,包括:当所述单位群组中的单位与所述障碍物之间的距离小于所述预设距离时,所述单位群组中的i个单位朝向所述障碍物的一侧移动,并生成所述i个单位所对应的分散向导,控制所述i个单位与所述分散向导的相对距离不变,i为小于等于n的整数;当所述单位群组中的单位与所述障碍物之间的距离小于所述预设距离时,所述单位群组中的j个单位朝向所述障碍物中的两个障碍物的中间移动,并生成所述j个单位所对应的聚拢向导,控制所述j个单位跟随所述聚拢向导向所述两个障碍物的中间聚拢,j为小于等于n的正整数。
- 根据权利要求43所述的方法,其特征在于,所述生成所述i个单位所对应的分散向导,包括:根据所述i个单位的位置确定所述分散向导的第一位置;生成初始位置为所述第一位置的所述分散向导,所述分散向导按照预设移动方式移动,所述预设移动方式包括以所述障碍物为中心、目标数值为半径且单位时间段内在预设方向上移动的距离为预设距离,所述目标数值为所述第一位置与碰撞的障碍物之间的距离,所述预设方向为所述寻路向导的移动方向,所述预设距离为所述寻路向导在所述单位时间段内在所述预设方向上移动的距离。
- 根据权利要求43所述的方法,其特征在于,所述生成所述j个单位所对应的聚拢向导,包括:根据所述j个单位的位置确定所述聚拢向导的第二位置;生成初始位置为所述第二位置的所述聚拢向导,所述聚拢向导跟随所述寻路向导移动。
- 根据权利要求43所述的方法,其特征在于,所述控制所述j个单位跟随所述聚拢向导向所述两个障碍物的中间聚拢,包括:对于所述j个单位中的每个单位,根据各单位的位置以及各单位在目标连线上的投影位置分别确定各单位的移动轨迹,所述目标连线为所述两个障碍物的连线;分别控制所述j个单位沿着所述移动轨迹移动。
- 根据权利要求46所述的方法,其特征在于,所述分别控制所述j个单位沿着所述移动轨迹移动,包括:计算所述聚拢向导移动至所述聚拢向导的过程中,所述j个单位各自在所述目标连线上的投影位置时所需的时间;根据所述移动轨迹的长度以及所述时间确定所述单位的移动速度;分别控制所述j个单位以所述移动速度沿着所述移动轨迹移动。
- 根据权利要求42至47任一所述的方法,其特征在于,所述方法还包括:在所述单位群组跟随所述避让向导绕过所述障碍物之后,所述单位群组中的各个单位恢复至跟随所述避让向导之前的分布并跟随所述寻路向导继续移动。
- 一种多单位寻路装置,其特征在于,所述装置包括:生成模块,用于对单位群组进行自动寻路,生成沿着地图中的目标路径移动的寻路向导;所述单位群组中包括n个单位,n为大于1的整数,所述单位是指在界面的地图中可以移动的模拟对象,所述寻路向导是指用于引导至少一个单位按照计算的寻路路径移动的对象;控制模块,用于控制所述单位群组中的单位跟随所述寻路向导移动;移动模块,用于当所述单位群组中的单位与所述地图中的障碍物之间的距离小于预设距离时,生成避让向导,控制所述单位群组中的单位跟随所述避让向导绕过所述障碍物移动。
- 根据权利要求49所述的装置,其特征在于,所述移动模块,还用于:当所述单位群组中的单位与所述障碍物之间的距离小于所述预设距离时,所述单位群组中的i个单位朝向所述障碍物的一侧移动,并生成所述i个单位所对应的分散向导,控制所述i个单位与所述分散向导的相对距离不变,i为小于等于n的整数;当所述单位群组中的单位与所述障碍物之间的距离小于所述预设距离时,所述单位群组中的j个单位朝向所述障碍物中的两个障碍物的中间移动,并生成所述j个单位所对应的聚拢向导,控制所述j个单位跟随所述聚拢向导向所述两个障碍物的中间聚拢,j为小于等于n的正整数。
- 根据权利要求50所述的装置,其特征在于,所述移动模块,还用于:根据所述i个单位的位置确定所述分散向导的第一位置;生成初始位置为所述第一位置的所述分散向导,所述分散向导按照预设移 动方式移动,所述预设移动方式包括以所述障碍物为中心、目标数值为半径且单位时间段内在预设方向上移动的距离为预设距离,所述目标数值为所述第一位置与碰撞的障碍物之间的距离,所述预设方向为所述寻路向导的移动方向,所述预设距离为所述寻路向导在所述单位时间段内在所述预设方向上移动的距离。
- 根据权利要求50所述的装置,其特征在于,所述移动模块,还用于:根据所述j个单位的位置确定所述聚拢向导的第二位置;生成初始位置为所述第二位置的所述聚拢向导,所述聚拢向导跟随所述寻路向导移动。
- 根据权利要求50所述的装置,其特征在于,所述移动模块,还用于:对于所述j个单位中的每个单位,根据各单位的位置以及各单位在目标连线上的投影位置分别确定各单位的移动轨迹,所述目标连线为所述两个障碍物的连线;分别控制所述j个单位沿着所述移动轨迹移动。
- 根据权利要求53所述的装置,其特征在于,所述移动模块,还用于:计算所述聚拢向导移动至所述聚拢向导的过程中,所述j个单位各自在所述目标连线上的投影位置时所需的时间;根据所述移动轨迹的长度以及所述时间确定所述单位的移动速度;分别控制所述j个单位以所述移动速度沿着所述移动轨迹移动。
- 根据权利要求49至54任一所述的装置,其特征在于,所述装置还包括:恢复模块,用于在所述单位群组跟随所述避让向导绕过所述障碍物之后,所述单位群组中的各个单位恢复至跟随所述避让向导之前的分布并跟随所述寻路向导继续移动。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710026166.4 | 2017-01-13 | ||
CN201710026166.4A CN106790224B (zh) | 2017-01-13 | 2017-01-13 | 一种控制模拟对象寻路的方法及服务器 |
CN201710060211.8A CN106814966B (zh) | 2017-01-24 | 2017-01-24 | 一种控制对象的方法及装置 |
CN201710060211.8 | 2017-01-24 | ||
CN201710184204.9A CN106964156B (zh) | 2017-03-24 | 2017-03-24 | 一种寻路方法以及装置 |
CN201710184204.9 | 2017-03-24 | ||
CN201710288007.1A CN107185242B (zh) | 2017-04-27 | 2017-04-27 | 多单位寻路方法及装置 |
CN201710288007.1 | 2017-04-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018130135A1 true WO2018130135A1 (zh) | 2018-07-19 |
Family
ID=62839633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2018/071882 WO2018130135A1 (zh) | 2017-01-13 | 2018-01-09 | 一种控制模拟对象寻路的方法、装置及服务器 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TWI664836B (zh) |
WO (1) | WO2018130135A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109612457A (zh) * | 2018-12-29 | 2019-04-12 | 咪咕互动娱乐有限公司 | 一种运动路线确定方法、服务器及存储介质 |
CN110772791A (zh) * | 2019-11-05 | 2020-02-11 | 网易(杭州)网络有限公司 | 三维游戏场景的路线生成方法、装置和存储介质 |
CN110917624A (zh) * | 2019-12-06 | 2020-03-27 | 珠海海鸟科技有限公司 | 路径确定方法、装置及设备 |
CN111035930A (zh) * | 2019-12-06 | 2020-04-21 | 珠海海鸟科技有限公司 | 地图数据处理方法及装置 |
CN111158829A (zh) * | 2019-12-30 | 2020-05-15 | 北京金山安全软件有限公司 | 操作回退处理方法和装置 |
CN111202985A (zh) * | 2020-01-16 | 2020-05-29 | 网易(杭州)网络有限公司 | 2d游戏中的路径规划方法、系统及电子设备 |
CN111481931A (zh) * | 2020-04-13 | 2020-08-04 | 网易(杭州)网络有限公司 | 游戏中虚拟对象的寻路控制方法、电子设备及存储介质 |
CN111773687A (zh) * | 2020-06-30 | 2020-10-16 | 完美世界(北京)软件科技发展有限公司 | 地图寻路方法和装置、存储介质和电子装置 |
CN111840998A (zh) * | 2020-06-30 | 2020-10-30 | 完美世界(北京)软件科技发展有限公司 | 操作控制方法和装置、存储介质和电子装置 |
CN112023401A (zh) * | 2020-09-11 | 2020-12-04 | 北京冰封互娱科技有限公司 | 寻路恢复的处理方法、装置及电子设备 |
CN113730915A (zh) * | 2021-09-16 | 2021-12-03 | 腾讯科技(深圳)有限公司 | 目标路径的确定方法、装置和存储介质及电子设备 |
CN116617669A (zh) * | 2023-05-23 | 2023-08-22 | 广州盈风网络科技有限公司 | 一种碰撞测试及其检测方法、设备与存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819289B (zh) * | 2021-03-30 | 2023-10-21 | 財團法人工業技術研究院 | 分散式協作運算方法及系統 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932829A (zh) * | 2006-10-19 | 2007-03-21 | 北京金山数字娱乐科技有限公司 | 一种在网络游戏中获取两点间路径的系统与方法 |
CN101239240A (zh) * | 2007-02-07 | 2008-08-13 | 盛趣信息技术(上海)有限公司 | 一种非玩家角色的控制方法 |
CN103893969A (zh) * | 2014-04-15 | 2014-07-02 | 广州博冠信息科技有限公司 | 一种游戏中寻路的方法和设备 |
CN104645616A (zh) * | 2015-03-16 | 2015-05-27 | 成都优聚软件有限责任公司 | 一种塔防游戏中游戏对象的移动路径设置方法和系统 |
CN104759097A (zh) * | 2015-04-13 | 2015-07-08 | 四川天上友嘉网络科技有限公司 | 游戏中的自动寻路方法 |
JP5887458B1 (ja) * | 2015-11-04 | 2016-03-16 | 株式会社Cygames | プレイヤの移動履歴に基づいてノンプレイヤキャラクタの経路探索を行うゲームシステム等 |
CN106201266A (zh) * | 2016-07-06 | 2016-12-07 | 广东小天才科技有限公司 | 一种虚拟角色移动的控制方法及装置、电子设备 |
CN106294123A (zh) * | 2016-07-22 | 2017-01-04 | 厦门美图移动科技有限公司 | 一种遍历测试中路径匹配的方法、装置及移动终端 |
CN106790224A (zh) * | 2017-01-13 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种控制模拟对象寻路的方法及服务器 |
CN106814966A (zh) * | 2017-01-24 | 2017-06-09 | 腾讯科技(深圳)有限公司 | 一种控制对象的方法及装置 |
CN106964156A (zh) * | 2017-03-24 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种寻路方法以及装置 |
CN107185242A (zh) * | 2017-04-27 | 2017-09-22 | 腾讯科技(深圳)有限公司 | 多单位寻路方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100410955C (zh) * | 2005-09-30 | 2008-08-13 | 腾讯科技(深圳)有限公司 | 在二维游戏场景中实现跟随的方法及装置 |
CN104548598B (zh) * | 2014-12-31 | 2017-08-08 | 北京像素软件科技股份有限公司 | 一种虚拟现实场景中寻路的方法 |
CN106075906B (zh) * | 2016-06-03 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 一种模拟对象的寻路方法、场景的搭建方法和对应的装置 |
-
2018
- 2018-01-09 WO PCT/CN2018/071882 patent/WO2018130135A1/zh active Application Filing
- 2018-01-12 TW TW107101326A patent/TWI664836B/zh active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932829A (zh) * | 2006-10-19 | 2007-03-21 | 北京金山数字娱乐科技有限公司 | 一种在网络游戏中获取两点间路径的系统与方法 |
CN101239240A (zh) * | 2007-02-07 | 2008-08-13 | 盛趣信息技术(上海)有限公司 | 一种非玩家角色的控制方法 |
CN103893969A (zh) * | 2014-04-15 | 2014-07-02 | 广州博冠信息科技有限公司 | 一种游戏中寻路的方法和设备 |
CN104645616A (zh) * | 2015-03-16 | 2015-05-27 | 成都优聚软件有限责任公司 | 一种塔防游戏中游戏对象的移动路径设置方法和系统 |
CN104759097A (zh) * | 2015-04-13 | 2015-07-08 | 四川天上友嘉网络科技有限公司 | 游戏中的自动寻路方法 |
JP5887458B1 (ja) * | 2015-11-04 | 2016-03-16 | 株式会社Cygames | プレイヤの移動履歴に基づいてノンプレイヤキャラクタの経路探索を行うゲームシステム等 |
CN106201266A (zh) * | 2016-07-06 | 2016-12-07 | 广东小天才科技有限公司 | 一种虚拟角色移动的控制方法及装置、电子设备 |
CN106294123A (zh) * | 2016-07-22 | 2017-01-04 | 厦门美图移动科技有限公司 | 一种遍历测试中路径匹配的方法、装置及移动终端 |
CN106790224A (zh) * | 2017-01-13 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种控制模拟对象寻路的方法及服务器 |
CN106814966A (zh) * | 2017-01-24 | 2017-06-09 | 腾讯科技(深圳)有限公司 | 一种控制对象的方法及装置 |
CN106964156A (zh) * | 2017-03-24 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种寻路方法以及装置 |
CN107185242A (zh) * | 2017-04-27 | 2017-09-22 | 腾讯科技(深圳)有限公司 | 多单位寻路方法及装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109612457A (zh) * | 2018-12-29 | 2019-04-12 | 咪咕互动娱乐有限公司 | 一种运动路线确定方法、服务器及存储介质 |
CN110772791A (zh) * | 2019-11-05 | 2020-02-11 | 网易(杭州)网络有限公司 | 三维游戏场景的路线生成方法、装置和存储介质 |
CN110917624A (zh) * | 2019-12-06 | 2020-03-27 | 珠海海鸟科技有限公司 | 路径确定方法、装置及设备 |
CN111035930A (zh) * | 2019-12-06 | 2020-04-21 | 珠海海鸟科技有限公司 | 地图数据处理方法及装置 |
CN111035930B (zh) * | 2019-12-06 | 2024-04-19 | 珠海海鸟科技有限公司 | 地图数据处理方法及装置 |
CN110917624B (zh) * | 2019-12-06 | 2024-01-23 | 珠海海鸟科技有限公司 | 路径确定方法、装置及设备 |
CN111158829A (zh) * | 2019-12-30 | 2020-05-15 | 北京金山安全软件有限公司 | 操作回退处理方法和装置 |
CN111202985B (zh) * | 2020-01-16 | 2023-04-07 | 网易(杭州)网络有限公司 | 2d游戏中的路径规划方法、系统及电子设备 |
CN111202985A (zh) * | 2020-01-16 | 2020-05-29 | 网易(杭州)网络有限公司 | 2d游戏中的路径规划方法、系统及电子设备 |
CN111481931A (zh) * | 2020-04-13 | 2020-08-04 | 网易(杭州)网络有限公司 | 游戏中虚拟对象的寻路控制方法、电子设备及存储介质 |
CN111840998A (zh) * | 2020-06-30 | 2020-10-30 | 完美世界(北京)软件科技发展有限公司 | 操作控制方法和装置、存储介质和电子装置 |
CN111773687A (zh) * | 2020-06-30 | 2020-10-16 | 完美世界(北京)软件科技发展有限公司 | 地图寻路方法和装置、存储介质和电子装置 |
CN112023401A (zh) * | 2020-09-11 | 2020-12-04 | 北京冰封互娱科技有限公司 | 寻路恢复的处理方法、装置及电子设备 |
CN113730915A (zh) * | 2021-09-16 | 2021-12-03 | 腾讯科技(深圳)有限公司 | 目标路径的确定方法、装置和存储介质及电子设备 |
CN113730915B (zh) * | 2021-09-16 | 2023-08-25 | 腾讯科技(深圳)有限公司 | 目标路径的确定方法、装置和存储介质及电子设备 |
CN116617669A (zh) * | 2023-05-23 | 2023-08-22 | 广州盈风网络科技有限公司 | 一种碰撞测试及其检测方法、设备与存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TWI664836B (zh) | 2019-07-01 |
TW201826755A (zh) | 2018-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018130135A1 (zh) | 一种控制模拟对象寻路的方法、装置及服务器 | |
JP5767760B2 (ja) | 動的障害物のないネットワークゲームシステム及びその処理方法 | |
US11547941B2 (en) | Apparatus for adapting virtual gaming with real world information | |
US10913000B2 (en) | Information storage medium and server device | |
CN112044074A (zh) | 对非玩家角色寻路的方法、装置、存储介质及计算机设备 | |
CN111773696A (zh) | 一种虚拟对象的展示方法、相关装置及存储介质 | |
US10478723B2 (en) | Track based play systems | |
WO2014173187A1 (en) | Systems and methods for path finding in maps | |
WO2018103633A1 (zh) | 一种图像处理的方法及装置 | |
US20140316700A1 (en) | Systems and Methods for Path Finding | |
EP2749331B1 (en) | Information processing system, information processing apparatus, information processing program and information processing method | |
CN105407992A (zh) | 图像处理程序、服务器装置、图像处理系统及图像处理方法 | |
CN112915541B (zh) | 跳点搜索方法、装置、设备及存储介质 | |
US10994213B2 (en) | Program, information processing device, and control method | |
JP2021098051A (ja) | ゲームプログラム、方法、および情報処理装置 | |
KR20230145430A (ko) | 가상 환경에서의 좌표축 표시 방법 및 장치, 그리고 단말기 및 매체 | |
JP2017093928A (ja) | プログラム、ゲームの制御方法、及び情報処理装置 | |
CN113398566A (zh) | 游戏的显示控制方法、装置、存储介质及计算机设备 | |
JP7341801B2 (ja) | ビデオゲーム処理プログラム、及びビデオゲーム処理システム | |
CN112699208B (zh) | 地图寻路方法、装置、设备及介质 | |
CN113599825A (zh) | 一种游戏对局中更新虚拟资源方法和相关装置 | |
JP2017094120A (ja) | プログラム、ゲームの制御方法、及び情報処理装置 | |
WO2024098984A1 (zh) | 一种虚拟道具的控制方法、装置、设备以及存储介质 | |
CN112587924A (zh) | 游戏ai的躲避方法、装置、存储介质及计算机设备 | |
CN116351061A (zh) | 一种寻路方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18738484 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18738484 Country of ref document: EP Kind code of ref document: A1 |