Hub

我所理解的Cocos2d-x

Thumb_qq20150104-2@2x

Brief

结合OpenGL图形渲染管线,深入探讨了游戏开发中涉及的图形学知识,内容包括Cocos2d-x的基本架构及渲染机制、纹理、OpenGLES 2.0渲染管线、计算机字体的绘制、多分辨率支持、事件分发、碰撞与物理引擎、游戏对象模型架构、Genius-x开源框架、脚本在游戏引擎中的架构

Description

本书定位为一本进阶的书籍,它着重于讲述Cocos2d-x引擎各个功能及组件背后的实现原理。因此,本书并没有严格按照Cocos2d-x引擎本身的功能展开描述,而是从这些功能中抽象出一些设计或者架构层面的内容进行讨论。例如本书没有分别讲述精灵,地图,粒子特效等的接口使用,而是从纹理,渲染方式等多个方面来讲述这些元素背后的工作机制;而OpenGL ES,物理引擎和脚本等内容也几乎是可以脱离于Cocos2d-x进行学习和理解的。

这就是本书标题的来源,也是本书与同类书籍在内容编排上的最大不同。我希望写作一本书,它可以让读者站在一个系统性的高度对游戏引擎的一些架构设计及实现进行理解,从而不但提升和扩充自己的知识结构,更能够在实际开发中去灵活解决各个层面的技术问题。另外,本书同时也追求系统性和实践性的一个平衡,例如对于纹理部分,除了总结了纹理相关的所有知识,也通过一些示例来演示它在各个层面的具体使用。

本书一共分十八的章节,第1-4章介绍了Cocos2d-x引擎的基本架构以及新的绘制系统。这部分包括Cocos2d-x的内存管理机制,UI树的遍历及结构,应用程序的生命周期,游戏循环的各个阶段以及在Cocos2d-x中驱动各个子系统进行逻辑更新的机制及工作原理。这部分也介绍了3.x新的数据结构,以及详细描述了新的渲染系统。总之,在这一部分,读者可以对Cocos2d-x的基本架构有一些比较系统的了解。

第5-10章围绕OpenGL ES图形渲染管线进行介绍。这部分从纹理讲起,详细讲述了纹理的存储格式,传输,缩放,压缩以及多重纹理等相关知识;第8章详细讲述了顶点数组的结构,顶点属性的绑定及传输,着色器程序的编译及链接;以及Cocos2d-x新的着色器子系统,并举例在Cocos2d-x中使用着色器的流程以及怎样使用多重纹理。这部分也对顶点着色器和片段着色器两个阶段在图形渲染管线中的作用进行了详细描述。

第9,10章讲述OpenGL ES图形渲染管线的最后两个阶段:帧缓冲和片段操作,并以Cocos2d-x中对这两个阶段的应用RenderTexture和ClippingNode为例进行讲解。这样,读者将对整个渲染管线的每一个阶段都能有所了解,并且能够结合Cocos2d-x中的使用去思考每一个阶段的意义和作用,从而对图形渲染管线有更深刻的了解。这也是本书最具特色的部分。

第10-15章讲述Cocos2d-x的一些子系统,包括事件分发,多分辨率支持,动画系统以及物理引擎整合。其中物理引擎部分也是我比较喜欢的章节,这部分讲述了一些通用的物理引擎的架构,使用以及怎样和游戏引擎进行整合。

第16-18章探讨应该怎样去设计和管理游戏世界中的对象。16章首先讲述了常见对象模型,组件模型以及属性模型之间的一些概念,区别以及优缺点;第17章则以属性模型为例讲述了一个游戏对象模型应该怎样设计;第18章探讨了时下最流行的脚本相关的内容,但是与仅仅讨论脚本使用不同的是,我们站在一个游戏引擎的高度,去讨论脚本的架构,这样读者甚至能设计自己的脚本模型。这一部分的内容,具有对前端架构设计的高度总结性与实践性,不管是对经验丰富的读者还是初学者,相信都具有一定的启发性。

另外,这本书在写作之初并没有构建出整本书的内容结构,在写前面的章节时我甚至不知道最后几章的内容和结构会是怎样的。在开始写每一章的时候,我不会首先去给自己描绘一个目录结构,而是首先去把所有相关的内容列出来,如果之中有我不熟悉的内容,或者有Cocos2d-x以外的一些知识,则我会首先停下写作去把这些内容整理出来。例如关于ECS部分的内容就是基于Cocos2d-x社区的一些讨论,然后花了很多时间去学习和理解。当最后所有相关的内容整理为一个列表时,我就知道该怎么去写作这部分的内容。因此,在这本书的目录结构中,你找不到任何同类书籍类似的内容结构,因为这完全是基于个人的理解及知识结构体系去写作的一本书。

所以,对我而言这本书还有一个有意义的目标,我希望透过这样的方式去探讨一种系统性的学习方法,当你开始学习某个知识点时,不要把自己限定在该知识点处,而是首先从该知识点进行适当的扩展,列出该知识点相关的所有内容,然后再逐个深入学习和研究细节,最后反过来整理该知识点的结构体系。这样不仅能够更深入地学习该知识点,还能够延伸知识的广度,所以本书有大量超出Cocos2d-x以外的内容,这些内容又是与Cocos2d-x紧密相关的。希望读者在阅读过程中能够感受到这样一种写作风格和方法。

本书是一本进阶类书籍,阅读本书,你需要对Cocos2d-x和C++有一些基本的了解。如果你是一个新手,可以首先阅读一些同类书籍中相对比较入门的书籍,否则本书的一些章节可能会给你造成一定的困惑。

学习知识最好的方法永远是多读几面,书中比如关于OpenGL ES和游戏对象模型部分的内容可能需要多读几次才能更加深入地理解相关的概念。当然,如果你在阅读过程中遇到什么障碍,随时可以通过电子邮件或者我的博客等多种方式和我进行探讨。

本书可以作为Cocos2d-x开发学习的书籍,也可以作为单独的OpenGL ES相关的教材,游戏对象模型部分的内容也可以作为设计游戏引擎架构的参考资料。本书也可以作为高校游戏及图形学相关专业的参考教程。

Comments

Sign up for our newsletter to keep up with the latest developments, releases and updates for Cocos2d-x.