第10章 人工智能与游戏
目录 10.1 人工智能与游戏的基础知识 10.2 追踪和躲避算法 10.3 寻径算法
Page 2
10.1 人工智能与游戏的基础10.1.1 人工智能的概念 人工智能的研究是为了构建能像人类一样思考的计算机。更确切的定义是,AI 是一种在计算机中模拟人类思维过程的技术。AI是一个非常广泛的研究领域, 而和游戏相关的AI只是整个AI知识域中一个相对较小的子集。 人类思维并不是一个容易模拟的过程,这也就说明了为什么AI是如此之宽广的 一个研究领域。虽然有很多不同的AI方法,但是它们都是在计算机处理能力范 围内模拟出人类的决策能力。大多数传统的AI系统使用各种基于信息的算法来 进行决策,就像人类使用各种事先经验和心智规则来做出决定一样。 在过去,基于信息的算法具有完全确定性,于是每个决策都可以沿着一个可预 言的逻辑流程倒推回去。现在,很多AI研究者意识到AI的确定性过程还不足以 对人类思维精确建模,AI的研究热点从确定性AI模型转移到更加现实的、尝试 考虑人类思维的微妙复杂性的AI模型,例如“最佳猜测”决策。就人类的思维 而言,除了完整的逻辑决策过程外,这种类型的猜测还可能结合过去的经验、 个人偏好以及当前的情绪状态来得出。Page 3
10.1 人工智能与游戏的基础10.1.2 游戏人工智能的类型(1)漫游AI 漫游AI确定一个游戏对象如何在一个虚拟的游戏世界中漫游,它是一种对游
戏中NPC进行运动建模的AI系统。在这种AI系统中,NPC自己做出决定,确定它们如何在一个虚拟世界中漫游。典型的漫游AI例子有:在一些RPG游戏中, 怪兽追着玩家角色运动;在飞行游戏中,漫游AI也用来实现按照预先定义的方
式飞行的NPC战机,并适时躲避游戏玩家发射的子弹。基本上,对于计算机控制的游戏角色,不论它必须做出决定改变当前路径,还是要在游戏中实现需要 的结果,或者只是简单地遵守某种特定的移动方式,都可以使用漫游AI。实现 漫游AI通常都比较简单,一般根据一个游戏角色的位置,改变另一个游戏角色 的速度或位置。游戏角色的漫游移动也可以由随机的或预先定义的方式影响。Page 4
10.1 人工智能与游戏的基础10.1.2 游戏人工智能的类型(2)行为AI 行为AI用于确定追踪在一个游戏玩家控制的角色后面的那些游戏对象的行为, 这种追踪行为其实是一种AI系统,称为行为AI。行为AI常混合使用几种漫游AI 算法来赋予游戏角色特定的AI行为。如果希望NPC有时候跟踪、有时候躲避、 有时候遵从一种运动方式,甚至完全随机移动,那么可以考虑使用行为AI。而 行为AI的另外一
个作用就是可以改变游戏的难度。例如,可以设计一种行为AI 模式,让NPC按照一定的时间比例采取跟踪、躲避和随机移动三种移动模式组 合而成的行为AI。如果希望在不同的关卡中设置游戏的不同难度,低难度关卡 可以设置为20%的时间跟踪玩家角色,20%的时间躲避玩家角色,60%的时间 随机移动;高难度关卡可以设置为,40%的时间跟踪玩家角色,20%的时间躲 避玩家角色,40%的时间随机移动。 (3)策略AI 在一个策略游戏中,策略AI从一组固定的实现定义的漫游规则中确定最佳的 移动。Page 5
10.2 追踪和躲避算法追踪和躲避的问题在游戏开发中是随处可见的,无论开发的是什么类型的游 戏,是第一人称射击游戏,或者是实时战略游戏,还是角色扮演游戏,游戏中的 各种NPC角色都会追踪或躲避玩家角色。在第一人称射击游戏中,敌对方的NPC 需要追踪玩家角色并向玩家角色射击;当玩家角色向NPC射击的时候,它必须躲 避玩家角色的射击。在实时战略游戏中,NPC所控制的部队时刻都在追踪玩家角 色的部队和基地,并向玩家角色发起攻击;当玩家角色开始反击时,NPC又要开 始躲避攻击,而游戏的进程也是在这种不断的追踪、躲避过程中推进的。总之,
在任何一个种类的游戏中,都会看到NPC在进行追踪和躲避运动。
Page 6
10.2 追踪和躲避算法追踪和躲避其实是一个两步的决策判断问题:首先根据一种行为模式决定 NPC采取追踪行为还是采取躲避行为,其次是开始追踪或者逃跑。很多开发者认 为追踪与躲避问题还包括另外的一层含义:即避开NPC运动路径上的障碍物。
实现追踪和躲避算法的最简单、最直观的想法是根据玩家角色的位置信息, 改变NPC的位置。在游戏循环的每帧中,缩小NPC与玩家角色在游戏世界中坐标 的距离,可以使得NPC更接近玩家,实现追踪效果;在游戏循环的每帧中,增大
NPC与玩家角色在游戏世界中坐标的距离,可以实现躲避与逃跑。而所谓的增大NPC与玩家角色的距离,可以简单地理解为:通过算法分别增大NPC位置坐标与 玩家角色位置坐标各个对应分量差值的绝对值。一般而言,二维游戏中坐标值由 (X,Y)两个分量表示,三维游戏的坐标值由(X,Y,Z)三个分量表示。
Page 7
10.2 追踪和躲避算法10.2.1 基本的追踪和躲避追踪算法的本质,就是根据玩家角色的位置信息,改变NPC的位置,减小 NPC与玩家角色在游戏世界中坐标的距离。 【例10.1】 基本追踪算法。 //xNPC与yNPC分别代表NPC的两个坐标分量 //xPlayer与yPlayer分别代表玩家角色的两个坐标分量 if (xNPC > xPlayer) { xNPC--; } else if (xNPC < xPlayer) { xNPC++; } i …… 此处隐藏:2701字,全部文档内容请下载后查看。喜欢就下载吧 ……