如何学习一个开发框架

我接触的大多数程序员都知道它是什么但不知道为什么。他们已经当了好几年了,甚至不知道AVM是什么。很多程序员把快速开发成品作为自己工作的唯一目标,认为研究底层知识和外围技术是浪费时间。很多事情他们不知道,但他们不想知道。

更何况学了gotoAndPlay就敢说自己熟悉Flash,会敲ls就敢说自己精通Linux。前几天有个朋友给我发了一份他膜拜了一天的简历,里面全是编译,C/C++,Linux网络编程,JAVA EE,Perl,Bash,Python,Windows驱动开发,单片机开发,HTML,CSS3,JavaScript,PHP,cocos2d-x,iOS开发,Android开发……项目都精通!

看了我的简历,我对朋友说:这个驱动web手机前后桌面嵌入式系统开发的全栈大神,10年里跳槽八次,两年没在一家公司工作过。你敢用吗?

= = = = =以上废话,不看了。

正好我也是从AS3转到COCOS2D-X的,说说我的经历吧。

一.第二部分

1.1技术选择

从三手游开始,我真的被Adobe的ANE和国内的小平台搞得心烦意乱,决定改用COCOS2D-X,纠结了很久选择绑定哪种语言,最后选择了Lua: Cocos2Dx+Lua还是Cocos2dx+js?cocos2d-x 2.x的lua绑定不好,所以选择了quick-cocos2d-x(后来quick被Touch收购)。

1.2学习C++

中文版C++入门(第五版)(豆瓣)是一本很好的入门书。建议看5版。我写过一篇《c++初级读本》第4版和第5版的对比。建议画一些思维导图,帮助你在学习过程中理解和整理思路。比如这个(不完整):

1.3学习DEMO,熟悉开发平台。

编译cocos2d-x附带的TestCPP项目并全部运行。熟悉cocos2d-x API的用法。记得用doxygen生成文档,建议浏览各个API的功能。

有些同学可能更喜欢直接看源代码,当然更好。但是,文档的一个优点是可以更直观地显示继承关系。

在学习DEMO的过程中,一定要熟悉自己开发平台的IDE。例如,您必须熟悉Windows平台上的Visual Studio、OS X平台上的xcode和Linux平台上的Eclipse+CDT。

注意quick-cocos2d-x不支持Linux开发平台。

2014-05-17更新:quick用QT重写了播放器部分,但仍然不支持Liunx平台。

1.4了解引擎的文件夹结构

基于cocos2d-x源代码生成的文档不是很详细,很多函数都要看源代码。但是,现阶段我不建议你太深的纠结源代码。而是可以纠结一下cocos2d-x的文件夹结构,看看所有类都放在哪里,看看定义了哪些常用的宏和常量以及枚举。不会花太多时间,但是会让你对cocos2d-x有更深入的了解,成就感很强。这种成就感冲淡了你面对大量源代码的无力感,让你继续前行。

以下是我的分析:

1.5重复上面第3步:再学一遍DEMO。

这个时候看DEMO可能会轻松很多,但是你会有更多的问题要纠结。比如多分辨率支持?比如坐标系?比如画图功能?比如分级管理制度?比如事件传递系统?等等,等等,等等...这时候可以去Google(注意不要用百度等搜索引擎)找文档看。推荐一些我看过的好文档和博客:

/档案/4809

Cocos2d-x官方中文文档v2.x

iOS开发技巧& ampBiOM的技巧

紫龙山人-博客公园

红孩儿的游戏编程之路

雷·温德里奇

Cocos2d-x |跨平台开源2d游戏引擎

很多博客都很优秀。鸿海儿(后来加入Touch)写了很多源代码分析,每个源代码都有注释。虽然我不太认同他这种吃力不讨好的方法,但是对于新手来说确实很有帮助。

此外,您可以在Stack Overflow中找到大多数问题的答案。当然很多问题都是针对cocos2d而不是cocos2d-x的,但是用法是一样的,小心为上。很多优秀的文章都是基于cocos2d的,所以不要介意,可以花半天时间熟悉OC语法,了解一下。

暂时不要买语文书。我曾经花了三天时间看《cocos2d-x游戏开发技术》和《Cocos2D-X手机游戏开发——跨iOS、Android和手机平台》,发现作者居然是来赚稿费的。

我忘了广告。我的博客(cocos2d-x | zrong的博客)也有一些cocos2d-x的内容。欢迎喷一下。

