如何在RTS视频游戏中寻路?

时间:2010-10-30 15:45:07

标签: search artificial-intelligence

在像魔兽争霸3或帝国时代这样的游戏中,AI对手可以在地图上移动的方式几乎是无限的。地图很大,其他玩家的位置也在不断变化。

像这样的游戏中的AI路径查找是如何工作的?在这样的设置中,标准的图搜索方法(例如DFS,BFS或A *)似乎是不可能的。

4 个答案:

答案 0 :(得分:16)

以一粒盐为例,因为我没有第一人称寻路经验。

话虽如此,可能会有不同的方法,但我认为标准的图搜索方法,特别是(变体)A *对于策略游戏来说是完全合理的。我所知道的大多数策略游戏似乎都基于一个平铺系统,其中地图由小方块组成,可以很容易地映射到图形。一个例子是星际争霸II(Screenshot),我会在这个答案的其余部分继续使用它,因为我最熟悉它。

虽然A *可用于实时策略游戏,但有一些缺点需要通过调整核心算法来克服:

  1. A *太慢了

    由于RTS是默认的“实时”,等待计算完成会让玩家感到沮丧,因为单位会滞后。这可以通过几种方式解决。一种是使用Multi-tiered A*,它在考虑较小的障碍之前计算粗略的路线。另一个明显的优化是将前往同一目的地的单位分组为一个排,并且只计算所有目的地的一条路径。

    除了将每个单个图块作为图形中的节点的天真方法之外,还可以构建navigation mesh,其具有更少的节点并且可以更快地搜索 - 这需要稍微调整搜索算法,但是它仍然是A *的核心。

  2. A *是静态的

    A *适用于静态图形,那么当景观发生变化时该怎么办?我不知道在实际游戏中如何做到这一点,但我想我的路径是反复进行的,以应对新的障碍或消除障碍。也许他们正在使用incremental version of A*(PDF)。

    要观看星际争霸II的演示,请转到this video中的7:50。

  3. A *有完美的信息

    许多RTS游戏的一部分是未开发的地形。由于你无法看到地形,你的单位也不应该知道在哪里走路,但往往他们也会这样做。一种方法是惩罚步行穿过未开发的地形,因此单位更不愿意利用他们的全知,另一种方法是将全知科带走,只是假设未开发的地形是可步行的。这可能导致单位陷入死胡同,有时对玩家来说是明显的,直到他们最终探索到目标的路径。

    战争之雾是另一个方面。例如,在星际争霸2中,地图上有可破坏的障碍物。已经证明,你可以命令一个单位移动到敌人的基地,如果你的对手已经摧毁了障碍物,它将开始不同的路径,从而为你提供你不应该拥有的信息。

  4. 总结:您可以使用标准算法,但您可能必须巧妙地使用它们。作为最后一个奖励:我发现Amit’s Game Programming Information对于路径感兴趣。它还与进一步讨论该问题有关。

答案 1 :(得分:2)

这是一个简单的例子,但它表明你可以从一组非复杂的规则中产生AI /深度寻路的错觉:Pac-Man Pathfinding

基本上,人工智能有可能知道本地(附近)的信息,并根据这些知识做出决定。

答案 2 :(得分:1)

A*是一种常见的寻路算法。这是一个流行的游戏开发主题 - 您应该能够找到包含信息的大量书籍和网站。

答案 3 :(得分:0)

查看可见性图表。我相信这就是他们用于寻路的原因。