基于回合制策略游戏的复杂游戏AI


26

我正在为回合制策略游戏项目做一些研究,并在这个主题上寻找好的资源。该游戏是一种典型的战争游戏,各国可以互相战斗,部署单位并让这些单位在六角形的地图上移动,互相攻击等。

我对Civilization V的AI的组织方式特别感兴趣!根据Wikipedia的说法,该游戏针对游戏AI的不同层使用了四个不同的AI系统:

  • 战术AI控制单个单位
  • 行动AI负责监督整个战线
  • 战略性AI管理着整个帝国
  • 大型战略AI设定了长期目标并确定了如何赢得比赛

从概念上讲,这看起来对实现复杂的AI很有意义,而且让我好奇地发现这些不同的AI系统如何工作(并一起工作)。战术AI可能是最容易理解的,因为它可以处理单个单位的决策(移动,攻击,维修,撤退等),但我认为其他AI系统才是真正令人感兴趣的地方。例如,可操作的AI会做什么,以及它是如何做到的?我敢肯定,这些是Firaxis Games保留得最好的秘密,但是开始对此进行讨论以找到更多信息是很酷的。

同样,如果有人知道任何擅长基于回合制策略游戏AI的好书,那么也很高兴知道。显然,这是网上稀疏的话题。我得到了“通过示例编程游戏AI”,但是那本书更多地是关于单一代理行为AI,而不是高级的面向目标的AI。

Answers:


19

尽管我同意DampeS8N的开篇段落(即游戏AI只需要足够聪明才能使玩家认为它很聪明),但我认为这个问题需要更多阐述。所使用的数据结构可以是所有级别的FSM,但这并不能真正回答各个系统如何工作的问题。

免责声明:我几乎没有玩过《文明》游戏,所以我对游戏玩法的理解受到限制。如果有任何明显的错误,我深表歉意。请纠正我,我会很乐意编辑。

我将引用原始IGN文章的报价。

1.战术AI

在最低级别,战术AI使用手头的力量在局部规模上赢得一场战斗。

这可能是子系统的最标准部分。可以使用FSM,行为树(甚至根据AI的难度甚至执行随机动作)来执行此操作的方法无穷无尽。

但是,由于这是回合制游戏,类似于风险游戏,我认为更可能发生的是为每个单元分配一个分数。然后根据不同的变量(算法,地形奖金等)将乘数附加到该分数上。

然后通过类似以下内容的方法来计算结果:

If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit

AI在战斗中会尝试并最大化该分数是有意义的。

添加一个ε值(例如,失败/成功的机会很小),您将拥有相当不错的外观AI(没有人想要一个完美的对手,那可真不好玩!)。

2.运营人工智能

与之相比,可操作的AI更进一步,它可以选择要战斗的战斗,并确保有必要的部队可用。

我认为有两点:

  • 评估电流强度
  • 部队加固
  • 评估选择/避免打架

评估当前强度 -这只会向我尖叫影响力图。它可以很容易地在十六进制网格上表示。由于该子系统以战斗为导向,因此影响值可以代表附近每个单元的强度值。如果您有一支庞大的军队集中在小范围的六边形上,那么影响力值将是巨大的,而作战AI会在评估挑拣战时考虑到这一点。别忘了,对立军队的影响力值也会被计算出来。这使操作AI可以预测潜在的传入威胁。

部队增援 -通过从影响图中接收有关敌对派系的信息,AI可以确定哪些部队受到的威胁最大。然后,AI可以发出命令,让附近的部队去加强受威胁的各方。

评估选择/避免打架 -这里可能发生几种情况。如果AI检测到某个单位正受到威胁并且附近没有单位可以帮助它,则可以a)决定牺牲该单位(例如,如果他们只是低下的步兵,而不是不可替代的将军)或b)订购该单位撤退。相反,如果AI在军队附近检测到一个弱小的敌方单位,则可以命令该单位将这个敌人赶出。

这是一篇不错的论文,它在实时策略游戏中利用了影响力图。

3.战略AI

更高的战略AI将整个帝国进行管理,重点是在哪里建造城市以及如何处理城市。

“我应该在哪里建一座城市?” 听起来像是位置评估 国际象棋程序和其他游戏使用它来确定给定位置的合意性。例如:

十六进制A:靠近资源,在高地形上,靠近盟友,靠近敌人十六进制B:远离资源,在中级地形上,距离盟友中等距离,远离敌人

位置评估功能可以考虑以下三个因素:

Score = Proximity to resources (closer yields a higher score) + 
terrain elevation (higher yields higher score) + 
proximity to allies (closer is better) + 
proximity to enemies (farther is better)

得分最高的六角形将是城市的建造地点。有关评估功能的更多信息,请参见此处

我认为战略性AI在游戏中也有很多伪预言的策略,这取决于AI追求的胜利类型。

4.大战略人工智能

最重要的是战略AI,它决定了如何赢得比赛。

我认为这可能是最简单的方法,给人的印象是比实际情况要令人印象深刻。在这样的游戏中,只有有限数量的胜利类型。文章提到了Conquest的胜利,并假设联盟也有胜利等,这可能很简单,就像随机选择其中一种类型然后将其传递给其他系统一样。

编辑:当然,正如DampeS8N所指出的那样,地图的类型可以决定要争取的最佳胜利条件,在这种情况下,地图可以由设计人员进行硬编码,或将不同变量归入某种评估函数。

