人工游戏机游戏中,就会使玩家感到
他所面对的敌人是同现实中一样拥有智能的。当然,这也是游戏编程中极具挑战性的问题之一。因此,本章内容仅
仅是针对AI的,并不涉及程序设计一章中的所提到的其他问题。
把AI单独设为一章的另一个理由就是应该对单人游戏引起足够的重视。随着多人游戏的不断发展,许多玩家担
心制作者把大量的时间,财力和精力花费在如何协调游戏对多人游戏对多个人的支持的问题上,而不是去尽力的提
高游戏的AI。但是如果游戏中的人工智能是可以预料的,或者做的一团糟的话,那么多数玩家宁愿在网上与真人对
站了。游戏的关键就是要既能多人对战,又具有真实的AI,这样才能引起那些不能上网或更愿意独自战斗的玩家的
兴趣。接下来是一些AI方面的专家,他们都在不同的方面有所研究,在他们的指导下,本章将讨论各种类型的AI以
及游戏设计者应该如何逐步解决这个问题。
1、Firaxis Games公司的 Brian Reynolds
Brian Reynolds是Sid Meier的高徒,他一直致力于PC上的热门策略游戏的开发,例如Colonization和 Civili
zation2。现在,他在Firaxis Games公司任软件开发部的副经理。Reynolds的最新成果是Firaxis Games公司的Alp
ha Centauri第一版。“与通常的观点截然相反,要为电脑游戏做AI并不需要具有魔法,”Reynold这样说道,“你
不需要有新奇的算法,不需要有网上的那些最新资料。你需要的只是一点创造力和恒久的毅力。”接下来将讲述他
最喜欢的一些技巧与经验。
1.1 不断重复的设计过程
在游戏AI的设计中,首先要用到“交互设计过程”,以一种惯用的方式开始你的程序设计,例如让你的游戏中
敌人的部队可以移动,尽管这样使用的算法也许会很简单。然后开始玩这个游戏,让它和你的AI进行对抗,由此观
察它的动作。直到他做了一些蠢事(开始时应该用不了多长时间),接着就考虑以下问题:
1、电脑做了什么蠢事------不如说,让坦克慢慢的穿过森林,或者只建造炮兵,其他什么都不做
2、如果是你的话,会怎样做(让坦克沿着公路走;建造一个完整的军队,包括步兵,炮兵,以及空军)
3、是什么样的信息使(或帮助)你做这样的决定的(进入公路费用最小;你已经有了一个炮兵部队, 但是没
有步兵)。之后返回去重新设计算法来组合这些数据
现在,再次开始你的游戏,观察其AI;直到他做了其他的蠢事,然后重复这个过程。不断的重复,再重复,这
样这个游戏的AI就会变得越来越好的。“AI就是通过纠正错误不断学习的”,这是可怜人的名言。在你不断玩游戏
和修改它的过程中,AI实际上是在积累经验以便在游戏中表现的越来越好。
为了说明他的观点,Reynolds向我们讲述了他的一件轶事。那时他还是一个年轻的程序员,正在设计他的第一
个游戏(Colonization)。他回忆道:第一次开始面临制作AI时,我有一点害怕。我的意思是,我的这个游戏,你
会玩,知道如何移动部队, 但是AI不知道怎样去做。我应该从哪里开始呢?我还记得Sid Meier建议我:我先教它
如何玩一个回合开始。然后教它如何玩两个小时,再后来就该考虑教它如何玩10个回合了。
1.2 从简单的开始
从构造一些简单的模块开始。例如,策略游戏中一个非常有用的算法是告诉一个部队怎样从A点到B点,这叫做
找路或过路算法。过去算法是一个非常适合于作为开始的工作,所要做的只是教一个部队从这里到那里,以后再考
虑怎样决定目的地的真实位置。我并不是说写一个出色的移动算法是很简单的,只是说它是一个非常适合开始时做
的一个简单的却也有足够难度的程序,这样使你以自己的方式来做以后那些更复杂的工作。一旦你完成过去算法的
程序,你便可以做另一段程序了,用以决定部队应该移动到场景的什么地方,但不必担心他们将怎样到达那里。
1.3 加倍或减半某些值
当刚开始做游戏时我还从Sid Meier那里学到了另一个精巧的技巧(就像我们所有的技巧一样, 它既适合游戏
设计,也适合AI),它是这样的:如果你有一个值或效果,需要调整,那么就将其加倍就减半吧。举个例子来说,
比如你认为坦克的建造费用太便宜了,就将这个费用加倍。不要把费用从10加到11,然后使自己陷入根本无法辨别
前后两者区别的苦恼中,从中解放出来吧。把它加到20,虽然这看起来有些荒谬,但是游戏中就这样做。这种方法
会让你对效果的变化有非常清晰的感受,同时也显示出坦克费用变贵时游戏的变化。如果这时坦克费用显得太贵了
,就把它调整到15。如果你认为电脑AI建造了太多的步兵部队时,就把它的建造能力减半。我记得我对某些东西不
多的次数做了加倍与减半,本来认为这样的变化过大了,但是当再次加倍或减半后我竟然得到了我想要的效果。所
有这一切又一次归功于使用了上面所讲的交互的过程。
Reynolds以一个简单的建议来结束这次讲解:“试着运行游戏,看它如何运转,修改再重复这个过程。”
2、Ensemble Studios公司的Mario Grimani
在去Ensemble Studios公司之前,Mario Grimani曾在Dominion的第7版:Storm Over Gift3中做某些方面的工
作。现在,他即将推出的Age of Empires 2:The Age of Kings的常任AI专家。对一个AI专家来说,最重要的是什
么呢?Grimani作了回答:
1、永远要记住,在做AI时的工作量并不总是直接和用户所感受到的成比例。
2、用重复的过程来完善AI。先实现一个大致可以运行的系统,测试它,改进它做得最差的方面。
3、使设计具有灵活性。如果你想不断的完善正在为游戏所做的AI,那么你必须能在这个过程中修改它。
Age of EmpiresⅡ:Age of Kings的AI允许通过一种易于使用的外部语言来控制计算机玩家的行为。计算机玩
家能够与人对抗,也能够相互对抗。这样在游戏设计阶段让我么在修改AI的行为上有了更大的灵活性。也使得可以
把AI的特色加入到最新发展阶段中。
Grimani论述了几种不同的AI和在编程中遇到的一些问题:
在游戏术语中,AI大致上是用来描述一类问题很广的解决方法, 这类问题即可以是角色扮演类游戏(RPG)中
去模拟人作为某个角色的行为,也可以是即时战略游戏(RTS)中的找路算法。在RTS类游戏中的主要的AI问题除了
找路,团体AI和计算机对手的AI外,还有部队找路和部队的AI。计算机对手的AI本身也有好几部分:策略AI,战术
AI,建筑布置,危险估计,地形分析等多方面。
一些AI的问题是非常具有挑战性的。任何一个有明确的数学解决的问题,都要比那种仅仅基于概念和抽象的问
题更容易解决。不幸的是,人类的想法更像是去寻找那些能解决基于抽象问题的答案。
Grimani用一个在制作RTS游戏中常见的障碍作为例子:
对于人来说,判断一块地区时候容易防守简直是轻而易举的,对计算机玩家却不是一个小问题。然而计算机玩
家能记住每个独立的部队的踪迹,而且它的统计能力远远高于人类。
那么Grimani是不是认为基于万维网或局域网的游戏的发展会降低人们对更好的AI的需要呢? 他是这样回答的
:“多人游戏正在飞速发展。这是因为现在越来越多的人能够享受到快速的因特网。但是并不意味着多人游戏将会
取代AI。这实际上是两种不同的游戏体验。我个人很喜欢多人游戏,而且已经玩了好几年了。然而,这并没有使我
对单人游戏失去兴趣。”
Grimani和Ensemble Studios公司的其他成员正在为Age of EmpiresⅡ: Age of Kings在2000年冬天即将发行
的版本做准备。