具体描述
作者简介
刘剑卓 有点文艺的IT男,会做美食的运动男,喜欢电影的80后。拥有八年的游
戏开发经验,精通移动平台以及PC平台游戏的开发,在过往的职业生涯已有
多款上线畅销游戏。拥有自主研发开发工具、引擎以及游戏产品的能力,有应
用第三方先进引擎的开发经验,熟练使用多种编程语言、脚本语言以及3D渲
染技术。热衷于国内外游戏行业状况和国际技术潮流,关注移动互联网以及游
戏领域的发展。
目录信息
第1章 Cocos2D-X引擎的介绍 1
1.1 何为游戏引擎 1
1.1.1 游戏的核心—引擎 1
1.1.2 引擎的特点 2
1.1.3 知名的引擎介绍 4
1.1.4 引擎的分类 5
1.2 Cocos2D-X引擎的来历 8
1.3 引擎的版本 9
1.4 下载与安装 10
1.5 引擎的组成 13
1.6 技术文档 15
1.7 成功的游戏 17
1.8 Cocos2D-X引擎的体系 18
1.9 Cocos2D-X引擎的版权声明 19
1.10 本章小结 20
第2章 Cocos2D-X引擎的 开发环境 21
2.1 跨平台的开发 21
2.2 建立开发环境 23
2.2.1 PC开发环境 23
2.2.2 Android开发环境 26
2.2.3 iOS开发环境 35
2.3 引擎中的混合编译 38
2.3.1 Java与C++的混合编译 38
2.3.2 Objective-C与C++的混合编译 41
2.4 引擎的启点 42
2.4.1 应用程序入口 43
2.4.2 引擎应用入口 44
2.5 丰富的示例程序 46
2.5.1 TestCpp示例项目 46
2.5.2 脚本示例项目 47
2.5.3 MoonWarriors示例项目 47
2.6 本章小结 48
第3章 引擎的核心——渲染框架 49
3.1 基本框架 50
3.1.1 引擎的位置 50
3.1.2 根源种子 51
3.1.3 子类结构 57
3.2 渲染框架 57
3.2.1 框架结构 58
3.2.2 摄像机类(CCCamera) 59
3.2.3 导演类(CCDirector) 59
3.2.4 场景类(CCScene) 62
3.2.5 图层类(CCLayer) 64
3.2.6 精灵类(CCSprite) 68
3.2.7 精灵集合类(CCSpriteBatchNode) 72
3.2.8 精灵帧缓冲(CCSpriteFrameCache) 74
3.2.9 Zwoptex纹理编辑器 76
3.3 文字与字体 80
3.3.1 TTF类型标签(CCLabelTTF) 81
3.3.2 BMFont标签类(CCLabelBMFont) 84
3.3.3 Atlas标签类(CCLabelAtlas) 87
3.4 菜单按钮 89
3.5 几何绘制DrawPrimitives 94
3.6 CocosBuilder编辑器 95
3.6.1 CocosBuilder使用指南 95
3.6.2 引擎中的应用 97
3.7 本章小结 98
第4章 动作功能 100
4.1 概述 100
4.2 动作基类 101
4.2.1 动作类的继承关系 102
4.2.2 动作基类CCAction的成员函数 102
4.2.3 类CCNode中与动作有关的函数 104
4.3 时间动作 105
4.3.1 及时动作 105
4.3.2 持续动作 109
4.4 组合动作类 116
4.4.1 序列动作类(CCSequence) 116
4.4.2 同步动作类(CCSpawn) 118
4.4.3 重复动作类(CCRepeat & CCRepeatForever) 119
4.5 可变速度类(CCEaseAction) 120
4.5.1 CCEaseIn、CCEaseOut和CCEaseInOut 122
4.5.2 EaseSineIn、EaseSineOut和EaseSineInOut 124
4.5.3 CCEaseBackIn、CCEaseBackOut和CCEaseBackInOut 124
4.5.4 EaseExponentialIn、EaseExponentialOut和EaseExponentialInOut 125
4.5.5 CCEaseBounceIn、CCBounceOut和CCBounceInOut 125
4.5.6 CCEaseElasticIn、CCEaseElasticOut和CCEaseElasticInOut 125
4.6 速度类(CCSpeed) 125
4.7 延迟动作类(CCDelay) 127
4.8 跟随动作类(CCFollow) 128
4.9 扩展动作类 129
4.9.1 概述 129
4.9.2 翻页动作(CCPageTurn3D) 130
4.9.3 波纹动作(CCWaves3D) 130
4.9.4 格子动作类(CCGridAction) 131
4.10 动画动作类 132
4.10.1 精灵帧 133
4.10.2 精灵帧缓冲 134
4.10.3 动画类 135
4.10.4 动画动作 136
4.11 动画编辑器 136
4.11.1 概述 136
4.11.2 CocosBuilder编辑器中的精灵动画 137
4.11.3 SpriteX草莓编辑器 138
4.11.4 MotionWelder动画编辑器 139
4.12 样例程序 141
4.13 本章小结 143
第5章 用户交互 147
5.1 概述 147
5.2 玩家交互信息 149
5.3 触摸操作的处理机制 149
5.4 接收操作 153
5.5 分发机制 154
5.6 处理响应 157
5.7 多点触碰 159
5.8 加速计的响应函数 161
5.9 本章小结 162
第6章 游戏背景 164
6.1 概述 164
6.2 2D游戏背景的类型 164
6.3 砖块地图编辑器 166
6.3.1 地图编辑器概述 167
6.3.2 Tile Map Editor(砖块地图编辑器) 168
6.3.3 制作一张游戏地图 170
6.3.4 编辑器中的属性功能 172
6.4 砖块地图Tile Map 173
6.5 地图数据的格式 175
6.5.1 编辑器导出的文件 175
6.5.2 地图文件分析 176
6.6 砖块地图的实现 178
6.6.1 砖块地图类CCTMXTiledMap 179
6.6.2 地图图层类CCTMXLayer 181
6.6.3 地图物体层CCTMXObjectGroup 183
6.7 示例项目 184
6.8 背景的滚动与角色移动 186
6.9 多层背景滚动效果 188
6.10 本章小结 190
第7章 物理模拟与碰撞检测 192
7.1 概述 192
7.2 游戏中的碰撞检测 193
7.3 碰撞检测的方法 194
7.3.1 平面几何在碰撞检测中的应用 194
7.3.2 物体的包围盒 197
7.3.3 AABB碰撞检测技术 198
7.4 基本物理知识 199
7.5 你好!Box2D! 201
7.5.1 概述 201
7.5.2 物理世界 202
7.5.3 游戏中的两个世界 202
7.6 Box2D的基础知识 203
7.6.1 概述 204
7.6.2 概念定义 204
7.6.3 物理引擎的模块 205
7.7 引 擎 内 核 205
7.7.1 基本配置 206
7.7.2 内存管理机制 207
7.7.3 工厂模式 208
7.7.4 数据单位 208
7.7.5 用户数据 209
7.8 物理世界World 210
7.8.1 创建和摧毁一个世界 210
7.8.2 让世界运转起来 211
7.8.3 探索世界 212
7.8.5 AABB查询 213
7.8.6 光线投射(Ray Casts) 214
7.9 形状Shapes 216
7.9.1 碰撞模块 216
7.9.2 形状Shape的作用 216
7.9.3 圆形(Circle Shapes) 216
7.9.4 多边形(b2PolygonShape) 217
7.10 框架Fixtures 218
7.10.1 动态模块(Dynamics Module) 219
7.10.2 框架(Fixtures) 219
7.10.3 密度(Density) 219
7.10.4 摩擦(Friction) 220
7.10.5 恢复(Restitution) 220
7.10.6 筛选(Filtering) 220
7.10.7 感应器(Sensors) 221
7.11 物体Bodies 222
7.11.1 物体定义 222
7.11.2 位置和角度(Position and Angle) 223
7.11.3 阻尼(Damping) 223
7.11.4 休眠参数(Sleep Parameters) 224
7.11.5 固定旋转(Fixed Rotation) 224
7.11.6 子弹(Bullets) 224
7.11.7 活动状态(Activation) 225
7.11.8 用户数据(User Data) 226
7.12 关节(Joints) 226
7.12.1 关节的定义(JointDef) 226
7.12.2 关节的属性 227
7.12.3 距离关节(Distance Joint) 228
7.12.4 旋转关节(Revolute Joint) 229
7.12.5 移动关节(Prismatic Joint) 230
7.12.6 滑轮关节(Pulley Joint) 231
7.12.7 齿轮关节(Gear Joint) 232
7.12.8 鼠标关节(Mouse Joint) 234
7.12.9 线性关节(Line Joint) 235
7.12.10 焊接关节(Weld Joint) 235
7.13 接触(Contants) 235
7.13.1 概述 236
7.13.2 接触类(Contact Class) 237
7.13.3 访问接触(Accessing Contacts) 237
7.13.4 接触监听器(Contact Listener) 238
7.13.5 接触筛选(Contact Filtering) 240
7.14 示例项目 241
7.14.1 Box2dTest示例项目 241
7.14.2 调试绘图DebugDraw 243
7.14.3 创建精灵刚体 244
7.15 本章小结 246
第8章 游戏中的声音 249
8.1 概述 249
8.2 音乐与音效 250
8.3 声音格式 250
8.4 CocosDenshion声音模块 252
8.5 背景音乐操作函数 253
8.6 声音音效操作函数 255
8.7 示例程序 256
8.8 本章小结 259
第9章 文件操作模块 261
9.1 概述 261
9.2 引擎文件操作模块 261
9.3 读取文件 263
9.4 写入文件 267
9.5 游戏中用户数据 269
9.5.1 游戏中的用户数据 269
9.5.2 用户数据的基本类型 270
9.5.3 读取与写入操作 271
9.6 示例程序 272
9.7 本章小结 274
第10章 内存管理机制 277
10.1 内存管理概述 277
10.2 引用计数 278
10.3 自动释放池 280
10.3.1 使用方法 280
10.3.2 实现原理 281
10.4 管 理 模 式 284
10.4.1 引擎当中的应用 284
10.4.2 缓冲区 285
10.5 日志调试方式 286
10.6 本章小结 288
第11章 粒子系统 290
11.1 概述 290
11.2 粒子效果 291
11.3 粒子系统的来历 292
11.4 引擎当中的粒子系统 293
11.5 粒子的生命周期 294
11.6 粒子的属性 295
11.7 粒子发射器属性 296
11.7.1 发射器共有的属性 296
11.7.2 重力发射器模式(Gravity) 304
11.7.3 半径发射器模式(Radius) 306
11.8 粒子效果编辑器 307
11.8.1 概述 308
11.8.2 Particle Designer的使用方法 308
11.8.3 引擎中应用 310
11.9 本章小结 312
第12章 Lua脚本语言 314
12.1 概述 314
12.2 Lua脚本语言简介 315
12.3 为什么需要它? 316
12.3.1 简易性 316
12.3.2 可扩展性 316
12.3.3 高效性 317
12.3.4 可移植性 317
12.4 Lua脚本语言的语法 318
12.4.1 类型与数值 318
12.4.2 表达式 320
12.4.3 语句 322
12.4.4 函数 326
12.5 Lua在引擎中的应用 328
12.5.1 Lua与C/C++ 328
12.5.2 引擎中的脚本引擎 329
12.6 样例程序 331
12.6.1 脚本引擎初始化 332
12.6.2 游戏内容的实现脚本 333
12.6.3 农场层的实现 334
12.6.4 菜单层的实现 337
12.7 本章小结 338
第13章 Cocos2D-HTML5引擎版本 340
13.1 概述 340
13.2 HTML的发展史 341
13.2.1 HTML版本 341
13.2.2 XHTML版本 342
13.2.3 HTML5是未来之星 342
13.3 HTML5新特性 342
13.3.1 跨平台的特性 343
13.3.2 Canvas API 343
13.3.3 WebGL 344
13.3.4 其他特性 345
13.4 JavaScript语言基础 346
13.4.1 概述 346
13.4.2 变量 347
13.4.3 数据类型 348
13.4.4 运算符 348
13.4.5 语句 351
13.4.6 对象 352
13.4.7 函数 353
13.4.8 事件 354
13.5 Cocos2d-HTML5引擎 356
13.5.1 HTML5版本介绍 356
13.5.2 安装引擎 357
13.5.3 示例程序 357
13.5.4 引擎的架构 360
13.6 JS Binding技术的实现 362
13.6.1 概述 362
13.6.2 SpiderMonkey 362
13.6.3 示例程序 363
13.7 本章小结 364
第14章 引擎之外的附加功能 366
14.1 概述 366
14.2 网络通讯支持 367
14.2.1 HTTP介绍 367
14.2.2 curl库(libcurl) 368
14.2.3 HTTP在引擎中的应用 368
14.2.4 HTTP示例项目 372
14.2.5 Socket的介绍 376
14.2.6 BSD Socket在引擎中的应用 378
14.3 收费模式 379
14.3.1 下载计费 379
14.3.2 内置计费 380
14.3.3 广告版本 380
14.4 社交网络在游戏中的应用 381
14.4.1 Game Center 382
14.4.2 OpenFeint 384
14.5 数据分析 385
14.5.1 Flurry介绍 386
14.5.2 友盟 390
第15章 Cocos2D-X引擎的未来 391
15.1 概述 391
15.2 Cocos2D引擎的走势 391
15.3 Cocos2D-X引擎的不足 392
15.3.1 丰富的UI 393
15.3.2 完善的工具 393
15.3.3 支持网络通迅 395
15.3.4 版本的统一 395
15.3.5 数据安全 396
15.4 Cocos2D-X引擎增强的功能 396
15.4.1 良好的中文支持 397
15.4.2 游戏基本框架 397
15.4.3 游戏逻辑支持 398
15.4.4 脚本化编程 399
15.4.5 可视化的操作界面 400
15.5 会不会有Cocos3D? 401
15.6 本章小结 403
· · · · · · (收起)
读后感
1 排版就像是三流大学的大学生为了交作业一个晚上赶出来的 2 内容上可以说是将cocos2d-x的文档简述了一遍,没有任何有意义的实例讲解 3 在说到一些第三方库的时候 细心的读者如果去查一下wiki会发现文中多出内容都是上面摘抄的。 总之当年我年少无知买的这本书,感觉完全对不...
1 排版就像是三流大学的大学生为了交作业一个晚上赶出来的 2 内容上可以说是将cocos2d-x的文档简述了一遍,没有任何有意义的实例讲解 3 在说到一些第三方库的时候 细心的读者如果去查一下wiki会发现文中多出内容都是上面摘抄的。 总之当年我年少无知买的这本书,感觉完全对不...
这本书是一本Cocos2D-X的入门书,作者由浅入深,讲解的很是详细,很多对游戏开发感兴趣的同学,有木有开发经验的同学都可以入手哦,还可以关注作者另外2本书,他主要是做游戏开发的,有8年的游戏开发经验,算是个技术牛人,但是书写的绝不像大家印象中的程序猿。当然专业性不容...
1 排版就像是三流大学的大学生为了交作业一个晚上赶出来的 2 内容上可以说是将cocos2d-x的文档简述了一遍,没有任何有意义的实例讲解 3 在说到一些第三方库的时候 细心的读者如果去查一下wiki会发现文中多出内容都是上面摘抄的。 总之当年我年少无知买的这本书,感觉完全对不...
这本书是一本Cocos2D-X的入门书,作者由浅入深,讲解的很是详细,很多对游戏开发感兴趣的同学,有木有开发经验的同学都可以入手哦,还可以关注作者另外2本书,他主要是做游戏开发的,有8年的游戏开发经验,算是个技术牛人,但是书写的绝不像大家印象中的程序猿。当然专业性不容...
用户评价
坦白说,我最初对这类“技术精解”的标题持保留态度的,因为很多时候,“精解”往往意味着“泛泛而谈”或者“过于理论化,脱离实战”。然而,这本书真正让我感到惊喜的是它对底层原理那种近乎偏执的刨根问底。它没有满足于仅仅告诉你“怎么做”,而是深入挖掘了“为什么是这样”。比如,在讲解渲染管线的部分,作者没有直接抛出API调用,而是花了大量篇幅去梳理OpenGL ES的生命周期和状态机管理,甚至细致地分析了不同版本特性带来的性能差异。这种深度不仅建立了我对技术栈的扎实理解,更重要的是,它培养了我一种面对新问题时,能够主动去探究其根源的思维习惯。对于那些已经有一定经验,但总感觉代码“飘”在空中,缺乏稳定基础的开发者来说,这本书提供的“地基”是无比坚固的。它教会我如何看待那些框架封装背后的真实工作原理,这才是真正意义上的“精解”,它让知识从表层的“术”上升到了深层次的“道”的层面,极大地拓宽了我对移动游戏引擎构建的认知边界。
我发现这本书的一个显著优点在于,它引用的案例代码和工程实践是如此地贴合行业前沿,几乎没有太多“过时”的痕迹。很多老旧的技术书籍往往因为更新速度跟不上,导致很多示例代码在最新的SDK版本中已经编译报错或者效率低下。但对于这本,作者显然是保持了高度的维护和迭代意识。无论是对于多线程任务的安全处理,还是针对新一代移动GPU特性的着色器编写技巧,书中的内容都显得紧跟时代脉搏。例如,它对内存池的实现剖析,不仅仅停留在C++层面的资源管理,还结合了现代操作系统对缓存一致性的处理,这种跨学科的知识融合,让原本枯燥的内存优化变得生动起来。阅读过程中,我多次将书中的技巧应用到我当前的项目中,几乎都能立即看到积极的效果,这才是技术书籍最有价值的体现——它不是纸上谈兵,而是能够直接转化为生产力的实战手册。这种时效性和前瞻性,使得这本书在同类题材中具备了极强的竞争力。
这本书的排版和印刷质量实在是让人眼前一亮,那种厚重而扎实的纸张手感,配合着清晰锐利的墨迹,让人在阅读技术文档时都能享受到一种愉悦的体验。装帧设计上,它没有采用那种花里胡哨的炫技,而是选择了一种沉稳大气的风格,封面设计简洁有力,一看就知道是面向真正想钻研技术的开发者的严肃作品。内页的布局也考虑到了长时间阅读的舒适度,合理的行距和字号选择,让复杂的代码示例和理论阐述都不至于让人感到眼花缭乱。特别是那些流程图和架构图,制作者显然是下了大功夫的,线条流畅,逻辑清晰,即便是初次接触某个复杂模块的读者,也能通过这些视觉辅助快速建立起宏观认知。这种对细节的极致追求,体现了出版方和作者对知识本身的尊重,也极大地提升了读者在学习过程中的效率和耐心。在如今充斥着大量粗制滥造、只求速成的技术书籍市场中,能遇到这样一本在物理呈现上都堪称艺术品的工具书,实属不易。我甚至愿意把它摆在书架最显眼的位置,它不仅仅是一本工具书,更像是一件值得珍藏的行业纪念品,象征着那个黄金时代游戏开发的热情与专业。
这本书的章节组织逻辑,体现出一种非常成熟的教学设计思路。它不是按照API的字母顺序来罗列知识点,而是遵循了一个典型的项目开发流程和知识的递进关系来构建内容体系。从环境搭建、基础图形学回顾,到场景管理、物理交互,再到资源优化和性能调优,每一步的过渡都显得自然而然,仿佛有一个经验丰富的导师在旁边手把手地引导你完成一个完整的项目周期。尤其值得称赞的是,它对“性能优化”这个环节的重视程度超乎想象。作者没有将优化视为项目尾声的“打补丁”工作,而是将其贯穿于每一个技术章节的讲解之中,每次引入新概念时,都会立即伴随着对潜在性能陷阱的剖析和规避策略。这种“边学边优化”的模式,极大地缩短了理论到实践的转化时间,让读者能够在一开始就养成写出高效代码的习惯,而不是等到项目跑起来了才痛苦地进行重构。对于希望快速提升项目交付质量的团队来说,这本书的结构本身就是一份现成的开发规范指南。
与其他许多技术著作不同,这本书的“社区精神”似乎也被作者巧妙地融入了文字之中。它不像一本官方手册那样冷冰冰,而是充满了作者在实际遇到困难、反复调试后总结出的“经验之谈”。你会读到一些关于特定硬件或特定系统版本下“怪异行为”的详细描述,以及作者是如何通过非官方但高效的Workaround解决这些问题的记录。这些“八卦”和“内幕消息”——虽然是技术层面的——极大地拉近了作者与读者的距离,让人感觉不是在被动接受信息,而是在参与一场资深工程师之间的深度交流。比如,在讲解资源热加载机制时,作者甚至引用了一个他自己早期项目中因为异步加载顺序导致的一个难以复现的崩溃案例,并详细分析了为什么会发生,以及如何用一种更健壮的设计模式来避免它。这种坦诚和对实战中“坑点”的毫不避讳,让读者建立起一种信任感,相信书中所述的每一个结论都是经过了血与火的考验,这对于构建信心、勇于攻克复杂工程难题至关重要。
更像手册翻译,倒是融入了不少作者自己的心得体会。就是这个介绍的体系不够完好,其实前面给一个简单的Demo游戏例子会更好。
总体不错,知识点覆盖比较全面,不过有些地方总有种蒙着一层纸,怎么讲都不透的感觉,另外抒情调调还是不要太多的好。
作者连栈和队列都分不清。。。
作者连栈和队列都分不清。。。
排版很糟糕,个人觉得就是把官方的test程序讲了一遍,说实话买的挺后悔的