人工智能



人工智能简称AI是指用计算机来模拟人思维和行动应用计算机或家庭游戏机游戏中就会使玩家感到他所面对敌人是同现实中样拥有智能当然这也是游戏编程中极具挑战性问题的因此本章内容仅仅是针对AI并不涉及设计章中所提到其他问题
把AI单独设为个理由就是应该对单人游戏引起足够重视随着多人游戏
不断发展许多玩家担心制作者把大量时间财力和精力花费在如何协调游戏对多人游戏
对多个人支持问题上而不是去尽力提高游戏AI但是如果游戏中人工智能是可以预料或者做团糟那么多数玩家宁愿在网上和真人对站了游戏关键就是要既能多人对战又具有真实AI这样才能引起那些不能上网或更愿意独自战斗玩家兴趣
接下来是些AI方面专家他们都在区别方面有所研究在他们指导下本章将讨论各种类型AI以及游戏设计者应该如何逐步解决这个问题

9.1 Firaxis Games公司 Brian Reynolds

Brian Reynolds 是 Sid Meier高徒直致力于PC上热门策略游戏开发例如Colonization 和 Civilization2现在他在Firaxis Games公司任软件Software开发部副经理Reynolds最新成果是Firaxis Games公司Alpha Centauri第“和通常观点截然相反要为电脑游戏做AI并不需要具有魔法”Reynold这样说道“你不需要有新奇算法不需要有网上那些最新资料你需要只是点创造力和恒久毅力”接下来将讲述他最喜欢些窍门技巧和经验


9.1.1 不断重复设计过程

在游戏AI设计中首先要用到“交互设计过程”种惯用方式开始你设计例如让你游戏中敌人部队可以移动尽管这样使用算法也许会很简单然后开始玩这个游戏让它和你AI进行对抗由此观察它动作直到他做了些蠢事(开始时应该用不了多长时间)接着就考虑以下问题:a.电脑做了什么蠢事------不如说让坦克慢慢穿过森林或者只建造炮兵其他什么都不做;b.如果是你会怎样做(让坦克沿着公路走;建造个完整军队包括步兵炮兵装甲兵以及空军);c.是什么样信息使(或帮助)你做这样决定(进入公路费用最小;你已经有了个炮兵部队但是没有步兵)的后返回去重新设计算法来组合这些数据
现在再次开始你游戏观察其AI;直到他做了其他蠢事然后重复这个过程不断重复再重复这样这个游戏AI就会变得越来越好“AI就是通过纠正不断学习这是可怜人名言在你不断玩游戏和修改它过程中AI实际上是在积累经验以便在游戏中表现越来越好
为了介绍说明他观点Reynolds向我们讲述了他件轶事那时他还是个年轻正在设计他个游戏(Colonization)他回忆道:
次开始面临制作AI时我有点害怕意思是这个游戏你会玩知道如何移动部队但是AI不知道怎样去做我应该从哪里开始呢?我还记得Sid Meier建议我:我先教它如何玩个回合开始然后教它如何玩两个小时再后来就该考虑教它如何玩10个回合了

(图9.1 Reynolds说开始玩你游戏并观察AI当它做了什么蠢事时候记下来你想让它怎样做然后回去修改算法根据需要不断重复这个过程)

9.1.2 从简单开始

从构造些简单模块开始例如策略游戏中个非常有用算法是告诉个部队怎样从A点到B点这叫做找路或过路算法过去算法是个非常适合于作为开始工作所要做只是教个部队从这里到那里以后再考虑怎样决定目真实位置我并不是说写个出色移动算法是很简单只是说它是个非常适合开始时做个简单却也有足够难度这样使你以自己方式来做以后那些更复杂工作旦你完成过去算法你便可以做另用以决定部队应该移动到场景什么地方但不必担心他们将怎样到达那里
注释:找路指个或几个部队从A点移动到B点应该走哪条路径才能到达那里像我们曾经注意到那样在较老些即时战略游戏中部队有时会堵在某些地方而有时他们会选了条较长或不合逻辑路才到达目

9.1.3 加倍或减半某些值

