2010-10-04 106 views
5

全部问候,飞行游戏AI算法?

我在设计阶段的一个爱好项目。我打算开发一个3D空战游戏。 (受HAWX启发)。 但我想知道AI是如何为敌人工作的?我想,他们不会像在FPS游戏中一样沿着一条路径(图上的路径)移动。 什么样的算法可以用于敌方的工艺运动? 有没有我可以使用的AI库?

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

回答

4

寻找一个拦截点简单的回答...

在任何时间点,使直线的假设。你和你的目标是以固定的速度直线行驶。因此,你可以从你的目标中减去你的位置和动作,并处理目标的相对位置和速度。

一个有趣的时间点是当你的目标距离它最近时(即该线上)最接近的点。 IIRC,可以用向量的点积计算...

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

假设我说对了,在这一点上的目标路径成直角,从你行的目标(不一样的它和你的运动之间的角度)。你可以使用三角函数(点积与余弦相关)得到相应的答案,我甚至用一次联立方程方法解决了这个问题(不知道更好),对于我开始但从未完成多少年的2D游戏(考虑oids /推力式旋转推力船与重力之间的战斗)。

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

计算这个时间对于当前速度和方向的小变化,您可以迭代地优化以用于不久的将来拦截。当然,最小化t可能会让t进一步进入过去 - 逃跑!也许最小化t平方会更好,但是你有其他复杂性 - 如果敌人在你后面,你是否真的想放慢速度?

无论如何,这对于一个简单的导弹来说可能就足够了,但当然在混战中使用量很少。我对此的印象更像是一种模拟实时国际象棋,大部分时间你都看不到大部分棋盘。显然,你不可能达到最低限度,所以你需要一个更高层次的动作模型,而不仅仅是操纵杆和其他控制设置。在开始为它设计人工智能引擎之前,需要对基于人体经验的策略进行一些研究。

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

也许你需要一个不同类型的目标和战术的系统,并在它们之间加权和选择。离你的目标很远,你更有可能试图隐藏起来,而不是靠近。当你在自己的尾巴上放置导弹时,它会优先考虑你可能采取的任何攻击行动,等等。

顺便说一句 - 这些都不是来自游戏开发的实际经验(我从来没有做过任何描述的试点),所以对待它是模糊的建议,可能不会泛滥。并且要小心 - 我的2D游戏从未完成的一个原因是因为尝试制定AI代码最初非常有趣,后来如此令人沮丧 - 当人工智能的最佳尝试击败你的唯一方式是如此令人讨厌时有更多的船只和无限的弹药供应。

+0

嗨,史蒂夫感谢提示。其实我的问题不是特定的。我想我必须为敌国保留一个状态机。 (例如攻击建筑物,攻击玩家,追逐玩家,防御玩家missles等等)。并且依赖于状态算法应该改变。我想知道他们是如何在像H.A.W.X这样的游戏中实现AI的! – 2010-10-04 05:03:42

+0

我不认为你可以忽略绝对速度。媒体(空气)处于静止状态,对你如何操纵有很大的影响。 – ziggystar 2010-10-04 09:15:07

+0

@ziggystar - 最近点计算假定速度恒定。为了选择优化的微小变化,考虑到模拟飞机的近似极限是有意义的,但这是为了设定目标*,而不是决定飞机实际将达到什么样的目标。决定飞机的真实性能是物理引擎的工作,而不是AI引擎。一个更复杂的人工智能很可能需要一个复杂的物理模型,但这不是关于物理 - 关于人工智能和非常简单的人工智能。 – Steve314 2010-10-05 10:26:22