要想开发一款优秀的游戏,人工智能必不可少。本书精选了Unity3D游戏开发中最关键、最实用的几项人工智能关键技术,以实例的方式由浅入深地讲解了深奥而强大的人工智能技术、设计原则以及编程实现方法,并且对书中的每一个案例都进行了详细注释,所有实例均运行测试通过。掌握了书中的技术,可以使游戏角色具有良好的智能,大大增强游戏的可玩性!
Unity3D是近年非常流行的一个3D游戏开发引擎,已成为手机游戏开发的主要开发工具之一,也用于计算机虚拟现实领域的模拟飞行、模拟射击、模拟驾驶等技术的开发。手机(或其他平台)的游戏逐渐高档化、复杂化,游戏角色也需要具有更高的“智能”。 本书专门讲解了Unity3D游戏人工智能开发的相关技术。书中精选了游戏AI中最必要、最实用的几项关键技术,用大量Unity3D示例代码、图片,以深入浅出的方式讲解游戏人工智能理论、设计原则和Unity3D编程实现方法。每个程序都有详细的注释并运行测试通过。 希望本书能给具备初步Unity3D游戏开发编程能力的读者在创作“更高智能”游戏角色时提供系统地、快捷地帮助。 本书精选Unity3D游戏开发中最关键、最实用的人工智能技术,用大量案例详细剖析了人工智能理论、设计原则和编程实现的方法。 每个程序都进行详细注释,并运行通过,可以跨版本运行。 写作风格深入浅出,轻松实现从理论到实践的跨越。 主要内容 Unity3D人工智能架构模型 实现AI角色的自主移动──操控行为 寻找最短路径并避开障碍物──A*寻路 AI角色对游戏世界的感知 AI角色的自主决策(有限状态机、行为树) AI综合示例──第三人称射击游戏 适用读者: 对于Unity3D游戏开发爱好者来说,这是一本非常好的AI入门读物。本书精选游戏AI中的关键技术,始终围绕AI的精髓展开,并用最简单的方式来实现,读者可以通过运行、 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理论、设计原则与实现方法,便于组织教学与学生系统学习。
第1章 Unity3D人工智能架构模型·1
1.1 游戏AI的架构模型3
1.1.1 运动层4
1.1.2 决策层4
1.1.3 战略层4
1.1.4 AI架构模型的其他部分5
1.2 FPS/TPS游戏中的AI解析5
1.2.1 FPS/TPS中的运动层6
1.2.2 FPS/TPS中的决策层6
1.2.3 FPS/TPS中的战略层7
1.2.4 FPS/TPS中AI架构模型的支撑部分7
第2章 实现AI角色的自主移动——操控行为·9
2.1 Unity3D操控行为编程的主要基类11
2.1.1 将AI角色抽象成一个质点——Vehicle类12
2.1.2 控制AI角色移动——AILocomotion类14
2.1.3 各种操控行为的基类——Steering类16
2.2 个体AI角色的操控行为17
2.2.1 靠近17
2.2.2 离开19
2.2.3 抵达20
2.2.4 追逐22
2.2.5 逃避25
2.2.6 随机徘徊26
2.2.7 路径跟随29
2.2.8 避开障碍33
2.3 群体的操控行为41
2.3.1 组行为41
2.3.2 检测附近的AI角色42
2.3.3 与群中邻居保持适当距离——分离44
2.3.4 与群中邻居朝向一致——队列46
2.3.5 成群聚集在一起——聚集47
2.4 个体与群体的操控行为组合49
2.5 几种操控行为的编程解析51
2.5.1 模拟鸟群飞行51
2.5.2 多AI角色障碍赛54
2.5.3 实现动物迁徙中的跟随领队行为56
2.5.4 排队通过狭窄通道64
2.6 操控行为的快速实现——使用Unity3D开源库UnitySteer72
2.7 操控行为编程的其他问题75
第3章 寻找最短路径并避开障碍物——A*寻路·77
3.1 实现A*寻路的3种工作方式78
3.1.1 基本术语78
3.1.2 方式1:创建基于单元的导航图79
3.1.3 方式2:创建可视点导航图80
3.1.4 方式3:创建导航网格81
3.2 A*寻路算法是如何工作的83
3.2.1 A*寻路算法的伪代码84
3.2.2 用一个实例来完全理解A*寻路算法86
3.3 用A*算法实现战术寻路97
3.4 A* Pathfinding Project插件的使用100
3.4.1 基本的点到点寻路100
3.4.2 寻找最近的多个道具(血包、武器、药等)106
3.4.3 战术寻路——避开火力范围110
3.4.4 在复杂地形中寻路——多层建筑物中的跨层寻路116
3.4.5 RTS中的小队寻路——用操控行为和A*寻路实现120
3.4.6 使用A* Pathfinding Project插件需要注意的问题137
3.5 A*寻路的适用性138
第4章 AI角色对游戏世界的感知·139
4.1 AI角色对环境信息的感知方式141
4.1.1 轮询方式141
4.1.2 事件驱动方式141
4.1.3 触发器142
4.2 常用感知类型的实现143
4.2.1 所有触发器的基类——Trigger类143
4.2.2 所有感知器的基类——Sensor类145
4.2.3 事件管理器146
4.2.4 视觉感知148
4.2.5 听觉感知153
4.2.6 触觉感知156
4.2.7 记忆感知157
4.2.8 其他类型的感知——血包、宝物等物品的感知159
4.3 AI士兵的综合感知示例164
4.3.1 游戏场景设置165
4.3.2 创建AI士兵角色166
4.3.3 创建玩家角色176
4.3.4 显示视觉范围、听觉范围和记忆信息179
4.3.5 游戏运行结果182
第5章 AI角色自主决策——有限状态机·184
5.1 有限状态机的FSM图185
5.1.1 《Pac-Man(吃豆人)》游戏中红幽灵的FSM图185
5.1.2 《QuakeⅡ(雷神2)》中Monster怪兽的有限状态机186
5.2 方法1:用Switch语句实现有限状态机191
5.2.1 游戏场景设置192
5.2.2 创建子弹预置体193
5.2.3 创建敌人AI角色194
5.2.4 创建玩家角色及运行程序202
5.3 方法2:用FSM框架实现通用的有限状态机205
5.3.1 FSM框架205
5.3.2 FSMState类——AI状态的基类206
5.3.3 AdvancedFSM类——管理所有的状态类210
5.3.4 PatrolState类——AI角色的巡逻状态213
5.3.5 ChaseState类——AI角色的追逐状态215
5.3.6 AttackState类——AI角色的攻击状态217
5.3.7 DeadState类——AI角色的死亡状态218
5.3.8 AIController类——创建有限状态机,控制AI角色的行为219
5.3.9 游戏场景设置223
第6章 AI角色的复杂决策——行为树·224
6.1 行为树技术原理226
6.1.1 行为树基本术语226
6.1.2 行为树中的叶节点227
6.1.3 行为树中的组合节点227
6.1.4 子树的复用232
6.1.5 使用行为树与有限状态机的权衡233
6.1.6 行为树执行时的协同(Coroutine)233
6.2 行为树设计示例236
6.2.1 示例1:有限状态机/行为树的转换236
6.2.2 示例2:带随机节点的战斗AI角色行为树237
6.2.3 示例3:足球球员的AI行为树238
6.3 行为树的执行流程解析——阵地军旗争夺战239
6.3.1 军旗争夺战行为树239
6.3.2 军旗争夺战的行为树遍历过程详解240
6.4 使用React插件快速创建敌人AI士兵行为树248
6.4.1 游戏场景设置249
6.4.2 创建行为树249
6.4.3 编写脚本实现行为树253
6.4.4 创建敌人AI士兵角色256
6.4.5 创建玩家角色及运行程序257
第7章 AI综合示例——第三人称射击游戏·258
7.1 TPS游戏示例总体设计258
7.1.1 TPS游戏示例概述258
7.1.2 敌人AI角色行为树设计259
7.2 TPS游戏示例场景的创建261
7.2.1 游戏场景设置261
7.2.2 隐蔽点设置261
7.3 为子弹和武器编写脚本262
7.3.1 创建子弹预置体262
7.3.2 为M4枪编写脚本265
7.4 创建玩家角色268
7.5 创建第三人称相机274
7.6 创建敌人AI士兵角色278
7.6.1 用React插件画出行为树278
7.6.2 为行为树编写代码280
7.6.3 敌人AI士兵角色控制脚本291
7.7 创建GUI用户界面297
7.8 游戏截图298
参考文献·301