当刚开始做游戏时我还从Sid Meier那里学到了另个精巧窍门技巧(就像我们所有窍门技巧它既适合游戏设计也适合AI)它是这样:如果你有个值或效果需要调整那么就将其加倍就减半吧举个例子来说比如你认为坦克建造费用太便宜了就将这个费用加倍不要把费用从10加到11然后使自己陷入根本无法辨别前后两者区别苦恼中从中解放出来吧把它加到20虽然这看起来有些荒谬但是游戏中就这样做这种思路方法会让你对效果变化有非常清晰感受同时也显示出坦克费用变贵时游戏变化如果这时坦克费用显得太贵了就把它调整到15如果你认为电脑AI建造了太多步兵部队时就把它建造能力减半我记得我对某些东西不多次数做了加倍和减半本来认为这样变化过大了但是当再次加倍或减半后我竟然得到了我想要效果所有这切又次归功于使用了上面所讲交互过程
Reynolds以个简单建议来结束这次讲解:“试着运行游戏看它如何运转修改再重复这个过程


9.2 Ensemble Studios公司Mario Grimani

在去Ensemble Studios公司的前Mario Grimani曾在Dominion第7版:Storm Over Gt3中做某些方面工作现在他即将推出Age of Empires 2:The Age of Kings常任AI专家个AI专家来说最重要是什么呢?Grimani作了回答:

◆ 永远要记住在做AI时工作量并不总是直接和用户所感受到成比例
◆ 用重复过程来完善AI先实现个大致可以运行系统测试它改进它做最差方面
◆ 使设计具有灵活性如果你想不断完善正在为游戏所做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年冬天即将发行版本做准备



9.3 CyberLe Technology公司Toby Simpson

Toby Simpson是CyberLe Technology创意主管负责所有Creatures游戏设计CyberLe Technology总部在英国剑桥作为1号主角2号主角以及3号主角制作人他做过各种各样AI动物系列整个重点就在于如何支持并教导这些虚拟宠物直想弄清楚动物中那些可爱小精灵为什么如此逼真以至于每个都有着区别个性具有如常人般感情和要求?下面就是Simpson为这本书所写有关人工智能方面些观点在文中他详细讨论了成功地为无精神物体赋予生命 4个原则:

最重要点是要突破那种把“AI规则化”思维框架以黑箱式操作来实现AI是非常肤浅同时也充满了矛盾和在娱乐产品中要建立起合适系统就必须以套全新方式来解决这种问题无论如何为了把这套思想精炼成为可以记住思路方法建议如下:

9.3.1 建模而不是仿效

建模和仿效是两种模拟方式但却是对解决同问题两种截然区别方式仿效是试图使其看起来非常想另种事物而建模则是试图使其就是那种事物个模型能够抓住个系统内在基本结构和运转机制建模和仿效最终目是相同但建模有其独特优势:

◆ 在仿效系统中智能和自动化几乎没有任何区别也就是说系统中参数和所表现出来行为的间没有任何逻辑关系
◆ 模型提供了“命令随意性”它并不是个系统抽象表示;例如模型系统构造是基于内部而仿效系统构造则是基于内部因此它永远都不可能是个很真实模拟方式
◆ 模型是可变其组件是可交换并且它们均能被打碎而用种新方式进行重组这在仿效系统中是不可能实现

9.3.2 构思结构而不是行为

尝试着不用自上而下方式来看待问题把你希望出现行为放在结构上所允许地方这样即使你不是完全理解系统何如工作也能完成它功能!当你把计算机看作个机械容器而不是数据处理机时你就已向正确方向迈出了坚实现在很多人从开始就在构造基于“自动管理”游戏引擎(显然管理这个词现在常被滥用)-------种面向对象设计思路方法延伸------因此他们把重心从代码转移到数据上人们普遍认识到要建立个供娱乐复杂虚拟世界不改变制作思路方法实际上是不可能

9.3.3 大自然会给你极大帮助

到现在为止我们这个星球上拥有最惊人计算能力莫过于人脑人脑能用套独无 2思路方法解决问题还能归纳和直接从正反两类行为区别中进行学习这是从来没有在计算机中出现过而且经过研究人脑是非常简单有具有100,000种遗传因子十万亿个基本细胞组成我们了解这些细胞但却无法了解为什么他们按照某种方式安排后就能让我们成为有感觉有思维十万亿个简单细胞协同合作就产生了知觉这种大规模复杂组合是前所未有但是却没有个具体细胞负责这种组织活动这不是“有主导统”单从这里我们就有太多东西可以学习!试想个如果我们能建造座桥或个坦克模型那我们就能为生物上些模块建造模型接着用这些模块就可以制作出真正人工生物你想要制作虚拟世界中近乎真实人工角色为生物过程和结构建模也许是能够达到那种复杂程度途径了我没有对我们大自然母亲37亿年历史进行过研究手头也没有个精妙可以去再造个大自然使它像我们已有这个

