我很好奇在赛车游戏中如何控制汽车。
我的AI代理是否应该使用“油门在0.35上,方向盘在0.5上在右,制动在0.0上”这样的命令来控制汽车?还是我应该预先计算汽车所遵循的曲线,而诸如前轮转向之类的视觉效果只是为了使一切看起来都一致?还是还有其他方法?
我很好奇在赛车游戏中如何控制汽车。
我的AI代理是否应该使用“油门在0.35上,方向盘在0.5上在右,制动在0.0上”这样的命令来控制汽车?还是我应该预先计算汽车所遵循的曲线,而诸如前轮转向之类的视觉效果只是为了使一切看起来都一致?还是还有其他方法?
Answers:
我们可以说游戏在某种程度上遵循了预先计算的路径。由于赛车游戏的轨迹(通常)始终是预先计算的路径。
即使我们正在谈论随机生成轨道,游戏也必须在汽车到达那一刻计算出轨道的当前部分。
好吧,那很容易。还有其他吗?
遵循预先计算的路径并系统地控制汽车在游戏行业中都有用。答案是同时使用两者。
首先,我想提到“计算曲线”可能意味着两件事:
创建将在曲线上输出位置的函数,并将要查询的距离作为参数。
创建一条路径,理解为要遵循的要点(或指令和其他控制信息)列表。
前者可用于预测或某些物理模拟。但是,当我们谈论控制对象时,建议使用后者。
注意:对于较早的游戏(1980年代),其他汽车更喜欢移动障碍物。他们在那里是为了避免它们并超越它们。我们不是在谈论那些。
预先计算一条路径:这对于电影或可重复场景很有用。例如,在GTA圣安地列斯,追逐任务执行追逐目标,所有汽车都遵循预定的路径(这确保了追逐目标可以避免交通※)。但是,一旦您干扰了它们,它们就会退回到AI控制之下,在这种情况下,AI将不得不寻找路径以到达应该遵循其常规路径的位置。
※:实际上是预先录制的。记录和回放是GTA SA游戏引擎的新功能之一。
由AI控制:
最简单形式的AI是状态机。它检查状态是什么,并根据状态执行一些操作。我将把状态和动作的这些组合称为行为。这些动作不必与玩家的游戏手柄匹配。行为也没有。
对于一个简单的游戏,您可能只需要两个显着的行为:1)如果它在赛道上,则沿着赛道避开其他汽车和任何障碍物; 2)如果它不在赛道上,那就回到赛道上。
在此阶段,走一条路径(轨道)不远。但是,由于轨道并不是真正的直线,所以我们并不是在谈论沿着一条路径走,而是要保持靠近它(同时避免其他车辆和任何障碍物)。这意味着AI必须解决“转向,制动和加速”问题。
对于现代游戏,汽车还需要进行物理模拟(以解决碰撞并保持真实感)。因此,游戏循环的每次迭代都会根据汽车的速度和加速度对其进行更新,并且还将应用“转向,制动和加速”(对速度进行调整)以遵循当前行为。
我还要提及的是,现代游戏的行为可能更复杂,例如,AI可能选择撞上另一辆汽车或挡住道路。实际上,AI甚至可以根据某种形式的机器学习来选择要应用的应用程序,但我离题了。
最后,请考虑在玩家视野之外对AI汽车进行更简单的控制也可能有用。无论是性能还是橡皮筋(在这种情况下,它们都使AI汽车靠近玩家以保持比赛趣味性,当您不能真正落后于任何对手时,可以将其视为AI作弊)。
关于动画,通常独立地模拟轮子的物理效果不是一个好主意。如果这样做,可能会增加游戏的真实感,但会降低性能。通常,游戏会根据行为对轮子进行动画处理,而不是根据轮子的运动来表达行为并模拟后果。
当然,无论车轮是否与地面接触,您都可能需要考虑其他因素。也许是动画暂停。