【问题标题】:A.I. that can navigate a randomly generated 2D city人工智能可以导航随机生成的 2D 城市
【发布时间】:2012-01-22 21:43:41
【问题描述】:

我正在编写一个 iOS 游戏(使用 UIView),它有一个随机生成的 2D 城市。 我需要攻击人工智能,这将采取智能路径找到玩家(不与建筑物碰撞)。 有人可以指出我将使用哪种算法来实现这一目标的正确方向吗?

编辑:我决定使用 A*。我将在地图上创建一个网格,测试每个网格交叉点,如果该点在建筑物内,我将使该点无效。攻击型人工智能然后玩家将从其当前位置移动到一个有效的网格点,该网格点更接近其目标(在其位置的一定半径内)。

【问题讨论】:

  • 投票结束作为工具记录/广泛。

标签: algorithm artificial-intelligence 2d path-finding


【解决方案1】:

您正在寻找称为pathfinding algorithms 的一类算法。您可以使用多种方法。

这里的经典算法是Dijkstra's algorithmA* search,它们可以引导一个物体沿着最优路径从一个位置到另一个位置。这些算法通过将 2D 世界建模为graph 来工作,然后在该图中找到从对象的起始位置到目标位置的最短路径。这两种算法在人工智能和寻路中被广泛使用,我强烈建议花时间阅读更多关于它们的信息。如果您愿意,可以在线获取solid tutorial on A* search

如果您有许多不同的对象需要在不干扰的情况下移动到目标,您可能需要研究潜在场,这为让多个对象接近目标提供了一个简单而灵活的框架。 the Berkeley "Overmind" StarCraft AI 使用了这种方法,并且经常用于机器人运动规划。直观地说,这种方法的工作原理是为每个位置分配一个“潜在”值,然后让物体不断从高电位移动到低电位,直到它们击中目标。这种方法要正确使用有点棘手,但一旦奏效,它往往会带来灵活、可定制的智能行为。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    这里的这个问题:Pacman: how do the eyes find their way back to the monster hole? 是对随机 2D 网格的 AI 导航方法的一个很好的调查,以寻找移动的玩家。普遍的共识(以及 Pacman 使用的方法)不是担心在 AI 中烘焙智能寻路算法,而是使用地图本身来存储玩家位置的信息。这是一本引人入胜的读物,尤其是 ammoQ 和 Dan Vinton 的第二个和第三个答案(及其外部链接)。

    Pacman scent antiobject pattern 此处的此链接描述了一种廉价而有效的方法。

    【讨论】:

    • 虽然我同意这是一个好方法,但如果世界是随机生成的,那么您将无法将任何内容硬编码到世界中,并且需要使用更复杂的算法来进行初始寻路。如果玩家不停地四处走动,这也不起作用,除非您存储很多额外信息。
    • 对不起@templatebydef,我将提问者引向第二个和第三个链接,而不是链接问题的现有解决方案或已接受的答案——这两者确实都受到您指出的问题的影响。我已经更新了我的问题,并提供了我希望 OP 查看的有趣方法的链接。
    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多