CN106790224B - 一种控制模拟对象寻路的方法及服务器 - Google Patents
一种控制模拟对象寻路的方法及服务器 Download PDFInfo
- Publication number
- CN106790224B CN106790224B CN201710026166.4A CN201710026166A CN106790224B CN 106790224 B CN106790224 B CN 106790224B CN 201710026166 A CN201710026166 A CN 201710026166A CN 106790224 B CN106790224 B CN 106790224B
- Authority
- CN
- China
- Prior art keywords
- path
- pathfinding
- simulated object
- server
- current location
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000002452 interceptive effect Effects 0.000 claims abstract description 19
- 238000001514 detection method Methods 0.000 claims description 16
- 238000004088 simulation Methods 0.000 claims description 11
- 241000406668 Loxodonta cyclotis Species 0.000 claims description 2
- 238000007689 inspection Methods 0.000 claims 1
- 238000004422 calculation algorithm Methods 0.000 abstract description 19
- 238000012423 maintenance Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 12
- 238000003860 storage Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000010845 search algorithm Methods 0.000 description 4
- 238000012935 Averaging Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009184 walking Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003197 gene knockdown Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000155 melt Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Navigation (AREA)
Abstract
本发明实施例公开了一种控制模拟对象寻路的方法,包括:当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。本发明还提供一种服务器。本发明实施例中服务器只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种控制模拟对象寻路的方法及相关装置。
背景技术
随着互联网技术的不断发展,体验大型多人在线角色扮演游戏(英文全称: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*算法的搜索开销很大,占用服务器较多计算资源。
发明内容
本发明实施例提供了一种控制模拟对象寻路的方法及服务器,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
有鉴于此,本发明第一方面提供一种控制模拟对象寻路的方法,包括:
当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
本发明第二方面提供服务器,包括:
第一获取模块,用于当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
第一检测模块,用于根据所述第一获取模块获取的所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
控制模块,用于若所述第一检测模块检测到存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,提供了一种控制模拟对象寻路的方法,具体为当服务器接收到第一模拟对象触发的交互指令时,可以获取第一模拟对象的移动路径,然后服务器根据第一模拟对象的移动路径,检测预置路径信息集合中是否存在与移动路径匹配的寻路路径,若存在,则控制第二模拟对象按照寻路路径向所述第一模拟对象移动。通过上述方式,第二模拟对象的路径可以与第一模拟对象的移动路径达到同步,从而提升方案是合理性,此外,服务器无需维护交互式应用地图中的所有路径点信息,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
附图说明
图1为本发明实施例中控制模拟对象寻路的架构图;
图2为本发明实施例中控制模拟对象寻路的方法一个实施例示意图;
图3为本发明实施例中基于路径池的寻路流程示意图;
图4为本发明应用场景中的NPC配置示意图;
图5为本发明应用场景中基于路径池的返回寻路流程示意图;
图6为本发明实施例中服务器一个实施例示意图;
图7为本发明实施例中服务器另一个实施例示意图;
图8为本发明实施例中服务器另一个实施例示意图;
图9为本发明实施例中服务器另一个实施例示意图;
图10为本发明实施例中服务器另一个实施例示意图;
图11为本发明实施例中服务器另一个实施例示意图;
图12为本发明实施例中服务器另一个实施例示意图;
图13为本发明实施例中服务器另一个实施例示意图;
图14为本发明实施例中服务器一个结构示意图。
具体实施方式
本发明实施例提供了一种控制模拟对象寻路的方法及服务器,只需维护预置路径信息集合即可,而路径信息本身就包括多个路径点,由此减少了数据维护成本,且不易出错。与此同时,服务器无需采用复杂的路径算法,而是从预置路径信息集合中选择最匹配的第一寻路路径,从而减小服务器的计算资源开销。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本发明应用于控制模拟对象寻路系统,请参阅图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 processingunits,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用于,
当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
1.一种控制模拟对象寻路的方法,其特征在于,包括:
当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
根据所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
若存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
2.根据权利要求1所述的方法,其特征在于,所述检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径之后,所述方法还包括:
若不存在所述第一寻路路径,则确定与所述移动路径匹配的第二寻路路径。
3.根据权利要求2所述的方法,其特征在于,所述确定与所述移动路径匹配的第二寻路路径之后,所述方法还包括:
获取所述第二寻路路径的开销数据,所述开销数据用于表示服务器计算资源的使用量;
判断所述第二寻路路径的开销数据是否大于目标开销门限;
若所述第二寻路路径的开销数据大于所述目标开销门限,则将所述第二寻路路径加入至所述预置路径信息集合中;
若所述第二寻路路径的开销数据不大于所述目标开销门限,则根据所述第二寻路路径的开销数据更新历史开销数据,所述历史开销数据用于更新所述目标开销门限。
4.根据权利要求2所述的方法,其特征在于,所述确定与所述移动路径匹配的第二寻路路径之后,所述方法还包括:
获取所述第二寻路路径的热度数据,所述热度数据用于表示寻路路径的使用频率;
判断所述第二寻路路径的热度数据是否大于目标热度门限;
若所述第二寻路路径的热度数据大于所述目标热度门限,则将所述第二寻路路径加入至所述预置路径信息集合中;
若所述第二寻路路径的热度数据不大于所述目标热度门限,则根据所述第二寻路路径的热度数据更新历史热度数据,所述历史热度数据用于更新所述目标热度门限。
5.根据权利要求2所述的方法,其特征在于,所述确定与所述移动路径匹配的第二寻路路径,包括:
获取所述第一模拟对象的第一当前位置以及所述第二模拟对象的第二当前位置;
根据所述第一当前位置与所述第二当前位置确定所述第二模拟对象的第一目标移动位置,所述第一目标移动位置与所述第一当前位置之间的距离小于预置门限,所述第二当前位置与所述第一目标移动位置构成所述第二寻路路径。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一当前位置确定所述第二模拟对象的目标移动位置之后,所述方法还包括:
当所述第一模拟对象发生移动时,获取所述第一模拟对象的第三当前位置以及所述第二模拟对象的第四当前位置;
根据所述第三当前位置与所述第四当前位置确定所述第二模拟对象的第二目标移动位置,所述第二目标移动位置与所述第三当前位置之间的距离小于预置门限,所述第二当前位置与所述第一目标移动位置更新所述第二寻路路径。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
分别将所述第二当前位置、所述第一目标移动位置以及所述第二目标移动位置依次存储于路径堆栈;
检测从所述第二当前位置到所述第二目标移动位置之间是否满足直线移动条件,若是,则从所述路径堆栈中清除所述第一目标移动位置。
8.根据权利要求7所述的方法,其特征在于,所述控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动之后,所述方法还包括:
若所述第二模拟对象的移动位置满足寻路返回条件,则根据所述路径堆栈中的位置点构建第三寻路路径,所述第三寻路路径用于所述第二模拟对象返回至初始位置。
9.一种服务器,其特征在于,包括:
第一获取模块,用于当接收到第一模拟对象触发的交互指令时,获取所述第一模拟对象的移动路径;
第一检测模块,用于根据所述第一获取模块获取的所述第一模拟对象的移动路径,检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径;
控制模块,用于若所述第一检测模块检测到存在所述第一寻路路径,则控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动。
10.根据权利要求9所述的服务器,其特征在于,所述服务器还包括:
确定模块,用于所述第一检测模块检测预置路径信息集合中是否存在与所述移动路径匹配的第一寻路路径之后,若不存在所述第一寻路路径,则确定与所述移动路径匹配的第二寻路路径。
11.根据权利要求10所述的服务器,其特征在于,所述服务器还包括:
第二获取模块,用于所述确定模块确定与所述移动路径匹配的第二寻路路径之后,获取所述第二寻路路径的开销数据,所述开销数据用于表示服务器计算资源的使用量;
第一判断模块,用于判断所述第二获取模块获取的所述第二寻路路径的开销数据是否大于目标开销门限;
第一加入模块,用于若所述第一判断模块判断得到所述第二寻路路径的开销数据大于所述目标开销门限,则将所述第二寻路路径加入至所述预置路径信息集合中;
第一更新模块,用于若所述第一判断模块判断得到所述第二寻路路径的开销数据不大于所述目标开销门限,则根据所述第二寻路路径的开销数据更新历史开销数据,所述历史开销数据用于更新所述目标开销门限。
12.根据权利要求10所述的服务器,其特征在于,所述服务器还包括:
第三获取模块,用于所述确定模块确定与所述移动路径匹配的第二寻路路径之后,获取所述第二寻路路径的热度数据,所述热度数据用于表示寻路路径的使用频率;
第二判断模块,用于判断所述第三获取模块获取的所述第二寻路路径的热度数据是否大于目标热度门限;
第二加入模块,用于若所述第二判断模块判断得到所述第二寻路路径的热度数据大于所述目标热度门限,则将所述第二寻路路径加入至所述预置路径信息集合中;
第二更新模块,用于若所述第二判断模块判断得到所述第二寻路路径的热度数据不大于所述目标热度门限,则根据所述第二寻路路径的热度数据更新历史热度数据,所述历史热度数据用于更新所述目标热度门限。
13.根据权利要求10所述的服务器,其特征在于,所述确定模块包括:
第一获取单元,用于获取所述第一模拟对象的第一当前位置以及所述第二模拟对象的第二当前位置;
第一确定单元,用于根据所述第一获取单元获取的所述第一当前位置与所述第二当前位置确定所述第二模拟对象的第一目标移动位置,所述第一目标移动位置与所述第一当前位置之间的距离小于预置门限,所述第二当前位置与所述第一目标移动位置构成所述第二寻路路径。
14.根据权利要求13所述的服务器,其特征在于,所述确定模块还包括:
第二获取单元,用于所述第一确定单元根据所述第一当前位置确定所述第二模拟对象的目标移动位置之后,当所述第一模拟对象发生移动时,获取所述第一模拟对象的第三当前位置以及所述第二模拟对象的第四当前位置;
第二确定单元,用于根据所述第二获取单元获取的所述第三当前位置与所述第四当前位置确定所述第二模拟对象的第二目标移动位置,所述第二目标移动位置与所述第三当前位置之间的距离小于预置门限,所述第二当前位置与所述第一目标移动位置更新所述第二寻路路径。
15.根据权利要求14所述的服务器,其特征在于,所述服务器还包括:
存储模块,用于分别将所述第二当前位置、所述第一目标移动位置以及所述第二目标移动位置依次存储于路径堆栈;
第二检测模块,用于检测从所述第二当前位置到所述第二目标移动位置之间是否满足直线移动条件,若是,则从所述存储模块存储的所述路径堆栈中清除所述第一目标移动位置。
16.根据权利要求15所述的服务器,其特征在于,所述服务器还包括:
构建模块,用于所述控制模块控制第二模拟对象按照所述第一寻路路径向所述第一模拟对象移动之后,若所述第二模拟对象的移动位置满足寻路返回条件,则根据所述路径堆栈中的位置点构建第三寻路路径,所述第三寻路路径用于所述第二模拟对象返回至初始位置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710026166.4A CN106790224B (zh) | 2017-01-13 | 2017-01-13 | 一种控制模拟对象寻路的方法及服务器 |
PCT/CN2018/071882 WO2018130135A1 (zh) | 2017-01-13 | 2018-01-09 | 一种控制模拟对象寻路的方法、装置及服务器 |
TW107101326A TWI664836B (zh) | 2017-01-13 | 2018-01-12 | 控制模擬對象尋路的方法、裝置及伺服器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710026166.4A CN106790224B (zh) | 2017-01-13 | 2017-01-13 | 一种控制模拟对象寻路的方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106790224A CN106790224A (zh) | 2017-05-31 |
CN106790224B true CN106790224B (zh) | 2018-09-07 |
Family
ID=58945568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710026166.4A Active CN106790224B (zh) | 2017-01-13 | 2017-01-13 | 一种控制模拟对象寻路的方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106790224B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018130135A1 (zh) * | 2017-01-13 | 2018-07-19 | 腾讯科技(深圳)有限公司 | 一种控制模拟对象寻路的方法、装置及服务器 |
CN109529341A (zh) * | 2018-10-23 | 2019-03-29 | 深圳豪客互联网有限公司 | 一种路径规划方法、装置及计算机可读存储介质 |
CN109731332B (zh) * | 2018-12-21 | 2023-03-07 | 网易(杭州)网络有限公司 | 非玩家角色的控制方法、装置、设备及存储介质 |
CN110681156B (zh) * | 2019-10-10 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 虚拟世界中的虚拟角色控制方法、装置、设备及存储介质 |
CN110898433B (zh) * | 2019-11-28 | 2021-09-03 | 腾讯科技(深圳)有限公司 | 虚拟对象控制方法、装置、电子设备及存储介质 |
CN113877208A (zh) * | 2020-07-03 | 2022-01-04 | 上海莉莉丝科技股份有限公司 | 游戏对象寻路方法、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103893969A (zh) * | 2014-04-15 | 2014-07-02 | 广州博冠信息科技有限公司 | 一种游戏中寻路的方法和设备 |
CN104268420A (zh) * | 2014-10-10 | 2015-01-07 | 重庆邮电大学 | 基于二叉堆节点排序的a星寻路方法及系统 |
CN104784932A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色的寻路方法 |
CN106110656A (zh) * | 2016-07-07 | 2016-11-16 | 网易(杭州)网络有限公司 | 在游戏场景计算路线的方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6031471B2 (ja) * | 2014-05-30 | 2016-11-24 | グリー株式会社 | ゲームプログラム、コンピュータの制御方法、および、コンピュータ |
CN106060052A (zh) * | 2016-06-02 | 2016-10-26 | 深圳市豹风网络股份有限公司 | 移动终端网络游戏的三维导航方法 |
CN106075906B (zh) * | 2016-06-03 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 一种模拟对象的寻路方法、场景的搭建方法和对应的装置 |
-
2017
- 2017-01-13 CN CN201710026166.4A patent/CN106790224B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103893969A (zh) * | 2014-04-15 | 2014-07-02 | 广州博冠信息科技有限公司 | 一种游戏中寻路的方法和设备 |
CN104268420A (zh) * | 2014-10-10 | 2015-01-07 | 重庆邮电大学 | 基于二叉堆节点排序的a星寻路方法及系统 |
CN104784932A (zh) * | 2015-04-13 | 2015-07-22 | 四川天上友嘉网络科技有限公司 | 游戏角色的寻路方法 |
CN106110656A (zh) * | 2016-07-07 | 2016-11-16 | 网易(杭州)网络有限公司 | 在游戏场景计算路线的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106790224A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106790224B (zh) | 一种控制模拟对象寻路的方法及服务器 | |
CN108463273A (zh) | 基于游戏者的移动历史来进行非游戏者角色的路径寻找的游戏系统等 | |
WO2018130135A1 (zh) | 一种控制模拟对象寻路的方法、装置及服务器 | |
JP3943079B2 (ja) | コンピュータゲームにおける、解析のためにゲームスペースを分割するボロノイ図の使用 | |
Niemueller et al. | Incremental task-level reasoning in a competitive factory automation scenario | |
Shin et al. | Playtesting in match 3 game using strategic plays via reinforcement learning | |
KR102245905B1 (ko) | 객체 이동 방법 및 장치, 저장 매체 및 전자 장치 | |
CN111544889B (zh) | 虚拟对象的行为控制方法和装置及存储介质 | |
CN113018866A (zh) | 地图资源的加载方法和装置、存储介质、电子装置 | |
CN111202985B (zh) | 2d游戏中的路径规划方法、系统及电子设备 | |
Neufeld et al. | A hybrid approach to planning and execution in dynamic environments through hierarchical task networks and behavior trees | |
De Waard et al. | Monte carlo tree search with options for general video game playing | |
CN113509726B (zh) | 交互模型训练方法、装置、计算机设备和存储介质 | |
Vitek et al. | Intelligent agents in games: Review with an open-source tool | |
Nguyen et al. | Applying Monte-Carlo tree search to collaboratively controlling of a ghost team in Ms Pac-Man | |
Vargas et al. | Path planning for non-playable characters in arcade video games using the wavefront algorithm | |
Ozkohen et al. | Learning to play donkey kong using neural networks and reinforcement learning | |
CN108525297B (zh) | 动画显示方法、装置、存储介质和电子装置 | |
Braunschweiler et al. | A Two-Level Planning Framework for Mixed Reality Interactive Narratives with User Engagement | |
Bulitko et al. | State abstraction for real-time moving target pursuit: A pilot study | |
Hamidreza Kasaei et al. | Dynamic role engine and formation control for cooperating agents with robust decision‐making algorithm | |
SARBINI et al. | DEVELOPMENT OF PATHFINDING USING A-STAR AND D-STAR LITE ALGORITHMS IN VIDEO GAME | |
Vallade et al. | Three layers framework concept for adjustable artificial intelligence | |
Kim et al. | Towards a Versatile Opportunity Awareness Algorithm for Humanoid Soccer Robots using Time Petri nets | |
Ciupiński | Animation-driven locomotion with locomotion planning |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231228 Address after: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |