如何改善终极疯狂的实时战略游戏AI?


12

我与我的一个朋友聊天,讨论是否可以创建一个AI,它可以在实时策略游戏中在没有资源作弊的情况下击败任何人。可以完美发挥的AI。当今游戏的AI有许多可以改进的地方,其中大部分依赖资源作弊,因此而导致的更好的早期基础发展以及不断涌现的攻击。

尽管如此,问题是需要做些什么来改善这一点以获得最终的AI。另外,如果您有使用某个功能的游戏示例,那就太好了。

编辑:对于没有读过标题或描述问题的几段内容的人,我几乎没有提供任何澄清。这是关于实时策略游戏和最终的AI。这意味着Strarcraft,魔兽,将军,红色警戒,帝国时代,AI战争等。游戏具有多个难度级别,但这里的重点是最终挑战。

tenpn的精彩帖子充满了丰富的资源。谢谢tenpn!我希望更多的人朝这个方向作出贡献。


6
确实,如果没有特定案例,这个问题就毫无意义。根据所涉及的游戏机制,所有游戏都有不同的实现AI的方式,“如何改进它们”将有很大差异。至少应该是Community Wiki,因为这里没有“正确”的答案。
MrCranky'9

2
除前者之外:考虑一下国际象棋是一种战略游戏。
Rushyo

1
你为什么要 为Pong的游戏制作出完美的AI绝对是微不足道的,而且玩起来绝对没有乐趣。游戏AI的目标不是打败玩家,因为应该玩的是玩家(而不是计算机)。
伊恩·施雷伯

1
伊恩:OP在谈论与Pong非常不同的事情。制作无与伦比的Pong AI或Tic-Tac-Toe AI很容易。国际象棋可以被带到只有非常非常好的人才能击败的人工智能。但是RTS是另一回事。
共产党鸭子

2
您可能对STRIPS算法感兴趣。
user712092 2011年

Answers:


12

这是一个很难回答的问题。为了说明需要改进的地方,您需要拥有一些已知的AI。但是,以下是来自aigamedev.com的RTS AI的一些示例(需要注册):

不幸的是,大多数真正好的东西都在付费墙后面。

常见的AI解决方案是“面向目标的行动计划者”,它使用规则来形成满足目标的计划。现在已经有一段时间了,但是非常酷。Jeff Orkin的网站上有关于如何将其应用于FPS 的简要概述(pdf),但是对于RTS,完全相同的原理(具有不同的规则和目标)适用。

许多RTS会使用GOAP的层次结构,不同的级别从上一级接收目标,并关注战场上不同级别的细节。我读了一篇关于第二次世界大战十六进制战争游戏的AI的很棒的文章,其结构是这样的,但是对于Google来说,我现在找不到链接。任何可以帮助我的人的金星奖。

当然,GOAP和其他计划者的有效性取决于您对游戏世界的分析能力以及您的行动和目标的完善程度。

其他常见技术包括用于评分和优先级的实用程序架构(pdf),以及用于分析游戏世界的黑板


6

关键是,如果您拥有AI

在实时策略游戏中可以击败任何人而无需资源作弊

那么您就有了一场比赛,因为他们无法超越第一关而无法参赛。

AI编程中最难的部分是使AI可以被击败,但又可以被一些熟练的人击败。打败太容易了,玩家将因缺乏挑战而退缩,变得太难了,人们将无时无刻不在被打败。

因此,这并不是要创建复杂的AI(毕竟,AI可以同时处理其游戏区域中的所有内容,而玩家只能处理屏幕上的内容,这并不困难),而是创建平衡的游戏。


1
要澄清的是,使AI能够击败任何人并不难,因为AI可以以比任何人都希望的更好的粒度来控制其单元(由于UI约束)。人类需要几秒钟来对事件做出反应,选择和指挥单位,而AI可以在每个“游戏回合”中针对任何事件分别更新每个单位的命令。但实际上,这没有完成,因为这会使游戏变得乏味。真正困难的部分是使AI愚蠢到足以击败。
Skizz 2010年

3
澄清一下-打造无与伦比的AI并不难。要使击败,挑战和引人入胜的AI变得困难得多。
Skizz 2010年

3

可以做很多事情,但是我对这个问题的立即反应是一个反问:为什么有人会想要最终的RTS AI?为什么这个人不只是在线对抗另一个人类对手?

关键是:这不是让AI无与伦比的问题,这使得它觉得速度不够快的问题(例如,它具有走捷径),以便能够对3播放或同一地图与上甚至7 AI对手普通计算机。即使是今天和明天,我希望即使是十年后也不会改变。

下一个问题是:只要AI遵循严格的规则,它就可以被利用。即使是模糊规则也会使其容易受到攻击。人工智能必须学习,并且必须犯错误-有意和无意。它还需要使您感到惊讶。然后,您正在与另一个人比赛。由于AI甚至没有接近复制人类在算法和处理能力方面的思维方式,因此最好不要浪费时间在一个单人AI上,而AI的乐趣并不比另一个AI多人类,如果仅出于所涉及的社会因素。


1

您所定义的“资源作弊”就像赛车游戏中的“助推平衡”。“助推器”用于尝试使背包彼此相对靠近,以产生一场激烈比赛的幻想。如果玩家是不是在铅可能保持在视线的CPU球员,如果玩家领先它直接把对手你的尾巴上保持压力,即使CPU本身是一个平庸的驱动程序。

在RTS中,您正在查看可以最佳安排的一组值。您确切地知道获取资源需要多长时间,建筑物料成本,地图遍历时间等。

如果您是创建表的人,并且可以随时获得信息,那么只需对数据进行数字运算即可找到最佳输出比率。

但是,根据战场的背景,与总是做完全相同的事情的敌人作战有多有趣呢?

所以你增加了混乱。您可以按比例调整AI的效率。你有骚扰玩家。如果玩家看起来表现不佳,则可以让AI有所欺骗,并为其提供一些额外的资源或增强功能,以使玩家保持警惕。

您希望玩家感到面对挑战者的满足感,而不是打败弱小的AI或被Hal9000杀死。CPU对手的完美之处在于它的不完善之处。:)


2
且有所不同,但又相关:如果AI有时做的技术上不是他们最好的选择,那会很好,但是给游戏增添了一点乐趣,例如使用不寻常的单位或动作(例如在玩家基地后面空投部队) )
Bart van Heukelom

0

一件事是,您必须跟上游戏的战略发展。如果AI认为一支由海军陆战队组成的核心部队是玩Terran vs Terran游戏的方式,那么没有什么发展能让AI赢得星际争霸1的比赛(公平竞争)。

如果AI在沿途做出可行的选择,这不仅可以防止AI因其过时的策略而一再被击败,而且拥有更多的游戏方法将使AI更具吸引力。

丰富的策略树甚至允许难度滑块。例如,疯狂的虫族AI将倾向于采取灵活的方法来适应敌人并在有机会的情况下迅速扩展,但在正常难度下,它可能会选择更坚固的结构,不太可能进行大规模扩展。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.