《游戏核心算法编程内幕》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(西班牙)Danielsanchez-crespoDalmau编著;邱仲潘译
  • 出 版 社:北京:中国环境科学出版社;北京希望电子出版社
  • 出版年份:2004
  • ISBN:7801638891
  • 页数:514 页
图书介绍:本书介绍了游戏编程,介绍了市面上大多数计算机与视频游戏的基本算法与技术,介绍了游戏编程理论和许多PC与控制台上的AAA级产品实现细节,是一本游戏编程导论课教材。

目录 2

第一部分 游戏编程 2

第1章 游戏编程时间表 2

1.1 第一阶段:“星球大战”之前 2

1.2 第二阶段:从“星球大战”到Atari 5

1.3 第三阶段:游戏控制台与个人计算机 6

1.3.1 游戏控制台与游戏开发人员 6

1.3.2 个人计算机 8

1.4 第四阶段:调整与汇总 9

1.5 第五阶段:游戏引擎的出现 11

1.6 第六阶段:手指式革命 14

1.7 第七阶段:移动现象 15

1.8 第八阶段:多方游戏 16

1.9 结束语 17

第2章 游戏体系结构 19

2.1 实时软件 19

2.2 游戏逻辑段 24

2.2.1 玩家更新 24

2.2.2 世界更新 25

2.3 显示段 26

2.3.2 NPC绘制 27

2.3.1 世界绘制 27

2.3.3 玩家 28

2.3.4 问题:网络游戏 29

2.4 编程过程 30

关卡 30

2.5 结束语 36

第3章 数据结构与算法 37

3.1 类型、结构和类 37

3.2 数据结构 39

3.2.1 静态数组 39

3.2.2 链表 40

3.2.3 双向链表 41

3.2.4 队列 42

3.2.5 堆栈 43

3.2.6 双头队列 43

3.2.7 表 44

3.2.8 树 47

3.2.9 优先队列 51

3.2.10 图 52

3.3 标准模板库 54

3.3.1 容器 55

3.3.2 迭代器 58

3.4 结束语 59

4.1 设计模式定义 60

第4章 设计模式 60

4.2 一些重要编程模式 61

4.2.1 单体模式 61

4.2.2 策略模式 62

4.2.3 工厂模式 64

4.2.4 空间索引 66

4.2.5 复合模式 69

4.2.6 轻量级模式 72

4.3 可用性模式 74

4.3.1 屏蔽模式 74

4.3.4 磁化 75

4.3.5 焦点模式 75

4.3.2 状态模式 75

4.3.3 自动方式取消 75

4.3.6 进程模式 76

4.4 结束语 76

第5章 用户输入 77

5.1 键盘 77

5.2 鼠标 82

5.3 游戏杆 85

5.4 硬件抽象 90

5.5 力量反馈 92

5.6 结束语 93

第6章 基本人工智能技术 94

6.1 情境 94

6.2 人工智能系统结构 95

6.2.1 感知世界 96

6.2.2 记忆 96

6.2.3 分析/推理核心 96

6.2.4 动作/输出系统 97

6.3 特定技术 97

6.3.1 有限状态机 97

6.3.2 规则系统 106

6.3.3 规划与解题 113

6.3.4 生物灵感人工智能 115

6.4 结束语 119

第7章 面向动作的人工智能 120

7.1 动作游戏 120

7.2 动作设计人工智能 120

7.3 对象跟踪 122

7.3.1 眼睛接触:二维半平面测试 122

7.3.2 三维版本:半球 124

7.4 追赶 125

7.4.1 二维追赶:固定速度 125

7.4.2 预测性追赶 126

7.5 逃避 127

7.7 隐藏与遮盖 128

7.6 巡逻 128

7.8 射击 129

7.8.1 无限速度瞄准 129

7.8.2 实际瞄准 130

7.8.3 机关枪 131

7.9 综合起来 132

7.9.1 并行自动化 132

7.9.2 AI同步 133

7.10 结束语 134

7.10.1 平台游戏 134

7.10.2 射击游戏 135

7.10.4 赛车游戏 136

7.10.3 格斗游戏 136

第8章 战术性人工智能 137

8.1 战术性思维 137

8.1.1 路径寻找 138

8.1.2 团队活动 147

8.2 军事分析:影响图 149

8.2.1 数据结构 149

8.2.2 一些重要测试 150

8.3 表示战术 151

8.4 结束语 154

第9章 脚本 155

9.1.1 简单分析语言 156

