英雄无敌3的AI进步、不足及改良构思

  从英雄无敌2开始就成为了它的铁杆玩家,不过当时就对电脑的AI抱怨不停,如果在impossible级别里电脑和玩家的开始情况完全一样的话,电脑铁定会输。我一直都有这么一个观点:英雄无敌2的AI完全是靠初期的资源优势砸出来的。这种AI和程咬金的三板斧没两样,只要能顶住电脑的头两、三波攻击,实在不行就让城给它,然后趁它傻乎乎的分兵的之际铲除,幸好过了没多久,英雄无敌3就出来了。

  刚开始玩的时候,我还想看看在2代中的漏洞能不能继续派上用场,结果发现电脑的AI有所长进,至少不会傻乎乎的分兵了。但是还是有臭虫,常常发现电脑的主力英雄转到我的家门口,它的兵力不足以和我抗衡,但是它就是死皮赖脸不肯走。既然如此,我正好集中力量各个击破,顺便还能捞到不少的经验值和不错的宝物。

  还有就是守城的时候castle的威力实在是惊人,只要电脑的部队比我强一些(大概是这个比例:电脑.Total HP>=2*玩家TotalHP),就不管自己部队的兵种是否适合攻城,一头就往我的箭塔下面钻,结果自然是给我射得人仰马翻(我曾经在一场战役中单凭箭塔就搞定了1800多的独角兽,所以记忆深刻,尤其是独角给我射的那个惨样)。

  就凭这两点,我在和电脑对战依然能够保持常胜的局面。时不时的还能拿个49x分。就在我自我感觉相当良好的时候进入了联盟……在联盟里打了一段时间,发现了自己和电脑对战时不曾注意的不少细节都成为了影响胜负的关键。其中,分兵和布阵给我留下了无法磨灭的印象。(现在攻城的时候做梦都希望我的部队数能够没有限制,7个空位太少了,能不能多给我几个,要不然我的可爱的弓箭手……至于布阵,当然是自己动手,电脑帮我布的阵完全是糟踏我有限的资源;而原来相当喜欢的quick combat,现在真恨不得把它从系统菜单中屏蔽掉,常常在联盟对战中听到类似的惨叫声:杀千刀的qc,我的兵,5555……开个玩笑,这段话和本文的主题没有直接关联,幸好我没有拿它去投稿)

  不管怎么说,英雄无敌3的AI和2代相比,整体水平要高出一筹,但是可能由于其中的变化太大,导致部分的2代铁杆玩家无法接受。不过,我觉得并不能说3代的AI就到达极限,趋于完美了。

  就我看来,3代AI的缺陷和电脑的人工智能中的最难于突破的障碍是完全相同的,那就是:电脑只会按照我们设定好的程序来运作,遇到我们在程序中没有考虑到的情况时,它仍然只会按照固有的程序计算,得出结果,然后执行。

  人脑也不是万能的,人脑常常会忘记某些重要的事情,但是人脑有一个目前的电脑所没有功能,那就是从错误中吸取经验,然后找到更好的方法来避免类似的错误。

  现在让我们回到英雄无敌3,在这个回合制策略游戏中有两个关键,战略和战术。战略就是指英雄在地图的行动路线(等同于三国游戏中的军事)和自己的城堡建设(等同于三国游戏中的经济);战术则是指在英雄率领部队和敌人交战时的指挥。

  战略中的AI中最重要的一点就是要能够把握全局。预测敌人的行动路线,敌人兵力的分布状况,敌人的经济生产能力,还有魔法这个不确定因素的影响程度,联盟中的杀场老将对此都有相当深刻的认识,互联网上的对决往往就是6分的战略+4分的运气。在这一点上,电脑做得还远远不够:

  电脑的经济建设完全是同一个模式,它完全不理会玩家的战略是速攻还是持久战,每次都采取一样的建筑步骤。如果在中小地图上,玩家的战术水平比较高,而且对布阵(这里所说的布阵不单单指技能,还包括在战场上通过对部队的调度而生成的阵势)有一定的钻研,2周内抢到电脑的主城是很容易的。

  在军事调度方面,经我实例分析,估计它采取的算法先搜索出局部最优点,然后加上一些条件来校正。这种算法最明显的漏洞有两处:我在前面提到的赖在我家门口不走是其一;其二为:我故意把城让出来,主力就在旁边守着,电脑看到有城占,但是实力比我的主力弱一点,它就先占了城,然后从城里撤出来,以为这样就不能被我抓住,但是我的目的呢,是集中力量各个击破,结果就可想而知。产生这个漏洞的根源就在于电脑对玩家的战略根本没有进行深入的解析。不过要实现这一点,即预测玩家的下一步行动是相当的困难(要是我能做出来的话,计算机图灵奖非我莫数)。我估计3DO的游戏开发人员也想到了这一点,但是目前的技术无法解决,所以为了提高游戏的耐玩度,就在初期设定了资源的差异和其他的一些细节来尽量消除战略方面的消极影响。看到这里,你可能会对3代的兴趣大减,但是请你再想想,这两种情况也不是那么容易就能让你实现的。这两个地雷要如何才能让电脑趟上呢?这就需要你的卓识远见了,做个笼子让电脑往里面钻的乐趣不会太低吧?

  战术中的AI相对战略来说先进了不少,和2代相比也强了一些,尤其是电脑魔法使用的时机和作用让人相当头痛。但是,在战场上电脑的布阵和移动路线还远远比不上人。例如流星雨在电脑使用布阵的时候是最有力的杀伤武器;而火墙在对付电脑地面部队的时候简直是战无不胜,luna带上一个妖精就可以满地图到处转。不过在和人对战的时候这些招数就都拍不上如此大的用场了,这两点可以说是战术AI上的两大漏洞。还有一点,在攻击目标的选择上电脑的算法还不够精细。电脑的部队经常会集中逼向我方在战场下方放置的数量为1的单个兵。是不是觉得电脑的战术AI也不过如此呢?没有办法,程序就是这样设定的,电脑只不过是按照程序画瓢罢了,其根本原因就是我在前面提到过的人工智能中的最难于突破的障碍,即没有自我完善、自我学习的功能。

  幸好这只是一个游戏,其中的很多因素都可以用比较精确的数值来定量(现实世界中要做到这一点是相当困难,不确定因素太多而且不可能对其进行精确定量分析),所以目前我们可以为战术的AI增加一个类似于学习系统的功能。

  我是这样构思的……

  上面提到过这种回合制游戏的两个制胜因素:战略和战术。战略是从宏观方面进行分析,战术则是对细节的把握,为此我设定的这套智能学习系统也分为两部分,战略的学习和战术的学习。

  为了形象的说明智能学习系统是什么东西。我做一个简单的比方。以下象棋为例:下象棋首先要知道规则,但是知道了规则并不等于能下好棋。因为根据规则可以产生近乎无数的走法,而每种走法都有其优劣性,得针对具体的情况选择出最有利的走法。那么如何针对当前的情况选出最好的走法呢?经验在这里至关重要,而经验是在实战中不断的摸索出来的。前面我提到的智能学习系统,就是让电脑能自己根据实战,积累经验,然后在后面的实战中,根据各种情况,运用前面的经验,制定出最有效的对策,在实战中加以检验,依次循环……经过这样的训练后,电脑的AI将会得到长足的进步。

  战略的智能学习有地图魔法的使用,行军路线的选择,城堡建设的选择,兵力的调度,技能学习的选择等等,战术的智能学习有战斗魔法的选择,攻击对象的选择,战斗部队的分配等等。战略的智能学习我还没想清楚,下面我把目前我想到的战术的智能学习和编程原理列出来:

  战术的智能学习:

  一、战斗魔法的选择:魔法门英雄无敌中魔法的作用在战斗中是相当关键的。针对当前情况选择最有效的战斗魔法,是制胜的重要因素。3代的电脑AI在这方面做得比较完善,不过仍然有其盲点——不知道对手学会的的战斗魔法!!!可能有人会怀疑这一点的重要性,那么请看这种情况:会布阵技能的电脑总是在布阵的时候把大部分部队集中在一个很小的区域,而有经验的玩家就不会这么布阵,因为如果对手有流星雨、火球、发狂这类魔法,布这种阵无异自掘坟墓。我还假设一种情况:如果交战的双方英雄都会专家土和专家气,而且双方都会加速和减速魔法,那么最先动的一家是选择全加速魔法还是全减速魔法呢?我想毫无疑问是全减速。水云原来的文章中也讲到过,必杀的魔法千万不要在无关输赢的战斗中暴露出来。由此可见,在进行这类的魔法选择中,知道对手的魔法和技能是很重要的。那么现在的问题是:如何让电脑在战斗中记录下对手的魔法和技能。在算法上可以这样设定,为每个敌方英雄建立一个资料库,资料库包括英雄的各项数值、技能、魔法,通过vision魔法可以得到各项数值,技能和魔法则在与之的战斗和对敌方领土、城堡的征服中逐步填入,例如,敌方的某个英雄在战斗中使用的大加速魔法,那么该英雄的技能这一栏中加入专家气,魔法栏中加入加速;如果占领了敌方的一座建有魔法塔的城堡,则在敌方的所有英雄的魔法栏中加入该城魔法塔的全部(因为魔法的重要性,所以宁可错杀三千,不可漏过一人)魔法,在敌人领土内地图上的小魔法塔里记录的魔法也要填上。根据这样的档案,在战斗中制定阵型、施展魔法,将会大大提高游戏的难度。

  二、攻击对象的选择

  上文提到过分兵骗反击,还有前几天箭塔的伤害一文都是这种情况,那么该如何避免出现这种空子给玩家钻呢?通过对英雄4的消息的分析,我发现英雄无敌的开发人员有心解决这种问题,就是改用了这样的设定:攻击和反击是同时进行的(如远程对远程,肉搏战)。这样的设定使得战斗更加真实,战斗中的兵力损失更大,直接的后果就是快攻将会越来越难,从而保障了电脑在初期不会被玩家用闪电战KO。不过我个人认为,他们这样的设定是不治本的,因为玩家采用分兵骗攻击的主要目的是:浪费电脑的大量伤害点数,从而减少战斗消耗的兵力。这样看来,4代中分兵的打法将会成为最常用到的战术。要解决这个问题,战术的智能学习有很大的发掘空间。当然,要让战术的智能学习在这里发挥作用,还需要给电脑一个自主分兵的权限(3代电脑的分兵是根据你的兵力来自动分配的,完全没有考虑到玩家的分队情况)。因为我对战斗的细节不是很注意,这里的具体的算法我不好说。不过相信以我们战队的成员的战斗经验,找出一套可行的算法是没问题的。

  ……

  后记:近期对于英雄无敌4的文章多了起来,还有一些喜欢游戏开发的人也活跃了起来,于是趁这个机会把前期的设想整理出来,希望诸位有志游戏开发的人能仔细研究一下智能学习系统的开发。当今的电脑游戏出得很多,但是垃圾不少,其中很大的一部分原因就是AI不行。如果电脑游戏的AI开发在中国有长足的进步,最起码我们的玩家能够为自己开发的的游戏自豪一阵子。我有这样的一个假想:以后的战略对战游戏很可能是由玩家根据自己的经验、爱好培养出来的,具有自我分析能力的电脑之间进行,对微操作要求极高的战略游戏将会退出舞台,智力的比拼将真正成为战略游戏的乐趣。


本站内容为署名作者原创,未标注作者的为版主原创。转载请务必注明来源于英雄世界,并注明作者。