书籍作者:豪尔赫·帕拉西奥斯 | ISBN:9787111670360 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2640 |
创建日期:2021-10-07 | 发布日期:2021-10-07 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
第1章探究几个有趣的移动算法,这些算法基于Craig Reynolds与Ian Millington开发的转向行为(steering behavior)原则,是绝大多数高级游戏和其他一些依赖于移动的算法(比如寻路算法家族)的基础。
第2章涵盖了用于导航复杂场景的寻路算法。该章包含一些使用不同的图结构来表示游戏世界的方法,以及几个用于寻路的算法,每种算法针对的场景有所不同。
第3章解释不同的决策制定技术,这些技术能够灵活地适应不同类型的游戏,并且足够健壮地让我们构建模块化的决策制定系统。
第4章揭示Unity 5.6 中引入的NavMesh API的内部原理,解释如何掌握NavMesh的强大之处,以及实时优化。
第5章涉及几篇不同的教程,把不同的agent协调成一个整体,比如基于图表(如路径点和势力图)制定战术策略的编队技巧。
第6章探究了几种在agent上模拟感官刺激的不同方式。我们将学习如何使用已知的工具来创建这些模拟器:碰撞器和图。
第7章涵盖了用于开发棋类游戏的一个算法家族,以及创建AI的基于回合的游戏技术。
第8章探索机器学习领域,该章是我们学习并将机器学习技术应用到游戏中的极好开端。
第9章探究使用程序化内容生成来实现游戏可重玩性的几种不同技术。该章是生成不同类型的内容的指南。
第10章介绍一些新技术,以及使用前几章中学过的算法创建不完全符合特定类别的新行为。
◆ 作者简介 ◆
豪尔赫·帕拉西奥斯(Jorge Palacios)
软件开发者和游戏开发者,拥有计算机科学学士学位和8年的专业经验。近5年他担任过不同的游戏开发角色,从工具开发者到程序负责人。他主要专注于人工智能和游戏玩法编程,目前使用Unity和HTML5进行开发。他还是一位游戏编程导师、演讲者和游戏开发者大赛的活动组织者。
◆ 译者简介 ◆
童 明
雷蛇高级软件工程师,有十余年软件领域开发经验,前微软MVP(Windows开发平台最有价值专家),著有《Windows 8 应用开发实战》,译著有《Unity开发实战》和《Unity虚拟现实开发实战》。
Unity作为当今游戏开发的主流开发平台,结合时下火热的人工智能技术,必然能帮助游戏开发者碰撞出新的火花。本书涵盖了物体的智能移动、智能寻路、决策制定、地形生成、智能战术,模拟人的听觉、视觉、嗅觉的感知,棋类游戏的智能对手、机器学习、智能生成内容等技术,这些技术适用于多种类型的游戏,比如动作类游戏、冒险类游戏、战略游戏、策略游戏、棋类游戏等。作者将这些内容以实例的方式由浅入深地介绍给读者,让读者可以直观认识这些技术,并能够结合实战,真正掌握这些技术,而每个实例之后的原理性讲解,也能够帮助读者知其然且知其所以然。
前 言 Preface
当我们思考人工智能(AI)时,脑海中会涌入很多话题。从简单的诸如跟随或避开玩家的行为,到经典的“象棋对战”AI,再到机器学习抑或程序化内容生成中最前沿的技术。
谈论Unity意味着谈论游戏开发的大众化。得益于Unity的易用性、快节奏的技术演进、日益繁荣的开发者社区,以及新的云服务技术的出现,Unity已经成为游戏行业中最重要的软件之一。
基于这些考虑,写作本书的主要目的一是让读者在技术层面上深入理解Unity,遵循最佳实践和惯例,二是提供帮助读者领悟AI概念和技巧的理论知识,以便读者能够在这两方面获益,从而获得自身发展和专业提升。
本书将介绍构建强大的AI所需的工具,既可以创建更聪明的敌人,改进大 boss,也可以构建自定义的AI引擎。本书旨在成为使用Unity开发AI游戏的一站式参考。
欢迎踏上本次令人激动的旅程,了解各种对专业人员或者非专业人员来说非常有意义的内容—编程、游戏开发、AI,以及与其他开发者分享知识。想到你们将会阅读我的作品,我就无比地激动和喜悦,同时也非常感谢Packt团队给予我这个难得的机会。希望本书不仅能帮助你们在Unity和AI技术方面提升一个新的台阶,还能够将吸引玩家的新功能加入游戏中。
目标读者
本书的目标读者是已经具有一定的Unity基础知识,渴望获取更多的工具来解决AI和游戏玩法相关问题的人。
本书内容
第1章探究几个有趣的移动算法,这些算法基于Craig Reynolds与Ian Millington开发的转向行为(steering behavior)原则,是绝大多数高级游戏和其他一些依赖于移动的算法(比如寻路算法家族)的基础。
第2章涵盖了用于导航复杂场景的寻路算法。该章包含一些使用不同的图结构来表示游戏世界的方法,以及几个用于寻路的算法,每种算法针对的场景有所不同。
第3章解释不同的决策制定技术,这些技术能够灵活地适应不同类型的游戏,并且足够健壮地让我们构建模块化的决策制定系统。
第4章揭示Unity 5.6 中引入的NavMesh API的内部原理,解释如何掌握NavMesh的强大之处,以及实时优化。
第5章涉及几篇不同的教程,把不同的agent协调成一个整体,比如基于图表(如路径点和势力图)制定战术策略的编队技巧。
第6章探究了几种在agent上模拟感官刺激的不同方式。我们将学习如何使用已知的工具来创建这些模拟器:碰撞器和图。
第7章涵盖了用于开发棋类游戏的一个算法家族,以及创建AI的基于回合的游戏技术。
第8章探索机器学习领域,该章是我们学习并将机器学习技术应用到游戏中的极好开端。
第9章探究使用程序化内容生成来实现游戏可重玩性的几种不同技术。该章是生成不同类型的内容的指南。
第10章介绍一些新技术,以及使用前几章中学过的算法创建不完全符合特定类别的新行为。
如何充分利用本书
每一位具有编程背景的读者都能够从本书中获益良多。没有太多编程背景但有计算机科学坚实基础的人也能够从这些用Unity实现的示例中受益。
在开始之前,需要了解编程、数据结构,以及C#的基础知识。我们假设你能使用Unity创建脚本组件,并且已经开发过一些原型。
如果你已经从Unity的网站https://unity3d.com/learn/tutorials/s/scripting
了解过入门级和中级的游戏脚本,我们相信你将会从本书中受益匪浅。
书中代码用 Unity、Visual Studio 社区版和 Visual Studio Code 编写,后面两种的性能更好,并且在Windows和Mac操作系统上表现一致,而Unity一般只用于 Windows开发环境。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的代码包还托管在GitHub网站上,网址为https://github.com/PacktPublishing/Unity-2018-Artificial-Intelligence-Cookbook-Second-Edition,以便更新代码后你也能从GitHub仓库中获取最新代码。
目 录 Contents
译者序
前 言
第1章 行为——智能移动 1
1.1 简介 1
1.2 创建行为模板 2
1.3 追赶和逃跑 4
1.4 为物理引擎调整agent 6
1.5 到达和离开 8
1.6 朝向物体 10
1.7 徘徊 12
1.8 按路径移动 14
1.9 避开agent 18
1.10 避开墙体 20
1.11 通过权重混合多个行为 21
1.12 通过优先级混合多个行为 22
1.13 射击抛射体 24
1.14 预测抛射体的着地点 26
1.15 锁定抛射体 27
1.16 创建跳跃系统 28
第2章 导航 32
2.1 简介 32
2.2 用网格表示世界 33
2.3 用可视点法表示世界 41
2.4 用自制的导航网格表示世界 44
2.5 用深度优先搜索在迷宫中找到出路 47
2.6 用广度优先搜索在网格中找到最短路径 49
2.7 用迪杰斯特拉算法找到最短路径 50
2.8 用A*找到最优路径 53
2.9 改进A*算法的内存占用:IDA* 56
2.10 在多个帧中规划导航:时间片搜索 58
2.11 使路径变得平滑 60
第3章 决策制定 62
3.1 简介 62
3.2 通过决策树做选择 62
3.3 实现有限状态机 65
3.4 改进有限状态机:分层的有限状态机 67
3.5 实现行为树 69
3.6 使用模糊逻辑 71
3.7 用面向目标的行为制定决策 74
3.8 实现黑板架构 76
3.9 尝试Unity的动画状态机 78
第4章 新的NavMesh API 84
4.1 简介 84
4.2 初始化NavMesh开发组件 84
4.3 创建和管理NavMesh,用于多种类型的agent 86
4.4 在运行时创建和更新NavMesh数据 89
4.5 控制NavMesh实例的生命周期 90
4.6 连接多个NavMesh实例 92
4.7 创建动态的带有障碍物的NavMesh 93
4.8 用NavMesh API实现某些行为 94
第5章 协作和战术 97
5.1 简介 97
5.2 管理队形 98
5.3 扩展A*算法用于协作:A* mbush 102
5.4 用高度分析路径点 105
5.5 用覆盖性和可见性分析路径点 106
5.6 自动化创建路径点 107
5.7 将路径点作为示例用于决策制定 110
5.8 实现势力图 111
5.9 用淹没图改进势力图 114
5.10 用卷积滤波器改进势力图 118
5.11 构建战斗循环 120
第6章 agent感知 128
6.1 简介 128
6.2 基于碰撞系统的视觉函数 128
6.3 基于碰撞系统的听觉函数 130
6.4 基于碰撞系统的嗅觉函数 133
6.5 基于图的视觉函数 136
6.6 基于图的听觉函数 138
6.7 基于图的嗅觉函数 140
6.8 在潜行游戏中创建感知 141
第7章 棋类游戏和应用的搜索AI 148
7.1 简介 148
7.2 使用博弈树类 148
7.3 实现Minimax算法 150
7.4 实现Negamax算法 152
7.5 实现AB Negamax算法 154
7.6 实现Negascout算法 156
7.7 实现井字游戏对手 158
7.8 实现跳棋游戏对手 161
7.9 用UCB1实现石头剪刀布AI 171
7.10 实现无悔匹配算法 175
第8章 机器学习 178
8.1 简介 178
8.2 使用N元语法预测器预测行动 178
8.3 改进预测器:分层的N元语法 181
8.4 学习使用朴素贝叶斯分类器 182
8.5 实现强化学习 184
8.6 实现人工神经网络 188
第9章 程序化内容生成 192
9.1 简介 192
9.2 用深度优先搜索创建迷宫 192
9.3 为地下城和群岛实现可构造算法 195
9.4 生成风景 199
9.5 使用N元语法生成内容 201
9.6 用进化算法生成敌人 204
第10章 其他 209
10.1 简介 209
10.2 创建和管理可编写脚本的对象 209
10.3 更好地处理随机数 211
10.4 构建空气曲棍球游戏对手 213
10.5 实现竞速游戏架构 218
10.6 使用橡皮筋系统管理竞速难度 220