本申请涉及计算机领域,特别是涉及游戏虚拟对象的控制方法及装置、电子设备、存储介质。
背景技术:
随着移动终端技术的成熟发展,手机游戏已成为普罗大众喜爱的娱乐方式,在游戏中,往往需要增加非玩家对象实现人机之间的互动,通过运用到游戏领域的人工智能(ai,artificialintelligence)技术,可以使用一系列算法控制非玩家对象产生响应式、自适应式或智能式行为,使得非玩家对象可以根据环境变化作出相应的移动,在控制游戏难易度和提高拟人性的同时,为游戏增添趣味性和互动性。
在竞速游戏的初始阶段,玩家经常会与ai车辆进行游戏互动,而随着越来越多优秀游戏作品的不断涌现,ai车辆在游戏中的表现也成为了游戏质量的重要评价标准。
在现有技术中,在控制竞速游戏中ai车辆的移动时,可以提供刹车、加速、转向等操作参数对ai车辆进行控制,在ai车辆行驶过程中,通过实时采集车辆周围的情况并在恰当的时机输入对应的操作参数,使得ai车辆可以进行合适的操作,或者采用热度视野的方式实时确定ai车辆最优的行驶路线。
然而,前者为了令ai车辆可以根据车辆环境作出恰当的反应,往往需要采用复杂的方式对车辆环境的输入信息进行处理,进而获取车辆操作的输出信息,例如采用机器学习的方式对ai车辆进行长时间的训练,效率低下,一旦对车辆赛道进行修改则需要重新进行训练,并且由于学习模式单一,难以针对不同的ai车辆进行行驶模式的定制,而热度视野的方式对设备性能消耗较大。
技术实现要素:
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的游戏虚拟对象的控制方法及装置、电子设备、存储介质置,包括:
一种游戏虚拟对象的控制方法,所述方法包括:
在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据所述预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合;
对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线;
在游戏运行状态下,根据所述最优路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
可选地,所述满足预设条件包括以下:
除单一路段所有基于岔路点的路段在所述目标路线中只出现一次,其中,所述岔路点为具有至少两个子路点的所述路点;
经过基于岔路点的路段的并集确定为所述目标路线的有效路径;以及
所述目标路线集合中所述目标路线的数量为最少,其中,所述目标路线的数量是根据所述岔路点的数量唯一确定。
可选地,所述对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线,包括:
针对每一所述目标路线进行计算,得到相应的最小距离路线和最小曲率路线;
根据预设路线权重对每一所述目标路线的所述最小距离路线和最小曲率路线进行拟合,确定路线点,以得到经过所述路线点的所述最优路线。
可选地,所述道路信息包括:路点信息、朝向信息、路宽信息、以及倾斜度信息。
可选地,所述根据所述预设路径的道路信息进行遍历计算,包括:
根据所述预设路径的路点信息进行遍历计算。
可选地,所述方法还包括:
获取所述第一虚拟对象的当前状态信息,根据所述当前状态信息进行碰撞预测并获得预测结果;
若所述预测结果为即将发生碰撞,则调整所述第一虚拟对象的移动控制信息。
可选地,所述根据所述当前状态信息进行碰撞预测并获得预测结果,包括:
根据所述当前状态信息预测一预设时间后的行进路线;
判断所述行进路线与所述预设路径的道路边缘是否存在交点,若是,则所述预测结果为即将发生碰撞。
可选地,所述第一虚拟对象的当前状态信息包括:速度、位置、朝向。
可选地,所述调整所述第一虚拟对象的移动控制信息,包括:
根据所述交点的位置调整所述第一虚拟对象的移动控制信息。
可选地,所述方法还包括:
生成所述第一虚拟对象的逻辑控制信息;
将所述第一虚拟对象的所述逻辑控制信息以行为树的形式进行存储,其中所述行为树包括多个逻辑节点,每个所述逻辑节点对应所述第一虚拟对象的逻辑行为。
可选地,所述方法还包括:
响应于至少一所述节点的修改,更新所述行为树,并基于所述更新后的行为树控制所述第一虚拟对象的所述逻辑行为。
可选地,所述方法还包括:
在游戏运行状态下,确定针对所述最优线路的路况信息;
根据所述路况信息,确定替换路线;
根据所述替换路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
可选地,所述根据所述路况信息,确定替换路线,包括:
采用所述路况信息,确定第二虚拟对象;
确定针对所述第二虚拟对象的第一路点,并确定相邻的所述第一路点之间的第二路点;
将所述第一路点和所述第二路点连接形成替换路线。
可选地,所述第二虚拟对象包括以下任一项或多项:
可移动的障碍物对象、不可移动的障碍物对象、待获取的道具对象。
可选地,所述根据所述替换路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动,包括:
将所述替换路线划分为多个路线段;其中,同一路线段中相邻路点之间的朝向弧度的差异值小于预设差异值;
分别确定所述多个路线段的第一转向半径,并确定所述第一虚拟对象的第二转向半径;
确定所述第一转向半径大于所述第二转向半径的目标路线段,并控制所述第一虚拟对象在所述目标路线段进行漂移操作。
一种游戏虚拟对象的控制装置,所述装置包括:
路线集合生成模块,用于在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据所述预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合;
目标路线拟合模块,用于对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线;
移动控制信息确定模块,用于在游戏运行状态下,根据所述最优路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的游戏虚拟对象的控制方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的游戏虚拟对象的控制方法的步骤。
本申请实施例具有以下优点:
在本申请实施例中,通过在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合,并对目标路线集合中的多条目标路线进行拟合,得到一最优路线,在游戏运行状态下,根据最优路线确定第一虚拟对象的移动控制信息,以控制第一虚拟对象的移动,实现了结合离线状态下预生成的最优路线控制ai车辆移动,避免使用复杂的算法生成ai车辆所有的输入信息,降低了ai车辆移动过程中对设备的性能消耗,并且能够为不同的ai车辆规划不同的移动路线时,无需进行长时间的训练。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种游戏虚拟对象的控制方法的步骤流程图;
图2是本申请一实施例提供的一种预设路径示意图;
图3是本申请一实施例提供的另一种预设路径示意图;
图4是本申请一实施例提供的目标路线示意图;
图5是本申请一实施例提供的预设路径分割示意图;
图6是本申请一实施例提供的路线拟合示意图;
图7是本申请一实施例提供的行为树示意图;
图8是本申请一实施例提供的另一种游戏虚拟对象的控制方法的步骤流程图;
图9是本申请一实施例提供的行进路线示意图;
图10是本申请一实施例提供的另一种游戏虚拟对象的控制方法的步骤流程图;
图11是本申请一实施例提供的替换路线示意图;
图12是本申请一实施例提供的转向曲线图;
图13是本申请一实施例提供的一种游戏虚拟对象的控制装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1,示出了本申请一实施例提供的一种游戏虚拟对象的控制方法的步骤流程图,可以应用于服务端或者客户端,具体可以包括如下步骤:
步骤101,在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据所述预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合;
作为一示例,游戏可以是车辆竞速游戏,第一虚拟对象可以是非玩家控制对象,例如竞速游戏中不由用户操纵的ai(artificialintelligence,人工智能)车辆。
在具体实现中,游戏开发者可以为ai车辆规划游戏过程中车辆行驶的预设路径,在预设路径中,可以规划ai车辆从起点行驶至终点的过程中所经过的路段或路点。
预设路径的道路信息可以采用具有拓扑结构的多个路点进行描述,服务端或客户端中可以设置有路点模块,路点模块可以将路点的空间模型信息转换为数学集信息。
具体的,每个路点可以具有一个母路点(parent),也可以具有一个或多个子路点(child),当一路点没有母路点的时候,该路点处于路径起始位置,当路点没有子路点的时候,该路点处于路线终点位置,当一个路点具有多个子路点的时候,该路点处于路线分岔处,例如当一个路点具有两个子路点时,可以确定该路点处于二岔路口,当路点有三个子点时,确定该路点处于三岔路口。
如图2所示,是在水平方向视角下观察的预设路径。如图3所示,是在垂直方向视角下进行观察的,对多个预设离散点进行处理后生成的预设路径,预设路径中包含p1、p2、p3和p4四个路点,其中,p1为p2的母路点,且p1没有母路点,处于路线起始位置;p2和p3分别具有一个母路点和一个子路点;p4具有一个母路点p3。
在游戏离线状态下,可以获取针对第一虚拟对象的预设路径,并根据预设路径的道路信息进行遍历计算,得到满足预设条件的,由多条目标路线组合的目标路线集合。
在本实施例中,道路信息可以包括以下一项或多项:
路点信息、朝向信息、路宽信息、倾斜度信息。
其中,路点信息可以是路点在预设路径中所处的位置,以及各个路点之间的连接关系;朝向信息可以是第一虚拟对象处于一路点时在预设路径中的移动方向;路宽信息可以是路点所处位置预设路径的宽度,路宽信息可以包括左路宽信息(left)和右路宽信息(right);倾斜度信息可以是路点在预设路径中所处位置的倾斜度。
如图2所示,在水平方向视角下观察预设路径,路点p1可以具有∠201所对应的角度,该角度即为本申请中的倾斜度信息。如图3所示,在垂直视角下观察预设路径,p1、p2、p3和p4在预设路径中所处位置和四个路点之间的连接关系,即为本申请中的路点信息;过路点p1与预设路径可以相交于点a和点b,由点a和点b所确定的线段长度即为路点p1对应的路宽信息,其中,路点p1与点a所确定的线段长度为左路宽信息(left),路点p1与点b所确定的线段长度为右路宽信息(right);过每一路点可以作一箭头,该箭头所指方向为朝向信息,以图3中的路点p1为例,从路点p1指向字母c的箭头可以标识p1的朝向信息,则第一虚拟对象可以依次经过p1、p2、p3和p4路点,并且,在经过上述路点时,可以根据路点对应的朝向信息,沿预设路径进行右转弯。
在本申请一实施例中,所述根据所述预设路径的道路信息进行遍历计算的步骤,可以包括如下子步骤:
根据所述预设路径的路点信息进行遍历计算。
作为一示例,路点信息可以包括路点在预设路径中所处的位置,以及路点之间的连接关系。
在实际应用中,可以根据预设路径的路点信息进行遍历,得到目标路线集合。
具体的,由于路点与路点之间的连接可以形成拓扑结构,通过拓扑结构,可以以树的形式呈现母路点、子路点和路点与路点之间的方向信息,例如路线方向为从路点p1指向路点p2。基于此,可以将描述路点拓扑结构的路点信息作为输入,并对路点信息进行深度遍历,得到目标路线。
在本申请一实施例中,满足预设条件的目标路线可以是同时满足以下条件的路线:
(1)除单一路段所有基于岔路点的路段在目标路线中只出现一次,其中,岔路点可以是具有至少两个子路点的路点;
(2)经过基于岔路点的路段的并集确定为目标路线的有效路径。
在具体实现中,有效路径可以是从起点沿该路径进行移动可以到达终点的路径,对于无法到达终点的路径,可以不作为有效路径。
(3)目标路线集合中目标路线的数量为最少,其中,目标路线的数量可以是根据岔路点的数量唯一确定。
具体的,目标路线的数量可以通过以下公式计算得到:
其中,n为n岔路口的岔路数,cn为n岔路口的数量。如图4所示,为目标路线集合示意图。
步骤102,对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线;
在获得目标路线集合后,可以对目标路线集合中的多条目标路线进行拟合,得到最优路线。
具体的,可以设置路线生成模块,该模块可以利用路点的数学信息集进行计算,通过将路点的空间信息转换为数学信息集,并采用路点的空间坐标、矩阵、向量或二次规划等计算方式,生成最优路线。
在本申请一实施例中,步骤102可以包括如下子步骤:
子步骤11,针对每一所述目标路线进行计算,得到相应的最小距离路线和最小曲率路线;
在得到目标路线集合后,可以针对每一条目标路线进行计算,得到目标路线对应的最小距离路线和最小曲率路线。
在实际应用中,在计算最小距离路线时,可以采用二次规划进行计算。具体的,可以对预设路径进行分割,如图5所示,图中的线段ab可以为分割后的一路径。在进行分割后,假设分割后的预设路径宽度相等,预设路径中的每一个路点都可以通过以下路点表达式确定:
其中,pi为分割后的路径上任意一点,
在计算最小距离路线时,可以预设p,q,g,h,a,b为六个已知矩阵,并在以下条件中,求解矩阵x:
gx≤h
ax=b
使
由于假设路径分割后的路径宽度是相等的,可以将上述二次规划的条件和问题转换为以下形式进行计算:
0≤a≤1
di=|pi+1-pi|
使
其中,结合路点表达式,并通过推导,可以得到:
其中,可以通过三维坐标描述路点
则
再经过推导即可将
对于x:
x=[α1…αn]
另外对于g,h,a,b,可以得到:
a=b=0n×n
g为2n×n的矩阵mg,其中mg(2×i,i)=1
h为2n×n的矩阵mh,其中mh(2×i,0)=1.0,mh(2×i+1,0)=-0.1
通过以上推导可以获取参数p,q,g,h,a,b,其中,由于p为半正定矩阵,通过增广拉格朗日法,可以计算得到最小距离路线。
在确定最小曲率路线时,可以获取预设路径中所有路点的曲率,并通过计算路点的曲率之和最小的路线作为最小曲率路线。在计算时,可以确定曲率ci的表达式为ci=ax+b,并得到路点曲率之和的表达式为
pi=ai+bit+cit2
其中,si为第i点到起点的距离,s为一固定点到起点的距离,si+1为第i+1点到起点的距离,si-1为第i-1点到起点的距离,通过数学推导可知-1≤t≤1。
结合路径分割后的路段宽度是相等的假设,则相邻两个路段的路点是对称的,可以得到第i点与第i-1点之间的曲率与第i点与第i+1点之间的曲率相同,而δt/δs与曲率为正比关系,可以得到δt/δs为一常数。并转化为求解以下问题:
0≤a≤1
使
经过推导,可得到:
其中,pi=(xi,yi,zi),pi-1=(xi,yi,zi),pi+1=(xi+1,yi+1,zi+1)
通过以上运算推导,可以获取曲率最小的最小曲率路线。
子步骤12,根据预设路线权重对每一所述目标路线的所述最小距离路线和最小曲率路线进行拟合,确定路线点,以得到经过所述路线点的所述最优路线。
在实际应用中,可以预先设置第一虚拟对象与权重的对应关系列表,不同的第一虚拟对象可以具有不同的预设路线权重。在确定最小距离路线和最小曲率路线后,可以根据预设路线权重对目标路线对应的最小距离路线和最小曲率路线进行拟合,确定多个路线点,并将多个路线点连接,以得到经过路线点的最优路线。
具体的,游戏中不同的ai车辆可以具有不同的车辆性能,针对转向能力不足的ai车辆,可以设置一小于第一预设阈值的预设路线权重;针对加速能力不足的ai车辆,可以确定一大于第二预设阈值的预设路线权重,当然,还可以设置适用于所有车辆的预设路线权重,如0.5。
在确定预设路线权重后,可以采用采用预设路线权重对最小距离路线和最小曲率路线进行融合,具体的,可以通过如下公式计算目标路线属性信息:
其中,
通过改变预设路线权重,可以调整距离和曲率对选取的最优路线的影响。如图6所示,pc1为最小曲率路线,pc3为最小距离路线,pc2为进行拟合后得到的最优路线。在一示例中,在选取最优路线时,还可以根据游戏的难度登记设置预设路线权重,例如,高难度等级的ai车辆选取距离较短或曲率较小的路线。
步骤103,在游戏运行状态下,根据所述最优路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
在确定最优路线后,可以在游戏运行状态下,根据最优路线确定第一虚拟对象的移动控制信息,控制第一虚拟对象进行移动。例如,结合最优路线的路线轨迹,调整第一虚拟对象的加速信息、转向信息、刹车输入信息等。
在本申请实施例中,通过在离线状态下预先计算最优路线,可以在ai车辆移动过程中,显著减少对道路情况的动态处理和选择前进路线的cpu消耗,显著增加了在游戏中包括多个车辆实例时游戏的运行帧率,游戏可以在移动平台中轻松运行,又保持了ai车辆与玩家的互动性。
在本申请一实施例中,所述方法还可以包括如下步骤:
s1,生成所述第一虚拟对象的逻辑控制信息;
在实际应用中,可以生成第一虚拟对象的逻辑控制信息。
具体的,游戏开发者可以为ai车辆预先设置车辆的在不同状态下的行为信息,进而,可以通过预先设置的行为信息,生成第一虚拟对象的逻辑控制信息。例如,在比赛将要开始时,可以踩踏车辆的油门,使车辆处于准备出发的状态;当车辆通过终点线时,踩踏刹车使车辆停止。
s2,将所述第一虚拟对象的所述逻辑控制信息以行为树的形式进行存储,其中所述行为树包括多个逻辑节点,每个所述逻辑节点对应所述第一虚拟对象的逻辑行为;
作为一示例,行为树可以是用于控制ai决策行为的、包含了层级节点的树结构,行为树可以基于车辆行驶逻辑而为ai赛车定制的。
在生成第一虚拟对象的逻辑控制信息后,可以将逻辑控制信息以行为树的形式进行存储,行为树中可以包括多个具有层级结构的逻辑节点,每个逻辑节点可以对应第一虚拟对象的行为逻辑。
在实际应用中,动作节点可以包括多个节点参数,例如用于油门控制、手刹控制和方向盘控制的节点。在ai车辆采用已有的操作输入按照最优路线进行移动时,通过行为树节点可以对ai车辆的操作输入进行调整。则在游戏过程中,通过遍历行为树节点,当车辆通过终点时,可以生成刹车输入信息使车辆停止,当比赛将要开始时,可以生成加速输入信息使车辆处于准备出发的状态。通过行为树,能够令ai车辆在结合最优路线(即底层逻辑)进行移动的基础上,进一步优化ai车辆最终在行驶过程的上层逻辑。
在一示例中,行为树可以通过树形结构连接多个逻辑节点,逻辑节点的种类可以包括顺序节点、选择节点、动作节点和并行节点,针对游戏运行过程中的每一帧图像,可以从行为树左侧的根节点开始运行,并按照从左至右、从上至下的运行顺序,执行行为树中的所有节点。例如,如图7所示,在判断车辆是否已经过终点时,可以按照从上而下的顺序,依次遍历“油门控制”、“手刹控制”、“刹车控制”、“方向盘控制”和“停车”五个逻辑节点;又如,在判断当前的比赛阶段时,可以按照从上而下的顺序,依次遍历“油门控制”、“手刹控制”、“刹车控制”、“方向盘控制”和“停车”五个逻辑节点。
s3,响应于至少一所述节点的修改,更新所述行为树,并基于所述更新后的行为树控制所述第一虚拟对象的所述逻辑行为。
在实际应用中,游戏开发者可以对行为树中一个或多个的逻辑节点进行修改,例如,游戏开发者可以增加、删除逻辑节点,或者变更逻辑节点对应的逻辑行为。
响应于对行为树中至少一个节点的修改,可以获取修改后的逻辑控制信息,采用修改后的逻辑控制信息更新行为树,并基于更新后的行为树控制第一虚拟对象的逻辑行为。
在一示例中,可以在客户端或服务端中设置行为树模块,行为树模块可以为游戏开发者提供可定制的车辆行为修改功能。
通过针对不同的车辆设置不同的行为树,可以提高车辆行驶逻辑的定制性,能够适应不同赛制下的赛道,并且,由于行为树定制与基础路线选择的逻辑代码相互独立,在修改逻辑代码时,两者互不干扰,提高了后期开发和维护的独立性和便捷性。
在本申请实施例中,通过在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合,并对目标路线集合中的多条目标路线进行拟合,得到一最优路线,在游戏运行状态下,根据最优路线确定第一虚拟对象的移动控制信息,以控制第一虚拟对象的移动,实现了结合离线状态下预生成的最优路线控制ai车辆移动,避免使用复杂的算法生成ai车辆所有的输入信息,降低了ai车辆移动过程中对设备的性能消耗,并且能够为不同的ai车辆规划不同的移动路线时,无需进行长时间的训练。
参照图8,示出了本申请一实施例提供的一种游戏虚拟对象的控制方法的步骤流程图,可以应用于服务端或者客户端,具体可以包括如下步骤:
步骤801,在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据所述预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合;
步骤802,对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线;
步骤803,在游戏运行状态下,根据所述最优路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动;
步骤804,获取所述第一虚拟对象的当前状态信息,根据所述当前状态信息进行碰撞预测并获得预测结果;
作为一示例,第一虚拟对象的当前状态信息可以包括以下一项或多项:
速度、位置、朝向。
在具体实现中,游戏中由于不可控的随机因素,例如车辆碰撞或车辆尾流,第一虚拟对象存在与预设路径的道路边缘碰撞的可能性。基于此,在第一虚拟对象移动时,可以获取第一虚拟对象的当前状态信息,根据当前状态信息进行碰撞预测,并获取预测结果。
在本申请一实施例中,所述根据所述当前状态信息进行碰撞预测并获得预测结果的步骤可以包括如下子步骤:
子步骤21,根据所述当前状态信息预测一预设时间后的行进路线;
作为一示例,行进路线可以是基于第一虚拟对象当前状态信息计算得到的包含速度和方向的向量。
在实际应用中,可以获取第一虚拟对象的当前状态信息,例如第一虚拟对象当前的位置、速度和车辆朝向,根据当前状态信息对预设时间内的行进路线进行预测。
在一示例中,还可以通过圆拟算法计算多个路点对应的圆心位置,并结合该圆心位置判断车辆当前位置和道路边缘的趋势的相对方向。
子步骤22,判断所述行进路线与所述预设路径的道路边缘是否存在交点,若是,则所述预测结果为即将发生碰撞。
在获取预测的行进路线后,可以判断行进路线与预设路径的道路边缘是否存在交点,若是,可以确定预测结果为即将发生碰撞,若否,则可以确定第一虚拟对象在采用当前移动控制信息进行移动的过程中,不会和道路边缘发生碰撞。
步骤805,若所述预测结果为即将发生碰撞,则调整所述第一虚拟对象的移动控制信息。
作为一示例,移动控制信息可以包括以下一项或多项:
手刹输入信息、左转输入信息、右转输入信息。
在获取预测结果后,若预测结果为即将发生碰撞,可以确定第一虚拟对象将与道路边缘接触,进而可以调整第一虚拟对象的移动控制信息,避免第一虚拟对象移动至交点;若预测结果为不发生碰撞,可以继续采用当前状态沿最优路线或替换路线进行移动,不对移动控制信息进行调整。
在本申请一实施例中,所述调整所述第一虚拟对象的移动控制信息的步骤可以包括如下子步骤:
根据所述交点的位置调整所述第一虚拟对象的移动控制信息。
在具体实现中,当预测结果为即将发生碰撞时,可以获取交点的位置,并根据交点的位置对第一虚拟对象的的移动控制信息进行调整。例如,当交点在预设路径的左侧道路边缘时,判定ai车辆将与预设路径左墙碰撞,则可以取消车辆当前的左转操作,或者可以生成右转输入信息,进行右转弯。
在调整移动控制信息后,还可以再次预测第一虚拟对象的移动路线,并判断预是否与预设路径的道路边缘相交,若仍然存在交点,可以确定调整无效,取消调整。
如图9所示,在“本车”(即第一虚拟对象)按照最优路线(图9中的实现)移动的过程中,可以获取“本车”的当前状态信息,得到预设时间内的行进路线(图9中的虚线),当前虚线与预设路径的左侧道路边缘相交,判定即将发生碰撞,可以取消左转操作。
在本申请实施例中,通过获取所述第一虚拟对象的当前状态信息,根据当前状态信息进行碰撞预测并获得预测结果,若预测结果为即将发生碰撞,则调整第一虚拟对象的移动控制信息,实现了通过预测ai车辆的行进路线实时调整移动控制信息,可以控制ai车辆在受到其他虚拟对象的移动和尾流干扰时进行避让,避免碰撞至道路边缘,提高了ai车辆的拟人性,能与玩家产生更合理的互动。
参照图10,示出了本申请一实施例提供的一种游戏虚拟对象的控制方法的步骤流程图,可以应用于服务端或者客户端,具体可以包括如下步骤:
步骤1001,在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据所述预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合;
步骤1002,对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线;
步骤1003,在游戏运行状态下,根据所述最优路线确定所述虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动;
步骤1004,在游戏运行状态下,确定针对所述最优线路的路况信息;
在游戏运行状态下,可以控制第一虚拟对象按照最优路线进行移动,并在第一虚拟对象的移动过程中,确定最优路线的路况信息。
在具体实现中,可以预置第一虚拟对象的移动速度与路点数量n的对应关系列表,在ai车辆移动过程中,可以根据车辆当前的位置确定车辆所处路点,然后,可以获取ai车辆当前的移动速度,在预置关系列表中确定与移动速度对应的路点数量n,并确定ai车辆当前位置前方n个路点内的路况信息。
步骤1005,根据所述路况信息,确定替换路线;
在确定路况信息后,可以对路况信息进行分析,进而根据路况信息确定替换路线。
在ai车辆的移动过程中,可以通过仅简单定义路径曲线控制ai车辆的移动,ai车辆在沿着该曲线移动时,还可以根据参数化的方式实现对ai车辆移动路径、速度、加速度、车头方向和车辆状态的控制,并结合基础的碰撞检测,判断前方刹车距离内是否有其他车辆。然而,这种无物理的控制方式,虽然可以模仿人工控制的游戏车辆,但ai车辆只能按照既定的路线移动,缺乏动态变化和互动,当游戏赛道或地形变得更复杂时,ai车辆也更容易出现不合理的移动路径。
或者,也可以在记录真人玩家的操作和操作序列后,在ai车辆中重放该操作,但是,由于游戏场景中千变万化,采用该方法控制ai车辆,往往缺少ai车辆与玩家之间的互动。
而在本申请实施例中,在游戏运行状态下,可以实时获取路况信息并确定替换路线,既可以增加ai车辆与玩家之间互动,又可以避免ai车辆移动过程中出现中不合理的移动路线,使得ai车辆可以适应不同道路状况。
在本申请一实施例中,步骤1005可以包括如下子步骤:
子步骤31,采用所述路况信息,确定第二虚拟对象;
作为一示例,第二虚拟对象可以包括以下任一项或多项:
可移动的障碍物对象、不可移动的障碍物对象、待获取的道具对象。
在获取路况信息后,可以采用路况信息,确定第二虚拟对象。例如,如图11所示,可以从路况信息中,确定“本车”(即本申请中的第一虚拟对象)在最优路线(图11中的实线)前方的多个路点中存在“需要避开的车”(即本申请中的可移动障碍物)、“路障”(即本申请中的不可移动障碍物)和“需要经过的区域”(即本申请中待获取的道具对象所在区域)。
子步骤32,确定针对所述第二虚拟对象的第一路点,并确定相邻的所述第一路点之间的第二路点;
作为一示例,第二路点可以是采用缓动方程对第一路点进行计算后得到的路点。
在确定第二虚拟对象后,可以确定第二虚拟对象的对应的第一路点,并确定相邻第一路点之间的第二路点。
具体的,针对可移动的障碍物对象,例如玩家控制的车辆或其他ai车辆,是可实时移动的,为了控制第一虚对象躲避可移动障碍物,避免发生碰撞,在本申请中,可以将最优路线中与可移动的障碍物对象距离最短的路点确定为不可达路点,并获取与可移动的障碍对象对应的预设偏移距离,采用该预设偏移距离对不可达路点进行偏移,将偏移后的路点确定为第一路点。
针对不可移动的障碍物对象或待获取的道具对象,例如静态路障,加速道具、奖励翻倍道具等,可以是固定的,则可以预先针对不可移动障碍物对象和待获取的道具对象预先设置第一路点。
在一示例中,在确定第一路点后,可以通过第二虚拟对象所处的位置确定第一路点的路点方向,具体的,当第二虚拟对象恰好处于最优路线的路点时,该路点的方向可以为第一路点的路点方向;当第二虚拟对象处于最优路线相邻路点之间,可以结合相邻路点的路点方向确定第一路点的路点方向,或者,也可将距离第二虚拟对象最近的路点的路点方向确定为第一路点的路点方向。
在确定第一路点后,若多个第一路点无法依据第一路点的方向连接为圆滑的曲线,如连接多个第一路点后路线出现明显的夹角,可以采用缓动方程对相邻的第一路点进行偏移,生成第二路点
t=(pi-pstart)*1.0/(pend-pstart)
其中,pstart和pend为相邻的两个第一路点。
子步骤33,将所述第一路点和所述第二路点连接形成替换路线。
在获取第一路点和第二路点后,可以连接第一路点和第二路点形成替换路线。例如,可以用圆滑的曲线连接第一路线和第二路点,如图11中的虚线。
步骤1006,根据所述替换路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
在生成替换路线后,可以根据替换路线确定第一虚拟对象的移动控制信息,控制第一虚拟对象进行移动。例如,结合替换路线的路线轨迹,调整第一虚拟对象的加速信息、转向信息、刹车输入信息等。
在本申请一实施例中,步骤1006可以包括如下子步骤:
子步骤41,将所述替换路线划分为多个路线段;其中,同一路线段中相邻路点之间的朝向弧度的差异值小于预设差异值;
在实际应用中,可以对路线进行分割得到路段。在确定替换路线后,可以将替换路线划分为多个路线段,在进行划分时,可以判断相邻路点之间的朝向弧度的差异值是否小于预设差异值(delta_yaw),若小于预设差异值,可以将该相邻路点划分在同一路线段中,若大于预设差异值,则可以将该相邻路点划分至两个路线段中。如图11所示,替换路线被划分为3个路线段,包括“路线点段1”、“路线点段2”和“路线点段3”对应的路线段。
路点的朝向弧度可以采用路点方向确定,在划分路线段时,可以计算相邻路点的路点方向的角度差值是否小于一预设角度阈值,当角度差值小于预设角度阈值时,可以确定相邻的路点可以被拟合在同一圆弧上,则该相邻的路线点可以被划分为同一路线段内;当角度差值大于预设角度阈值时,可以确定该相邻的路线点无法被拟合在同一圆弧上,则该相邻的路点可以分别划分在不同的路线段中。
当然,在对路线进行划分以获取多个路线段时,该路线并不限于替换路线,还可以是对最优路线进行划分,本申请对此不作限制。
子步骤42,分别确定所述多个路线段的第一转向半径,并确定所述第一虚拟对象的第二转向半径;
在划分多个路线段后,由于每一路线段都可被拟合为圆弧,可以针对每一个路线段计算第一转向半径rs,并确定第一虚拟对象的第二转向半径rv。
具体的,当路线段中的路点数量小于预设数量阈值时,可以采用路点方向和相邻路点之间的距离计算第一转向半径;当路点数量大于预设数量阈值时,如路点数量大于20时,可以采用圆拟算法计算路线段的第一转向半径,具体的,当路点数量为n时,可以通过如下方式计算第一转向半径:
在c=|(x-a)2+(y-b)2-r2|的条件下,
求解a,b,r使c最小
其中:
c=n∑xi2-∑xi∑xi
d=n∑xiyi-∑xi∑yi
e=n∑xi3+n∑xiyi2-∑(xi2+yi2)∑xi
g=n∑yi2-∑yi∑yi
h=n∑xi2yi+n∑yi3-∑(xi2+yi2)∑yi
进一步地:
最终可以得到:
其中,路点坐标为(xi,yi,zi),将r的值确定为第一转向半径rs。
在确定第一虚拟对象的第二转向半径时,可以根据第一虚拟对象的实时速度确定第二转向半径。具体的,可以预先获取速度与第二转向半径的对应列表或关系图,如图12所示,为转向曲线图,在确定第一虚拟对象的实时速度后,可以从图中查找在该实时速度下对应的第二转向半径。
子步骤43,确定所述第一转向半径大于所述第二转向半径的目标路线段,并控制所述第一虚拟对象在所述目标路线段进行漂移操作。
在确定第一转向半径和第二转向半径后,可以对两者进行比较,并将第一转向半径大于第二转向半径的路线段确定为目标路线段,控制第一虚拟对象采用漂移方式通过目标路线段,例如,可以生成手刹输入信息控制第一虚拟对象进行漂移,如设置“手刹输入=1”。
当第一转向半径小于第二转向半径时,可以控制第一虚拟对象采用平跑方式通过目标路线段。
具体的,可以设置车辆运行模块,该模块可以在游戏过程中生成ai车辆操控的输入信息。在控制ai车辆的方向时,可以路线段中的路点方向为基准,计算车辆当前的车辆朝向与路点方向的角度差值,当车辆朝向相对与路点方向偏右时,为将车辆朝向调整至路点方向,生成左转输入信息,如“左转输入=1,右转输入=0”;当车辆朝向相对与路点方向偏左时,可以生成右转输入信息,如“左转输入=0,右转输入=1”;当路点方向与车辆朝向的角度差值小于预设阈值时,可以不进行调整,如“左转输入=0,右转输入=0”。
在一示例中,在确定第二转向半径后,可以计算得到车辆当前的角速度,在ai车辆的移动过程中,还可以结合车辆当前的车速大小和方向、角速度和路况信息,确定ai车辆的多种操作输入信息,如油门信息、刹车信息、加速信息和转向信息等,游戏开发者可以针对不同的ai车辆设置不同的输入信息,以进行个性化定制。
在本申请实施例中,通过在游戏运行状态下,确定针对最优线路的路况信息,根据路况信息,确定替换路线,并根据替换路线确定第一虚拟对象的移动控制信息,控制所述第一虚拟对象的移动,实现了对离线状态下预生成的最优路线的动态调整,在根据最优路线运行的基础上,可以结合ai车辆前方的道路状况对移动路线进行简易高效的实时调整,在减少对设备性能消耗的情况下,提高了ai车辆移动路线的合理性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图13,示出了本申请一实施例提供的一种游戏虚拟对象的控制装置的结构示意图,可以应用于服务端或客户端,具体可以包括如下模块:
路线集合生成模块1301,用于在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据所述预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合;
目标路线拟合模块1302,用于对所述目标路线集合中的所述多条目标路线进行拟合,得到一最优路线;
移动控制信息确定模块1303,用于在游戏运行状态下,根据所述最优路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
在本申请一实施例中,所述满足预设条件包括以下:
除单一路段所有基于岔路点的路段在所述目标路线中只出现一次,其中,所述岔路点为具有至少两个子路点的所述路点;
经过基于岔路点的路段的并集确定为所述目标路线的有效路径;以及
所述目标路线集合中所述目标路线的数量为最少,其中,所述目标路线的数量是根据所述岔路点的数量唯一确定。
在本申请一实施例中,所述目标路线拟合模块1302包括:
路线计算子模块,用于针对每一所述目标路线进行计算,得到相应的最小距离路线和最小曲率路线;
路线点确定子模块,用于根据预设路线权重对每一所述目标路线的所述最小距离路线和最小曲率路线进行拟合,确定路线点,以得到经过所述路线点的所述最优路线。
在本申请一实施例中,所述道路信息包括:路点信息、朝向信息、路宽信息、以及倾斜度信息。
在本申请一实施例中,所述路线集合生成模块1301包括:
路点信息遍历子模块,用于根据所述预设路径的路点信息进行遍历计算。
在本申请一实施例中,所述装置还包括:
预测结果获取模块,用于获取所述第一虚拟对象的当前状态信息,根据所述当前状态信息进行碰撞预测并获得预测结果;
碰撞预测模块,用于若所述预测结果为即将发生碰撞,则调整所述第一虚拟对象的移动控制信息。
在本申请一实施例中,所述预测结果获取模块包括:
行进路线预测子模块,用于根据所述当前状态信息预测一预设时间后的行进路线;
交点判断子模块,用于判断所述行进路线与所述预设路径的道路边缘是否存在交点,若是,则所述预测结果为即将发生碰撞。
在本申请一实施例中,所述第一虚拟对象的当前状态信息包括:速度、位置、朝向。
在本申请一实施例中,所述碰撞预测块包括:
移动控制信息调整子模块,用于根据所述交点的位置调整所述第一虚拟对象的移动控制信息。
在本申请一实施例中,所述装置还包括:
逻辑控制信息生成模块,用于生成所述第一虚拟对象的逻辑控制信息;
行为树存储模块,用于将所述第一虚拟对象的所述逻辑控制信息以行为树的形式进行存储,其中所述行为树包括多个逻辑节点,每个所述逻辑节点对应所述第一虚拟对象的逻辑行为。
在本申请一实施例中,所述装置还包括:
节点修改响应模块,用于响应于至少一所述节点的修改,更新所述行为树,并基于所述更新后的行为树控制所述第一虚拟对象的所述逻辑行为。
在本申请一实施例中,所述装置还包括:
路况信息确定模块,用于在游戏运行状态下,确定针对所述最优线路的路况信息;
替换路线生成模块,用于根据所述路况信息,确定替换路线;
移动调整模块,用于根据所述替换路线确定所述第一虚拟对象的移动控制信息,以控制所述第一虚拟对象的移动。
在本申请一实施例中,所述替换路线生成模块包括:
第二虚拟对象确定子模块,用于采用所述路况信息,确定第二虚拟对象;
确定针对所述第二虚拟对象的第一路点,并确定相邻的所述第一路点之间的第二路点;
第二路点连接子模块,用于将所述第一路点和所述第二路点连接形成替换路线。
在本申请另一实施例中,所述第二虚拟对象包括以下任一项或多项:
可移动的障碍物对象、不可移动的障碍物对象、待获取的道具对象。
在本申请一实施例中,所述移动调整模块包括:
路线段分割子模块,用于将所述替换路线划分为多个路线段;其中,同一路线段中相邻路点之间的朝向弧度的差异值小于预设差异值;
转向半径确定子模块,用于分别确定所述多个路线段的第一转向半径,并确定所述第一虚拟对象的第二转向半径;
漂移子模块,用于确定所述第一转向半径大于所述第二转向半径的目标路线段,并控制所述第一虚拟对象在所述目标路线段进行漂移操作
在本申请实施例中,通过在游戏离线状态下,获取针对第一虚拟对象的预设路径,并根据预设路径的道路信息进行遍历计算,确定满足预设条件的多条目标路线所组成的目标路线集合,并对目标路线集合中的多条目标路线进行拟合,得到一最优路线,在游戏运行状态下,根据最优路线确定第一虚拟对象的移动控制信息,以控制第一虚拟对象的移动,实现了结合离线状态下预生成的最优路线控制ai车辆移动,避免使用复杂的算法生成ai车辆所有的输入信息,降低了ai车辆移动过程中对设备的性能消耗,并且能够为不同的ai车辆规划不同的移动路线时,无需进行长时间的训练。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上游戏虚拟对象的控制方法的步骤。
本申请一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上游戏虚拟对象的控制方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的游戏虚拟对象的控制方法及装置、电子设备、存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。