9.3.4 研究并使自己专业化

没有专业软件Software开发实战经验你是不可能开发出专业游戏!如果你工程因某些问题而停下来大多数时候你是更本找不到种简洁或最佳思路方法来解决它定要专业!如果你还没有个QMS(质量管理系统)就自己定义把计划模块测试效果设计和规范标准文档全包含在内坚持工作不要设法去抄近路要知道那些跳过问题会经常回到你面前
还有很多有关Toby Simpson和他们正在制作计算机生物和AI方面资料因此记得定要来访问下面站点:www.cyberle.co.uk www.creatures.co.uk www.creatures2.com
www.cyberbiology.org

9.4 EA Sports公司Scott Orr

作为EA Sports公司制作主管Scott Orr不仅协助Madden足球系列产品在8年前举成功而且参和了其他著名EA Sports产品开发例如NHL HockeyAndretti RacingNASCAR RacingNCAA College FootballMarch Madness和Knockout Kings在准备本章过程中Orr名字无数次被当作“AI首席专家”代名词

9.4.1 真实感

“首先要记住AI需要是真实感”Orr提醒道
我这样说是玩家在游戏中动都希望尽可能贴近现实生活这也是为什么EA Sports游戏玩家不管是智能速度还是投掷追捕能力都有区别级别供选择我们也愿意和职业选手或教练合作正是这些伙伴给了我们真实感觉我无法记住有多少次John Madden来查看我们游戏制作情况然后认真地走到白板前画图来告诉我们实际运动中是什么样子
就是这种丝不苟精神使EA Sports游戏在独树相信Orr吧如果个人没有钱没有得到像John Madden那些建议没有现在这些职业运动员怎会做出如此真实体育游戏呢?他接下来两个观点并不涉及任何专业技术

9.4.2 真实和娱乐

“另个你必须记住是要在游戏娱乐性和真实感中找到个平衡点”Orr说道随着计算机AI飞速发展实际上我们已经能够使计算机是无敌当然这样就使游戏极具挑战性却失去了娱乐性我们也因此失去用户很多设计者使用些欺骗窍门技巧使计算机更具有竞争力他们能知道玩家如何移动从而使计算机玩家可以比人移动得更快而EA Sports游戏则永远不会用那种手段来达到目

9.4.3 简化AI编程

最后还有就是从代码方面来看当你设计计算机AI应该保证其简洁性Orr告诫我们:“你用计算越多那么处理器压力就会越大”究竟游戏会受到什么影响呢?
这会降低游戏中帧频率从而累及整个游戏吸引力要使用索引表来管理数据以便加快游戏速度最终你会发觉游戏更具活力而且AI也更加完善了
体育游戏AI编起来会比其他游戏更困难吗?Orr是这样回答“从AI角度来看体育游戏比其他游戏更难却也更简单”原因如下:



我们设计游戏时是基于已知规则和已有队员行为因此从某些方面来说更容易去确定我们需要做样子但从另方面来说用户都很了解真实活动他们期望当然很高这就使得在设计AI工作方式时比其他游戏更难你不可能无法让游戏正常运转而干脆把计算机玩家行为简单化只要“真实”比赛有就必须在游戏中出现否则玩家们会感到比赛总是缺了点什么当我们使用更快处理器时AI能力会得到提高相对和仅仅5年前水平来说不论是在游戏调度上还是在和队员默契合作上现在计算机玩家所能做到都是十分惊人如果我们有更好硬件设计和更多有关游戏制作经验制作AI就会更好

我们提醒Orr ,这本书针对那些刚出道游戏设计者他们也许想用共软件Software自由软件Software甚至是零售不知名软件Software来编AI当问及如何用C来设计AI时Orr给我们些建议:

我所说就是通过实战来进行完善尝试区别思路方法并不断测试最后你会找到种比你刚开始时做要好得多方式开发个常用通过这个库(希望这些是高效而又简洁)能够更快地完成以往那些工作同时如果要保证帧速率和游戏速度不要忘记使用索引表其好处是能大大减少运算量

9.5 Marc Aubanel

