首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >飞行游戏AI算法?

飞行游戏AI算法?
EN

Stack Overflow用户
提问于 2010-10-04 09:44:51
回答 1查看 2.6K关注 0票数 6

大家好,

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-04 11:50:20

找到一个截取点的简单答案..。

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

一个有趣的时间点是当你的目标最接近(在那条线上)的时候--那条线上最近的点。IIRC,可以用向量点积来计算...

代码语言:javascript
运行
复制
      P . V
t = - -----
      V . V

假设我没弄错,此时目标路径与从你到目标的直线成直角(与它和你的运动之间的角度不同)。你可以用三角学(点积与余弦相关)得到一个等价的答案,我甚至用过一次联立方程方法(不知道得更好),这是一个我多年前开始但从未完成的2D游戏(想想具有重力的拟人/推力式旋转推力船之间的战斗)。

由此,您可以确定最近的点在哪里以及距离有多远。

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

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

不过,对于在地形中使用cover,您可能可以做一些简单得多的事情。基于图的路径查找器很可能与绘制通过山谷的路线相关。在2D中做大部分的寻路,并调整地图相对平滑-变化“谎言”,以确保你不会直接飞到悬崖上。

也许你需要一个不同类型的目标和战术的系统,以及一种在它们之间权衡和选择的方法。在离目标很远的地方,你更有可能隐藏起来,而不是走近一些。当你的尾巴上有一枚导弹时,它将优先于你可能采取的任何进攻行动,以此类推。

顺便说一句,所有这些都不是来自游戏开发的实际经验(我当然也从来没有做过任何形式的试验),所以把它当作是可能不会成功的模糊建议。注意-我的2D游戏一直没有完成的一个原因是因为尝试解出AI代码一开始非常有趣,后来变得如此令人沮丧-当你在AI上最好的尝试能够击败你的唯一方法是拥有很多倍的船和无限的弹药供应时,这是如此恼人。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3852355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档