《AI游戏引擎程序设计》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)施瓦布著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2007
  • ISBN:730216312X
  • 页数:459 页
图书介绍:本书介绍设计现代AI游戏引擎的开发技术。

第Ⅰ部分 概述 3

第1章 基本定义与概念 3

1.1 什么是智能 3

1.2 什么是游戏AI 3

1.3 什么不是游戏AI 6

1.4 该定义与人工智能理论定义的区别 8

1.5 可应用的大脑科学与心理学理论 9

1.5.1 大脑的组织结构 9

1.5.2 知识库与学习 10

1.5.3 认知 12

1.5.4 心智理论 13

1.5.5 有限最优 19

1.5.6 来自机器人技术的启发 20

1.6 小结 22

第2章 AI引擎的基本组成与设计 23

2.1 决策与推理 23

2.1.1 解决方案的类型 24

2.1.2 智能体的反应能力 24

2.1.3 系统的真实性 24

2.1.4 游戏类型 25

2.1.5 游戏内容 25

2.1.6 游戏平台 25

2.1.7 开发限制 27

2.1.8 娱乐限制 28

2.2 输入处理机与感知 29

2.2.1 感知类型 29

2.2.2 更新规则 29

2.2.3 反应时间 30

2.2.4 门限 30

2.2.5 负荷平衡 30

2.2.6 计算代价与预处理 30

2.3 导航 31

2.3.1 基于网格 31

2.3.2 简单避免与位势场 32

2.3.3 地图节点网络 33

2.3.4 导航网格 33

2.3.5 组合系统 34

2.4 综合考虑 35

2.5 小结 36

第3章 AIsteroids:AI试验平台 37

3.1 GameObj类 38

3.2 GameObj类的Update()函数 39

3.3 Ship对象 40

3.4 其他游戏对象 41

3.5 GameSession类 42

3.5.1 主逻辑与碰撞检测 43

3.5.2 对象清除 45

3.5.3 主飞船和宝物的产生 45

3.5.4 奖励生命 46

3.5.5 级别和游戏的结束 46

3.6 Control类 47

3.7 AI系统钩子 47

3.8 游戏主循环 48

3.9 小结 48

第Ⅱ部分 游戏类型 53

第4章 角色扮演类游戏 53

4.1 通用AI元素 57

4.1.1 敌人 57

4.1.2 头目 58

4.1.3 非玩家角色 58

4.1.4 店员 59

4.1.5 队员 59

4.2 有用的AI技术 60

4.2.1 脚本 60

4.2.2 有限状态机 61

4.2.3 消息 62

4.3 示例 62

4.4 例外 63

4.5 需要改进的具体游戏元素 64

4.5.1 角色扮演不等于战斗 64

4.5.2 语法机器 64

4.5.3 任务发生器 65

4.5.4 更好的队员AI 65

4.5.5 更好的敌人 66

4.5.6 完全真实的市镇 67

4.6 小结 68

第5章 冒险类游戏 69

5.1 通用AI元素 70

5.1.1 敌人AI 70

5.1.2 非玩家角色 70

5.1.3 协作元素 71

5.1.4 感知系统 71

5.1.5 摄像机 71

5.2 有用的AI技术 71

5.2.1 有限状态机 71

5.2.2 脚本系统 72

5.2.3 消息系统 72

5.2.4 模糊逻辑 72

5.3 示例 73

5.4 需要改进的领域 74

5.4.1 潜行目标的附加类型 74

5.4.2 传统冒险根源的回归 74

5.4.3 更好的NPC通信 74

5.4.4 用户界面 74

5.5 小结 75

第6章 即时策略游戏 77

6.1 通用AI元素 77

6.1.1 个体单元 77

6.1.2 雇佣个体单元 78

6.1.3 指挥官与中级战略性元素 78

6.1.4 高层战略性AI 78

6.1.5 市镇构建 79

6.1.6 本土生活 79

6.1.7 路径搜索 79

6.1.8 战术与战略支撑系统 79

6.2 有用的AI技术 81

6.2.1 消息 81

6.2.2 有限状态机 81

6.2.3 模糊状态机 82

6.2.4 层次化AI 82

6.2.5 规划 82