9.1 建立脚本语言 156

9.1.2 分析结构化语言 162

9.2 嵌入语言 165

9.2.1 学习Lua 165

9.2.2 Java脚本 171

9.3 基于套接的脚本 173

9.4 结束语 175

第10章 网络编程 176

10.1 Internet的实际工作 176

10.2 从编程人员角度看套接 177

10.3.1 简单TCP客户机 178

10.3 客户机 178

10.3.2 简单UDP客户机 181

10.4 简单TCP服务器 183

10.5 多客户机服务器 185

10.5.1 并发的面向连接服务器 185

10.5.2 迭代的面向连接服务器 187

10.6 UDP服务器 188

10.7 防止套接受阻 189

10.8 设计客户机/服务器游戏 190

10.9 大量用户的多方游戏 191

10.9.1 数据外推 191

10.9.3 空间分割 193

10.9.2 层次消息 193

10.9.4 发送状态改变 194

10.9.5 使用服务器群集 195

10.9.6 动态服务器与勇士综合症 195

10.10 结束语 196

第二部分 引擎编程 198

第11章 二维游戏编程 198

11.1 旧式硬件 198

11.2 二维游戏的数据结构 199

11.3 贴图矩阵 201

地砖表 202

11.4.1 屏幕游戏 203

11.4 二维游戏算法 203

11.4.2 双向与四向卷轴 204

11.4.3 多方引擎 206

11.4.4 视差卷轴 207

11.4.5 各向异性引擎 208

11.4.6 翻页卷轴 210

11.5 特殊效果 211

11.5.1 调色板效果 211

11.5.2 点刻效果 215

11.5.3 灰贴 216

11.5.4 火 216

11.6 结束语 217

第12章 三维管道概述 218

12.1 简介 218

12.2 基本数据类型 219

12.2.1 顶点 219

12.2.2 索引图元 219

12.2.3 颜色 223

12.2.4 纹理贴图 223

12.3 几何格式 224

12.4 一般性图形管道 225

12.4.1 剪取 226

12.4.2 挑选 230

12.4.3 闭合测试 232

12.4.4 确定分辨率 234

12.4.5 变换与灯光 237

12.4.6 光栅化 238

12.5 结束语 240

第13章 室内绘制 241

13.1 一般分析 241

13.2 基于闭合的算法 242

13.3 二叉空间划分算法 243

13.3.1 构造 243

13.3.2 视图相关排序 250

13.3.3 层次式剪取 251

13.3.4 闭合探测 252

13.3.5 绘制 253

13.4 门户绘制 254

13.5 层次式闭合图 258

13.6 混合方法 259

13.6.1 门户/八叉树混合 259

13.6.2 四叉树/BSP混合 259

13.7 硬件辅助闭合测试 260

13.8 结束语 262

14.1 概述 263

第14章 户外算法 263

14.2 户外绘制的数据结构 264

14.2.1 高度域 264

14.2.2 四叉树 265

14.2.3 二叉三角形树 266

14.3 几何贴图 267

14.4 ROAM 269

14.4.1 第一遍:构造变差树 269

14.4.2 第二遍:网格重构 270

14.4.3 优化 272

14.5 块LOD 273

14.6 以GPU为中心的方法 275

14.7 户外视景图 277

14.8 结束语 278

第15章 角色动画 279

15.1 分析 279

15.2 显式与隐式方法 279

15.3 显式动画技术 280

15.3.1 帧动画 281

15.3.2 关键帧动画 281

15.3.3 标记插值 283

15.4 隐式动画概述 286

15.4.1 正向动力学 287

15.4.2 框架动画的数学 288

15.4.3 硬件辅助框架动画 289

15.5 道具处理 292

15.6 关于机车 293

15.7 四肢分解 293

15.8 面部动画 294

15.9 逆向动力学 295

15.9.1 分析逆向动力学 296

15.9.2 循环坐标派生 298

15.10 混合正向与逆向动力学 299

15.11 结束语 299

16.1 第一人称视角射击游戏 300

第16章 制片术 300

16.2 处理惯性 301

16.3 飞行模拟器与四元数 303

16.4 第三人称视角镜头 307

16.5 制片镜头:镜头样式 311

16.6 制片镜头:位置算法 314

16.6.1 选择镜头目标 315

16.6.2 选择相关信息 315

16.6.3 选择视图角度 317

16.7 基于agent的方法 317

16.8 结束语 318

17.1 实际照明 319

第17章 色档 319

