如何设计RTS游戏的AI?从《全面战争》系列说起(上)

发表于2018-02-27
评论0 4.6k浏览
AI始终是游戏设计中一个绕不开的话题,它们的问世往往是为了充当一把钥匙,以便让游戏系统解决短期或者长期的决策问题。说道游戏AI,许多玩家首先想到的莫过于FPS,其中,AI可以凭借精确的枪法和灵活的判断,为游戏增加不少的乐趣。

但在一些领域,FPS的AI又很难和RTS(即时战略类游戏)的AI相提并论。具体而言,RTS中AI需要兼顾的元素更多,而且某些方面产生的影响更是牵一发而动全身,举个例子,在作战中,哪怕是一个微小的、即时的、被动的决策,都完全有可能影响未来几个小时的战场态势,而在这些即时战略游戏中,无论是玩家、开发人员和游戏研究者,只要谈到AI面临的挑战和创新,就不会忽视一个系列,它就是Creative Assembly(后文简称为“CA社”)的《全面战争》。

如今,《全战》系列的阵容已经极为庞大

自2000年问世以来,《全战》阵容在不断壮大,同时,随着每部游戏推出,开发者的野心也在膨胀,这让AI的处理数据量和复杂程度也在不断增加。正是因此,开发团队在游戏AI的研发上持续倾注了巨大的精力,它让游戏史上堪称罕见。 不过另一方面,在最近的一些作品,如《阿提拉:全面战争》和《战锤:全面战争》中,游戏AI的问题也非常明显。在文中,我们不仅将介绍《全面战争》AI的设计思路,还会介绍它们在每代作品中如何得到了强化、调整甚至是完全重组。另外,尤其需要指出的是,热心玩家在其中发挥了重要作用,他们推出了许多精良的mod,帮助调整了许多重要的参数——不仅如此,相关的mod开发者社区也蓬勃发展,并给了厂方不少启示。

RTS和AI

首先,我们要简要介绍的是即时战略类游戏发展的历程,也只有通过这些,我们才能了解《全战》在其中的地位。所有即时战略游戏中,都存在一个焦点,这就是对领土和资源的控制。具体来说,在游戏中,会有两个或两个以上的敌对势力出现在同一张地图上,他们会通过争夺特定区域内的资源和位置,来让自己占据支配地位。具体而言, 为实现这一目标,每个势力将按照特定的架构组建一支军队,以前往特定地区收集资源,并保卫现有的地盘,同时,他们还要对敌人势力范围进行侦察,进而占领整个区域。

在这个过程中,这些部队还需要摧毁敌人的部队,期间,玩家需要探索未知的区域,穿过所谓的“战争迷雾”以确定敌人和资源的位置。 此外,随着时间的推移,每个阵营都将在之前组织和单位的基础上,增强现有的军事水平和资源开采能力。

《沙丘2》在RTS的发展史上起到了开创性的作用

尽管算不上人类历史上第一款RTS,但Westwood于1992年推出的《沙丘2》仍然起到了开创性的作用,它影响的游戏可以列出一长串:比如《命令与征服》《帝国时代》《家园》,还有暴雪的《魔兽》和《星际》系列等。而在1990年代后期,《战争黎明》和《星球大战:战争帝国》等游戏则采用了不同的思路——它们更强调战术的价值,而将资源管理放在了一个次要的位置。

在《沙丘2》的启示下,暴雪用一系列大作做到了青出于蓝,它们至今仍是RTS的标杆

与此同时,1994年出品的《UFO:未知敌人》则致力于在即时和回合制之间取得平衡,其上市后的人气始终很高——2012年,该系列更是随着《幽浮:未知敌人(XCOM: Enemy Unknown)》的发售而被正式重启。

另外,尽管在是否属于RTS上存在争议,MOBA类游戏事实上也在其中占据了一席之地,它们源自《魔兽争霸3》的DOTA模组,后来则诞生了《Dota 2》和《英雄联盟》等独立作品,其中,玩家操控的单位是各种英雄,而他们的行动也将决定或影响宏观层面的战局。


不管该归入RTS这一大类,还是自成一系,无可否认的是,MOBA源于RTS,而且两者间存在许多割不断的联系