6.2.6 脚本 82

6.2.7 数据驱动AI 83

6.3 示例 84

6.4 需要改进的领域 85

6.4.1 学习 85

6.4.2 确定AI元素何时受困 85

6.4.3 AI助手 86

6.4.4 对抗人物 86

6.4.5 多战略少战术 87

6.5 小结 88

第7章 第一人称/第三人称射击游戏 89

7.1 通用AI元素 91

7.1.1 敌人 91

7.1.2 敌人头目 92

7.1.3 死亡竞赛对手 92

7.1.4 武器 92

7.1.5 协作智能体 93

7.1.6 分队成员 93

7.1.7 路径搜索 93

7.1.8 空间推理 94

7.2 有用的AI技术 94

7.2.1 有限状态机 94

7.2.2 模糊状态机 97

7.2.3 消息系统 98

7.2.4 脚本系统 98

7.3 示例 98

7.4 需要改进的领域 99

7.4.1 学习与对手建模 99

7.4.2 个性 100

7.4.3 创造力 100

7.4.4 预测 100

7.4.5 更好的会话引擎 101

7.4.6 动机 101

7.4.7 更好的分队AI 101

7.5 小结 101

第8章 平台游戏 103

8.1 通用AI元素 108

8.1.1 敌人 108

8.1.2 敌人头目 108

8.1.3 协作元素 108

8.1.4 摄像机 109

8.2 有用的AI技术 110

8.2.1 有限状态机 110

8.2.2 消息系统 110

8.2.3 脚本系统 110

8.2.4 数据驱动系统 110

8.3 示例 110

8.4 需要改进的领域 111

8.4.1 摄影技巧 111

8.4.2 帮助系统 111

8.5 小结 112

第9章 射击类游戏 113

9.1 通用AI元素 118

9.1.1 敌人 118

9.1.2 敌人头目 118

9.1.3 协作元素 119

9.2 有用的AI技术 119

9.2.1 有限状态机 119

9.2.2 脚本系统 119

9.2.3 数据驱动系统 119

9.3 例外 120

9.4 示例 120

9.5 需要改进的领域 121

9.6 小结 122

第10章 运动类游戏 123

10.1 通用AI元素 124

10.1.1 教练或团队级别AI 124

10.1.2 玩家级别AI 124

10.1.3 路径搜索 125

10.1.4 摄像机 125

10.1.5 混杂元素 126

10.2 有用的AI技术 127

10.2.1 有限状态机与模糊状态机 127

10.2.2 数据驱动系统 133

10.2.3 消息系统 134

10.3 示例 134

10.4 需要改进的领域 135

10.4.1 学习 135

10.4.2 游戏平衡 135

10.4.3 玩法创新 135

10.5 小结 136

第11章 赛车游戏 139

11.1 通用AI元素 140

11.1.1 轨迹AI 140

11.1.2 交通 141

11.1.3 行人 142

11.1.4 敌人与战斗 142

11.1.5 非玩家角色 142

11.1.6 其他竞争行为 142

11.2 有用的AI技术 143

11.2.1 有限状态机 143

11.2.2 脚本系统 143

11.2.3 消息系统 143

11.2.4 遗传算法 143

11.3 示例 143

11.4 需要改进的领域 144

11.4.1 除犯罪以外的其他感兴趣领域 144

11.4.2 更多的智能AI敌人 144

11.4.3 永不落幕的游戏世界 144

11.5 小结 145

第12章 经典策略游戏 147

12.1 通用AI元素 156

12.1.1 对手AI 156

12.1.2 AI助手 157

12.2 有用的AI技术 157

12.2.1 有限状态机 157

12.2.2 Alpha-Beta搜索 157

12.2.3 神经网络 158

12.2.4 遗传算法 158

12.3 例外 158

12.4 示例 158

12.5 需要改进的领域 159

12.5.1 创造力 159

12.5.2 速度 159

12.6 小结 159

第13章 格斗类游戏 161

13.1 通用AI元素 162

13.1.1 敌人 162

13.1.2 碰撞系统 163

13.1.3 敌人头目 163

13.1.4 摄像机 163

13.1.5 动作和冒险元素 164

13.2 有用的AI技术 164