17.1.1 简单绘制方程 320

17.1.2 按顶点与按像素照明 322

17.2 灯光贴图 323

17.2.1 扩散贴图 323

17.2.2 镜面贴图 323

17.2.3 使用灯光图的全局照明 324

17.2.4 实现光贴图:DirectX 325

17.2.5 用DirectX实现灯光贴图 326

17.2.6 生成灯光贴图 332

17.3 BRDF 335

17.3.2 阴影 339

17.3.1 平均向量 339

17.4.1 铅笔绘制 347

17.4 非照片真实绘制 347

17.4.2 外形线绘制 348

17.4.3 划线外形 348

17.4.4 单帧色档 349

17.4.5 油画绘制 349

17.5 结束语 350

第18章 纹理贴图 351

18.1 纹理类型 351

18.1.1 纹理贴图 352

18.1.4 球形贴图 353

18.1.2 XYZ贴图 353

18.1.3 圆柱贴图 353

18.1.5 三角形纹理贴图 354

18.2 平铺与贴花 355

18.3 过滤 355

18.4 Mip贴图 356

18.5 纹理优化 357

18.5.1 纹理压缩 359

18.5.2 纹理缓存与分页 359

18.6 多遍方法 360

18.7 多纹理 363

18.8 纹理运算与组合 364

18.10 环境贴图 370

18.9 细节纹理 370

18.11 鼓包贴图 371

18.11.1 浮雕鼓包贴图 371

18.11.2 Dot3鼓包贴图 372

18.12 上光贴图 373

18.13 结束语 374

第19章 微粒系统 375

19.1 微粒系统剖析 375

19.2 微粒数据结束 376

19.2.2 派生微粒 377

19.2.1 一般性微粒系统 377

19.2.3 微粒行为 379

19.2.4 微粒消除 382

19.2.5 绘制微粒 382

19.3 关于体系结构 384

19.4 加速技术 386

19.4.1 避免内存分配与释放 386

19.4.2 空间索引 387

19.4.3 LOD微粒系统 387

19.4.4 基于色档的微粒系统 388

19.5 结束语 388

20.1 自然与细节 389

第20章 有机构绘制 389

20.2 树 390

20.2.1 告示牌 390

20.2.2 基于图像方法 391

20.2.3 平行IBR方法 391

20.2.4 正交IBR方法 392

20.3 草 394

20.3.1 分层草 395

20.3.2 统计分布算法 395

20.4.3 容积云 397

20.4.2 招贴板云 397

20.4.1 天框与园顶 397

20.4 云 397

20.5 海洋 398

20.5.1 逼真海洋几何 398

20.5.2 海洋外观 399

20.5.3 焦散性 399

20.6 结束语 402

第21章 过程性技术 403

21.1 过程性列表 403

21.2 Renderman 404

21.3 实时色档语言 407

21.4 色档程序类型 408

21.3.4 GL2色档语言 408

21.3.2 Cg 408

21.3.3 HLSL 408

21.3.1 当前语言 408

21.4.1 色档程序集合 409

21.4.2 几何效果 409

21.4.3 灯光 410

21.5 纹理贴图 413

21.6 微粒系统 415

21.7 动画 416

21.8 特殊效果 421

21.9 结束语 423

22.1.1 球上的点 424

22.1 点包括测试 424

第22章 几何算法 424

22.1.2 AABB中的点 425

22.1.3 凸多边形的点 426

22.1.4 多边形的点 427

(凹与凸):约当法 427

22.1.5 曲线定理 427

22.1.6 凸实体的点 428

22.1.7 实体的点(约当曲线定理) 428

22.2 光束相交测试 429

22.2.1 光束平面 429

22.2.3 光AABB测试 430

22.2.2 光三角形 430

22.2.4 光球测试 431

22.2.5 光凸形外壳 432

22.2.6 光一般实体(三维DDA) 432

22.3 运动测试 432

22.4 点与三角形集合碰撞(基于BSP) 434

22.5 网格与网格(清扫与修剪方法) 434

22.6 计算凸形外壳 435

22.6.1 二维方案 435

22.6.2 三维方案 436

22.7 三角形简化 436

22.7.3 递进网格 437

22.7.1 顶点重合 437

22.7.2 边重合 437

22.7.4 非保守式三角形简化 438

22.8 结束语 440

第三部分 附录 442

附录A 性能调整 442

附录B OpenGL 458

附录C Direct3D 484

附录D 数学知识 500

附录E 更多读物 510