既然要回顾Paradox社的游戏,那么就再来修订一篇老文。这是一篇关于游戏中的人工智能(自动战斗)的讨论。
所谓的AI,指的就是人工智能。人工智能这个东西,对一般大众来说,感想大概是类似终结者这样的:
对科技新闻比较敏感的一般大众,对人工智能的感想则是“AI刚刚下赢了李世石”这样的:
但对游戏玩家来说,AI的印象却不是这么高大上的,而是……
没错,就是“自动战斗”和“妈的智障”的混合体,偶尔混进“妈的作弊”作为调剂。每个用自动战斗打过电脑,或者利用电脑策略BUG调戏过AI的游戏玩家,大概都会对现阶段的游戏AI充满了怨念:作为自己人的时候太蠢,而作为敌人的时候漏洞又太多。绝大多数情况下,游戏里的AI托管,只是游戏过程太过无聊,玩家懒得自己手动操作的替代品。
而我这次要讲的钢铁雄心3,就是一个将几乎全部的游戏性都寄托在了AI上的战略游戏。它发售于2009年,我赶在今年这个系列的四代发售之前,将三代的文章搬运过来供各位读者知晓这个系列的设计方向。
和P社其他游戏一样,这个游戏确实BUG无数(当前版本已经好了很多),也有着难以数清的设计细节缺失和欠考虑的处理失误,更有大量的程序失误和不足,但它的设计思路还是很有可观之处的。
还是先来简单的游戏介绍。钢铁雄心3这个游戏,音译是哈特矮人3(Hearts of Iron 3),意译是小胡子养成计划3,偶尔你还能看到其他的一些译名,以下我们会统一简称为“HOI”。是个以模拟第二次世界大战全景(1936-1948)作为目标的历史战略游戏。它在P社四萌之中占据很重要的位置,或许也是P社四萌中中国玩家玩的最多的一个游戏(原因你懂的)。
在这里我就不赘述“P社四萌”是什么了:不知道的读者,请自行去翻找旗舰的P社游戏设计笔记的“群星”和“维多利亚”,里面对四萌,或者说五萌有全面的介绍。
群星(Stellaris)(上):为什么文明类游戏这么好玩?
群星(Stellaris)(下):当文明遇到历史的逻辑
历史的逻辑:这些战略游戏里,有历史书上没教的东西
如果夸张一点说,我们甚至可以说P社四萌是迄今为止唯一一个试图做出“宏观战略感”的游戏系列。而在这四萌中,HOI系列则担负着在“战术指挥”方面做出设计突破的责任。HOI初代成功导入了整个二战的历史和数据,HOI2代提供了强力的事件系统让玩家们编写了无数的MOD重现了各种各样的历史,而到了三代——
他们终于写了一些代码,让军队可以在明确的目标下去自行战斗了!
如果你玩过其他的P社游戏,就会知道这其中的巨大区别:在大多数P社历史战略游戏中,我们是要拖着部队进行战斗的;而在HOI3中,所有的部队都可以丢给AI去指挥。对没有玩过其他P社游戏的玩家,这么描述或许很难理解,我会尝试换一种说法。
以前的HOI系列的游戏过程是这样的:比如我选择苏联开始游戏,我的游戏目标是“攻克柏林结束战争”。为了达成这个目标,我需要在漫长的战线上点击并手动调遣每一个师、生产这些部队所需要的武器、调集所需要的海军和空军给他们提供支援,然后从库尔斯克开始逐寸逐寸地夺回土地,消灭敌人的武装力量。每天都有新的战斗在发生,每小时都会有新的战报传来(游戏里每小时是一个行动阶段),作为指挥官的玩家都要从早到晚地暂停游戏,以便拖动结束了攻击的部队继续发动攻击,追击正前方溃退的敌军达成突破,或者把溃败了的部队拖回后方整补。这些麻烦事情曾经让我屡次放弃重玩的打算——大规模战斗实在是太烦人了。
而在三代里呢?现在玩家只需要把几百个师编组成一个“红军总参谋部”,然后在下面编制上“白俄罗斯方面军”、“乌克兰方面军”之类的部队,再给他们指定一个最终作战目标——比如说“柏林”,一个作战方针——比如说“闪击”,接着这整个军团就会自动开始作战!
是的,这就够了。从部队移动、进攻到补给、修整,这个集团军群都会按照自己的AI自动去完成。虽然效率不是很高,AI也有很多漏洞,但HOI3的这个设计思路确实在试图把人从枯燥乏味的补战线漏洞的行动中解脱出来,值得赞赏——事实上整个游戏进行的流程也因此流畅了很多。同样,所有战略层面的AI也可以选择性托管,包括外交、内政、生产、谍报、科研在内的各个分项都可以选择交给AI进行托管。
——没错,用网络游戏的术语来说,这几乎就是我们俗称的“外挂”了。不用操作,自动进行,只有在出错时偶尔来用一些操作进行调整。作为头绪繁杂的战略游戏来说,我个人认为这是个相当不错的方向,比模拟并要求操作一切(那些不操作就不会动或者动得很差即时战略游戏)或者完全不能操作一切(比如孢子什么的)的做法来得有趣。
但这里仍然有一个问题,再明显不过而且很难解决的问题。这个问题就是:自动委托的AI怎么可能比人脑高明?这怎么可能变得好玩呢?
直觉的答案,当然是改善AI,让AI变得好玩……但这其实是一个空中楼阁的说法。
改善AI永远是最难的,AI永远不知道自己会有些什么漏洞。和绝大多数有AI的战略游戏一样,钢铁雄心系列以及其兄弟系列们的历史,就是聪明的玩家钻AI漏洞的历史。
用飞机+伞兵占领胜利点,用部队诱骗舰队不足的电脑国家离开驻防地,利用海战AI的漏洞偷渡,这些手段被狡猾的玩家们玩得炉火纯青。这一切也理所当然地在HOI3里面重演着,这么一个庞大的系统,不可能没有漏洞;牵涉到海空的复杂计算,则会让漏洞成倍增长。
HOI3的设计师当然明白这一点,他们最终采用的对策思路虽然不成熟,但仍然值得其他游戏设计师借鉴:设计人员的思路在最终的版本中显得相当清晰,虽然细节执行得并不足够好。
第一条思路是“如果AI不能改善,那就让这件事情的规则复杂化,直到人脑不乐意进行全面的计算为止”。如果AI算不太好的部分,干脆让人也算不太好不就好了吗?如果能让复杂度增加到一般人的表现还不如AI就更好了。
所以,在HOI3里面,设计人员把地面行省的数量增加了4倍,让整个突破的过程变得漫长了许多。他们还增加了战斗宽度(Combat Width)的概念,一个省同时能展开的部队数量是有限的,这是用来阻止玩家最喜欢的优势兵力集中突破。堆叠惩罚就更狠一点,一旦部队投入过多战斗力就下降的这个设计不光针对地面部队,还威逼着玩家要把空军部队也分开,否则就要面临惊人的惩罚。至于指挥链,就是个更赤裸裸地和玩家计算能力作对的设计了;如果不是补给系统的实现算法实在太糟糕拖了后腿,这个设计本来应该能像一代战棋名作东线战役(War In Russia)里面的指挥链一样令人激动。
这条思路上的最终设计目标应当是,在玩家所消耗的时间和取得的成效之间达成一个巧妙的平衡,让玩家清楚应该把哪些权限和不必要的操作释放给AI。确实,AI的战斗行动经常很愚蠢,它们的进攻行动也很慢,但多数玩家最终都会做出明智的选择:把非主攻方向完全交给AI的步兵师进行渗透,而将珍贵的精锐部队控制在自己手里进行突破。当然,这个设计在目前的版本中还远远不完善,有大量的部队不得不全部被控制在玩家的手中,但我乐观地估计,经过几个版本和玩家自制MOD的优化之后,HOI3应当能够取得一个较为合理的平衡。
第二条思路是“如果AI不能改善,那就让设计内容简单化,直到AI在这件事情上不会再出错为止”,强行把人脑降低到和电脑一个水平。
典型的设计犹如HOI中的贸易系统,在所有的收支都统一到了金钱后,他们终于写出了一个简单而有效的算法,可以确保AI能够用手里的资源交换回足够的资源,以确保所有的工厂都能正常开工。再比如说空军,他们把空军的任务分解到和飞机种类一一对应之后,空军AI看起来也正常得多了,各个机种各司其职。归根结底,玩家最害怕的其实是“AI做蠢事”;如果一个AI所对应的设计内容简单到AI几乎不会做蠢事,那玩家会非常心安理得地将这些内容委托给AI。
但如果做不到,这条思路却会产生很糟的结果,比如游戏里面的海军。海军各个舰种的角色混杂,所需要执行的任务也非常多样,试图简单化的努力让海军AI的表现显得非常糟糕。如果你委任了一整支海军,登陆部队会不带任何护航舰队就进行登陆尝试,潜艇和驱逐舰会在不需要巡逻和破交的海域进行行动,珍贵的由航母和战列舰组成的主力舰队却会因为不知道敌方主力舰队的所在而呆在母港里面趴窝。类似的问题还有战区增援需求和AI托管生产,这两块内容的简化也显得非常愚蠢,完全不需要的运输机会得到惊人数量的请求而被大量制造,真正急需的补给部队反而无法得到生产优先权。
内容简单化是个比较有风险的设计决策,你必须确认“AI确实不会干蠢事”才好把这些内容彻底托管给它们。而且,如果整个游戏都采用内容简单化的方针,你就必须要想到这样一个问题:这么弱智的游戏还好玩吗?是不是只有弱智玩家才会觉得它好玩?
第三条思路是“如果没有把握让AI掌管全局,那就把AI控制的部分拆散,让玩家自行决定哪些部分是不必要的。”
这方面他们设计的时候已经考虑到了,但似乎考虑的程度还不够。整个游戏拆散成了六块,军事、外交、内政、生产、谍报、科研,如果玩家不想操作哪个部分,就可以交给AI托管;如果觉得不放心,就可以拿回来手动管理。
但是,这看起来恐怕还不够。如果要AI可玩,可能会需要更细致的分散托管。游戏中的每个模块,分明都可以分解成更小的模块进行AI设计。举例来说,在生产里面,运输船和IC调配都明显可以写出十分实际可用不会犯错的AI,但生产流水线部分就难多了,这几部分明显应该让玩家来选择将哪些内容交给AI。谍报也有相同的问题,间谍派遣的优先度和实际执行的任务也是两个独立的模块,应该分开。任何可以拆开的AI模块,都应该拆散开来,让玩家自己来评判代码的水准。让玩家最大限度地持有对AI的控制权,反而能带来一种“用委任战胜了系统”的特殊游戏体验。
当然,如果把以上这些设计思路逆向解读,对游戏设计师同样也是很有用的。
如果系统能够被宏或者外挂的自动程序打败,通常这证明这个系统太过简单。信任玩家大脑的智力或许会是更好的选择。但反过来说……如果你预期你玩家的大脑其实并没有什么智力的话,这种设计似乎也……
如果系统能够被宏或者外挂的自动程序取代,通常这证明这个系统太过单调。如果发生了这种情况,那为什么不索性直接把这个单调的部分拜托给系统内的AI呢?在这个部分交给AI之后,你又该给玩家设计一些什么样的系统作为替代呢?
如果系统因为过于庞大而真的潜藏着太多的风险,那为什么不索性将可以委任的部分拆开,然后让玩家自行去选择他需要把那些部分的内容“自动化”呢?
现在是一个计算能力已经能够负担得起相当程度AI代码的时代了。
作为游戏设计师,我们应当思考并研究,究竟哪些不必要的操作和关注是我们可以从玩家手里解放的,又有哪些崭新的体验是我们可以在玩家解放之后交给他们的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。