13.2.1 有限状态机 164

13.2.2 数据驱动系统 164

13.2.3 脚本系统 164

13.3 示例 165

13.4 需要改进的领域 165

13.5 小结 166

第14章 著名的混杂游戏类型 167

14.1 文明游戏 167

14.2 天神游戏 174

14.3 战争游戏 177

14.4 飞行模拟游戏 181

14.5 音乐游戏 186

14.6 益智游戏 186

14.7 人工生命游戏 187

第Ⅲ部分 基本的AI引擎技术 193

第15章 有限状态机 193

15.1 FSM概述 193

15.2 FSM骨架代码 197

15.2.1 FSMState类 197

15.2.2 FSMMachine类 198

15.2.3 FSMAIControl类 199

15.3 在试验平台上实现FSM控制的飞船 200

15.4 示例实现 201

15.4.1 Control类编码 202

15.4.2 状态编码 204

15.5 使用该系统的AI的性能 213

15.5.1 基于FSM系统的优势 213

15.5.2 基于FSM系统的劣势 214

15.6 范例扩展 215

15.6.1 层次化FSM 215

15.6.2 基于消息和事件的FSM 216

15.6.3 具有模糊转换的FSM 216

15.6.4 基于堆栈的FSM 216

15.6.5 多重并发FSM 217

15.6.6 数据驱动FSM 217

15.6.7 惯性FSM 218

15.7 最优化 219

15.7.1 FSM和感知的负荷平衡 219

15.7.2 LOD AI系统 219

15.7.3 共享数据结构 220

15.8 设计上考虑的因素 220

15.8.1 解决方案的类型 221

15.8.2 智能体的反应能力 221

15.8.3 系统的真实性 221

15.8.4 游戏类型 221

15.8.5 游戏内容 222

15.8.6 游戏平台 222

15.8.7 开发限制 222

15.8.8 娱乐限制 222

15.9 小结 223

第16章 模糊状态机 225

16.1 FuSM概述 225

16.2 FuSM骨架代码 228

16.2.1 FuSMState类 228

16.2.2 FuSMMachine类 230

16.2.3 FuSMAIControl类 231

16.3 在试验平台上实现FuSM控制的飞船 232

16.4 示例实现 232

16.4.1 添加Saucer 232

16.4.2 其他的游戏修改 233

16.4.3 FuSM系统 233

16.5 控制类编码 234

16.6 使用该系统的AI的性能 241

16.6.1 基于FuSM系统的优势 241

16.6.2 基于FuSM系统的劣势 242

16.7 范例扩展 243

16.7.1 有限数量当前状态的FuSM 243

16.7.2 作为角色支持系统的FuSM 243

16.7.3 在较大FSM中作为单一状态的FuSM 244

16.7.4 层次化FuSM 244

16.7.5 数据驱动FuSM 244

16.8 最优化 245

16.9 设计上考虑的因素 245

16.9.1 解决方案的类型 245

16.9.2 智能体的反应能力 245

16.9.3 系统的真实性 245

16.9.4 游戏类型 246

16.9.5 游戏平台 246

16.9.6 开发限制 246

16.9.7 娱乐限制 246

16.10 小结 246

第17章 基于消息的系统 249

17.1 消息概述 249

17.2 消息的骨架代码 250

17.2.1 Message对象 250

17.2.2 MessagePump类 251

17.3 客户端句柄 255

17.4 在AIsteroids试验平台上的示例实现 256

17.4.1 MessState类 256

17.4.2 MessMachine类 257

17.4.3 MessAIControl类 258

17.5 状态编码 262

17.6 使用该系统的AI的性能 265

17.6.1 消息系统的优势 265

17.6.2 消息系统的劣势 266

17.7 范例扩展 266

17.7.1 消息优先级 266

17.7.2 消息仲裁 267

17.7.3 自动和扩展的消息类型 267

17.8 最优化 268

17.9 设计上考虑的因素 268

17.9.1 解决方案的类型 268

17.9.2 智能体的反应能力 268

17.9.3 系统的真实性 268

17.9.4 游戏类型和平台 268

17.9.5 开发限制 269

17.9.6 娱乐限制 269

17.10 小结 269

第18章 脚本系统 271

