游戏开发一直是热门的领域,掌握良好的游戏编程模式是开发人员的应备技能。本书细致地讲解了游戏开发需要用到的各种编程模式,并提供了丰富的示例。
《Game Programming Patterns》共分20章,通过三大部分内容全面介绍了与游戏编程模式相关的各类知识点。首部分介绍了基础知识和框架;第二部分深入探索设计模式,并介绍了模式与游戏开发之间的关联;第三部分介绍了13种有效的游戏设计模式。
本书提供了丰富的代码示例,通过理论和代码示例相结合的方式帮助读者更好地学习。无论是游戏领域的设计人员、开发人员,还是想要进入游戏开发领域的学生和普通程序员,都可以阅读本书。
目录
- 第1篇 概述
- 第1章 架构,性能和游戏 3
- 1.1 什么是软件架构 3
- 1.1.1 什么是好的软件架构 3
- 1.1.2 你如何做出改变 4
- 1.1.3 我们如何从解耦中受益 5
- 1.2 有什么代价 5
- 1.3 性能和速度 6
- 1.4 坏代码中的好代码 7
- 1.5 寻求平衡 8
- 1.6 简单性 9
- 1.7 准备出发 9
- 第2篇 再探设计模式
- 第2章 命令模式 13
- 2.1 配置输入 14
- 2.2 关于角色的说明 16
- 2.3 撤销和重做 18
- 2.4 类风格化还是函数风格化 21
- 2.5 参考 22
- 第3章 享元模式 23
- 3.1 森林之树 23
- 3.2 一千个实例 25
- 3.3 享元模式 26
- 3.4 扎根之地 26
- 3.5 性能表现如何 30
- 3.6 参考 31
- 第4章 观察者模式 33
- 4.1 解锁成就 33
- 4.2 这一切是怎么工作的 34
- 4.2.1 观察者 35
- 4.2.2 被观察者 35
- 4.2.3 可被观察的物理模块 37
- 4.3 它太慢了 38
- 4.4 太多的动态内存分配 39
- 4.4.1 链式观察者 39
- 4.4.2 链表节点池 42
- 4.5 余下的问题 43
- 4.5.1 销毁被观察者和观察者 43
- 4.5.2 不用担心,我们有GC 44
- 4.5.3 接下来呢 44
- 4.6 观察者模式的现状 45
- 4.7 观察者模式的未来 46
- 第5章 原型模式 47
- 5.1 原型设计模式 47
- 5.1.1 原型模式效果如何 50
- 5.1.2 生成器函数 51
- 5.1.3 模板 51
- 5.1.4 头等公民类型(First-class types) 52
- 5.2 原型语言范式 52
- 5.2.1 Self 语言 53
- 5.2.2 结果如何 54
- 5.2.3 JavaScript如何 55
- 5.3 原型数据建模 57
- 第6章 单例模式 61
- 6.1 单例模式 61
- 6.1.1 确保一个类只有一个实例 61
- 6.1.2 提供一个全局指针以访问唯一实例 62
- 6.2 使用情境 63
- 6.3 后悔使用单例的原因 65
- 6.3.1 它是一个全局变量 65
- 6.3.2 它是个画蛇添足的解决方案 66
- 6.3.3 延迟初始化剥离了你的控制 67
- 6.4 那么我们该怎么做 68
- 6.4.1 看你究竟是否需要类 68
- 6.4.2 将类限制为单一实例 70
- 6.4.3 为实例提供便捷的访问方式 71
- 6.5 剩下的问题 73
- 第7章 状态模式 75
- 7.1 我们曾经相遇过 75
- 7.2 救星:有限状态机 78
- 7.3 枚举和分支 79
- 7.4 状态模式 82
- 7.4.1 一个状态接口 82
- 7.4.2 为每一个状态定义一个类 83
- 7.4.3 状态委托 84
- 7.5 状态对象应该放在哪里呢 84
- 7.5.1 静态状态 84
- 7.5.2 实例化状态 85
- 7.6 进入状态和退出状态的行为 86
- 7.7 有什么收获吗 88
- 7.8 并发状态机 88
- 7.9 层次状态机 89
- 7.10 下推自动机 91
- 7.11 现在知道它们有多有用了吧 92
- 第3篇 序列型模式
- 第8章 双缓冲 95
- 8.1 动机 95
- 8.1.1 计算机图形系统是如何工作的(概述) 95
- 8.1.2 第一幕,第一场 96
- 8.1.3 回到图形上 97
- 8.2 模式 98
- 8.3 使用情境 98
- 8.4 注意事项 98
- 8.4.1 交换本身需要时间 98
- 8.4.2 我们必须有两份缓冲区 99
- 8.5 示例代码 99
- 8.5.1 并非只针对图形 102
- 8.5.2 人工非智能 102
- 8.5.3 缓存这些巴掌 106
- 8.6 设计决策 107
- 8.6.1 缓冲区如何交换 107
- 8.6.2 缓冲区的粒度如何 109
- 8.7 参考 110
- 第9章 游戏循环 111
- 9.1 动机 111
- 9.1.1 CPU探秘 111
- 9.1.2 事件循环 112
- 9.1.3 时间之外的世界 113
- 9.1.4 秒的长短 113
- 9.2 模式 114
- 9.3 使用情境 114
- 9.4 使用须知 114
- 9.5 示例代码 115
- 9.5.1 跑,能跑多快就跑多快 115
- 9.5.2 小睡一会儿 115
- 9.5.3 小改动,大进步 116
- 9.5.4 把时间追回来 118
- 9.5.5 留在两帧之间 119
- 9.6 设计决策 120
- 9.6.1 谁来控制游戏循环,你还是平台 121
- 9.6.2 你如何解决能量耗损 121
- 9.6.3 如何控制游戏速度 122
- 9.7 参考 1