内容简介
要想开发一款优秀的游戏,人工智能必不可少。
《Unity3D人工智能编程精粹》精选了Unity3D游戏开发中最关键、最实用的几项人工智能关键技术,以实例的方式由浅入深地讲解了深奥而强大的人工智能技术、设计原则以及编程实现方法,并且对书中的每一个案例都进行了详细注释,所有实例均运行测试通过。掌握了书中的技术,可以使游戏角色具有良好的智能,大大增强游戏的可玩性!
《Unity3D人工智能编程精粹》共分7章:第1章中给出了游戏人工智能的运动层、决策层、战略层的架构模型,将游戏角色模拟人的感知、决策和移动等问题进行分层处理与实现;第2章讲解了多种操控角色自主移动的算法,让角色在游戏中的运动看起来更真实自然、运算速度更快;第3章采用图示的方式详细讲解了游戏寻路中著名的A*寻路技术,并进一步介绍了复杂地形、以及存在敌方火力威胁下的战术寻路技术;第4章讲解了游戏角色感知游戏世界的实现方法。例如,发现敌人的位置、追寻爆炸声、让角色具有短期记忆,根据脚印进行追踪等;第5章~第6章讲解了最常用的决策技术——状态机与行为树技术,并对比分析了有限状态机与行为树技术在游戏人工智能中的适用范围。在处理大规模的游戏决策问题时,行为树克服了有限状态机的许多缺点,层次清晰、易于发现差错和调试,能大大减少编程者的负担;第7章综合运用了A*寻路、行为树等技术,给出了一个具有较高人工智能水平的第三人称射击游戏实例。
内页插图
目录
第1章 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*PathfindingProject插件的使用
3.4.1 基本的点到点寻路
3.4.2 寻找最近的多个道具(血包、武器、药等)
3.4.3 战术寻路——避开火力范围
3.4.4 在复杂地形中寻路——多层建筑物中的跨层寻路
3.4.5 RTS中的小队寻路——用操控行为和A*寻路实现
3.4.6 使用A*PathfindingProject插件需要注意的问题
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 游戏截图
参考文献
前言/序言
《游戏世界中的智慧涌现:从基础到高级的AI设计之道》 你是否曾为游戏角色那令人惊叹的自主行为而着迷?它们如何感知周围环境,做出逼真的决策,甚至展现出令人意想不到的“个性”?这背后并非神秘魔法,而是精妙的AI设计。本书将带领你深入游戏AI的核心,从最基础的原理剖析,逐步构建起令人信服的智能体,直至创造出能够主宰虚拟世界的复杂AI系统。 第一篇:智能体的基石——感知、决策与行动 在本篇中,我们将奠定坚实的AI基础。游戏中的智能体并非孤立存在,它们需要与游戏世界进行交互。 感知世界: 智能体如何“看见”和“听见”?我们将探索各种传感器模拟技术,包括视线检测(Raycasting)、触发器(Colliders)的碰撞检测、听觉范围模拟,以及如何利用游戏内置的物理引擎和几何学原理来构建这些感知系统。你将学习如何让AI感知玩家的方位、障碍物的存在、友军的位置,甚至是其他NPC的微小动作。我们将深入研究视锥体(Frustum Culling)在AI感知中的应用,以及如何根据距离和角度优化感知效率。 理解与决策: 感知到的信息必须被处理,才能转化为有意义的行动。我们将深入探讨决策制定的核心机制。 有限状态机(Finite State Machines, FSMs): 这是最经典也是最常用的AI状态管理工具。你将学习如何设计和实现清晰的状态转换,例如“巡逻”、“追逐”、“攻击”、“逃跑”、“待机”等。我们将通过实际案例演示如何构建复杂的FSM,处理状态之间的优先级和过渡条件,并深入讲解状态机在大型游戏项目中的可维护性和扩展性。 行为树(Behavior Trees, BTs): 相较于FSM,行为树提供了更灵活、更模块化的AI控制方式。我们将从零开始构建行为树,学习其节点类型(Sequence, Selector, Parallel, Decorator, Condition, Action),以及如何组合它们来创建复杂的AI逻辑。你将理解行为树如何实现更细粒度的行为控制,例如在追逐过程中优先拾取道具,或是在逃跑时寻找掩体。我们将探讨行为树在AI“编舞”中的强大能力,让AI的行为更加流畅和智能。 效用系统(Utility Systems): 在某些情况下,AI需要权衡多个选项并选择最优解。效用系统为此提供了优雅的解决方案。你将学习如何定义效用函数,根据各种因素(如威胁等级、生命值、弹药储备、距离等)计算行动的“效用值”,并选择最高效用的行动。我们将探讨效用系统在RPG、策略游戏等需要复杂资源管理和目标选择场景下的应用。 黑板系统(Blackboard Systems): 当多个AI系统需要共享信息时,黑板系统就显得尤为重要。我们将介绍黑板的概念,以及如何利用它来存储和检索AI共享的数据,实现AI之间的协同与交流。 付诸行动: 决策的最终目的是驱动智能体做出相应的动作。我们将探讨如何将AI的决策转化为游戏中的具体行为。 寻路(Pathfinding): 智能体需要在复杂的游戏环境中找到通往目标的最优路径。我们将详细讲解A(A-star)算法,包括其工作原理、节点表示、启发式函数的设计,以及如何在网格(Grid-based)和导航网格(Navmesh-based)环境中实现高效寻路。你将学习如何处理动态障碍物、动态导航网格的更新,以及如何优化寻路性能。 运动控制(Movement Control): 如何让AI的移动更加自然和逼真?我们将探讨角色动画的驱动,包括动画状态机与AI决策的联动,以及如何实现平滑的位移动画过渡。还将涉及基础的避障算法,确保AI在移动过程中不会卡住。 第二篇:进阶智能:学习、适应与协作 当智能体的基础行为得以实现,我们便可以着手赋予它们更高级的“智慧”。 学习与适应: 真正的智能体能够从经验中学习并调整自己的行为。 强化学习(Reinforcement Learning, RL)基础: 虽然直接在大型游戏引擎中实现完整的深度强化学习可能面临性能挑战,但我们可以学习其核心思想。我们将介绍RL的基本概念:状态(State)、动作(Action)、奖励(Reward)、Q-learning,以及如何设计简单的奖励函数来引导AI学习特定行为。通过对RL原理的理解,你可以为AI设计更具动态适应性的策略。 参数调优与曲线(Parameter Tuning & Curves): 许多AI行为可以通过调整参数来达到最佳效果。你将学习如何使用数据驱动的方法,通过实验和分析来找到最优参数,或者利用曲线编辑器来平滑地调整AI的行为阈值和响应速度。 群体智能(Flocking & Swarming): 许多游戏场景需要一群智能体协同行动,例如敌方士兵的协同作战、NPC的群体行为。 Boids算法: 我们将深入讲解Boids算法,学习如何通过模拟“分离”、“对齐”和“聚集”这三个基本规则,来创造出逼真的群体行为。你将学会如何调整规则的权重,以实现不同的群体动态,例如悠闲的鸟群或紧密协同的蜂群。 团队协作: 在更复杂的场景下,AI需要进行有目的的团队协作。我们将探讨如何利用有限状态机或行为树来协调团队成员,例如指定掩护目标、分配攻击顺序、执行包围战术等。 预测与规避: 高级AI能够预测玩家或其他AI的意图,并据此采取行动。 玩家行为预测: 通过分析玩家过去的行动模式,AI可以尝试预测玩家下一步的行动。我们将介绍一些基础的预测技术,例如基于历史数据的简单统计模型,以及如何利用这些预测来增强AI的反应能力。 动态避障与导航: 除了静态寻路,AI还需要应对动态变化的环境。我们将深入研究如何实现动态避障,让AI能够灵活地躲避突然出现的障碍物或敌方火力,并在复杂地形中保持流畅的移动。 第三篇:AI的艺术——沉浸感与交互性 最终,AI的目的是为玩家创造更丰富、更具沉浸感的游戏体验。 “演出”AI: 有时,AI的行为并非完全基于最优策略,而是为了“演出”而设计。 程序化叙事(Procedural Narrative)中的AI: 如何让AI的行为推动故事发展?我们将探讨如何将AI的行为与游戏叙事相结合,让AI的决策和行动能够触发事件、影响剧情走向,从而创造出动态和个性化的游戏体验。 “拟人化”AI: 我们将研究如何通过细微的AI行为来赋予NPC个性,例如让AI角色在无事可做时表现出好奇、沮丧或疲惫等情绪,通过微小的动作和表情来增强玩家对角色的认同感。 AI系统的集成与优化: 性能考量: 在一个庞大而复杂的游戏中,AI的性能至关重要。我们将深入探讨各种AI系统的性能优化技巧,包括算法的选择、数据结构的优化、缓存策略的应用,以及如何在多线程环境下实现AI计算。 AI调试与迭代: 设计和调试AI是一个持续迭代的过程。我们将介绍各种常用的AI调试工具和方法,例如AI可视化工具、日志记录、断点调试,以及如何有效地收集和分析AI的行为数据来改进设计。 本书特点: 循序渐进,理论与实践并重: 从最基础的概念出发,逐步深入到高级技术,并辅以大量的代码示例和实际项目案例,让你能够快速上手并解决实际问题。 广泛的适用性: 书中介绍的AI技术和原理广泛应用于各种类型的游戏,包括动作游戏、RPG、策略游戏、模拟游戏等,无论你正在开发何种类型的游戏,都能从中受益。 面向未来的AI设计: 即使你不是AI领域的专家,也能通过本书掌握构建逼真、智能且引人入胜的游戏AI的核心技能,为未来的游戏开发打下坚实基础。 本书不仅仅是关于代码的堆砌,更是关于理解和创造“智能”。它将帮助你洞察游戏世界中那些赋予角色生命与灵魂的奥秘,让你能够设计出真正令人难忘的游戏AI。准备好踏入这场构建智慧生物的旅程了吗?