飞行游戏AI算法?

时间:2010-10-04 01:44:51

标签: algorithm artificial-intelligence game-ai

问候所有人,

我正处于我的一个爱好项目的设计阶段。我将开发一款3D空战游戏。 (受HAWX启发)。 但我想知道AI如何为敌人的工艺品工作?我猜,他们不像FPS游戏那样沿着路径(在图表上寻找路径)移动。 我可以使用什么样的算法来进行敌人的工艺运动? 我可以使用任何AI库吗?

注意:我使用irrlicht引擎,C ++作为我的开发环境。

1 个答案:

答案 0 :(得分:5)

找到拦截点的简单答案......

在任何时候,做一个直线假设。您和您的目标以固定速度直线行驶。因此,您可以从目标中减去位置和运动,并使用目标相对位置和速度。

一个有趣的时间点是你的目标尽可能接近(在该线上) - 该线上的最近点。 IIRC,可以用矢量点积计算......

      P . V
t = - -----
      V . V

假设我做对了,此时目标路径与从你到目标的直线成直角(与它和你的动作之间的角度不一样)。你可以使用三角函数得到一个等价的答案(点积与余弦相关),我甚至用一个联立方程方法计算出来(不知道更好)一次,对于我开始但从未在很多年前完成的2D游戏(想想oid /推力式旋转推力船与重力之间的战斗)。

由此,您可以确定最近点的位置和距离。

计算此时间以获得当前速度和方向的微小变化,并且可以针对不久的将来拦截进行迭代优化。当然,最小化t会带来进入过去的可能性 - 逃跑!也许最小化平方会更好,但是你有其他并发症 - 如果敌人就在你身后,你真的想放慢速度吗?

无论如何,对于一个简单的导弹来说,这可能已经足够了,但当然很少用于混战。我对此的印象更像是一种模拟实时国际象棋,大多数时候你无法看到大部分的棋盘。显然,你不能用极小极限,因此你需要更高级别的动作模型而不仅仅是操纵杆和其他控制设置。在开始为它设计AI引擎之前,需要对基于人类经验的策略进行一些研究。

但是,为了利用地形覆盖,你可以做一些更简单的事情。基于图形的路径查找器可能与绘制通过山谷的路线相关。在2D中进行大部分寻路操作,并调整地图相对平滑变化的“谎言”,以确保您不会直接飞入悬崖。

可能你需要一套不同类型的目标和策略,并采用加权和选择的方式。离你的目标很远,你更有可能试图保持掩护,而不是你靠近。当你的导弹落在你自己的尾巴上时,它将优先于你可能采取的任何进攻行动,等等。

顺便说一下 - 这一切都不是来自游戏开发的真实经验(而且我当然从来都不是任何描述的飞行员)所以对待它是模糊的建议,可能不会成功。并且要注意 - 我的2D游戏永远不会完成的一个原因是因为尝试编写AI代码起初非常有趣,后来又如此令人沮丧 - 当你最好的人工智能尝试击败你的唯一方法时,这是非常烦人的拥有多倍的船只和无限量的弹药。