赛车游戏中的驾驶员AI


17

我很好奇在赛车游戏中如何控制汽车。

我的AI代理是否应该使用“油门在0.35上,方向盘在0.5上在右,制动在0.0上”这样的命令来控制汽车?还是我应该预先计算汽车所遵循的曲线,而诸如前轮转向之类的视觉效果只是为了使一切看起来都一致?还是还有其他方法?


4
只要没有干扰,“坚持理想曲线”策略就可以起作用。当AI代理开始与其他汽车互动(躲避或撞车)时,他们将需要即兴创作。
菲利普

1
是的,类似沿着波德斯式转向的轨道上的节点。
MichaelHouse

1
是Colin McRae的Rally 2中有关AI的文章
。– gre_gor

@gre_gor,这篇文章很有帮助,谢谢!
达尔吉米尔'17

Answers:


16

我们可以说游戏在某种程度上遵循了预先计算的路径。由于赛车游戏的轨迹(通常)始终是预先计算的路径。

即使我们正在谈论随机生成轨道,游戏也必须在汽车到达那一刻计算出轨道的当前部分。

好吧,那很容易。还有其他吗?

遵循预先计算的路径并系统地控制汽车在游戏行业中都有用。答案是同时使用两者。

首先,我想提到“计算曲线”可能意味着两件事:

  • 创建将在曲线上输出位置的函数,并将要查询的距离作为参数。

  • 创建一条路径,理解为要遵循的要点(或指令和其他控制信息)列表。

前者可用于预测或某些物理模拟。但是,当我们谈论控制对象时,建议使用后者。

注意:对于较早的游戏(1980年代),其他汽车更喜欢移动障碍物。他们在那里是为了避免它们并超越它们。我们不是在谈论那些。


  • 预先计算一条路径:这对于电影或可重复场景很有用。例如,在GTA圣安地列斯,追逐任务执行追逐目标,所有汽车都遵循预定的路径(这确保了追逐目标可以避免交通※)。但是,一旦您干扰了它们,它们就会退回到AI控制之下,在这种情况下,AI将不得不寻找路径以到达应该遵循其常规路径的位置。

    ※:实际上是预先录制的。记录和回放是GTA SA游戏引擎的新功能之一。

  • 由AI控制:

    最简单形式的AI是状态机。它检查状态是什么,并根据状态执行一些操作。我将把状态和动作的这些组合称为行为。这些动作不必与玩家的游戏手柄匹配。行为也没有。

    对于一个简单的游戏,您可能只需要两个显着的行为:1)如果它在赛道上,则沿着赛道避开其他汽车和任何障碍物; 2)如果它不在赛道上,那就回到赛道上。

    在此阶段,走一条路径(轨道)不远。但是,由于轨道并不是真正的直线,所以我们并不是在谈论沿着一条路径走,而是要保持靠近它(同时避免其他车辆和任何障碍物)。这意味着AI必须解决“转向,制动和加速”问题。

    对于现代游戏,汽车还需要进行物理模拟(以解决碰撞并保持真实感)。因此,游戏循环的每次迭代都会根据汽车的速度和加速度对其进行更新,并且还将应用“转向,制动和加速”(对速度进行调整)以遵循当前行为。

    我还要提及的是,现代游戏的行为可能更复杂,例如,AI可能选择撞上另一辆汽车或挡住道路。实际上,AI甚至可以根据某种形式的机器学习来选择要应用的应用程序,但我离题了。

    最后,请考虑在玩家视野之外对AI汽车进行更简单的控制也可能有用。无论是性能还是橡皮筋(在这种情况下,它们都使AI汽车靠近玩家以保持比赛趣味性,当您不能真正落后于任何对手时,可以将其视为AI作弊)。


关于动画,通常独立地模拟轮子的物理效果不是一个好主意。如果这样做,可能会增加游戏的真实感,但会降低性能。通常,游戏会根据行为对轮子进行动画处理,而不是根据轮子的运动来表达行为并模拟后果。

当然,无论车轮是否与地面接触,您都可能需要考虑其他因素。也许是动画暂停。


这只是一个很好的答案,非常感谢。
达尔吉米尔'17

0

我强烈建议您从汽车控制器中分离出汽车物理/状态模型,并使AI代理和播放器控制器成为两种可互换的控制器,并使用高级命令(如您在问题中建议的命令)。

这有很多不错的效果:

  • 您可以为播放器和AI一次实现和调试物理/状态模型
  • 物理/状态模型的任何新功能都立即适用于播放器和AI
  • 播放器和AI赛车在赛道上的表现始终如一,从而增加了感知和实际的公平性(当然,如果您想让赛车手受挫,您可以通过更改赛车的参数来做到这一点)
  • 各种多人游戏支持变得更容易开发。

顺便说一下,这是MVC分离的一种特殊情况。


2
我喜欢这个答案,但是最后的说法是荒谬的。删除它,您对我有一点看法。分离关注点?-当然可以 但是MVC不适用于您完整答案的上下文。
工程师

1
除了在问题或答案中未讨论View方面的事实之外,您为什么认为将其构造为MVC是荒谬的?
罗素·波罗戈夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.