1.6.熟悉工具集

现在你应该对外设工具感兴趣了。比如帧动画用什么?BMFont是什么做的?骨骼动画呢?如何编辑plist文件?用什么工具组装破图?有些项目,你有很多选择,也可能没有选择。去Google看看,有什么选择问题,请来和我讨论。

第二,quick-cocos2d-x部分

2.1现在是lua时间。

请仔细阅读Lua编程(第二版)第一、二、三部分。第四部可能暂时看不下去。

1.2熟悉Quick-Cocos2d-X的文件夹结构。

相信有了上面cocos2d-x的基础,这个应该不难理解。

1.3运行Quick-Cocos2d-X附带的所有示例。

同时,熟悉框架中的所有包。可以参考快手网站和快手维基。

1.4学习为Lua导出API。

为Lua导出C/C++ API。

第三,学习OpenGL ES

熟悉了Lua之后,作为一个有志于成为程序员的码农,还是要回归C/C++,这才是Cocos2d-X的精髓。

Cocos2d-x由OpenGL ES渲染。如果你想以任何形式扩展cocos2d-x的渲染层,就无法避开OpenGL ES。

既然逃不掉,那就对TA说,请叉开腿,我要走了。

3.1阅读OpenGL ES 2.0编程指南

以下是这本书的官网。目前OpenGL ES 3.0的版本已经发布,cocos2d-x用的是2.0。

/es2/index.html

这本书通俗易懂,非常适合初学者。一位网友花了三个月翻译了中文版,但我还是建议你不要看。

下面是OpenGL ES的官方文档和API的中文翻译。

当然也可以买著名的小红书《OpenGL编程指南》(第7版),但是OpenGL ES和OpenGL还是有一些区别的。你应该知道如何区分这些差异。

3.2试着理解COCOS2D-X的渲染架构。

我不会列出相关的类别,但我正计划将这一领域的一系列文章发送到我的博客。如果完成了,我会在这里更新。

3.3自己写一些画图函数的过滤器和扩展。

以这个为例:cocos2d-x-filters。

四、回报项目

在这里,你可以开始你的项目。虽然源代码还没看,但相信整个架构都能看懂。在做项目的过程中,多读一点源代码对我来说比较快,也可以接受,不然就太枯燥了。

还可以需要选择与COCOS2D-X相关的工具,你可能听说过CCB(cocosBuilder)和CCS(cocoStudio)。在决定是否使用它们之前,试着去了解它们。

你已经有AS3的基础,所以很多前端的概念和经验已经很丰富了。这些经验在COCOS2D-X中同样适用,不过需要注意的是,cocos2d-x不是AS3,所以不要试图用AS3的方式来使用cocos2d-x。

一个码农从C#转到AS3的时候跟我抱怨:为什么Flash Builder没有Visual Studio的这个功能?

然后码农从AS3切换到Sublime Text(用于Lua编辑)的时候跟我抱怨,为什么Sublime Text没有Flash Builder的这个功能?

这是个笑话。

同时,为了解决一些cocos2d-x没有提供的功能,你必须学习相关的知识。比如这个用libcurl上传cocos2d-x中的文件(带quick-cocos2d-x包)。但是现在你有了基础,学这些就不难了。

有时间的话可以仔细看一下上面提到的Lua编程(第二版)第四部分,了解一下Lua和C语言的通信方式,顺便看看它是如何在cocos2d-x中实现的。

此外,引擎中一些你不需要的功能也可以轻松开放(比如这个:一个LuaSocket包)。也许你需要的正是别人需要的。

五、熟悉发布平台

既然是手游,安卓和iOS平台也逃不了。

你应该熟悉Android和iOS平台的特点,JAVA在Android上的应用,Objective-C在iOS上的应用,Eclipse ADT和XCode(你应该很熟悉)。

你也要熟悉Google Play和AppStore的发布流程、原则和政策,内购的接入和SDK的嵌入。

你要学会和各种接入平台的程序员、业务人员、前台姑娘打交道(因为你往往找不到真正负责你要找的SDK的技术人员),你要能容忍国内小平台糟糕的文档、代码规范、编程方法。

结束,没有结束

我上面说的并不完整。我应该错过了很多,但我只能说这么多。因为我的经历到此为止。

祝你成功!

转载仅供参考,版权归原作者所有。祝你有愉快的一天。满意请采纳。