简单说一下现今游戏的AI模式
2005-11-27 04:54 | アドラメレク
本文主要谈一下日式RPG和SLG的AI设定。当然,每种游戏的敌人都有AI设定,只是因为我个人对RPG和SLG稍微熟悉一点,所以就把这个当作切入点,大家看过之后有兴趣的,可以自行研究。大家都知道,游戏中电脑控制的人物行动都有一定的规律,就是脚本。我们可以把脚本当作AI,也可以不当作AI。一般来说AI单元(AI agent)的目的是有理化行动,也就是说去做正确的事。然而,大部分游戏的敌人AI,都不是这么设定的,敌人AI的目的并不是单纯的要杀死玩家(虽然看上去貌似这样才是“有理”)。从这个角度来说,还是称做行动脚本比较恰当。从另一个角度来说,有理化的“理”都是人类设定的,所以把电脑的目的理解为“为玩家服务”,就可以了。现今游戏里电脑AI模式的设定,都是有其道理的,大部分情况下玩家不需要去管电脑的AI设定,而在一些特殊情况下,比如特定的关卡,又比如极限通关,研究电脑的行动脚本就有意义了。这篇文章大致简单介绍一下各类行动脚本的设定,是我按照自己的理解来分类的,也会举一些游戏例子来说明,我的水平有限,出错再所难免,如果发现错误请指出。
目前大部分游戏的AI设置可以分为以下几类:随机,固定模式,简单条件,复杂条件,仇恨度。注意,每种分类都不是单纯的,都只是以这个类别为主。比如随机模式也可能夹杂着一些简单的条件,复杂条件也会有一些随机因素等等。
■随机
常见于一些日式RPG,比如FF1,FF2和沙加系列。特点就是敌人每回合的行动完全随机(学过计算机的可能知道,其实大部分随机并不随机,不过为了方便,这里还是称为随机),发动技能随机,目标随机。既然是随机,就很看运气。虽然看上去这样的设定让敌人变得相当愚蠢,但实际上只要数值设定合理,就能让游戏战斗张弛有度。普通战斗只要调低敌方技能强度,就会降低战斗难度,并且由于随机,战斗变化也较多,不会显得太枯燥。Boss战,或者隐藏超强Boss战,增多敌方招数和强度,并且在里面夹着少数几招不强的,总体实力大大增强,但由于有几招弱招存在,所以玩家还有机会。由于随机,战斗时很需要玩家的随机应变,所以最终战胜Boss时会有不一般的爽快感和成就感。这一点沙加的几作以及FF9打Ozma都做得很好。早期的随机脚本有一种设定方法现在可能已经不用了,比如FF1和FF2的最终Boss,招数非常多,虽然有强招,但弱招更多。一般玩家打到这里的时候,Boss的防御力是相当强的,所以战斗时间也比较长久。这时用随机脚本也有助于战斗的参与感。随机脚本很简单,一般临场战术不多,主要看战前布置以及战斗时的随机应变,所以就脚本本身来说研究价值并不大,不过大家也看到了这样设定脚本的作用。
■固定模式
这在最近的几作FF用得很多,表现就是敌方行动有固定模式,最经典的例子莫过于FF8的Omega和FFX的penance了。比如Omega的行动模式是Lv5 Death->(Meteor、Megido Flame、Gravija、Terra Break、Ultima、Light Pillar),然后一直循环括号内部分。这样的设定也是毫无智慧可言的,看上去很愚蠢,但经过巧妙的设定,也可以避免部分愚蠢的表现,又可以发挥出优点。缺点很明显,就是战斗模式固定化,没有变化,容易枯燥。优点也比较明显,就是针对强敌,可以想出多种应对战术,有利于研究。缺点可以通过调整战斗长度和强度来改善。普通战斗一般长度都比较短,所以就算战斗模式固定,也不会太枯燥。而Boss战,尤其是超强Boss战,比如Omega,由于敌方招数太猛烈,所以玩家会暂时忽略模式的单调,在根据战斗模式想出对策后反而有成就感。这点FF8做得很不错。而同样的固定模式脚本,FFX做得就要差一点了,尤其是打penance。战斗实在是太单一,敌方招数又少,过程又那么长,玩家难免会感到枯燥,也很不利于玩家多次研究和挑战。相对来说训练场的Boss就好一些,普通打可能不会感到。用Anima等召唤兽在人物能力比较弱的情况下打训练场就会有感觉了,研究敌方的行动脚本,提前用Shield防御就是相当有效的办法。
■简单条件
其实这么说不太恰当,这个分类的实际情况是一些条件,一些随机再加一些固定模式的混合。例子也比较多,比如FF7,又比如很多SLG,火焰纹章和前线任务。由于有了条件,再加一些随机,这样的行动脚本就要稍稍显得聪明些和人性化些。在FE和前线任务里,条件很简单,比如玩家单位进入电脑单位的攻击范围内才会进攻,又或者在小范围内会集中攻击某单位等等。正是由于条件很简单,所以电脑仍然显得比较愚蠢,以至于分批解决成了SLG里最简单基本的战术。在大多数情况下,给电脑AI多加一些条件,如全局集中攻击,要让玩家Game Over或者搞死一些玩家单位是很容易的,但实际上制作人并没有这么做。原因很简单,第一,避免玩家过多伤亡,尤其是在不能复活的情况下;第二让玩家有机会体会以弱胜强或者大规模战斗的感觉。顾名思义,要体现大规模战斗最简单的方法就是加大战斗规模,让敌我方出场数量越多越好;但这是不现实的,一是因为机能限制,更重要的是玩家不可能花那么多时间来操纵这些单位,让电脑自动控制也不太可行,这样玩家参与感就弱了。所以就采取了一种折中的方法,控制敌人的AI,让玩家有机会用少数单元去战胜大量敌方单元。更有甚者,前线任务的敌人在很多情况连集中攻击都不会,正因为这点,FM4也被欧美玩家批评AI太低。但实际上正是靠了这样的设定,才让玩家在有限的出场单元里体会到了更大规模的战斗。当然,SLG也不能用太单纯的模式化,因为战斗过程比较长,敌人太弱智就导致玩家没有成就感,所以如何在之中找到一个平衡点,就是这样的大规模SLG需要做的。由于电脑的行动模式还是比较固定化,所以不知道模式可能就很难,知道了模式就很简单,这在FE圣战系谱等游戏里尤为明显。所以一般第一次打是挑战难度,第二次打就可以根据电脑的行动模式固定化来达成某些挑战。
再重复一下,以上3种模式可以说只是简单的脚本,电脑并不是以战胜玩家为目的,而只是在某种程度上满足玩家的潜意识需求。所以在用以上3种AI模式时,重要的是数值设定,关卡设计等等,而不在于AI本身。也就是说,在这些游戏里,不需要高AI,正如在魂斗罗里,敌人不需要会躲玩家的子弹。而接下去2种AI就稍微高级一点了。
■复杂条件
虽然只是在简单条件的基础上的量变,但在实际效果中,已经产生了较大的变化,此时的电脑几乎已经可以把战胜玩家作为目标了。典型的代表游戏是FFT,FFTA,以及Wars系列。你大概会发现,在FFT里,在完全公平的基础上,想要战胜敌方并不是一件简单的事,就更不用说无牺牲战胜电脑了。从某种程度上说,这已经和电脑棋类游戏有点接近了,当然,AI水平和棋类游戏还是有一定距离,主要原因是游戏节奏的限制。在FFT里,电脑单位的行动取决于当前战场的状况。具体比较复杂,有兴趣可以看一下这篇文章:
http://www.ffsky.com/ff/bbsshow.asp?owner=A107&ID=1441319&bbsID=0
其实想一下就会发现,玩家在玩SLG时并没有比这样的电脑AI聪明多少,很多情况下可能还没电脑考虑周全。玩家之所以能战胜电脑一是因为单位本身能力就比电脑强,二是因为玩家会利用一些超强技能或手法而电脑不会。在FFT这样的小规模战斗中把这样较为复杂的AI应用进去就有比较好的效果,不过因为FFT的难度设置有点问题,所以这样的AI模式并没有在FFT里体现得很好,FFTA就好些,但总体还是太简单,但这不是AI的问题,而是数值设置的问题。FFTA本质上和FFT差不多,只是做了些小改动,比如电脑不再会知道玩家防某种异常状态,而是在试过以后记忆住。这样的小改动算是最基本的学习能力,对提高AI并没什么帮助,但会给玩家一种电脑变聪明的感觉。这种AI模式的优点是电脑明显变聪明了,但缺点是不适合大规模运用,战斗规模一大,机能就不够用了。研究这种AI模式的一般要点就是抓住电脑的漏洞,因为电脑无非是通过一定量的条件来判断行动,这些条件又是制作人设计的,所以间接来说是抓住制作人设计的漏洞(也可能是制作人故意留的漏洞)。FFTA的空手接物法就是一个例子,就是利用了电脑最多只能记忆2种状态这个漏洞。更高级一点的方法是,熟练掌握电脑的AI流程后可以比较准确地预测电脑的行动,不过作为一个游戏,绝大部分人没有必要研究到这种地步。
再进一步说,即时战略的电脑,FPS游戏的bot,体育游戏的电脑等等的AI都是由这种AI模式衍生出来的,区别就是电脑AI会考虑更多情况,或者实行一些特定的战术。但从本质上来说,都只是根据当前状况以及预定模式来决定行动,所以对玩家来说,只要稍加练习就能战胜电脑。
■仇恨度
仇恨度系统在MMORPG里很常见,这和以上AI模式的最大区别就是电脑并不只是根据当前状况来决定行动,而是根据之前所有的情况来决定行动,而这就是靠仇恨度这个参数来实现的,由仇恨度来决定敌人的攻击对象。敌人对我方所有人员都会有分别的仇恨度,我方人员的任何行动都会改变这个值。敌人行动时就会选择仇恨度最高的目标来攻击。形象一点说就是谁打得我最厉害,我就打谁;或者谁在那里狂加血,我就打他。仇恨度应该算是现今比较高级而又实用的AI模式了,主要适用于一些非公平环境,比如玩家5个单位打敌人一个Boss。对于公平环境,比如5对5,仇恨度就不适用了。仇恨度系统的最大作用就是让我方产生分工配合,一般简单分为Tank,Damage Dealer和Healer,最简单的战术也就出来了,Tank的任务就是吸收仇恨度,DD伤害,Healer回复。用把仇恨度系统发挥得最出色的FFXI来做比方。FFXI里职业强弱分明,分工明确,敌人比较强。法师仇恨度控制不好马上就会被敌人打死,白魔法师不能过多地用大加血魔法,只能多次用小加血魔法等等。这样,战斗时参与感大大加强。一个FFXI高手必定对仇恨度有着全面的了解,在战斗的每时每刻都对全局每个人的仇恨度分布有着大致的了解。仇恨度目前还只应用于网络游戏中,但我相信在单机游戏里仇恨度也有用武之地,无论是RPG还是SLG。不过仇恨度还是有一些限制的,比如单机游戏很多时候并不需要过强的参与感,因为那样会导致玩家很累;又如应用仇恨度系统的敌人一般招数比较单一,仇恨度只控制了对象而没控制手段。仇恨度并没有提高电脑AI,而是丰富了战斗,所以也属于不以战胜玩家为目的的AI模式。
■电脑AI的将来
可以从上文看出,其实大部分情况并不需要电脑有多高AI,对于RPG和SLG来说,更重要的是敌人、关卡设计以及数值调整。对于SLG来说,在未来的几年中,出现能和玩家匹敌的电脑AI是有可能的,前提是运用模糊搜索。模糊搜索就是搜索出所有对方可以做的行动,然后再通过对这些未发生的行动来分析,选出最好的方案。通俗一点说,就是棋类比赛中的预测步数。但现在计算机的机能有限,用普通电脑或游戏机做一个能战胜一般玩家的象棋游戏,每步的思考时间至少需要5秒,但这对于SLG游戏来说显然太长了。相信在下一次主机革命的时候,思考时间可以缩短到可接受范围(1秒内),那就有希望出现能和人对战的SLG游戏了。不过,虽然理论上有可能,但实际并不一定会出现,因为人和机器对战毕竟不是主流,就算能做出来,很有可能也是吃力不讨好,还不如直接做人与人的对战。这一条同样可以应用到其它需要AI的游戏类型中去,比如FPS,RTS。另外,仇恨度系统可以发展,比如把单一的仇恨度值发展为比较复杂的函数,这样就向学习能力靠拢了,可能会有比较好的效果。
最后,这篇东西就写到这里了,主要简单总结了一下现今几种AI模式,希望对大家了解研究一些游戏有所帮助。
目前大部分游戏的AI设置可以分为以下几类:随机,固定模式,简单条件,复杂条件,仇恨度。注意,每种分类都不是单纯的,都只是以这个类别为主。比如随机模式也可能夹杂着一些简单的条件,复杂条件也会有一些随机因素等等。
■随机
常见于一些日式RPG,比如FF1,FF2和沙加系列。特点就是敌人每回合的行动完全随机(学过计算机的可能知道,其实大部分随机并不随机,不过为了方便,这里还是称为随机),发动技能随机,目标随机。既然是随机,就很看运气。虽然看上去这样的设定让敌人变得相当愚蠢,但实际上只要数值设定合理,就能让游戏战斗张弛有度。普通战斗只要调低敌方技能强度,就会降低战斗难度,并且由于随机,战斗变化也较多,不会显得太枯燥。Boss战,或者隐藏超强Boss战,增多敌方招数和强度,并且在里面夹着少数几招不强的,总体实力大大增强,但由于有几招弱招存在,所以玩家还有机会。由于随机,战斗时很需要玩家的随机应变,所以最终战胜Boss时会有不一般的爽快感和成就感。这一点沙加的几作以及FF9打Ozma都做得很好。早期的随机脚本有一种设定方法现在可能已经不用了,比如FF1和FF2的最终Boss,招数非常多,虽然有强招,但弱招更多。一般玩家打到这里的时候,Boss的防御力是相当强的,所以战斗时间也比较长久。这时用随机脚本也有助于战斗的参与感。随机脚本很简单,一般临场战术不多,主要看战前布置以及战斗时的随机应变,所以就脚本本身来说研究价值并不大,不过大家也看到了这样设定脚本的作用。
■固定模式
这在最近的几作FF用得很多,表现就是敌方行动有固定模式,最经典的例子莫过于FF8的Omega和FFX的penance了。比如Omega的行动模式是Lv5 Death->(Meteor、Megido Flame、Gravija、Terra Break、Ultima、Light Pillar),然后一直循环括号内部分。这样的设定也是毫无智慧可言的,看上去很愚蠢,但经过巧妙的设定,也可以避免部分愚蠢的表现,又可以发挥出优点。缺点很明显,就是战斗模式固定化,没有变化,容易枯燥。优点也比较明显,就是针对强敌,可以想出多种应对战术,有利于研究。缺点可以通过调整战斗长度和强度来改善。普通战斗一般长度都比较短,所以就算战斗模式固定,也不会太枯燥。而Boss战,尤其是超强Boss战,比如Omega,由于敌方招数太猛烈,所以玩家会暂时忽略模式的单调,在根据战斗模式想出对策后反而有成就感。这点FF8做得很不错。而同样的固定模式脚本,FFX做得就要差一点了,尤其是打penance。战斗实在是太单一,敌方招数又少,过程又那么长,玩家难免会感到枯燥,也很不利于玩家多次研究和挑战。相对来说训练场的Boss就好一些,普通打可能不会感到。用Anima等召唤兽在人物能力比较弱的情况下打训练场就会有感觉了,研究敌方的行动脚本,提前用Shield防御就是相当有效的办法。
■简单条件
其实这么说不太恰当,这个分类的实际情况是一些条件,一些随机再加一些固定模式的混合。例子也比较多,比如FF7,又比如很多SLG,火焰纹章和前线任务。由于有了条件,再加一些随机,这样的行动脚本就要稍稍显得聪明些和人性化些。在FE和前线任务里,条件很简单,比如玩家单位进入电脑单位的攻击范围内才会进攻,又或者在小范围内会集中攻击某单位等等。正是由于条件很简单,所以电脑仍然显得比较愚蠢,以至于分批解决成了SLG里最简单基本的战术。在大多数情况下,给电脑AI多加一些条件,如全局集中攻击,要让玩家Game Over或者搞死一些玩家单位是很容易的,但实际上制作人并没有这么做。原因很简单,第一,避免玩家过多伤亡,尤其是在不能复活的情况下;第二让玩家有机会体会以弱胜强或者大规模战斗的感觉。顾名思义,要体现大规模战斗最简单的方法就是加大战斗规模,让敌我方出场数量越多越好;但这是不现实的,一是因为机能限制,更重要的是玩家不可能花那么多时间来操纵这些单位,让电脑自动控制也不太可行,这样玩家参与感就弱了。所以就采取了一种折中的方法,控制敌人的AI,让玩家有机会用少数单元去战胜大量敌方单元。更有甚者,前线任务的敌人在很多情况连集中攻击都不会,正因为这点,FM4也被欧美玩家批评AI太低。但实际上正是靠了这样的设定,才让玩家在有限的出场单元里体会到了更大规模的战斗。当然,SLG也不能用太单纯的模式化,因为战斗过程比较长,敌人太弱智就导致玩家没有成就感,所以如何在之中找到一个平衡点,就是这样的大规模SLG需要做的。由于电脑的行动模式还是比较固定化,所以不知道模式可能就很难,知道了模式就很简单,这在FE圣战系谱等游戏里尤为明显。所以一般第一次打是挑战难度,第二次打就可以根据电脑的行动模式固定化来达成某些挑战。
再重复一下,以上3种模式可以说只是简单的脚本,电脑并不是以战胜玩家为目的,而只是在某种程度上满足玩家的潜意识需求。所以在用以上3种AI模式时,重要的是数值设定,关卡设计等等,而不在于AI本身。也就是说,在这些游戏里,不需要高AI,正如在魂斗罗里,敌人不需要会躲玩家的子弹。而接下去2种AI就稍微高级一点了。
■复杂条件
虽然只是在简单条件的基础上的量变,但在实际效果中,已经产生了较大的变化,此时的电脑几乎已经可以把战胜玩家作为目标了。典型的代表游戏是FFT,FFTA,以及Wars系列。你大概会发现,在FFT里,在完全公平的基础上,想要战胜敌方并不是一件简单的事,就更不用说无牺牲战胜电脑了。从某种程度上说,这已经和电脑棋类游戏有点接近了,当然,AI水平和棋类游戏还是有一定距离,主要原因是游戏节奏的限制。在FFT里,电脑单位的行动取决于当前战场的状况。具体比较复杂,有兴趣可以看一下这篇文章:
http://www.ffsky.com/ff/bbsshow.asp?owner=A107&ID=1441319&bbsID=0
其实想一下就会发现,玩家在玩SLG时并没有比这样的电脑AI聪明多少,很多情况下可能还没电脑考虑周全。玩家之所以能战胜电脑一是因为单位本身能力就比电脑强,二是因为玩家会利用一些超强技能或手法而电脑不会。在FFT这样的小规模战斗中把这样较为复杂的AI应用进去就有比较好的效果,不过因为FFT的难度设置有点问题,所以这样的AI模式并没有在FFT里体现得很好,FFTA就好些,但总体还是太简单,但这不是AI的问题,而是数值设置的问题。FFTA本质上和FFT差不多,只是做了些小改动,比如电脑不再会知道玩家防某种异常状态,而是在试过以后记忆住。这样的小改动算是最基本的学习能力,对提高AI并没什么帮助,但会给玩家一种电脑变聪明的感觉。这种AI模式的优点是电脑明显变聪明了,但缺点是不适合大规模运用,战斗规模一大,机能就不够用了。研究这种AI模式的一般要点就是抓住电脑的漏洞,因为电脑无非是通过一定量的条件来判断行动,这些条件又是制作人设计的,所以间接来说是抓住制作人设计的漏洞(也可能是制作人故意留的漏洞)。FFTA的空手接物法就是一个例子,就是利用了电脑最多只能记忆2种状态这个漏洞。更高级一点的方法是,熟练掌握电脑的AI流程后可以比较准确地预测电脑的行动,不过作为一个游戏,绝大部分人没有必要研究到这种地步。
再进一步说,即时战略的电脑,FPS游戏的bot,体育游戏的电脑等等的AI都是由这种AI模式衍生出来的,区别就是电脑AI会考虑更多情况,或者实行一些特定的战术。但从本质上来说,都只是根据当前状况以及预定模式来决定行动,所以对玩家来说,只要稍加练习就能战胜电脑。
■仇恨度
仇恨度系统在MMORPG里很常见,这和以上AI模式的最大区别就是电脑并不只是根据当前状况来决定行动,而是根据之前所有的情况来决定行动,而这就是靠仇恨度这个参数来实现的,由仇恨度来决定敌人的攻击对象。敌人对我方所有人员都会有分别的仇恨度,我方人员的任何行动都会改变这个值。敌人行动时就会选择仇恨度最高的目标来攻击。形象一点说就是谁打得我最厉害,我就打谁;或者谁在那里狂加血,我就打他。仇恨度应该算是现今比较高级而又实用的AI模式了,主要适用于一些非公平环境,比如玩家5个单位打敌人一个Boss。对于公平环境,比如5对5,仇恨度就不适用了。仇恨度系统的最大作用就是让我方产生分工配合,一般简单分为Tank,Damage Dealer和Healer,最简单的战术也就出来了,Tank的任务就是吸收仇恨度,DD伤害,Healer回复。用把仇恨度系统发挥得最出色的FFXI来做比方。FFXI里职业强弱分明,分工明确,敌人比较强。法师仇恨度控制不好马上就会被敌人打死,白魔法师不能过多地用大加血魔法,只能多次用小加血魔法等等。这样,战斗时参与感大大加强。一个FFXI高手必定对仇恨度有着全面的了解,在战斗的每时每刻都对全局每个人的仇恨度分布有着大致的了解。仇恨度目前还只应用于网络游戏中,但我相信在单机游戏里仇恨度也有用武之地,无论是RPG还是SLG。不过仇恨度还是有一些限制的,比如单机游戏很多时候并不需要过强的参与感,因为那样会导致玩家很累;又如应用仇恨度系统的敌人一般招数比较单一,仇恨度只控制了对象而没控制手段。仇恨度并没有提高电脑AI,而是丰富了战斗,所以也属于不以战胜玩家为目的的AI模式。
■电脑AI的将来
可以从上文看出,其实大部分情况并不需要电脑有多高AI,对于RPG和SLG来说,更重要的是敌人、关卡设计以及数值调整。对于SLG来说,在未来的几年中,出现能和玩家匹敌的电脑AI是有可能的,前提是运用模糊搜索。模糊搜索就是搜索出所有对方可以做的行动,然后再通过对这些未发生的行动来分析,选出最好的方案。通俗一点说,就是棋类比赛中的预测步数。但现在计算机的机能有限,用普通电脑或游戏机做一个能战胜一般玩家的象棋游戏,每步的思考时间至少需要5秒,但这对于SLG游戏来说显然太长了。相信在下一次主机革命的时候,思考时间可以缩短到可接受范围(1秒内),那就有希望出现能和人对战的SLG游戏了。不过,虽然理论上有可能,但实际并不一定会出现,因为人和机器对战毕竟不是主流,就算能做出来,很有可能也是吃力不讨好,还不如直接做人与人的对战。这一条同样可以应用到其它需要AI的游戏类型中去,比如FPS,RTS。另外,仇恨度系统可以发展,比如把单一的仇恨度值发展为比较复杂的函数,这样就向学习能力靠拢了,可能会有比较好的效果。
最后,这篇东西就写到这里了,主要简单总结了一下现今几种AI模式,希望对大家了解研究一些游戏有所帮助。