结束语
我认为关于这种系统的真正重要注意事项是子系统的分层方式,它们实际上不需要相互之间进行大量交流。它看起来像是一个自上而下的架构,组件之间松散耦合。从技术设计的角度来看,它是干净且灵活的,并且可能从紧急行为和/或包容性体系结构中汲取灵感。

我真的很抱歉这篇文章的长度,它变成了野兽:(

无论哪种方式,希望对您有所帮助!


2
“我认为这可能是最简单的方法,它给人的印象是比实际情况要令人印象深刻。” 我不太确定。只是决定要征服胜利和决定向谁宣战,我们是否过度扩张并需要为和平而起诉,哪个目标是最弱的攻击目标,我们需要建造和获得的单位之间有区别正确的战略资源,使我军强大,寻找一种方法来使两个敌人互相战斗等,这一阶段是一个很多更复杂,比你给它的荣誉。
Nicol Bolas

1
哇,我以为我的答案有点长了。大声笑。不错的演出。
DampeS8N 2011年

1
值得注意的一件事是,文明绝对没有简单的胜利条件。有很多方法可以取胜。创造奇迹,推进科学,征服,外交等。进行挑选通常很困难,并且可能会根据地图条件而变化。例如,您可能会发现,刚遇到的某人在科学上遥遥领先于您,您将不得不放弃那条道路,并寻求一条新的道路。成功往往归结为尽可能长时间地保持选择开放。
DampeS8N 2011年

@NicolBolas可能要比这复杂得多,但是您提出的所有观点似乎都是AI较低级别的责任。决定向谁宣战->作战。哪个目标攻击最弱->作战/战术。获取合适的资源->运营/策略。完全可以猜测,但是较低的系统负责特定策略以确保最低级别的耦合是有道理的。
雷迪

1
@RayDey:最高级别的AI需要参与诸如资源获取之类的事情,因为它需要决定如何获取它。外交可以做到这一点。扩展到资源可以得到它。相对于其他策略,运营级别不是决定是否应对这一级别的合适位置。耦合对于像《文明》这样的游戏来说是必不可少的。一切都会影响游戏中的其他一切。如果没有很多耦合,就无法拥有有效的AI来做出决策。虽然这可能可以解释Civ V的AI为什么...不是特别明亮;)
Nicol Bolas

9

通常,不应将游戏中的AI视为“复杂”的事物,而这全都在于以最小的努力获得所需的东西。游戏的名称是Emergence。

在这种情况下,您的基本概念化是错误的。这4个系统根本不需要协同工作。他们只需要看起来像他们一样。它们也可能比您认为的要精简得多。

您还颠倒了难度顺序。Civ AI中最难的部分是战术AI,其次是作战AI。战略可能非常简单,而大型AI可能仍然更简单。

组件之间的通信更像是一个咕gr的系统,而不是真实的通信。从高级别到低级别看起来像这样:

大人工智能

评估地图状态。鉴于AI拥有的知识(可能是一切,或者如果是玩家,它可能只有它)将决定AI最快达到哪个最终目标。这可能是有限状态机,进行一些数字运算并选择目标。可能是更奇特的东西。一个遗传算法的或可能是基于贝叶斯窍门。然后,它发出类似“更多科学”的信息。

战略人工智能

然后查看使用许多相同信息可以使用的内容。它不仅要努力实现总体目标,而且还要担心游戏的更多细节。我在战争中吗?我饿死了吗?以此类推。它也可能是有限状态机,可能是模糊逻辑(实际上只是FSM的一种演变。)让我们假设它是一个简单的FSM。它将按一定的顺序提出上述问题,在一定的条件下,它将决定本轮需要进行的不同事情。我在战争中,为训练士兵分配资金。我的人民正在挨饿,在这里建造粮仓而不是在建设科学的东西。

根据我们如何拆分,选择要构建的单元可能是Strat AI或Op AI的一部分。

人工智能

将使用可用的单位,并将其分配到不同的战线。它将决定冲突的总体形式,新部队一旦部署将前往何处。它可能也是FSM。可能会注意到,前线A上的敌人正在以对B单元较弱的单位进攻,并将向该单位发送更多的B单位,而不是向对B单元较强的另一条前线派遣。它将向整个单位发出一般命令。随意进攻。撤退。等等。

战术AI

是特定于单位的。每种类型的单位对一般订单的反应都不同。打算自杀的单位可能会忽略撤退命令。即使是被告知要战斗的单位,也可能会退缩。文明通常对这种事情很轻率。通常,Civ中的所有单位都遵循其命令。给定它们所处的阶数较大,它们就是FSM(请参见此处的模式?)。我受伤了吗 我应该退出并up愈。我在这个位置有优势吗?攻击。我太接近攻击了吗?退后 该FSM的复杂性不必超过这三件事就可以有效并令人信服。

可以增强吗?

当然是。问题是玩家是否会注意到。而且99%的时间他们不会。

现在,这就是所有决策AI。这里还有其他AI子系统在起作用。有A *或其他某种寻路算法,可以让单位找到到达某个位置的最短路径。有一些算法可以找到开始新城市的最佳位置。等等。通常将AI分组在一起,并且通常要比AI的“思考”部分复杂得多。实际上,用于寻找FSM需要提出的问题答案的代码通常比FSM本身复杂几个数量级。一个人到底是怎么决定的


基于贝叶斯的doohicky-很棒
Brian Broom
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.