之所以提及RTS的演变史,是因为AI在其诞生之初便是重要一环。在这类游戏中,玩家需要管理阵营内各个单位的部署——你可以命令它们去往某个地方,但又不能直接进行操纵。为取得理想的结果,玩家就得与系统进行互动。另外,AI也对单人游戏部分也至关重要,因为其任务不仅是依据玩家的命令做出反应,同时,它们还扮演着敌军指挥官的角色——和玩家一样,AI也需要管理自己的单位、同时针对敌人行动制定各种反制策略。也正是因为任务极为重要,因此,AI设计一直被公认是一项挑战。

全面战争

有人也许会问,为什么本文会关注《全战》系列呢?答案是它很有特点。作为CA社的代表作,它将不同种类的战略游戏模式都融入了同一部作品里面:其中既有回合制的资源管理和战略规划,同时还有大部队的实时战斗——更令人称奇的是,在战斗中,还同时包含了微观和宏观层面的指挥:这里既有AI对小单位的控制,还允许玩家对大部队进行整体的指挥,同时对战场阵型和部署进行管理——这在战略游戏中可谓相当罕见。

《幕府将军》是《全战》系列的第一作

作为系列的第一作,《幕府将军:全面战争》树立了一种风格:它既平衡了拟真性和原创性,还加入了政治和战略因素。至于它为何将背景设定在16世纪的日本战国时期——则受了电影导演黑泽明的影响——尤其是他导演的《影子武士》《七武士》和《乱》,为了致敬这些经典,开发者甚至将一部分画面移植到了游戏的过场动画中。

黑泽明电影《乱》的剧照,这些作品充当了《幕府将军:全面战争》等游戏的灵感之源

在游戏中,玩家和敌方的AI都扮演着当时的“大名”:他们控制着日本境内的不同地区,可以在大地图上采取各种军事和外交行动。而在战斗模式下,玩家又将成为“将军”,并调遣成百上千的部队。另外,就战国时代本身而言,它也非常适合游戏的开发,因为当时的政治和经济都大名们的军事行动关系密切。

另外,《全战》还有许多不同于传统RTS之处,它在微观战斗中取消了诸如“战争迷雾”之类的机制,在资源管理上也被简化到了极点。而在AI方面,由于游戏的性质使然,它们也分成了三个不同的系统:

第一种AI是“战役和外交AI”,它负责处理每个回合的战略决策,比如在地图上调遣军队、从事外交活动(派遣特使或刺客、结盟或缓解对立)、在各地发展农业和建造基础设施等。

另一种AI则是“战术AI”,它决定了战斗单位的编组、行动策略和攻击模式。它们操纵的领域和人类玩家差不多,但它们只会从更宏观层面上对部队的行动进行管理。

最后一种则是每个小型单位自己的AI,它们决定了面对千变万化的战场局势,各个小单位会自己做出怎样的反应。


《幕府将军》的战略地图和战术地图

要全面理解《全战》系列的AI,必须从最底层开始,自下而上对整个系统进行探索——具体而言,就是从单个部队的控制入手,逐渐延伸到能让构成日本地图的战略系统方面。

AI控制下的单位行动

从某种意义上说,军事单位也是《全战》系列的核心:从近战兵,到弓箭手,再到骑兵,根据兵种的不同,它们可以各自编组在一起。游戏中,这些作战单位不仅要保持阵型,而且要到处移动,并作为一个整体单位投入战斗。而对设计者来说,保证这些部队能顺利调动是一项有挑战的任务,特别是它们穿越山脉和森林等各种复杂地形时。

人工神经网络的运作原理

为此,《全面战争》采用了人工神经网络(Artificial Neural Network)来管理游戏中的单位。在AI设计中,为让操控对象迅速做出期望的反应,人工神经网络是一种相当有效的手段。具体来说,在这种系统中,处理数据的是一个个“神经元”——即简单的处理单元,它一方面从外界的来源接收数据,另一方面,这些来源又有着不同的权重。根据数据和权重的不同,它会自动得出最有利的结果,并以此来指引单位的行动。另外,在游戏设计中,开发者可以通过一些手段,让机器自己“学习”,并对相关数据的权重进行调整。一旦人工神经网络掌握了合适的行动方法,他们可以在瞬间做出反应。另外,“训练有素”的神经网络还能学会类比:这意味着,它能根据之前的经验,识别类似的情况,并做出在类似情况下最优的决策。

