游戏编程模式 编程语言 作者
游戏编程入门 游戏编程领域的设计模式
¥
32.35
4.7折
¥
69
全新
库存100件
作者作者
出版社人民邮电出版社
ISBN9787115426888
出版时间2016-09
版次1
装帧其他
开本16
页数306页
字数437千字
定价69元
货号xhwx_1201383815
上书时间2024-11-28
商品详情
- 品相描述:全新
-
正版特价新书
- 商品描述
-
主编:
前ea杰出游戏工程师经验凝结4大类13种游戏编程模式精彩呈现
多数游戏程序员所面临的挑战是实现他们的游戏。许多游戏在其高度复杂的代码库中折沉沙,没能问世。本书是为解决此问题而生。本书作者在多年的游戏开发工作中,收集了许多已经证实的设计模式来帮助解构、重构以及优化游戏。
通过阅读本书,你将深刻理解经典的设计模式是如何应用于游戏之中的,学会如何编写一个健壮的游戏循环、如何应用组件来组织实体,并利用cpu缓存来提升游戏能。
本书包含的4大类13种游戏编程模式包括:
序列型模式
双缓冲
游戏循环
更新方法
优化型模式
数据局部
脏标记模型
对象池
空间分区
行为型模式
字节码
子类沙盒
类型对象
解耦型模式
组件模式
事件队列
服务定位器
目录:
目录
篇 概述
章 架构,能和游戏 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 参 123
0章 更新方法 125
10.1 动机 125
10.2 模式 127
10.3 使用情境 128
10.4 使用须知 128
10.4.1 将代码划分至单帧之中使其变得更加复杂 128
10.4.2 你需要在每帧结束前存储游戏以便下一帧继续 128
10.4.3 所有对象都在每帧进行模拟,但并非真正同步 129
10.4.4 在更新期间修改对象列表时必须谨慎 129
10.5 示例代码 130
10.5.1 子类化实体 132
10.5.2 定义实体 132
10.5.3 逝去的时间 135
10.6 设计决策 136
10.6.1 update方法依存于何类中 136
10.6.2 那些未被利用的对象该如何处理 137
10.7 参 137
第4篇 行为型模式
1章 字节码 141
11.1 动机 141
11.1.1 魔法大战 141
11.1.2 先数据后编码 142
11.1.3 解释器模式 142
11.1.4 虚拟机器码 145
11.2 字节码模式 145
11.3 使用情境 145
11.4 使用须知 146
11.4.1 你需要个前端界面 146
11.4.2 你会想念调试器的 147
11.5 示例 147
11.5.1 api 147
11.5.2 指令集 148
11.5.3 栈机 149
11.5.4 组合能得到行为 153
11.5.5 一个虚拟机 155
11.5.6 语法转换工具 155
11.6 设计决策 157
11.6.1 指令如何访问堆栈 157
11.6.2 应该有哪些指令 158
11.6.3 值应当如何表示 158
11.6.4 如何生成字节码 161
11.7 参 162
2章 子类沙盒 163
12.1 动机 163
12.2 沙盒模式 165
12.3 使用情境 165
12.4 使用须知 165
12.5 示例 166
12.6 设计决策 168
12.6.1 需要提供什么作 168
12.6.2 是直接提供函数,还是由包含它们的对象提供 169
12.6.3 基类如何获取其所需的 170
12.7 参 173
3章 类型对象 175
13.1 动机 175
13.1.1 经典的面向对象方案 175
13.1.2 一个类的类 177
13.2 类型对象模式 178
13.3 使用情境 179
13.4 使用须知 179
13.4.1 类型对象必须手动跟踪 179
13.4.2 为每个类型定义行为更困难 179
13.5 示例 180
13.5.1 构造函数:让类型对象更加像类型 181
13.5.2 通过继承共享数据 183
13.6 设计决策 185
13.6.1 类型对象应该封装还是暴露 186
13.6.2 持有类型对象如何创建 187
13.6.3 类型能否改变 187
13.6.4 支持何种类型的派生 188
13.7 参 189
第5篇 解耦型模式
4章 组件模式 193
14.1 动机 193
14.1.1 难题 194
14.1.2 解决难题 194
14.1.3 宽松的末端 194
14.1.4 捆绑在一起 195
14.2 模式 196
14.3 使用情境 196
14.4 注意事项 196
14.5 示例代码 197
14.5.1 一个庞大的类 197
14.5.2 分割域 198
14.5.3 分割其余部分 200
14.5.4 重构bjorn 202
14.5.5 删掉bjorn 204
14.6 设计决策 206
14.6.1 对象如何获得组件 206
14.6.2 组件之间如何传递信息 207
14.7 参 210
5章 事件队列 211
15.1 动机 211
15.1.1 用户图形界面的事件循环 211
15.1.2 中心事件线 212
15.1.3 说些什么好呢 213
15.2 事件队列模式 215
15.3 使用情境 215
15.4 使用须知 215
15.4.1 中心事件队列是个全局变量 216
15.4.2 游戏世界的任你掌控 216
15.4.3 你会在反馈系统循环中绕圈子 216
15.5 示例代码 217
15.5.1 环状缓冲区 219
15.5.2 汇请求 222
15.5.3 跨越线程 223
15.6 设计决策 224
15.6.1 入队的是什么 224
15.6.2 谁能从队列中读取 224
15.6.3 谁可以写入队列 225
15.6.4 队列中对象的生命周期是什么 226
15.7 参 227
6章 服务定位器 229
16.1 动机 229
16.2 服务定位器模式 230
16.3 使用情境 230
16.4 使用须知 231
16.4.1 服务必须被定位 231
16.4.2 服务不知道被谁定位 231
16.5 示例代码 231
16.5.1 服务 231
16.5.2 服务提供器 232
16.5.3 简单的定位器 232
16.5.4 空服务 233
16.5.5 志装饰器 235
16.6 设计决策 236
16.6.1 服务是如何被定位的 236
16.6.2 当服务不能被定位时发生了什么 239
16.6.3 服务的作用域多大 240
16.7 其他参 241
第6篇 优化型模式
7章 数据局部 245
17.1 动机 245
17.1.1 数据仓库 &
— 没有更多了 —
正版特价新书
以下为对购买帮助不大的评价