Game Programming Patterns 游戏编程模式pdf免费下载英文版|百度网盘下载

时间: 2022-05-06 20:23:53  36 代码 代码 游戏编程

编者评论:游戏编程模式 pdf

游戏开发一直是热门领域,掌握良好的游戏编程模式是开发者必备的。本书详细解释了游戏开发需要用到的各种编程模式,并提供了丰富的示例。今天小编为大家准备了pdf资料,需要的可以下载

简介

游戏开发一直是热门领域,掌握良好的游戏编程模式是开发者必备的。本书详细解释了游戏开发需要用到的各种编程模式,并提供了丰富的示例。

全书共分20章,通过三大部分全面介绍了游戏编程模式相关的各种知识点。第一部分介绍基础知识和框架;第二部分深入探讨设计模式,介绍模式与游戏开发的联系;第三部分介绍了13种有效的游戏设计模式。

本书提供了丰富的代码示例,结合理论和代码示例,帮助读者更好地学习。本书可供游戏领域的设计师和开发者,以及想进入游戏开发领域的学生和普通程序员阅读。

相关内容部分预览

关于作者

Robert Nystrom 是一名拥有 20 多年专业编程经验的开发人员,其中大约一半用于游戏开发。在 El ec t r o nic Arts 的八年里,

他曾参与过像 Madden 系列这样大的项目,也参与过小规模的项目,例如令人费解的冒险中的 Henry Hatsworth。

他为 PC、GameCube、PS2、XBox、X360 和 DS 平台开发了游戏。但他以为开发人员提供开发工具和共享库而自豪。他热衷于寻找易于使用的东西,

漂亮的代码可以扩展和增强开发人员的创造力。罗伯特与他的妻子和两个女儿住在西雅图,你很有可能会发现他为朋友做饭或为他们提供啤酒。

目录

第 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< br>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< br>4.1 解锁成就 33
4.2 一切都是这样 34
4.2.1 观察者 35
4.2.2 已观察 35
4.2.3 可观察物理模块 37
4.3 太​​慢了 38< br>4.4 动态内存分配过多 39
4.4.1 链式观察者 39
4.4.2 链表节点池 42
4.5 其余问题 43
4.5.1 销毁 Observables 和 Observers 43
4.5.2 别担心,我们有 GC 44
4.5.3 下一步是什么 44
4 .6 O 的现状bserver 模式 45
4.7 观察者模式的未来 46
第 5 章 原型模式 47
5.1 原型设计模式 47
5.1.1 原型模式的作用 50
5.1 .2 生成器函数 51
5.1.3 模板 51
5.1.4 一等类型 52
5.2 原型语言范式 52
5.2.1 自语言 53
5.2.2 如何结果 54
5.2.3 JavaScript 如何 55
5.3 原型数据建模 57
第 5 章 第 6 章单例模式 61
6.1 单例模式 61
6.1.1 确保类只有一个实例 61
6.1.2 提供全局指针 访问唯一实例 62
6.2 使用情况 63
6.3 后悔使用单例的原因 65
6.3.1 它是一个全局变量 65< br>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 部分顺序模式< br>第 8 章双缓冲 95
8.1 动机 95
8.1.1 计算机图形系统如何工作(概述)95
8.1.2 行动1、场景一 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 缓冲区的粒度是多少 1 09
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
第 10 章更新方法 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 更新方法依赖什么类? 136
10.6.2 如何处理那些未使用的对象 章节代码 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 Spell API 147
11.5.2 Spell 命令集 148
11.5.3 Stacker 149
11.5.4 组合得到行为 153
11.5.5 虚拟机 155
11.5.6 语法转换工具 155
11.6 设计决策 157
11.6.1 指令如何访问堆栈 157
11.6.2 应该使用哪些指令Be 158
11.6.3 值应该如何表示 158
11.6.4 如何生成字节码 161
11.7 参考 162
第 12 章子类沙箱 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
第 13 章 类型对象 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 类型对象应该封装或公开 1​​86< br>13.6.2 如何创建类型为 187 的对象
13.6.3 可以更改类型 187
13.6.4 支持什么类型的派生 188
13 .7 参考 189
第 5 部分解耦模式
第 14 章 Com ponent 模式 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
第 15 章事件队列 211
15.1 动机 211
15.1.1 GUI 的事件循环 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< br>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
章节16 服务定位器 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< br>16.6.2 无法定位服务时会发生什么 239
16.6.3 范围内的服务有多大 240
16.7 其他参考 241
第 6 部分优化模式
第 17 章数据局部性 245
17.1 动机 245
17.1.1 数据仓库 246
17.1 .2 CPU 托盘 247
17.1.3 等等,数据就是性能 248
17.2 数据本地化模式 249
17.3 使用场景 249< br>17.4 使用说明 250
17.5 示例代码 250
17.5.1 连续阵列 251
17.5.2 包装数据 255
17.5.3 热/冷分解 258
17.6 设计决策 260
17.6.1 如何处理多态性 260
17.6.2 如何定义游戏实体 261
17.7 参考 263
第 18 章脏标记模式 265
18.1 动机 265
18.1. 1 局部和世界变换 266
18.1.2 缓存世界变换 267
18.1.3 延迟重新计算 268
18.2 脏标记模式 269
18.3 使用场景 269
18.4 使用说明 270
18.4.1 延迟太长有成本 270
18.4.2 脏标志必须设置每次状态变化时 271
18.4.3 最后派生的数据必须保存在内存中 271
18.5 示例代码 271
18.5.1 未优化的遍历 272
18.5.2 让我们弄脏 273
18.6 设计决策 275
18.6. 1 何时清除脏标签 275
18.6.2 脏标签跟踪的粒度 276
18.7 参考文献 276
第 19 章对象池 277
19.1 动机 277
19.1.1 碎片化的危害277
19.1.2 两者兼顾 278
19.2 对象池模式 278
19.3 使用场景 279
19.4 使用说明 279
19.4.1 对象池可能会在空闲对象上浪费内存 279 < br>19.4.2 任何时候存活的对象数量是恒定的 279
19.4.3 每个对象的内存大小是固定的 280
19.4.4 重用的对象不会自动清理 281
19.4.5未使用的对象将占用内存 281
19.5 示例代码 281
19 .6 设计决策 287
19.6.1 是否将对象添加到对象池中 287
19.6.2 谁初始化那些被重用的对象288
19.7 参考文献 290
第 20 章 空间划分 291
20.1 动机 291
20.1.1 战场上的部队 291
20.1.2 绘制战线 292
20.2 空间划分模式 293
20.3 使用场景2 93
20.4 使用说明 293
20.5 示例代码 293
20.5.1 一张方格纸 294
20.5.2 连接单元的网格 294
20.5.3 进入战场 296
20.5.4 剑与影之战 297
20.5.5 冲锋 298
20.5.6 近距离,近距离 299
20.6 设计决策 302
20.6.1 分区分层或平面 302
20.6.2 分区取决于对象的集合 302
20.6.3 对象仅存储在分区 304
20.7 参考 305

  • 声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,以上内容仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站内容来自网络收集整理或网友投稿,所提供的下载链接也是站外链接,版权争议与本站无关。您必须在下载后的24个小时之内,从您的设备中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版!我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮箱:121671486@qq.com,微信:diqiuren010101

学习考试资源网-58edu © All Rights Reserved.  湘ICP备12013312号-3 
站点地图| 免责说明| 合作请联系| 友情链接:学习乐园