但另一方面,假如神经网络需要同时完成多个目标,其决策的效果却常常不甚理想,当这些目标存在对立时更是如此。具体到游戏中,其每支部队都有不同的神经网络,不管控制这些单位的是玩家还是更高层级的AI,它们都会根据不同的命令采取不同的行动:如移动、躲避火力,坚守阵地等,但另一方面,在早期的几部作品中,这些网络中的参数都是预先设定好的,并不会随着游戏过程自动调整或优化,所以,指望它随着游戏的进行变得精明,实际上也是不可能的。

战术AI

如前所述,战术AI控制的,实际是每场战斗中与玩家对战的那些敌人。它们需要决定各个单位的阵型和行动。同时,他们还需要把不同的单位组织在一起,以实现特定的战术目标,或是根据现有的地形和天气对其进行调遣。

在战术AI领域, 《幕府将军》采用的是一种逻辑系统。具体而言,在战斗中,AI会根据战场系统提供的数据,做出各种相应决策。而其依据来自中国古代的兵书《孙子兵法》。

《幕府将军》系列的战术地图

这就产生了一个问题,为什么开发者会用中国上古兵书中的原则,来指导《幕府将军》中的AI设计?一方面,这是出于真实性的考虑——在日本战国时代,许多武将在指挥战争时确实会参考这本书;另外,对于游戏本身来说,《孙子兵法》的内容确实有许多具体的指导意义,比如,其中便详细阐释了冷兵器时代、在不同战场条件下、面对各种类型和规模的敌军时,指挥官的应对策略,以及地形、天气和士气对作战的影响等。

下面就是《孙子兵法》中的一些简单例子:

“围师必阙,穷寇勿迫”
“十则围之,五则攻之,倍则分之”

根据《孙子兵法》中的原则,开发者最终设计了三种风格的战术AI,以对应不同性格特点的武将,同时,在这些AI中,他们还嵌入了总共220条规则,它们综合在一起,会导致各种各样的战术决策。在当时的即时战略/战术类游戏中,它可以说是一个创举。

谁能想到,《孙子兵法》充当了《全战》诞生之初的AI行动指导原则呢?

CA社的开发总监麦克·辛普森(Mike Simpson)对此评论说:

“在当时,大多数游戏使用的都是简单的封装行为脚本:举个例子,当你的部队冲向它们时,它们就会自动开火;同时,它们的进攻也缺乏章法,基本上就是一拥而上。这些AI的能力非常有限,更谈不上模拟了真实的战场环境。在这些游戏中,你甚至不用反复战斗,就能掌握击败敌人的办法,这并不是我们想要的,我们理想的游戏必须包含许多真实世界的战术元素,其中敌人会非常狡猾,会随机应变——虽然这让制作变得异常复杂,但无论对我们还是玩家,它都有很大的意义。”

战役AI

作为《幕府将军》中的最高一层AI,战役AI掌管的是战略和外交系统:具体来说,其负责的主要是军队在战略地图上的调动,与其他势力的外交活动,以及境内各种设施的建设等。

为让每个不同的大名进行各种决策,开发者采用了两种AI模式:其中之一被称为“状态机”,另一种被称为“遗传算法”。所谓“状态机”,简单地来说,一旦某些条件满足后,AI便会做出相应的反应,其中既不存在复杂的决策过程,也不会参照之前的决策及其后果,只是对周围发生的事件作出反应。至于“遗传算法”则会对各个AI的行动进行一些因地制宜的调整。

《幕府将军》中的战略地图

所谓“遗传算法”,实际是机器学习的一种形式,对于给定的问题,开发者会设置大量的候选答案,随后,在处理问题的过程中,系统会通过尝试,让这些答案“相互繁殖”——或者说取长补短——最终得出最优的解答结果。在“繁殖”的过程中,由于环境不同、每个AI的具体设置不同,对同一个问题,系统可能会产生截然不同的解答。这导致在游戏中,不同的大名对相同的处境,可能会做出不同的反应,这就赋予了它们截然不同的个性:这也是为什么,在游戏中,有的大名更愿意和其它势力进行和平交涉,而另一些则会倾向于动武。

中世纪:全面战争

在上述三个系统的相互作用下,AI在《全战》中可以同时处理各种复杂的内容:比如让玩家在控制各个小单位的同时,又能让它们合在一起作为整体行动,并顺利穿越各种复杂的地形。而这些在2000年、初代中便已确立的特点,也在系列的后续作品中得到了延续。不过,随着时间流逝,玩家和开发者也发现了许多缺陷,正是因此,在《全面战争》的每部续作中,都会对其进行优化和改良,以求让AI变得更加智慧。

