描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302379737
Unity3D是近年非常流行的一个3D游戏开发引擎,已成为手机游戏开发的主要开发工具之一,也用于计算机虚拟现实领域的模拟飞行、模拟射击、模拟驾驶等技术的开发。手机(或其他平台)的游戏逐渐高档化、复杂化,游戏角色也需要具有更高的“智能”。
本书专门讲解了Unity3D游戏人工智能开发的相关技术。书中精选了游戏AI中*必要、*实用的几项关键技术,用大量Unity3D示例代码、图片,以深入浅出的方式讲解游戏人工智能理论、设计原则和Unity3D编程实现方法。每个程序都有详细的注释并运行测试通过。
希望本书能给具备初步Unity3D游戏开发编程能力的读者在创作“更高智能”游戏角色时提供系统地、快捷地帮助。
本书精选Unity3D游戏开发中*关键、*实用的人工智能技术,用大量案例详细剖析了人工智能理论、设计原则和编程实现的方法。
每个程序都进行详细注释,并运行通过,可以跨版本运行。
写作风格深入浅出,轻松实现从理论到实践的跨越。
主要内容
Unity3D人工智能架构模型
实现AI角色的自主移动──操控行为
寻找*短路径并避开障碍物──A*寻路
AI角色对游戏世界的感知
AI角色的自主决策(有限状态机、行为树)
AI综合示例──第三人称射击游戏
适用读者:
对于Unity3D游戏开发爱好者来说,这是一本非常好的AI入门读物。本书精选游戏AI中的关键技术,始终围绕AI的精髓展开,并用*简单的方式来实现,读者可以通过运行、模仿书中的实例代码来快速实现“更高智能”的AI角色。
对于资深的游戏设计师和游戏程序开发人员而言,本书也很有益处。游戏人工智能程序员必须在有限的计算机硬件资源(CPU速度、内存大小)下工作,本书精选了“操控行为”、“A*寻路”、“有限状态机”、“行为树”等算法的Unity3D实现方法,将使读者对游戏AI的关键领域有更深入的了解,可以深刻地理解代码背后的基本原理、特点及适用范围。
本书可作为数字媒体技术、数字媒体艺术等专业的“游戏人工智能”课程教材,计算机科学与技术、自动化专业本科、研究生的“人工智能”课程的教材与实验参考书。对于游戏开发培训学校的师生来说,本书可作为Unity3D游戏开发的高阶教材。本书重视AI技术的条理性,讲解深入浅出,用实例来讲解深奥的AI理论、设计原则与实现方法,便于组织教学与学生系统学习。
要想开发一款优秀的游戏,人工智能必不可少。本书精选了Unity3D游戏开发中关键、实用的几项人工智能关键技术,以实例的方式由浅入深地讲解了深奥而强大的人工智能技术、设计原则以及编程实现方法,并且对书中的每一个案例都进行了详细注释,所有实例均运行测试通过。掌握了书中的技术,可以使游戏角色具有良好的智能,大大增强游戏的可玩性!
1.1 游戏AI的架构模型
1.1.1 运动层
1.1.2 决策层
1.1.3 战略层
1.1.4 AI架构模型的其他部分
1.2 FPS/TPS游戏中的AI解析
1.2.1 FPS/TPS中的运动层
1.2.2 FPS/TPS中的决策层
1.2.3 FPS/TPS中的战略层
1.2.4 FPS/TPS中AI架构模型的支撑部分
第2章 实现AI角色的自主移动——操控行为
2.1 Unity3D操控行为编程的主要基类
2.1.1 将AI角色抽象成一个质点——Vehicle类
2.1.2 控制AI角色移动——AILocomotion类
2.1.3 各种操控行为的基类——Steering类
2.2 个体AI角色的操控行为
2.2.1 靠近
2.2.2 离开
2.2.3 抵达
2.2.4 追逐
2.2.5 逃避
2.2.6 随机徘徊
2.2.7 路径跟随
2.2.8 避开障碍
2.3 群体的操控行为
2.3.1 组行为
2.3.2 检测附近的AI角色
2.3.3 与群中邻居保持适当距离——分离
2.3.4 与群中邻居朝向一致——队列
2.3.5 成群聚集在一起——聚集
2.4 个体与群体的操控行为组合
2.5 几种操控行为的编程解析
2.5.1 模拟鸟群飞行
2.5.2 多AI角色障碍赛
2.5.3 实现动物迁徙中的跟随领队行为
2.5.4 排队通过狭窄通道
2.6 操控行为的快速实现——使用Unity3D开源库UnitySteer
2.7 操控行为编程的其他问题
第3章 寻找短路径并避开障碍物——A*寻路
3.1 实现A*寻路的3种工作方式
3.1.1 基本术语
3.1.2 方式1:创建基于单元的导航图
3.1.3 方式2:创建可视点导航图
3.1.4 方式3:创建导航网格
3.2 A*寻路算法是如何工作的
3.2.1 A*寻路算法的伪代码
3.2.2 用一个实例来完全理解A*寻路算法
3.3 用A*算法实现战术寻路
3.4 A* Pathfinding Project插件的使用
3.4.1 基本的点到点寻路
3.4.2 寻找近的多个道具(血包、武器、药等)
3.4.3 战术寻路——避开火力范围
3.4.4 在复杂地形中寻路——多层建筑物中的跨层寻路
3.4.5 RTS中的小队寻路——用操控行为和A*寻路实现
3.4.6 使用A* Pathfinding Project插件需要注意的问题
3.5 A*寻路的适用性
第4章 AI角色对游戏世界的感知
4.1 AI角色对环境信息的感知方式
4.1.1 轮询方式
4.1.2 事件驱动方式
4.1.3 触发器
4.2 常用感知类型的实现
4.2.1 所有触发器的基类——Trigger类
4.2.2 所有感知器的基类——Sensor类
4.2.3 事件管理器
4.2.4 视觉感知
4.2.5 听觉感知
4.2.6 触觉感知
4.2.7 记忆感知
4.2.8 其他类型的感知——血包、宝物等物品的感知
4.3 AI士兵的综合感知示例
4.3.1 游戏场景设置
4.3.2 创建AI士兵角色
4.3.3 创建玩家角色
4.3.4 显示视觉范围、听觉范围和记忆信息
4.3.5 游戏运行结果
第5章 AI角色自主决策——有限状态机
5.1 有限状态机的FSM图
5.1.1 《Pac-Man(吃豆人)》游戏中红幽灵的FSM图
5.1.2 《QuakeⅡ(雷神2)》中Monster怪兽的有限状态机
5.2 方法1:用Switch语句实现有限状态机
5.2.1 游戏场景设置
5.2.2 创建子弹预置体
5.2.3 创建敌人AI角色
5.2.4 创建玩家角色及运行程序
5.3 方法2:用FSM框架实现通用的有限状态机
5.3.1 FSM框架
5.3.2 FSMState类——AI状态的基类
5.3.3 AdvancedFSM类——管理所有的状态类
5.3.4 PatrolState类——AI角色的巡逻状态
5.3.5 ChaseState类——AI角色的追逐状态
5.3.6 AttackState类——AI角色的攻击状态
5.3.7 DeadState类——AI角色的死亡状态
5.3.8 AIController类——创建有限状态机,控制AI角色的行为
5.3.9 游戏场景设置
第6章 AI角色的复杂决策——行为树
6.1 行为树技术原理
6.1.1 行为树基本术语
6.1.2 行为树中的叶节点
6.1.3 行为树中的组合节点
6.1.4 子树的复用
6.1.5 使用行为树与有限状态机的权衡
6.1.6 行为树执行时的协同(Coroutine)
6.2 行为树设计示例
6.2.1 示例1:有限状态机/行为树的转换
6.2.2 示例2:带随机节点的战斗AI角色行为树
6.2.3 示例3:足球球员的AI行为树
6.3 行为树的执行流程解析——阵地军旗争夺战
6.3.1 军旗争夺战行为树
6.3.2 军旗争夺战的行为树遍历过程详解
6.4 使用React插件快速创建敌人AI士兵行为树
6.4.1 游戏场景设置
6.4.2 创建行为树
6.4.3 编写脚本实现行为树
6.4.4 创建敌人AI士兵角色
6.4.5 创建玩家角色及运行程序
第7章 AI综合示例——第三人称射击游戏
7.1 TPS游戏示例总体设计
7.1.1 TPS游戏示例概述
7.1.2 敌人AI角色行为树设计
7.2 TPS游戏示例场景的创建
7.2.1 游戏场景设置
7.2.2 隐蔽点设置
7.3 为子弹和武器编写脚本
7.3.1 创建子弹预置体
7.3.2 为M4枪编写脚本
7.4 创建玩家角色
7.5 创建第三人称相机
7.6 创建敌人AI士兵角色
7.6.1 用React插件画出行为树
7.6.2 为行为树编写代码
7.6.3 敌人AI士兵角色控制脚本
7.7 创建GUI用户界面
7.8 游戏截图
参考文献
前言
写作目的
Unity3D是近几年非常流行的一个3D游戏开发引擎,已成为手机游戏开发的主要开发工具之一,也用于计算机虚拟现实领域的模拟飞行、模拟射击、模拟驾驶等技术的开发。手机(或其他平台)的游戏逐渐高档化、复杂化,游戏角色也需要具有更高的“智能”。
游戏中角色的AI(人工智能)水平直接决定着游戏的惊险性、刺激性、趣味性,优秀的游戏会使人玩不释手。在人机对战的TPS(第三人称视角射击游戏)游戏中,为了让游戏可以被玩家接受,使游戏变得更加有趣,很大程度上要依赖于AI。可以想象,如果敌人角色都只会呆滞地、向前径直冲进玩家的炮火中,玩家很快就会对此失去兴趣而弃之。游戏《半条命》因老练狡猾的敌人“海军陆战队”的AI系统而闻名;《星际争霸》游戏因广泛使用了寻路技术而使我们看到了战场上士兵的编队移动,现已成为RTS(即时战略游戏)游戏的潮流。
现在国内出版的Unity3D书籍多为入门级的初级水平读物,尚无Unity3D游戏人工智能的专门中文书籍,而其专题内容一般只在互联网“论坛”上出现,却又缺少系统化详解。
为此,本书精选了游戏AI中必要、实用的几项关键技术,用大量Unity3D示例代码、图片,以深入浅出的方式讲解游戏人工智能理论、设计原则和Unity3D编程实现方法。每个程序都有详细的注释并运行测试通过。程序对Unity3D的版本(3.X/4.X/5.X)依赖性不大。希望本书能给具备初步Unity3D游戏开发编程能力的读者在创作“更高智能”游戏角色时提供系统地、快捷地帮助。
主要内容
1.第1章Unity3D人工智能架构模型
对于游戏中的AI,应该关注的问题是如何让电脑能像人或动物那样“感知、决策、移动”,使游戏中的角色看上去像真实的人或动物。为了用Unity3D实现这一目标,使用AI的架构模型来分层次处理运动层、决策层、战略层的内容,并以此解析了FPS/TPS(、三人称射击游戏)中各层次的任务分解。
2.第2章实现AI角色的自主移动——操控行为
操控行为是指操作控制角色,让它们能以模拟现实的方式在游戏世界中移动。它的工作方式是通过产生一定大小和方向的操控力,使角色以某种方式运动。操控行为包括一组基本“行为”:使单独的AI角色靠近或离开目标、在角色接近目标时减速、使捕猎者追逐猎物、使猎物逃离捕猎者、使角色在游戏世界中随机徘徊、使角色沿着某条预定路径移动、使角色避开障碍物等行为。
操控组成小队或群体的多个AI角色(如模拟群鸟飞行)时,需要令其与其他邻居保持一定的距离、一致的朝向以及靠近其他邻居等行为。
操控行为优点是:使AI角色看上去很真实;非常易于计算,算法速度快。使用Unity3D提供的开源库UnitySteer可以快捷实现操控行为。
3.第3章找短路径并避开障碍物——A*寻路
著名的A*寻路算法在游戏中有着十分广泛的应用,它可以保证在起点和终点之间找到路径,在同类算法中效率很高,对于多数路径寻找问题它是选择。本章给出了利用操控行为和A*寻路实现RTS中的小队寻路示例。
然而在实际游戏中,很多时候短路径并不是好的选择。在人类或坦克等在面对山地、森林等不同通过难度的地形时,在射击类游戏需要选择不易受敌人攻击的路线时,就需要采用战术寻路。本章给出了利用A*PathfindingProject插件进行战术寻路的示例。
4.第4章AI角色对游戏世界的感知
当控制游戏角色的移动时,角色需要感知周围游戏世界的内部信息和外部信息。内部信息包括AI角色自身的生命值、武器、目标和运动状态等,外部信息包括敌人的位置、救生包位置、战友的位置及生命值、爆炸声的来源等。
可以采用轮询和事件驱动的方式对这些环境信息进行感知,引起相应的触发器动作,使AI角色做出相应的反应或行动。本章给出AI士兵的综合感知系统示例。
5.第5~6章角色自主决策——有限状态机及行为树
决策系统会对从游戏世界中收集到的各种信息进行处理(包括内部信息,外部信息),从而确定AI角色下一步将要执行的行为。
(1)如果游戏的决策系统不是很复杂,只要利用FSM(有限状态机)就可以实现。第5章分别给出了用Switch语句实现的FSM和用FSM框架实现的通用的FSM示例。
(2)在处理较大规模的问题时,FSM很难复用、维护和调试。为了让AI角色的行为能够满足游戏的要求,就需要增加很多状态,并手工转换大量的编码,非常容易出现错误。行为树(BehaviorTree)层次清晰,易于模块化,并且可以利用通用的编辑器简化编程,简洁高效。它为我们提供了丰富的流程控制方法,只要定义好一些条件和动作,策划人员就可以通过简单地拖曳和设置,来实现复杂的游戏AI。
作者在总结教学经验中体会到,初学者对行为树的设计思路理解较为困难,甚至互联网论坛上也常常看到因为对行为控制流程理解错误,导致很大程度上影响了对于行为树的正确应用。本章用较大篇幅详解了一个行为树的示例,一步步详细分析了它的执行流程,以期使读者能够准确掌握行为树并设计出具有更高“智能”的AI角色。
6.第7章AI综合案例——第三人称射击游戏
在本章中给出一个具有较高AI水平的第三人称射击游戏示例。其中主要用到了第3章的A*寻路、第6章的行为树等技术,使“敌人士兵”具有了较高的智能水平,它们可以自主寻找并移动到隐蔽点、躲藏在工事后面、下蹲以减少被玩家击中的概率、举枪瞄准玩家、对玩家射击……这些战术动作大大增加了游戏的惊险性、趣味性和挑战性!
适用读者
(1)对于具有初级开发水平的Unity3D游戏开发爱好者来说,这是一本非常好的AI入门读物。本书精选了游戏AI中重要、实用的几项关键技术,始终围绕着AI的技术精髓展开,同时用简单清晰的方式去实现它,读者可以在自己的计算机上运行示例代码,模仿书中提供的代码去快速实现一个“更高智能”的“敌人士兵”或其他AI角色。
(2)对于游戏开发培训学校的师生来说,本书可作为Unity3D游戏开发的高阶教材。本书深入浅出,用实例讲解理论性较强的人工智能理论、设计原则以及实现方法。书中配有大量的插图,重视AI技术论述的条理性,便于组织教学。
(3)本书可作为数字媒体技术、数字媒体艺术等专业的《游戏人工智能》课程教材,计算机科学与技术、自动化专业本科生、研究生的《人工智能》课程教材与实验参考书。由于一般院校都把《人工智能》作为专业选修课程,而且所使用的教材大多理论推导多、教材内容枯燥,如果以本书组织教学,将会大大提高学生的学习兴趣,同时会提高学生的实际编程水平。
(4)对于计算机、虚拟现实技术等相关学科的科研人员而言,本书也很有益处。
游戏人工智能程序必须在有限的计算机硬件资源(CPU速度、内存大小、显卡性能)下工作,本书的“操控行为”、“A*寻路”、“有限状态机”、“行为树”等算法的实时性、高效性有待于更深一步地研究提高。
本书由沈阳理工大学信息科学与工程学院王洪源、陈慕羿、华宇宁、石征锦老师共同著作完成,另外,参与本书编写工作的还有张骥超、王清鹏、李鑫洋、杨竹、陈鹏艳等硕士研究生。在本书写作过程中得到了清华大学出版社计算机与信息分社杨如林编辑的大力帮助,在此表示感谢。
作者
评论
还没有评论。