基本信息
书名:全新正版 游戏编程模式
定价:69.00元
作者: Robert Nystrom 尼斯卓姆
出版社:人民邮电出版社
出版日期:2016-09-01
ISBN:9787115426888
字数:
页码:
版次:1
装帧:平装
开本:128开
商品重量:0.4kg
编辑推荐
前EA杰出游戏工程师经验凝结4大类13种游戏编程模式精彩呈现多数游戏程序员所面临的挑战就是实现他们的游戏。许多游戏在其高度复杂的代码库中折戟沉沙,没能问世。本书是为解决此问题而生。本书作者在多年的游戏开发工作中,收集了许多已经证实的设计模式来帮助解构、重构以及优化游戏。通过阅读本书,你将深刻理解经典的设计模式是如何应用于游戏之中的,学会如何编写一个健壮的游戏循环、如何应用组件来组织实体,并利用CPU缓存来提升游戏性能。本书包含的4大类13种游戏编程模式包括:序列型模式● 双缓冲● 游戏循环● 更新方法优化型模式● 数据局部性● 脏标记模型● 对象池● 空间分区行为型模式● 字节码● 子类沙盒● 类型对象解耦型模式● 组件模式● 事件队列● 服务定位器
内容提要
游戏开发一直是热门的领域,掌握良好的游戏编程模式是开发人员的应备技能。本书细致地讲解了游戏开发需要用到的各种编程模式,并提供了丰富的示例。全书共分20章,通过三大部分内容全面介绍了与游戏编程模式相关的各类知识点。首部分介绍了基础知识和框架;第二部分深入探索设计模式,并介绍了模式与游戏开发之间的关联;第三部分介绍了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 如何 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
作者介绍
Robert Nystrom是一位拥有2 0 年以上职业编程经验的开发者,而他在其中大概一半的时间从事游戏开发。在艺电(El e c t r o n i c Arts)的8年时间里,他曾参与劲爆美式足球(Madden)系列这样庞大的项目,也曾投身于亨利·海茨沃斯大冒险(Henry Hatsworth in the Puzzling Adventure)这样稍小规模的游戏开发之中。他所开发的游戏遍及PC、GameCube、PS2、XBox、X360以及DS平台。但他引以为傲的,是为开发者们提供了开发工具和共享库。他热衷于寻求易用的、漂亮的代码来延伸和增强开发者们的创造力。Robert与他的妻子和两个女儿定居于西雅图,在那里你很有可能会见到他正在为朋友们下厨,或者在为他们上啤酒。
文摘
序言
这本书所带来的惊喜,在于它能够让你以一种全新的视角去审视游戏开发过程。之前我可能更多地关注于实现具体的功能,而这本书则让我开始思考代码的结构、模块的划分、以及如何让整个项目保持一个清晰、易于理解的状态。它就像一面镜子,照出了我代码中可能存在的“坏味道”,并提供了改进的药方。我发现,很多时候,我们之所以会在某个功能上卡住,或者发现代码难以修改,并不是因为我们不够聪明,而是因为我们没有采用一种恰当的设计模式来组织我们的代码。这本书就像是为我提供了一套“设计工具箱”,让我能够在面对不同的编程挑战时,能够从中选择最合适的工具来解决问题。我非常欣赏书中关于“有限状态机”的详细阐述,这对于很多需要处理复杂逻辑的游戏角色行为或者UI交互来说,都至关重要。总而言之,这是一本值得反复阅读、并从中汲取智慧的宝藏。
评分这本书的魅力远不止于其内容本身,更在于它所营造的那种氛围。当你沉浸在书中,你会感觉自己不仅仅是在阅读一本技术书籍,更像是在与一位经验丰富的游戏开发者进行一场深入的对话。作者的语言风格非常接地气,没有那种空洞的理论说教,而是充满了实际的例子和生动的比喻,仿佛他就在你身边,手把手地教你如何解决实际问题。我特别喜欢他在讲解某些抽象概念时,会引用一些经典的游戏作为参照,这瞬间就把那些枯燥的技术术语变得鲜活起来。比如,他在描述某种交互模式时,会提到《魂斗罗》里的子弹发射方式,或者《星际争霸》里单位的移动逻辑,这种关联性一下子就让你明白了这个模式在实际应用中的意义。这种寓教于乐的方式,大大降低了学习门槛,也让整个学习过程变得更加有趣和高效。我迫不及待地想去实践书中提到的各种“模式”,看看它们如何在我的项目中落地生根,开花结果。
评分说实话,在翻阅这本书的过程中,我时不时会停下来,陷入沉思。它不仅仅是教你“怎么做”,更重要的是引导你去思考“为什么这么做”。作者通过对不同设计模式的对比分析,让你深刻理解每种模式背后的权衡和取舍,以及在不同场景下选择哪种模式是最优的。我常常会在写代码的时候,脑海中浮现出书中某些章节的画面,然后开始反思自己之前的实现方式是否足够优雅、是否具有良好的扩展性。这种由内而外的自我审视,比单纯地模仿别人写好的代码更有价值。我尤其期待书中关于“行为树”的讲解,在AI设计方面,行为树一直是我比较感兴趣但又觉得难以深入掌握的领域,希望这本书能为我打开一扇新的大门。总而言之,这本书给我的感觉是,它不是那种“速成”的教程,而是能够帮助你建立起扎实的编程内功,让你在未来的开发道路上走得更远、更稳。
评分不得不说,这本书在结构上的安排非常巧妙,让人有一种循序渐进的学习体验。作者似乎非常有条理地将游戏编程中那些核心的设计思想,像剥洋葱一样一层层地展现出来,既不会一开始就抛出过于复杂的内容让人生畏,也不会过于浅尝辄止。我尤其欣赏它对于每一个“模式”的讲解方式,通常会先用一个相对简单易懂的例子引入,让你先建立起一个基本的概念框架,然后再逐步深入到更复杂的应用场景和优缺点分析。这种由浅入深、由点到面的讲解逻辑,对于我这种并非科班出身、但又对游戏开发充满热情的自学者来说,简直是福音。很多时候,我在网上看到一些零散的编程技巧,但总是缺乏一个整体的认知,这本书就像是给我提供了一张地图,让我能够清晰地看到这些技巧是如何融入到整个游戏开发的庞大体系中的。我还在期待着书中关于“对象池”模式的阐述,因为在处理频繁创建和销毁的游戏对象时,性能优化一直是一个绕不开的话题,相信这本书会有独到的见解。
评分这本书的封面设计就足够吸引人了,那种深邃的蓝色背景,搭配上简洁却又不失力量感的字体,让人一眼就能感受到它所蕴含的专业与深度。拿到手里,纸张的触感也很棒,不是那种光滑得有点廉价的印刷纸,而是带有微微纹理的,翻阅起来有着一种沉甸甸的实在感。我当初决定买这本书,很大程度上是因为它背后那群游戏开发爱好者的推荐,大家都在讨论着其中的“模式”如何改变了他们的编程思路,如何让他们写出更优雅、更易于维护的代码。我个人非常喜欢这种由实践经验沉淀下来的智慧结晶,尤其是在游戏开发这个日新月异的领域,那些经过时间检验的经典设计思想,其价值是无可估量的。虽然我还没有开始深入阅读,但光是目录就已经让我充满了期待。里面的章节标题,比如“实体组件系统”、“状态模式”、“发布/订阅模式”等等,每一个都触动着我作为一名程序员的好奇心。我常常在开发过程中遇到一些棘手的代码结构问题,或者感觉自己的代码越来越难以扩展,这个时候,我就需要这样一本能够提供系统性解决方案的宝典。我希望这本书能够真正地启发我,让我看到那些别人已经走通的、高效的编程路径,并且能够融会贯通,应用到我自己的项目中去。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有