顶部视角游戏人工智能

7
我正在开发一款需要屏幕上的单位根据队伍和指定的敌人进行战斗的游戏。玩家不控制任何坦克或团队。
问题在于,单位(目前是坦克)之间的战斗应该足够有趣,以至于玩家可以观看并享受其中的乐趣,而无需做任何事情。
我目前让坦克完全随机移动,并且在范围内互相射击,但我正在寻找更智能的解决方案。
我应该研究哪些类型的人工智能和人工智能算法?欢迎提出所有想法,我只想让每场战斗都变得有趣。

2
游戏中的吃豆人幽灵所使用的逻辑可能会给你一些启示 - http://gameinternals.com/post/2072558330/understanding-pac-man-ghost-behavior(这相当复杂)。 - andrew cooke
2个回答

9
对于战略和战术,您的AI可能需要进行一些理性决策,使其看起来更聪明。有很多方法可以实现这一点,最简单的方法是为您的坦克编写一些条件-动作规则,并将它们实现为有限状态机。FSM易于实现和调试,但在稍后想要修改条件规则或添加/删除任何状态时会变得乏味。您还可以使用效用代理- AI会定期对每个潜在目标(例如:参与,撤退,重新装填/加油,寻找掩护,修理等)执行效用检查,基于当前统计数据(弹药,健康,敌人数量和位置),然后选择最优先的目标。与FSM相比,这需要更多的时间来实现,但在您需要添加或删除行为时更加灵活。它使AI看起来像遵循一般规则,但不总是可预测的。效用代理也更难调试和控制,因为您没有任何严格的条件-动作规则可以跟踪,就像当您的AI失控时,您可以使用FSM一样。另一种流行的方法是行为树。行动序列实现为树形结构。它需要更多的代码来预先编写,但通常比FSM和效用代理给您更好的控制和灵活性之间的平衡。这些决策过程不是相互独立的-您可以使用任何方法来进行顶层战略和不同的方法进行低层战术。
无论您选择哪种决策过程,您都需要一些输入来为您的AI提供数据。您可以使用影响地图来帮助AI确定战场中哪些地方被认为是敌对的,哪些地方被认为是安全的。影响地图在团队之间共享,因此它也可以帮助团队进行战术。当您的AI与多个敌人交战时,选择正确的目标非常重要。如果您的AI选择的目标大多数人类玩家不会选择,则玩家会感到AI很“愚蠢”,即使有时所选择的目标实际上是最好的。您可以在敌方单位上运行距离检查,并过滤/优先选择具有视线,当前武器范围,威胁等级等的目标。一些测试比其他测试更昂贵(视线检查通常是最糟糕的罪犯之一),因此如果您的范围内有很多敌方单位,您希望最后运行那些较慢的测试。
对于坦克的移动,请查看转向行为。它涵盖了许多车辆移动行为,但追逐和逃避是您最需要的。如果您的坦克需要在复杂地形中导航,请查看A*路径搜索算法。还有其他很好的路径解决方案可以为您提供最短/最快的路径,但在游戏中,最短/最快的路径并不总是最优的路径。如果您的最短路径是开放的,但离敌方线路太近,您需要为您的坦克提供一些启发式来选择不同的路径。您可以使用A*轻松配置路径首选项。
需要查看的内容:有限状态机,基于效用的代理,行为树,转向行为,A*搜索算法,导航路径点或导航网格,影响地图。

1
+1 并检查非常复杂和详细的答案。这正是我在寻找的,它为我提供了一些未来需要研究的东西。 - Daniel G. Wilson

2
最简单的方法是让坦克随机行驶,在敌方坦克进入射程范围时开始射击,直到其中一个被摧毁。当它们的生命值过低时,你也可以让它们随机撤退。你还可以尝试添加组战术,让任何未参与战斗的坦克加入其最近的邻居(通过一定的概率控制,以保持趣味性)。
如果您正在寻找算法,A*("A-Star")是一种通用的路径查找算法,可帮助您的坦克移动,但我不知道任何控制战斗的通用算法。

我喜欢那个想法。我把它搞得比必要的更复杂了,而让每个单位停下来射击会使它变得更简单。 - Daniel G. Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接