其中的一个代表就是2002年的《中世纪:全面战争》,该作品将目光投向了从8世纪末一直到14世纪的欧洲,玩家可以操纵不同历史时期的各种政治势力。


总的来说,在《中世纪》较《幕府将军》并没有什么重大的创新,其中只有一些优化和改进:其采用了改进的《幕府将军》引擎,并允许玩家进行更大规模的战斗,而在AI方面,情况也是如此。比如,在微观单位领域,经过本作的优化,它们再也不会在狭窄的区域(如桥梁)出现拥堵。另外,战术AI的行动风格从三种增加到了九种,从而极大增加了战斗体验的多样性。按照一些评论家的说法,经过上述改良之后,《中世纪》已“近乎完美”。Rock Paper Shotgun的评论员罗博·扎科尼(Rob Zacny)就曾在2016年写道:

“虽然我不确定,后来是否还有比它更为平衡的《全战》系列游戏。《战国风云(Risk)》式的地图让AI可以轻松地对领土进行管理,同时,每个国家不同的起始状态可以让一些AI在后期建立真正意义上的霸权,并给玩家带来巨大的挑战……总的来说,《中世纪》是一部简洁但无比出色的作品,直到差不多10年后,才有能与之匹敌的《全战》系列游戏出现。”


前文提到的《战国风云(Risk)》是当年一款颇为风靡的老式桌游,它把世界划成了若干地区,每个势力控制并代表一个,其充当了后来许多策略游戏宏观战略地图的雏形

但另一方面,《幕府将军》和《中世纪》只是一个开始,随后《全战》系列的发展之路并不太顺利:后续几部作品中,随着游戏体量扩大,开发者遭遇的挑战也愈发严峻。在随后几年里,CA社对《全面战争》的AI进行了一次重大的重组,至于其灵感来自玩家——确切地说,是各种民间的Mod制作组。

为其充当契机的,则是2004年上市的《罗马:全面战争》,作为系列的第三部,这部作品中采用了3D化的战略地图,上面的兵模也实现了完全3D,至于历史舞台则放在了公元前270年的意大利,当时,罗马正从一个城邦成长为帝国。另外,在《全战》系列的历史上,《罗马》也是一部分水岭式的作品:它让本作从一个相对小众的策略模拟系列,正式变成了一部有惊人影响力的大IP。然而,在游戏中也出现了不少瑕疵——其中最显著的是战役层面,随着外交机制的内容变得更为丰富,挑战也应运而生。具体来说,为了构建帝国,AI更多需要采取深思熟虑的长远行动。但正如面前提到的那样,在《全战》系列中,战役AI实际采用了一种名为“状态机”的决策模式,其着眼点却是当前的环境,而不是长远的利益。这导致了许多或匪夷所思和背离历史的决定。


尽管问题众多,但瑕不掩瑜,《罗马》仍然拥有大量粉丝群体。同时,这个系列对Mod的设计也非常友好:在早期版本中,游戏的架构和数据都是开源的,因此,玩家很容易借助工具进行修改,以满足自己的需要。在众多Mod中,许多不仅改善了图像和操纵,还增加了许多新内容,甚至是构建了一个全新的世界:“罗马崛起(Roman Surrectum)”和“罗马:全面真实(Rome:Total Realism)”等就是其中的代表。

《罗马:全面战争》采用了3D化的宏观战略地图

另外,还有一些mod引入了其他题材,比如说战锤系列和托尔金神话。不过,其中令人印象最深刻的当属尼克·托马迪斯(Nick Thomadis)开发的DarthMod,这一模组中不仅丰富了游戏的内容和玩法,还调整了影响战术和战役AI的各种参数——对资深玩家来说,这可谓是一种福音:这些导致了许多新的战斗阵型和编组,同时AI的表现也更为积极和灵活。

作为《罗马:全战》做好的mod,DarthMod对原作的机制和内容进行了极大丰富

在《罗马:全战》发布后,CA社又趁热打铁推出了《中世纪2:全面战争》,从本质上说,它是利用《罗马》的引擎对《中世纪:全战》进行了一次复刻和改造。毫不奇怪,AI在其中问题依旧,虽然各种mod弥补了其中的一些缺陷,但它仍然提醒了CA社:《全战》系列的AI需要重建。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引