18.1 脚本概述 271

18.2 AIsteroids测试平台中的脚本实现 272

18.2.1 一种配置脚本语言 273

18.2.2 配置脚本系统的AI性能分析 278

18.2.3 游戏中Lua的嵌入 278

18.3 Lua在AIsteroids测试平台中的实现 286

18.4 Lua脚本系统的AI性能分析 290

18.5 脚本系统的优点 290

18.5.1 快速原型开发 290

18.5.2 更低的门槛 291

18.5.3 更快的AI调试速度 291

18.5.4 更多的用户扩展手段 291

18.5.5 更广的适用范围 291

18.6 脚本系统的缺点 291

18.6.1 执行速度 292

18.6.2 调试难度 292

18.6.3 脚本作用 292

18.6.4 宿主代码和脚本的功能划分 293

18.6.5 需维护的系统数量 293

18.7 范例扩展 294

18.7.1 自定义语言 294

18.7.2 内建调试工具 294

18.7.3 智能脚本IDE 294

18.7.4 游戏脚本自动集成 295

18.7.5 自主修改脚本 295

18.8 优化 295

18.9 设计上考虑的因素 296

18.9.1 解决方案的类型 296

18.9.2 智能体的反应能力 296

18.9.3 系统的真实性 296

18.9.4 游戏类型和平台 297

18.9.5 开发限制 297

18.9.6 娱乐限制 297

18.10 小结 297

第19章 基于位置的信息系统 299

19.1 基于位置的信息系统概述 299

19.1.1 影响图技术(IM) 299

19.1.2 智能地形技术(Smart Terrain) 300

19.1.3 地形分析技术(Terrain Analysis,TA) 301

19.2 各种技术的使用方法 301

19.2.1 占用数据 301

19.2.2 场地控制 301

19.2.3 探路系统的辅助数据 302

19.2.4 危险预警 302

19.2.5 初步战场计划 303

19.2.6 简单战场分析 303

19.2.7 高级战场分析 303

19.3 影响图框架代码及测试平台实现 305

19.3.1 占用影响图 310

19.3.2 占用IM测试平台的使用 314

19.3.3 控制影响图 315

19.3.4 控制IM测试平台的使用 318

19.3.5 逐位影响图 319

19.3.6 逐位IM测试平台的使用 324

19.3.7 其他实现 324

19.4 基于位置的信息系统的优点 326

19.5 基于位置的信息系统的缺点 326

19.6 范例扩展 326

19.7 优化 326

19.8 设计上考虑的因素 327

19.8.1 解决方案的类型 327

19.8.2 智能体的反应能力 327

19.8.3 系统的真实性 327

19.8.4 游戏类型和平台 328

19.8.5 开发限制 328

19.8.6 娱乐限制 328

19.9 小结 328

第Ⅳ部分 高级AI引擎技术 331

第20章 遗传算法 331

20.1 遗传算法概述 331

20.1.1 自然进化规律 331

20.1.2 游戏中的进化 332

20.1.3 遗传算法基本过程 333

20.2 问题的表示 334

20.2.1 基因和基因组 335

20.2.2 适应度函数 336

20.2.3 繁殖 337

20.3 AIsteroids测试平台中遗传算法的实现 342

20.4 遗传算法在测试平台中的性能 354

20.5 基于遗传算法的系统的优点 356

20.6 基于遗传算法的系统的缺点 357

20.6.1 时间代价较大 357

20.6.2 算法性能随机性大 357

20.6.3 结果成败定义模糊 358

20.6.4 最优解不能保证 358

20.6.5 参数调试和扩展难度大 358

20.7 范例扩展 358

20.7.1 蚁群算法 358

20.7.2 协同进化 359

20.7.3 自适应遗传算法 359

20.7.4 遗传程序设计 359

20.8 设计上考虑的因素 360

20.8.1 解决方案的类型 360

20.8.2 智能体的反应能力 360

20.8.3 系统的真实性 360

20.8.4 游戏类型 360

20.8.5 平台 361

20.8.6 开发限制 361

20.8.7 娱乐限制 361

20.9 小结 361

第21章 神经网络 363

21.1 自然中的神经网络 363

