3.2 赛车AI的常规方案
赛车游戏作为竞速类游戏领域的主要品类,即使经过多年的玩法创新和演化,赛车AI在游戏中仍起着非常重要的作用。本节主要介绍赛车AI的常用类型及简单的赛车AI控制模型。
3.2.1 赛车AI的类型
赛车AI在各游戏中有不同的应用场景,如与玩家竞速的赛车AI、跟踪和抓捕玩家的警察车AI、城市路网随意游走的NPC车辆AI等。各类型的AI,行为目标不一样,实现方式也有差异。在《GT Sport》赛车游戏中,与玩家同场竞速的赛车AI,目标是以最快速度跑到终点,玩家需要感知赛道元素计算最佳行驶路径,根据赛道的情况来操控赛车。在游戏《极品飞车:热力追踪》中,警察车AI抓捕玩家,需要考虑团队合作,提前规划路线封堵玩家。在游戏《侠盗猎车手5》中,城市中到处是随意游走的NPC车辆AI,这些NPC车辆AI需要遵守城市交通规则,如过红绿灯、避让行人等。
3.2.2 赛道表示与行驶
实现一个赛车AI,第一步就是感知环境。大部分赛车游戏单局都是在固定赛道进行的,因此我们希望用简单的数学模型来表示赛道,降低问题的复杂度。常用的方法是以赛道为中心生成一条导航线,按固定间距沿着导航线采样生成路点,并在路点上记录赛道切线方向、曲率和宽度等信息。根据路点和赛车当前信息,就可以计算出赛车和赛道的关系,赛车AI据此进行行为决策。
为了更好地预测赛道的变化提前转向,往往会引入信差辅助转向控制[1]。信差就是基于赛车所处位置,根据速度沿着导航线往前一段距离采样的一个基准点。赛车根据车头与基准点方向的夹角进行转向。举个简单的例子,如图3.1所示,赛车需要过一个直角弯,车头方向与基准点方向的夹角为α,AI程序根据α的大小决策是否转向或漂移,以下为简单的伪代码。
图3.1 简单的赛车AI控制模型
在上述模型中,steerAngle和driftAngle是赛车AI的参数,影响着赛车AI的能力表现。当然,实际游戏项目中的赛车AI控制模型不会这么简单,因为赛车控制需要考虑的因素很多,如当前赛车速度、离墙距离、赛道曲率等。因此赛车AI需要建立复杂的模型,并引入更多的AI参数来控制赛车。