具体描述
编辑推荐
如何使游戏中的角色看上去像真实的人或动物,如何让游戏更惊险、刺激、有趣味性,使人玩不释手
《Unity 3D人工智能编程》通过大量的示例项目,详细展示如何将人工智能技术应用到Unity3D游戏,系统讲解如何使游戏角色更具智能性,增强游戏的可玩性
人工智能技术在游戏开发中起着至关重要的作用,游戏角色的智能水平直接影响着游戏的惊险性、刺激性、趣味性。本书以实例方式详细讲解如何在Unity 3D中实现不同的人工智能技术,如何应用Unity 3D内置的特性,以及如何使用Unity 3D资源商店中的脚本和插件,涵盖有限状态机、路径寻找、跟随、在图中导航,以及行为树等技术,并且对于所有的算法,书中都给出了C# 实现代码。
通过阅读《Unity 3D人工智能编程》,你将学到:
构建有限状态机。
实现一个感应系统。
将群组行为应用于飞翔的对象。
在Unity 3D中运行A*寻路算法。
在游戏中应用概率和随机性技巧。
使用Unity 3D专业版中的特性来在图中导航,进行寻路。
学习行为树以及Behave插件。
在最后的项目中,实现一个人工智能车辆战斗游戏。
内容简介
《Unity 3D人工智能编程》重点关注如何将人工智能技术应用于Unity3D游戏项目。书中从有限状态机开始,接着探讨了如何为你的游戏增加一些随机性,让游戏变得更加难以预测,更加有趣。如何在一个游戏中加入一个感应系统让游戏中的角色可以感知周围的环境,同时使得代码不会随着项目规模的扩大变得难以维护。如何将群组行为用于一组移动的对象,这样可以有效地控制一组移动对象的行为。然后探讨了如何让人工智能角色跟随一条规定的路径进行移动,在此基础上,讲述了如何实现A*寻路算法,以对游戏引擎的寻路原理有更深一层的理解。紧接着介绍了如何在Unity3D中使用导航网格方便快捷地实现寻路。然后讲解了当游戏规模变大,有限状态机的代码变得冗长,难以维护时,使用行为树来解决这个问题,并讲解了如何在Unity3D中使用Behave这个免费插件来实现行为树。最后,用一个车辆战斗游戏将本书中提到的大多数知识点融会贯通,应用于最后这个规模稍大的游戏中。
作者简介
Aung Sithu Kyaw,Rival Edge公司联合创始人,有丰富的软件开发经验,并曾在多家公司从事游戏编程工作。他主要感兴趣的领域包括游戏编程、创业、写作以及分享知识。此外,他还参与撰写《Irrlicht 1.7 Realtime 3D Engine Beginner's Guide》一书。
Clifford Peters,是一位程序员和计算机科学家,并且是一些Unity图书的评审专家。
Thet Naing Swe,Rival Edge公司联合创始人、首席创意官,目前在Rival Edge负责数字媒体交互咨询项目。
李秉义,资深软件工程师,拥有丰富的软件开发经验。目前关注数据存储与传输,网络加速等领域的技术,热衷于研究开源系统。
目录
前 言
第1章 人工智能导论 1
1.1 人工智能 1
1.2 游戏中的人工智能 2
1.3 人工智能技术 3
1.3.1 有限状态机 3
1.3.2 人工智能中的随机性和概率 5
1.3.3 感应器系统 6
1.3.4 群组、蜂拥和羊群效应 7
1.3.5 路径跟随和引导 8
1.3.6 A*寻路算法 9
1.3.7 导航网格 16
1.3.8 行为树 18
1.3.9 运动 20
1.3.10 Dijkstra算法 23
1.4 本章小结 23
第2章 有限状态机 24
2.1 玩家的坦克 24
2.1.1 PlayerTankController类 25
2.1.2 初始化 26
2.2 子弹类 29
2.3 设置航点 31
2.4 抽象有限状态机类 32
2.5 敌方坦克的人工智能 34
2.5.1 巡逻状态 36
2.5.2 追逐状态 38
2.5.3 攻击状态 38
2.5.4 死亡状态 40
2.6 使用有限状态机框架 42
2.6.1 AdvanceFSM类 42
2.6.2 FSMState类 43
2.6.3 状态类 44
2.6.4 NPCTankController 类 46
2.7 本章小结 48
第3章 随机性和概率 49
3.1 随机性 50
3.2 概率的定义 52
3.2.1 独立与关联事件 53
3.2.2 条件概率 53
3.3 人物个性 56
3.4 有限状态机和概率 57
3.5 动态人工智能 59
3.6 示例老虎机 60
3.6.1 随机老虎机 60
3.6.2 加权概率 63
3.7 本章小结 68
第4章 感应器的实现 70
4.1 基本的感觉系统 71
4.2 场景设置 72
4.3 玩家的坦克与切面 73
4.3.1 玩家的坦克 74
4.3.2 切面 75
4.4 人工智能角色 76
4.4.1 感观 77
4.4.2 视觉 78
4.4.3 触觉 80
4.5 测试 82
4.6 本章小结 83
第5章 群组行为 84
5.1 岛屿示例中的群组行为 84
5.1.1 个体的行为 85
5.1.2 控制器 90
5.2 替代实现 92
5.3 本章小结 99
第6章 路径跟随和引导行为 100
6.1 跟随一条路径 100
6.1.1 路径脚本 102
6.1.2 路径跟随 103
6.2 避开障碍物 106
6.2.1 添加定制图层 107
6.2.2 避开障碍 108
6.3 本章小结 113
第7章 A*寻路算法 114
7.1 回顾A*寻路算法 114
7.2 实现 116
7.2.1 Node 116
7.2.2 PriorityQueue 117
7.2.3 GridManager 118
7.2.4 AStar 123
7.2.5 TestCode类 126
7.3 场景设置 128
7.4 测试 131
7.5 本章小结 132
第8章 导航网格 133
8.1 简介 134
8.2 设置地图 134
8.2.1 Navigation Static 135
8.2.2 烘焙导航网格 135
8.2.3 导航网格代理 136
8.3 有斜坡的场景 139
8.4 NavMeshLayers 141
8.5 分离网格链接 144
8.5.1 生成分离网格链接 145
8.5.2 手动生成分离网格链接 146
8.6 本章小结 148
第9章 行为树 149
9.1 Behave插件 149
9.2 工作流 151
9.3 行为节点 153
9.4 与脚本的接口 155
9.5 装饰节点 158
9.6 Behave调试器 160
9.7 顺序节点 160
9.8 探索Behave的结果 162
9.9 选择节点 163
9.10 优先级选择节点 166
9.11 并行节点 168
9.12 引用 169
9.13 机器人与外星人项目 170
9.14 本章小结 173
第10章 融会贯通 174
10.1 场景设置 175
10.2 车辆 177
10.2.1 玩家控制的车辆 178
10.2.2 人工智能车辆控制器 180
10.2.3 有限状态机 182
10.3 武器 187
10.3.1 枪 187
10.3.2 子弹 189
10.3.3 发射器 191
10.3.4 导弹 193
10.4 本章小结 195
前言/序言
本书旨在帮助你把各种人工智能技术应用到你的游戏中。我们将会讨论决策技术,比如有限状态机和行为树;也将探讨运动、避开障碍和群组行为;还将演示如何跟随一条路径,如何使用A*寻路算法来创建一条路径,以及如何使用导航网格到达目的地。作为额外收获,你将详细了解随机性和概率,并把这些概念应用到最后一个综合项目中。 本书内容第1章讨论什么是人工智能,如何将其应用到游戏中,以及游戏中使用的各种实现人工智能的技术。 第2章讨论人工智能中需要用到的一种简化决策管理的方法。我们使用有限状态机来确定人工智能在特定状态下的行为,以及这种状态下人工智能如何转换为其他状态。 第3章讨论概率论的基础知识,以及如何改变特定输出的概率。然后学习如何给游戏增加随机性,让游戏中的人工智能更难以预测。 第4章介绍怎样让游戏角色在某些情况下能够感知他们周围的世界。当他们具有视觉和听觉时,游戏角色会知道敌人就在附近,他们还会知道何时发起攻击。 第5章讨论多个对象组队同时行进的情况。该章将探讨两种实现群组行为的方式,以及这两种方式是怎样使这些对象同时行进的。 第6章学习人工智能角色如何跟随一条给定的路径到达目的地。我们将了解人工智能角色如何在不知道路径的情况下找到目标,以及如何使其移向目标的同时避开障碍。 第7章讨论一个流行的算法,即寻找从指定位置到目标位置的最优路径。有了A*算法,我们可以扫描地形并找到到达目标的最优路径。 第8章讨论如何利用Unity的能力使寻路更易于实现。通过创建一个导航网格(需要使用Unity Pro版),我们能够更好地表示周围的场景,然后就能使用图块和A*算法。 第9章讲解从有限状态机扩展而来的行为树,即使在最为复杂的游戏中我们也可以使用它。我们将使用免费插件Behave来帮助在Unity中创建并管理行为树。 第10章把我们在本书中所学的各种原理整合在最后一个项目中。在这里你能够应用所学的人工智能原理,设计出一个令人难忘的车辆战斗游戏。 本书要求配置学习本书,要求读者安装Unity 3.5或更高版本。第8章讨论导航网格,顾名思义涉及创建一个导航网格,这需要你安装Unity Pro版本;第9章讨论行为树,要求下载Behave——一个免费的行为树插件,这需要你拥有一个Unity Store账号。不过这些需求都是可选的,因为本书配备的资源中已经为你准备好了导航网格和Behave插件,可登录华章网站下载。 本书的读者对象本书面向任何想要学习将人工智能应用到游戏中的读者,并侧重于之前有Unity使用经验的读者。我们会用C#语言编写代码,所以我们希望你熟悉C#。 下载示例代码和书中的彩色插图你可以在华章网站的本书页面中下载示例代码文件和书中的彩色插图。
《Unity 3D游戏开发实战:从零到精通》 一、 序言:开启你的游戏开发之旅 你是否曾梦想亲手打造一款引人入胜的Unity 3D游戏?是否渴望将脑海中天马行空的创意转化为触手可及的数字世界?《Unity 3D游戏开发实战:从零到精通》正是为你量身打造的入门与进阶指南。本书将带领你踏上一段激动人心的Unity 3D游戏开发之旅,从最基础的概念入手,逐步深入到复杂的游戏系统设计与实现,最终帮助你掌握独立开发高质量Unity 3D游戏的技能。 本书不同于市面上充斥着理论堆砌的教程,我们坚持以实战为导向,通过大量的案例分析和项目实践,让你在动手操作中学习,在解决问题的过程中成长。无论你是完全零基础的初学者,还是已经接触过游戏开发但希望系统学习Unity 3D的开发者,都能在这本书中找到属于自己的价值。我们将陪伴你,一步步揭开Unity 3D的神秘面纱,让你从一个游戏爱好者蜕变为一名自信的游戏创作者。 二、 核心内容概览:掌握Unity 3D开发全流程 本书内容涵盖Unity 3D游戏开发的方方面面,力求为你构建一个全面而扎实的知识体系。我们将从以下几个核心维度展开: 1. Unity 编辑器精通:你的创意工作台 界面与工作流程: 深入理解Unity编辑器的各个窗口(Scene, Game, Inspector, Project, Hierarchy等)的功能和协同工作方式,熟悉快捷键和常用操作,提升开发效率。 资源管理: 学习如何导入、组织和管理项目中的各种资源(模型、纹理、音频、脚本等),掌握资源导入设置,优化资源导入流程。 场景构建: 掌握场景(Scene)的概念,学习如何创建、编辑和组织场景中的游戏对象(GameObject),理解 Prefab 的强大之处,以及如何利用它们构建复杂场景。 地形与环境: 学习使用Unity内置的地形系统创建逼真的自然环境,包括纹理绘制、细节添加、植被生成等。 光照与渲染: 深入理解Unity的光照模型(实时光照、烘焙光照),学习设置各种光源(Directional, Point, Spot),掌握阴影效果,并了解后处理(Post-processing)技术,为游戏营造独特的视觉风格。 2. 脚本编程与交互:赋予游戏生命 C 基础回顾与精炼: 针对游戏开发所需,快速回顾和强调C语言的关键特性,包括变量、数据类型、控制流、函数、类、对象、继承、多态等,并重点讲解如何在Unity脚本中应用。 Unity API 核心: 掌握Unity脚本与编辑器交互的核心API,包括 MonoBehaviour 生命周期(Awake, Start, Update, FixedUpdate, LateUpdate等)、Transform 组件操作、Input 系统、Rigidbody 物理组件、Collider 碰撞检测等。 物理引擎应用: 深入理解Unity的物理引擎,学习如何利用 Rigidbody 和 Collider 组件实现逼真的物理效果,如碰撞、重力、关节等,并掌握其参数调优。 射线检测与触发器: 学习使用射线检测(Raycasting)实现各种交互功能,如鼠标拾取、目标锁定、扫描等。理解并应用触发器(Trigger)与碰撞器(Collider)的区别,实现更精细的交互逻辑。 动画系统: 掌握Unity的动画系统(Animator Controller, Animation Clips),学习如何创建、导入和控制动画,实现角色动作、UI动画等。 UI 系统: 学习Unity的UI系统(UGUI),包括 Canvas, RectTransform, Image, Text, Button, Slider 等常用组件,掌握 UI 布局、事件处理和交互设计。 3. 游戏系统设计与实现:构建完整游戏体验 玩家控制: 设计和实现各种类型的玩家控制方式,如第一人称、第三人称、俯视角等,并考虑移动、跳跃、射击等操作的流畅性。 AI 基础: (此处不深入AI编程,而是侧重于AI在游戏中的应用表现)理解游戏中常见的AI行为模式,如巡逻、追击、躲避、寻路等,并学习如何利用Unity提供的工具或简单脚本实现这些行为,为游戏世界增添活力。 敌人设计与行为: 设计不同类型的敌人,赋予它们独特的攻击模式、移动方式和AI行为,使其成为游戏挑战的关键元素。 关卡设计与流程: 学习如何规划游戏关卡,设置游戏流程,引导玩家探索,并融入解谜、战斗等元素。 游戏状态管理: 实现游戏主循环、场景切换、游戏暂停、游戏结束等核心状态管理逻辑。 音效与音乐: 学习如何导入、播放和管理游戏音效与背景音乐,增强游戏的沉浸感。 粒子系统: 利用Unity的粒子系统(Particle System)创建各种视觉特效,如爆炸、火焰、魔法效果等,提升游戏的美术表现力。 4. 性能优化与发布:让你的游戏更上一层楼 性能分析与瓶颈查找: 学习使用Unity的Profiler工具,分析游戏的CPU、GPU、内存占用,找出性能瓶颈。 常见优化技巧: 掌握各种性能优化策略,如Draw Call批处理、LOD(Level of Detail)、遮挡剔除(Occlusion Culling)、物理层(Physics Layers)、对象池(Object Pooling)等。 内存管理: 理解Unity的内存分配机制,学习如何减少内存占用,避免内存泄露。 打包与发布: 学习如何将Unity项目打包成独立的可执行文件,支持不同的平台(Windows, macOS, WebGL, Android, iOS等),并了解发布前的相关设置。 三、 案例驱动:实战项目贯穿始终 本书将通过一系列精心设计的实战项目,让你将理论知识付诸实践。每个项目都将聚焦于特定的游戏类型或开发技术,力求做到: 由浅入深: 项目难度循序渐进,从简单的原型到更复杂的完整游戏。 实用性强: 项目内容贴近实际游戏开发需求,学到的技能可以直接应用于你的个人项目。 模块化设计: 每个项目都可视为一个独立的学习单元,方便读者根据自己的兴趣选择性学习。 我们将可能涵盖的项目类型包括但不限于: 2D 横版闯关游戏: 学习平台跳跃、角色控制、敌人AI、收集品系统等。 3D 第一人称射击(FPS)原型: 掌握第一人称视角控制、枪械射击、敌人AI、弹道计算等。 3D 动作冒险游戏基础: 学习第三人称角色控制、相机跟随、场景互动、基础谜题等。 简单的策略游戏元素: 探索单位移动、资源收集、简单的战斗逻辑等。 UI 驱动的休闲游戏: 专注于 UI 交互、游戏状态管理、得分系统等。 四、 谁适合阅读本书? 游戏开发爱好者: 拥有将创意变成现实的渴望,想要系统学习Unity 3D游戏开发。 计算机科学专业的学生: 希望将理论知识应用于实际游戏开发项目,拓展技能。 程序员转型游戏开发: 具备编程基础,希望学习游戏引擎开发的技术栈。 独立游戏开发者: 寻求全面而实用的Unity 3D开发指南,提升开发效率和作品质量。 希望学习新技能的任何人: 对游戏开发充满好奇,并愿意投入时间和精力去学习。 五、 学习本书,你将收获什么? 扎实的 Unity 3D 基础: 从编辑器操作到脚本编程,全面掌握 Unity 的核心功能。 完整的游戏开发流程: 学习从概念到实现,再到优化的全过程。 解决实际问题的能力: 通过大量的案例和项目,锻炼独立解决开发中遇到的技术难题。 自信的独立开发能力: 掌握开发一款小型到中型 3D 游戏所需的关键技能。 一份宝贵的开发经验: 本书将分享大量在实际开发中总结出的宝贵经验和技巧。 六、 结语:踏上你的创作之路 《Unity 3D游戏开发实战:从零到精通》不仅仅是一本书,它更是你游戏开发旅程中的一位忠实伙伴。我们相信,通过本书的学习,你将能够自信地站在Unity 3D开发的起点,并且有能力不断精进,创造出属于你自己的精彩游戏世界。现在,就让我们一起,开启这段激动人心的创作之旅吧!