21.2 人工神经网络概述 364

21.3 神经网络的使用 366

21.3.1 结构 366

21.3.2 学习机制 367

21.3.3 创建训练数据 368

21.4 神经网络活动 368

21.5 在AIsteroids测试平台上实现神经网络 371

21.5.1 NeuralNet类 371

21.5.2 NLayer类 375

21.5.3 NNAIControl类 379

21.6 测试平台的性能 384

21.7 优化 385

21.8 基于神经网络的系统的优点 386

21.9 基于神经网络的系统的缺点 386

21.10 范例扩展 387

21.10.1 其他类型的神经网络 388

21.10.2 神经网络学习的其他类型 388

21.11 设计上考虑的因素 389

21.11.1 解决方案的类型 389

21.11.2 智能体的反应能力 389

21.11.3 系统的真实性 389

21.11.4 游戏类型和平台 390

21.11.5 开发限制 390

21.11.6 娱乐限制 390

21.12 小结 390

第22章 其他技术备忘录 393

22.1 人工生命 393

22.1.1 人工生命在游戏中的用途 394

22.1.2 人工生命学科 394

22.1.3 优点 395

22.1.4 缺点 396

22.1.5 游戏设计可以开发的领域 396

22.2 规划算法 396

22.2.1 当前在游戏中的使用状况 397

22.2.2 优点 398

22.2.3 缺点 399

22.2.4 游戏设计可以开发的领域 399

22.3 产生式系统 400

22.3.1 优点 401

22.3.2 缺点 401

22.3.3 游戏设计可以开发的领域 401

22.4 决策树 402

22.4.1 优点 403

22.4.2 缺点 403

22.4.3 游戏设计可以开发的领域 404

22.5 模糊逻辑 404

22.5.1 优点 406

22.5.2 缺点 406

22.5.3 游戏设计可以开发的领域 406

22.6 小结 406

第Ⅴ部分 AI实战游戏开发 411

第23章 分层式AI设计 411

23.1 基本回顾 411

23.2 分层式层结构 412

23.2.1 重现前述示例 413

23.2.2 感知和事件层 414

23.2.3 行为层 414

23.2.4 动画层 415

23.2.5 运动层 417

23.2.6 短期决策层(ST) 418

23.2.7 长期决策层(LT) 418

23.2.8 基于位置的信息层 418

23.3 BROOKS包容式体系结构 419

23.4 游戏层次分解 419

23.4.1 目标 419

23.4.2 分层式超级玛莉 420

23.4.3 AI怪物的实现 420

23.4.4 AI玩家的实现 424

23.5 小结 427

第24章 AI开发中普遍关心的问题 429

24.1 有关设计的问题 429

24.1.1 数据驱动系统设计时需考虑的问题 429

24.1.2 “一根筋”(OTM)综合症 431

24.1.3 多细节层次(LOD)AI 432

24.1.4 支持AI 434

24.1.5 通用AI设计思想 435

24.2 有关娱乐的问题 436

24.2.1 所有重要的趣味性因素 436

24.2.2 随机感 437

24.2.3 一些令AI系统看上去非常愚蠢的因素 438

24.3 有关产品的问题 439

24.3.1 保持AI行为的一致性 439

24.3.2 提前思考游戏参数的调试问题 440

24.3.3 预防AI系统的未知行为 440

24.3.4 注意设计人员工具使用方式的差异性 441

24.4 小结 441

第25章 调试 443

25.1 AI系统的通用调试 443

25.2 可视化调试 443

25.2.1 提供各种信息 443

25.2.2 有助于调试 444

25.2.3 时序信息 444

25.2.4 监视状态转变 444

25.2.5 有助于控制台调试 444

25.2.6 调试脚本语言 444

25.2.7 双功能影响图 444

25.3 Widget 445

25.3.1 实现 445

25.3.2 BasicButton 448

25.3.3 Watcher 449

25.3.4 RadioButton 449

25.3.5 OnOffButton 450

25.3.6 ScrubberWidget 451

25.3.7 程序集成 452

25.4 小结 456

第26章 总结与展望 457

26.1 AI引擎设计总结 457

26.2 AI游戏的未来展望 457

附录 有关CD-ROM的说明 459