zoukankan      html  css  js  c++  java
  • 《AI for Game Developers》第一章 游戏人工智能的介绍 (skiplow翻译)

                                                                                         第一章      游戏人工智能的介绍

         广义的来说,大部分游戏都包含了一些AI的运用。例如,开发者多年来都运用AI给游戏中无数的角色赋予生命力,从街机游戏Pac Man(吃豆先生)中的幽灵到第一人称设计游戏中的机器人,还有很多其他游戏。各种各样的游戏种类和游戏角色对什么是游戏AI给出了一个相当宽广的解释。而AI也在其他传统的科学领域得到广泛运用。

        有的开发者认为路径搜索是游戏AI的一部分。Steven Woodcock在他的”2003 Game Developer's Conference AI Roundtable Moderator's Report。”报告中说到有些开发者认为碰撞检测也是游戏AI的一部分。毫无疑问,广义上来说游戏AI无处不在。我们将要去继续解释什么是游戏AI,其中包括从简单的追逐与躲避在内的一切运动模式,还有神经网络,遗传学算法等。游戏AI可能最适合在weak AI的范围内(见下面注释“Defining AI”)。然而,从某种意义上来说,你能够想象到游戏AI应用领域的广阔程度。

        在游戏中,我们并不是总对给NPC赋予人类的智慧感兴趣。也许我们正在为控制像龙,机器人甚至老鼠等NPC编写代码,但是谁规定了我们必须赋予NPC智慧?不赋予一些NPC智慧将丰富游戏的内容。虽然游戏AI经常被呼吁解决相当复杂的问题,我们可以采用AI去赋予NPC不同的性格,以及描述各种不同的情绪,例如,害怕,激动等。

    AI的定义

      我们很难回答什么是人工智能。如果你去字典中查找人工智能这个词汇你可能得到这样的解释:“一种电脑或者其他机器能够去像有生命的物体完成行动的能力”。这个是美国传统英语第四版的解释。然而其他的版本把人工智能解释为创造有生命的机器的过程或者学科。

      从另一个角度看,AI被认为是被创造出来的机器所具有的智能行为或者是控制其智能行为的人造大脑。但这种解释是不完全的。对某些人来说,研究人工智能的目的不是为了创造出智能机器而是为了对人类智慧的本质进行更深入的了解。当然其他一些人研究人工智能就是为了创造出能展示一些有限的智力形式的机器。

      这就引出了一个问题:“什么是智慧?”,对有些人来说人工智能的试金石是看他有多接近于人类的智慧。其他人则认为在此基础上我们必须要创造出有智慧的机器。有人说需要加入道德和情绪等因素才能体现人类的智慧,而其他人则表示光有根据人们提供的解决问题的方法去解决问题的能力是不够的,正真的智能还需要有学习和适应能力。

      能满足以上所有需求的AI被称为一个健壮的AI,而弱AI则涉及更广的应用及技术,它是为了赋予机器智能的属性,游戏AI是属于弱AI的范畴。

        我们的本质内容是为了说明游戏AI的定义是非常广泛和灵活的,凡是能够产生适当水平的智能从而让游戏更加逼真,有挑战性,最重要的是使游戏变得更加有趣的东西都可以被当做为游戏AI。就像物理学在游戏中的运用,好的AI是游戏变得更加逼真,更加接近现实。

    1.1定性与非定性AI

        游戏AI技术通常有两种风格:定性和非定性的。

        定性:定性的行为表现是具有指定和可预见性的。没有任何的不确定性。一个简单的追逐算法就是一个定性行为的例子。你可以在代码中设定NPC将要移动到的位置,然后NPC会在坐标上移动,直到人物的X和Y坐标与目标位置的X,Y坐标相同。

        非定性:非定性的行为正好与定性行为相反。这些行为具有一定程度的不确定和不可预知性(不确定性的程度取决于你是用的AI方法和这些方法的执行情况)。NPC去学习并适应玩家的策略就是一个非定型行为的例子。这种机器学习方法可以使用神经网络算法,贝叶斯算法或者遗传学算法完成。

        定性的AI技术是游戏AI的基础。这些技术具有可预见,快速,易于实现、理解、测试和调试等特性。虽然这种技术已经很成熟,开发者还是需要编写数量非常巨大的情节脚本以及各种行为。此外,定性方法是不便于学习和发展的。玩家在玩过一段时间后可以很容易找到游戏的规律,从而影响了游戏的可玩性。

        非定性的方法让游戏的不可预测性和不确定性大大增加。另外游戏开发者不用把所有可能的情况全部用明确的编码去实现。非定性方法可以自己去学习和推理,能够自行生产处理突发状况的即时行为,或者自行产生没有明确被指令指示的行为。本书所涉及的神经网络算法就是一个即时行为的最好的例子。

        开发者一直对采用非定性AI持谨慎的态度,而如今这种情况正在发生改变。非定型AI所产生的不确定性是难以测试和调试的-----你不能确定玩家的各种各样的操作会不会让游戏产生愚蠢的行为,因为各种行为是不可预见的。如今游戏开发的周期越来越短,让游戏开发和测试者去指定出判断开发测试是否完成的标准是非常困难的。如此短的开发周期使得开发者没办法去全面的了解AI技术和认清AI对一个市场巨大的商业游戏的影响。

        至少直到最近,另一项限制游戏AI发展的因素是,开发者把过多的注意力放在了图像质量上。事实证明,我们不应该仅仅专注于开发包括硬件加速在内的更好更快的图像技术,还应把一部分精力放在发展更好更先进的人工智能技术。事实上,随着生产下一代可玩性更高的游戏的压力不断增加,越来越多的开发者开始去探索很研究非定性技术。在以后的章节我们还将讨论这个问题。

          1.2现有的游戏AI技术

        也许使用最广泛的游戏AI就是欺骗了。比如在一个战争策略型游戏中,电脑控制的军队不用放出侦查兵等东西就能够知道其对手也就是玩家操纵的军队的位置、数量、兵种等一系列的信息。这种形式的欺骗是非常常见的,这样有助于电脑智能的与玩家进行对抗。然而如果让玩家察觉到电脑的欺骗行为,这种欺骗将会让玩家失去对游戏的兴趣。此外,不遵守平衡原则的欺骗将赋予电脑过多的能力,以至于玩家无法战胜电脑。这种欺骗让玩家觉得他的所有努力都是徒劳,这必将让玩家失去对游戏的兴趣。欺骗必须要是平衡的,给玩家制造足够的挑战,让游戏保持趣味性。

        当然,欺骗不是唯一行之有效的人工智能技术。优先状态机也是一种无处不在的游戏AI技术。我们将在第九章对其进行详细的讲述,但其基本的思想是枚举一系列可控制游戏角色的动作或状态,然后使用if-then条件语句来对这些状态进行转变。

        开发者通常使用模糊状态机以减小结果动作的可预见性,并减少枚举大量if-then规则的负担。你不用去定义一个精确的规则,比如在距离=10,健康度=100的情况时然后才进行攻击,模糊状态机将允许你制定一个具有不精确的条件的规则,例如你只需规定在接近并且健康的情况下然后进行攻击,而到底多接近,健康度是多少这些可以不用精确的定义。我们将在第十章对模糊状态机进行更多的讲述。

        在各种各样的游戏中,高效的寻路是NPC要完成的一个基础的任务。在一个战争策略游戏中,一个NPC单位需要完成越过地形和躲避障碍物去接近敌人的行为。在一个第一人称射击类游戏中,被射击的生物,需要穿越地牢或建筑以完成接近或逃离玩家控制的人物的行为。这种脚本情节是非常大量的,这难怪AI开发者对寻路算法给予了极大的关注。在第六章我们将涉及一般的寻路算法,在第七章我们将接受及负盛名的A*算法。

        这仅仅是游戏AI技术的一小部分,其他技术还包括插入脚本,规则系统还有一些智能生命技术(A-life),举几个例子,A-life技术常见于机器人应用领域,并且在视频游戏领域也取得了极大的成功。基本上A-life系统就是一个综合模拟人行为的系统。这些行为是综合了一些低级算法而得出的。我们将在本书中看到A-life技术的例子,当然还有其他很多的技术本书也有涉及。

    1.3游戏AI的未来

        游戏AI的下一个大事情就是学习。我们不能让NPC仅仅完成已经设定好的行为,在游戏的进行中,NPC还需去学习、发展和适应。玩家很难预测NPC的行为,这样才能延长游戏的寿命。这是这种不可预知性,让游戏AI开发者在学习过程中对它又爱又怕。

        早先我们已经题到了非定性AI技术。由于这种不定性,使得学习这种AI技术需要更长的时间来开发和测试。此为,这也增加了真正理解AI在游戏中做了什么的难度,这让调试变的更加苦难。这些因素都是AI技术广泛运用的严重阻碍。但这一切都在变化。

        几款主流游戏,像Creatures, Black & White, Battlecruiser 3000AD, Dirt Track Racing, Fields of Battle, and Heavy Gear,都使用了不定性AI方法。他们的成功激起了人们学习AI的热潮,人们开始对决策树、神经网络、遗传算法、以及概率统计的方法产生兴趣。

        这些成功的游戏结合了不定性方法与传统定性算法,并在最适合的地方使用他们来解决问题。神经网络不是灵丹妙药,不是对所有情况都适合,但如果你在一个混合的AI系统适当的地方使用它将会得到非常惊人的效果。这是我提倡的使用这些非定性方法的用法。这样,你至少可以在你的AI系统中分离出那些非定性的方法因为他们是不可预测而且难于测试或者调试的,然后确保你AI系统其余大部分可以用传统的方法开发。

        在这本书中,我们既需要解释传统的游戏AI,也会介绍较新和最新的AI技术。我们将带你深入的去探索游戏AI。我们希望你去了解最新的技术从而让你在未来的游戏AI发展中占得先机。

    //---------------------------------------这个中文版网上没找到 所以就决定自己翻译 初学者翻译的不好请见谅----------------------------------------

  • 相关阅读:
    前端学HTTP之重定向和负载均衡
    前端学HTTP之Web主机托管
    前端学HTTP之内容协商
    前端学HTTP之字符集
    前端学HTTP之实体和编码
    前端学HTTP之安全HTTP
    前端学HTTP之摘要认证
    前端学HTTP之基本认证
    前端学HTTP之客户端识别和cookie
    前端学HTTP之网关、隧道和中继
  • 原文地址:https://www.cnblogs.com/skiplow/p/2010946.html
Copyright © 2011-2022 走看看