第1章 简介 1
1.1 关于本书 2
1.2 背景 2
1.3 本书作者 3
1.4 本书读者 3
1.5 内容概要 4
1.6 游戏发展的简要历史 4
1.6.1 遗忘的历史 4
1.6.2 学院派的天下 5
1.6.3 成长中的游戏 7
1.6.4 从卧室到会议室 8
1.6.5 总结 9
第2章 游戏开发过程 10
2.1 开发原则 11
2.1.1 适用范围 11
2.1.2 逐步求精 12
2.1.3 统计结论 13
2.1.4 避免重复犯错 14
2.1.5 善用成功经验 14
2.1.6 避免简单重复 15
2.1.7 全面考虑问题 15
2.2 现实的约束 15
2.2.1 金钱的压力 16
2.2.2 黑客宪章 17
2.2.3 游戏开发的独特性 20
2.2.4 结论 22
2.3 总结 23
第3章 游戏开发中的软件工程 24
3.1 团队开发文化的缺失 25
3.2 管理文化的混乱 25
3.3 程序开发之道 26
3.3.1 从卧室到办公室 27
3.3.2 程序员的工作实践 28
3.3.3 软件标准 29
3.3.4 出色的工作实践 31
3.3.5 出色的编程实践 31
3.3.6 代码重用 34
总结 38
3.3.7 相关性:地狱的诅咒 38
3.3.8 重用粒度 45
3.3.9 什么时候不需要重用 50
3.4 开发语言的选择 50
3.4.1 面向对象的四个特征 51
3.4.2 更好地使用C++ 54
3.4.3 标准模板库 57
3.4.4 模板 58
3.5 C++编码策略 61
3.5.1 概述 61
3.5.2 策略 62
总结 64
第4章 游戏中的面向对象设计 65
4.1 符号 66
4.1.1 类 66
4.1.2 关系 67
4.2 设计过程 68
4.2.1 第一阶段:集思广益 69
4.2.2 第二阶段:修剪概念树 69
4.2.3 第三阶段:画泡泡和线 71
4.2.4 第四阶段:验证设计 72
4.3 模式 73
4.3.1 接口 74
4.3.2 单实例类 78
4.3.3 对象工厂 86
4.3.4 管理类 92
4.3.5 访问器/迭代器 93
4.3.6 稻草人 101
4.3.7 原型 104
4.3.8 俄罗斯娃娃 108
4.4 总结 130
第5章 游戏开发的组件模型 131
5.1 游戏引擎 132
5.2 动机 132
5.2.1 游戏引擎的局限性 132
5.2.2 替代方案 133
5.3 部分指导原则 135
5.3.1 保持局部化 135
5.3.2 分离数据及其可视表示 137
5.3.3 分离静态数据和动态数据 139
5.3.4 避免不合逻辑的相关性 144
5.3.5 避免使用线程 145
5.4 组件 146
5.4.1 命名规范 146
5.4.2 组件的应用 146
5.4.3 容器组件 148
5.4.4 数学组件 154
5.4.5 文字和语言处理 173
5.4.6 图形 176
5.4.7 PRIM 181
5.4.8 碰撞检测 184
5.4.9 资源管理 186
5.4.10 牛顿物理 200
5.4.11 网络游戏 215
5.4.12 小结 221
5.5 总结 221
第6章 跨平台游戏开发 223
6.1 导言 224
6.1.1 成本分析 224
6.1.2 常见编译错误 225
6.1.3 能力相同,方法不同 229
6.1.4 具有不同能力的平台 245
6.1.5 跨平台组件架构 248
6.2 总结 259
第7章 游戏对象 260
7.1 游戏对象的基本概念 261
7.1.1 松散的层次 261
7.1.2 浅层次 262
7.1.3 垂直层次 263
7.1.4 混合继承 268
7.2 游戏对象管理 275
7.2.1 创建和析构 275
7.2.2 引用 289
7.2.3 永久性破坏 305
7.3 总结 320
第8章 设计驱动的控制 321
8.1 脚本与游戏代码分离 322
8.2 简化高层行为的创建和管理 323
8.2.1 一个行为模式 324
8.2.2 基于任务的控制 327
8.3 事件管理的详细设计 333
8.4 语言问题 339
8.5 总结 340
第9章 迭代开发策略 341
9.l 导言 342
9.1.1 为任务设定优先级 342
9.1.2 虚线有多长 342
9.2 增量提交 343
9.2.1 悬在脖子上的里程碑 343
9.2.2 内部和外部的里程碑 343
9.2.3 进度的克星 344
9.2.4 永远提前一步 344
9.3 迭代式提交 345
9.3.1 细水长流 350
9.3.2 利用优先级和版本来排序 351
9.3.3 迭代提交系统的调度 354
9.4 总结 355
第10章 游戏职责分工 356
10.1 文化隔阂 357
10.2 编程团队 358
10.2.1 编程分工 358
10.2.2 吸收新成员 362
10.2.3 游戏生产周期 362
10.3 美工团队 364
10.3.1 美工职能分工 364
10.4 设计团队 367
10.4.1 设计风险管理 367
10.4.2 设计人员 370
10.5 汇总 371
10.6 总结 372
第11章 案例分析:Cordite 373
11.1 技术分析 374
11.1.1 底层文件管理 374
11.1.2 对象流 378
11.1.3 碰撞检测 379
11.1.4 脚本行为 381
11.1.5 游戏对象 384
11.1.6 玩家控制 387
11.1.7 粒子 389
11.1.8 其他话题 397
11.2 总结 399
附录A 本书采用的命名方式 400
参考文献 401
网络资源 402