在像魔兽争霸3或帝国时代这样的游戏中,AI对手可以在地图上移动的方式几乎是无限的。地图很大,其他玩家的位置也在不断变化。
像这样的游戏中的AI路径查找是如何工作的?在这样的设置中,标准的图搜索方法(例如DFS,BFS或A *)似乎是不可能的。
答案 0 :(得分:16)
以一粒盐为例,因为我没有第一人称寻路经验。
话虽如此,可能会有不同的方法,但我认为标准的图搜索方法,特别是(变体)A *对于策略游戏来说是完全合理的。我所知道的大多数策略游戏似乎都基于一个平铺系统,其中地图由小方块组成,可以很容易地映射到图形。一个例子是星际争霸II(Screenshot),我会在这个答案的其余部分继续使用它,因为我最熟悉它。
虽然A *可用于实时策略游戏,但有一些缺点需要通过调整核心算法来克服:
A *太慢了
由于RTS是默认的“实时”,等待计算完成会让玩家感到沮丧,因为单位会滞后。这可以通过几种方式解决。一种是使用Multi-tiered A*,它在考虑较小的障碍之前计算粗略的路线。另一个明显的优化是将前往同一目的地的单位分组为一个排,并且只计算所有目的地的一条路径。
除了将每个单个图块作为图形中的节点的天真方法之外,还可以构建navigation mesh,其具有更少的节点并且可以更快地搜索 - 这需要稍微调整搜索算法,但是它仍然是A *的核心。
A *是静态的
A *适用于静态图形,那么当景观发生变化时该怎么办?我不知道在实际游戏中如何做到这一点,但我想我的路径是反复进行的,以应对新的障碍或消除障碍。也许他们正在使用incremental version of A*(PDF)。
要观看星际争霸II的演示,请转到this video中的7:50。
A *有完美的信息
许多RTS游戏的一部分是未开发的地形。由于你无法看到地形,你的单位也不应该知道在哪里走路,但往往他们也会这样做。一种方法是惩罚步行穿过未开发的地形,因此单位更不愿意利用他们的全知,另一种方法是将全知科带走,只是假设未开发的地形是可步行的。这可能导致单位陷入死胡同,有时对玩家来说是明显的,直到他们最终探索到目标的路径。
战争之雾是另一个方面。例如,在星际争霸2中,地图上有可破坏的障碍物。已经证明,你可以命令一个单位移动到敌人的基地,如果你的对手已经摧毁了障碍物,它将开始不同的路径,从而为你提供你不应该拥有的信息。
总结:您可以使用标准算法,但您可能必须巧妙地使用它们。作为最后一个奖励:我发现Amit’s Game Programming Information对于路径感兴趣。它还与进一步讨论该问题有关。
答案 1 :(得分:2)
这是一个简单的例子,但它表明你可以从一组非复杂的规则中产生AI /深度寻路的错觉:Pac-Man Pathfinding
基本上,人工智能有可能知道本地(附近)的信息,并根据这些知识做出决定。
答案 2 :(得分:1)
A*是一种常见的寻路算法。这是一个流行的游戏开发主题 - 您应该能够找到包含信息的大量书籍和网站。
答案 3 :(得分:0)
查看可见性图表。我相信这就是他们用于寻路的原因。