Marc Aubanel也在EA Sports公司工作它具有着最佳销售业绩国际足球游戏FIFA系列产品制作者(包括World Cup)
Aubanel认为在团体体育游戏中AI方面是非常容易使用骗术这个要同时间控制很多队员(个足球场上有22名球员)“人类有着和生俱来直觉使他们知道该做什么” Aubanel说道“计算机却无论如何也不会有这样直觉你只能教它如何去模拟” Aubanel认为给棒球游戏编写AI是所有体育游戏中最难:

首先用户总是下意识地对球员当时应做行为有个预想如果AI所作和预想区别那么AI就会被认为是最失败例如球被球员打向左外野外场手旦得球后必须做出区别决定该如何处理这个球呢?打向本垒? 2垒? 3垒?还是更本不抛出去了呢?其次编程时就需要做出各种区别决定很多原因都要考虑进来像垒上有多少人多少人出局了等等

“而足球” Aubanel说道“所有过程空间切行为都是为了唯目标”虽然他坚持认为编制足球AI同样也有很多困难但是足球游戏智能通常会比棒球游戏更容易模拟在谈到FIFA系列中AI能力时例如在FIFA99中Aubanel说调试过程中种方式就是让球员对着守门员射门然后统计有哪些该守住球却射进球门有哪些该射进球却守住了
(空气注:我思路是这样可以换个角度考虑根据守门员具体能力和当时比赛状况让其做个扑救行为利用这个生成扑救行为具体参数和来球做个物理接触生成结果也可根据大量实验生成组经验数据用以实际模拟这减少了处理器运算量也增加了可行性这个模型应该是更为合理)经过仔细考虑就能确定出更真实折衷方案把足球队员放在场上相应位置并不难但难是让他们知道为什么在那个位置(空气注:球员职责------AI决定进攻时该干什么防守时该干什么有球时该干什么无球该干什么位处球前方该干什么位处球后方该干什么等等------系列行为整理总结系列表)什么时候坚守这个位置什么应该用什么战术通俗点说就是让球员们有种位置感(空气注:位置à研究à行为)

当场上出现了红牌时会有队员被罚下场这时AI个挑战就是让球员来弥补这个损失“他们必须响应地调整自己位置来补上这个空缺” Aubanel说
编写AI最好思路方法是在个测试环境下按下面原则来作:

当我们制作FIFAAI时没有任何图象或音效我们希望只用个平坦绿茵场使我们专心于数据测试这样才会没有其他干扰然后我们将各种颜色箭头和线段从队员引出来以便介绍说明他们AI行为------如传球跑动等等------切调试都是可行如果我们不这样做那么AI中只有编程人员才能知道这种做法使得设计队伍中每个人都能发现了解任何可能出现问题在这个环境中我们能够不断调整大量调试

“不要把真实感和娱乐性搞混了” Aubanel告诫我们

最好AI看起来极其真实但这其实不是真实它是游戏我们不得不破坏物理现实中许多规律而不是遵守这些规律举个例子吧个真实球员要跑过整个球场至少需要18秒而在FIFA中却只需要半时间18对于个游戏来说实在是太长了

9.6 Monolith Produtions公司Jay Wilson

作为Blood and Blood:Plasma Pak设计负责人和Blood2:The Chosen工程领导人Jay Wilson坚信AI是3D动作游戏设计中最重要领域的
他认为在游戏产业中AI已经有长足进步在这方面有很多优秀作品如Half-LeUnreal和Star Craft但他也同意本章前面所说观点并不是每个人都喜欢联网游戏他用他父亲作为例子他父亲玩游戏只是为了放松而不是为了竞争(这种竞争在多人游戏中是常见)
Wilson说道如果为第人称视角游戏制作AI游戏中角色不必和现实中定要是个多人死亡竞赛中对手Wilson是这样解释:

现在射手具有很强AI但行为却像个完美神而不是真正当然做到这点并不会太难但是当我玩这类游戏时我更希望面对AI行为就像是个人所做会跑向遮挡物躲闪会把武器掉在地上射击时没有打中目标等等
Jay Wilson将成为Blood2第个正版项目主管游戏将在1999年晚些时候发行

参考:万维网上冲浪者们定不要忘记访问这个计算机游戏人工智能站点:
www.cris/~swoodcoc/ai.html(空气注:这个链接现在似乎连不上了)游戏AI网页中有很多最新和经典PC游戏讨论还有大量链接可以直接带你到因特网上相关领域去

Tags: 

延伸阅读

最新评论

发表评论