[从stackoverflow交叉发布]
在《魔兽争霸3》或《帝国时代》等游戏中,AI对手在地图上移动的方式似乎几乎是无限的。地图很大,其他玩家的位置也在不断变化。
这些游戏中的AI寻路方式如何工作?在这种设置中,似乎无法使用标准的图形搜索方法(例如DFS,BFS或A *)。
[从stackoverflow交叉发布]
在《魔兽争霸3》或《帝国时代》等游戏中,AI对手在地图上移动的方式似乎几乎是无限的。地图很大,其他玩家的位置也在不断变化。
这些游戏中的AI寻路方式如何工作?在这种设置中,似乎无法使用标准的图形搜索方法(例如DFS,BFS或A *)。
Answers:
我已经同意她的其他回答,但也尝试将WoW / Warcraft3视为实际的2D世界。他们看不到与tilebased不同的地方,只是tile。
您还可以想到GPS如何找到最佳路径?有大量的算法可以通过链接地图进行寻路。
我认为某些第一个“ Quake bots”脚本也可以为您提供帮助,因为它们被开发为可在“未知领域”工作,因为我们可以从头开始设计自己的关卡。
总而言之,我个人处理此类地图的方式是将其视为A *探路者。但是首先我要预先计算每个“平铺点”,并用“最近邻居”等索引所有这些。然后,当一个对象需要从A移到B时,只需在B中进行查找,看看其连接的位置并一直重复直到您达到目标。
根据游戏类型和风景/场景,不同的预扫描策略也可能有用。有些游戏的障碍物很少,而这些障碍物可能是“直线运动” +一些“物体如何绕行”。
希望这有点道理,也许可以给您一些想法。
我完全没有经验,但是我认为一个好的解决方案是基于试探法,而不是对已知地图的完整检查。我能想到的启发式方法是基于本地和基于经验的。本地控制可以基于本地地形检查和障碍物,并保持朝着所需方向移动。我认为大多数地图都不需要复杂的迷宫般的动作,但是它们之间的联系非常紧密。另一个试探法是使用先前已知的路径(由其他单位探索或由用户明确地使用)将单位移动到已知或接近已知的位置。但是我说的是在大地图上移动,而不是像ZorbaTHut所说的那样在封闭的空间中移动。在拥挤的情况下,该算法可能会更复杂,需要某种“预测”,同一团队的各个部门之间的协调或仅仅是信号量式的等待策略。也,
我认为启发式算法是好的,因为它们通常会在较大的空间上以合理的计算时间(在移动多个单位时很重要)提供良好的解决方案。
抱歉,这是一个笼统的答案:我和很多人一起工作,但是空间非常特殊,我无法确切解释算法的工作原理(无论如何,它是基于代理的,不是全局定义的)。希望您能从我的回答中得到一些有用的想法。