Algorithm 飞行游戏AI算法?

Algorithm 飞行游戏AI算法?,algorithm,artificial-intelligence,game-ai,Algorithm,Artificial Intelligence,Game Ai,大家好, 我正处于我的一个爱好项目的设计阶段。我将开发一个3D空战游戏。(灵感来自HAWX)。 但我想知道人工智能是如何为敌方飞船工作的?我猜,它们不会像在FPS游戏中那样沿着路径移动(在图形上查找路径)。 我可以使用什么样的算法来移动敌机? 有什么人工智能库我可以用它吗 注释:我使用RiRiHyg引擎,C++作为我的开发环境。 < P>一个简单的答案,找到一个拦截点… 在任何时间点,做一个直线假设。你和你的目标以固定速度直线行进。因此,您可以从目标中减去位置和运动,并使用目标的相对位置和速度

大家好,

我正处于我的一个爱好项目的设计阶段。我将开发一个3D空战游戏。(灵感来自HAWX)。 但我想知道人工智能是如何为敌方飞船工作的?我猜,它们不会像在FPS游戏中那样沿着路径移动(在图形上查找路径)。 我可以使用什么样的算法来移动敌机? 有什么人工智能库我可以用它吗


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

< P>一个简单的答案,找到一个拦截点…

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

一个有趣的时间点是当你的目标离你最近的时候。IIRC,可以用矢量点积来计算

      P . V
t = - -----
      V . V
假设我得到了正确的结果,在这一点上,目标路径与从你到目标的直线成直角(与它和你的运动之间的角度不同)。你可以用三角法得到一个等价的答案(点积与余弦有关),我甚至曾经用联立方程法计算过(不太清楚),这是我多年前开始但从未完成的2D游戏(想想OID/推力式旋转和重力推力船之间的战斗)

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

计算当前速度和方向的微小变化的这段时间,您可以迭代优化,以便在不久的将来拦截。当然,最小化t带来了t可能会更深入到过去的可能性——逃跑!也许最小化t平方会更好,但是你还有其他的问题-如果敌人就在你身后,你真的想放慢速度吗

无论如何,对于一个简单的导弹来说,这可能就足够了,但在格斗中,这当然没有什么用处。我对它的印象更像是一种模拟实时国际象棋,在那里你大部分时间都看不到棋盘。很明显,你不能将其最小化,所以你需要一个更高层次的模型来描述动作,而不仅仅是操纵杆和其他控制设置。在你开始为它设计人工智能引擎之前,需要对基于人类经验的策略进行相当多的研究

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

也许你需要一个包含不同类型目标和战术的系统,并在其中进行加权和选择。距离你的目标很远,你更可能试图躲在隐蔽处,而不是靠近目标。当你的尾巴上有一枚导弹时,这将优先于你可能采取的任何进攻行动,等等


顺便说一句,这些都不是来自游戏开发的实际经验(我当然也从来没有做过任何类型的试点),所以这只是一些模糊的建议,可能无法实现。还有,请注意——我的2D游戏一直没有完成的一个原因是,试图编写AI代码起初非常有趣,后来又非常令人沮丧——当你在AI上的最佳尝试能够击败你的唯一方式是拥有数倍的舰船和无限量的弹药时,这真是令人恼火。

Hi,史蒂夫:谢谢你的建议。实际上我的问题并不具体。我想我必须为敌国保留一台国家机器。(例如:攻击建筑物、攻击玩家、追逐玩家、防御玩家导弹等)。取决于算法的状态,我想知道他们是如何在H.A.W.X这样的游戏中实现人工智能的!我不认为你可以忽略绝对速度。介质(空气)处于静止状态,对你的机动能力有很大影响。@ziggystar-最近点计算假设速度恒定。为优化选择较小的变化,考虑模拟飞机的近似极限是有意义的,但这是为了设定目标,而不是决定飞机实际将实现什么。决定飞机的真实性能是物理引擎的工作,而不是人工智能引擎。一个更复杂的人工智能可能需要一个复杂的物理模型,但这和物理无关——这是关于人工智能的,而且是非常简单的人工智能。@umanga-对不起,我从来并没有玩过HAWX。对于所描述的内容,您可能需要一个状态机,但我对此没有什么建议——实现将取决于具体的细节。