如何学习一种开发框架

如何学习一种开发框架,第1张

我接触的许多程序员中,绝大多数都是知其然不知其所以然,做了AS好几年的,甚至连AVM是什么都不知道的太多了。许多程序员把快速开发出成品作为是工作的唯一目标,认为研究底层知识和周边技术是浪费时间。很多东西他们不是不能知道,而是不想知道。

更有甚者,学会了 gotoAndPlay 就敢说熟悉 Flash,会敲 ls 就敢说精通Linux。前几天有朋友发给我他膜拜了一日的逆天简历,上面洋洋洒洒写着汇编、C/C++、Linux网络编程、JAVA EE、Perl、Bash、Python、Windows驱动开发、单片机开发、HTML、CSS3、JavaScript、PHP、cocos2d-x、iOS开发、安卓开发……而且所有的项目的级别都是 精通!

我看完简历和朋友说:这位前后端桌面嵌入式系统驱动网页手机开发通吃的全栈神人10年里跳槽8次,从没在一个公司干满过2年,你敢用么?

======上面废话,不看也罢。

刚巧我也是从AS3转到了cocos2d-x,说说我的经验吧。

一、cocos2d-x 部分

11 技术选型

从第三个手游开始,我实在被Adobe的ANE和国内的小平台折腾得没了脾气,决定转到cocos2d-x。在选择哪种语言绑定的时候纠结了很久,最后力排众议选了 lua:Cocos2dx+lua合适还是Cocos2dx+js合适 cocos2d-x 2x 的lua绑定做得并不好,于是我选择了 quick-cocos2d-x (后来,quick被触控收购)。

12 学习 C++

C++ Primer 中文版(第 5 版) (豆瓣) 是不错的入门书籍,建议看第五版,我写过一篇 C++Primer 第4版和第5版比较 。学习期间建议画一些思维导图帮助理解和整理思路。例如这个(不完整):

13 学习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重写了player部分,但依然不支持Liunx平台。

14 了解引擎的文件夹结构

基于 cocos2d-x 源码生成的文档并不怎么详细,许多功能必须看源码。但这个阶段,我不建议纠结源码太深,倒是可以纠结一下 cocos2d-x 的文件夹结构,看看各个类放在什么地方,找一找常见的哪些宏和常量以及枚举定义在什么地方,这花不了多少时间,但能让你对cocos2d-x有更深刻的了解,同时给你很强的成就感。这种成就感冲淡了你面对大量源码时候的无力感,让你能够继续前行。

下面是我的分析:

15 重复上面的第3步:再次学习DEMO

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

http://wwwityrancom/archives/4809

Cocos2d-x官方中文文档 v2x

Cocos2D | iOS Development Tips & Tricks by BiOM

子龙山人 - 博客园

红孩儿的游戏编程之路

Ray Wenderlich

Cocos2d-x | Cross Platform Open Source 2D Game Engine

许多博客都是极好的。红孩儿(后来加入了触控)写了许多源码分析,每一句源码都加了注释。虽然我不太认同他这种吃力不讨好的方法,但对于新手来说确实是有很大的帮助。

另外在 Stack Overflow 你能找到绝大部分问题的答案。当然,许多问题是针对 cocos2d 而非 cocos2d-x 的,不过用法相同,照看不误。许多优秀的文章都是基于 cocos2d 的,所以,不要介意,可以先花半天时间熟悉 OC 的语法,能看懂即可。

暂时不要买中文书。我曾经花3天时间看完了 《Cocos2D-X游戏开发技术精解》 和 《cocos2d-x手机游戏开发–跨iOS、Android和沃Phone平台》,发现作者其实就是来赚稿费的。

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

16 熟悉工具集

现在你应该对周边工具感兴趣了。例如帧动画使用什么制作?BMFont使用什么制作?骨骼动画呢?plist文件怎么编辑?碎图用什么工具拼合?有些项目上,你有许多选择,也可能没得选。去Google吧,如果遇到选择上的问题,欢迎找我讨论。

二、 quick-cocos2d-x 部分

21 现在就到lua时间了

请认真读完 《Lua程序设计(第2版) 》 第一、二、三部分。第四部分可暂时不读。

12 熟悉 quick-cocos2d-x 的文件夹结构

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

13 跑完 quick-cocos2d-x 自带的所有sample

在这期间,熟悉 framework 中的所有封装。可以参考 quick网站 和 quick wiki 。

14 学习导出API给Lua使用

导出 C/C++ API 给 Lua 使用

三、学习 OpenGL ES

熟悉Lua部分之后,作为一个有志于成为程序员的码农,依然要回到C/C++来,这里才是 cocos2d-x 的本质。

cocos2d-x 使用 OpenGL ES 进行渲染的,如果要对 cocos2d-x 的渲染层进行任何形式的扩展,你完全避不开 OpenGL ES。

既然逃不开,那就对TA说,请张开双腿,我要上。

31 阅读 OpenGL ES 20 Programming Guide

下面是这本书的官网,目前已经出了 OpenGL ES 30 版本,cocos2d-x 使用的是20。

http://wwwopengles-bookcom/es2/indexhtml

这本书写得浅显易懂,非常适合新手。有位网友花3个月时间翻译了中文版,但还是建议你不要看了。

这里是 OpenGL ES 的 官方文档 和 API中文翻译 。

当然,你也可以买那本著名的 OpenGL 红宝书 《OpenGL编程指南(原书第7版)》 来看,不过 OpenGL ES 相对与 OpenGL 来说还是有一些不同的,你要知道如何区分这些不同。

32 尝试理解 cocos2d-x 的渲染部分架构

相关的类我就不列出了,我正在酝酿一个这方面的系列文章准备发到博客上。如果写完了,我会在这里更新。

33 自己写一些滤镜、绘图功能的扩展

例如这个: 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没有提供的功能,你必须去学习相关的知识。例如这个:在 cocos2d-x 中使用 libcurl 实现上传文件功能(附quick-cocos2d-x封装)。不过你现在已经有了基础,学习这些不是难事。

在有时间的时候,可认真读一下上面提到的《Lua程序设计(第2版) 》第四部分,了解Lua和C语言通信的方式,顺便看看cocos2d-x里面是怎么实现的。

另外,一些你需要的引擎中没有的功能,也可以顺手实现了开源出来(例如这个:一个LuaSocket封装),说不定你需要的东西正好是别人也需要的。

五、熟悉发布平台

既然是做手游,Android和iOS平台是逃不掉了。

你要熟悉Android和iOS平台的特点,熟悉JAVA在Android上的应用,熟悉Objective-C在iOS上的应用,熟悉Eclipse ADT和XCode(上面应该已经熟悉过了)。

你还要熟悉Google Play和AppStore的发布流程以及方针、政策,内购的接入、SDK的嵌入。

你要学习和各个接入平台的程序员、商务、前台小妹打交道(因为经常会找不到你要找的真正的负责该SDK的技术人员),你要能忍受国内小平台糟糕的文档、代码规范和逆天的编程方法。

终、没有终点

上面说的并不完整,应该遗漏了不少东西,但我只能说这么多了。因为我的经验也止于此。

祝你成功!

转载仅供参考,版权属于原作者。祝你愉快,哦

android平台工程创建

1、androidSDK+NDK安装

1)、安装javajdk(如果已经安装了,可以不用此步骤)

进入:或者直接点击下载。

选择JDKDOWNLOAD(android开发无需JRE)

32位windows7选择Windowsx86,64位windows7选择Windowsx64。

安装后,配置环境变量:

新建环境变量:JAVA_HOME值为:D:ProgramFilesJavajdk170

新建环境变量:CLASSPATH值为:;%JAVA_HOME%lib;(注意:点号表示当前目录,不能省略)

在系统变量Path的值的前面加入以下内容:%JAVA_HOME%_x0008_in;(注意:这里的分号不能省略)到这里,JDK安装完毕。

单击“开始”—>“运行”—>输入:cmd命令,在CMD窗口中输入:java-version

出现如下界面,就表示安装成功:

2)、下载eclipse

进入以下页面:

或直接复制此地址下载:或点击直接下载

下载解压到E:android-ndk-r8

AndroidNDK包含build、docs、samples、sources、GNUmakefile、ndk-build、ndk-gdb及readme等内容。

2、Cygwin安装

由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要模拟Linux模拟编译环境,下载地址:

下载后是个setupexe文件,使用过程如下:

第一步:运行setup程序,直接点击Next进入下一步。

第二步:选择安装方式,第一次可以采用DirectConnection在线下载安装,如有现成的离线包,可以选择离线安装(InstallfromLocalDirectory)。

第三步:选择安装目录,比如C:Cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。

第四步:设置本地包暂存路径

暂存目录默认是放到setupexe的同级目录下,下载后名字类似ftp%3a%2f%2fcygwinmirrorspaircom%2f这样格式。

第五步:设置网络连接方式

第六步:选择下载站点地址

第七步:等待加载安装项载入,选择安装项

编译NDK,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中箭头所示),其它均为默认状态。(其实NDK需要的不多,主要autoconf21、automake110、binutils、gcc-core、gcc-,g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make)

第八步:等待下载完成

下载完成时间决定于选择的安装包数量及网络连接速度,比如按照本文默认的选择方式,可能需要2-3个小时(视网速而定),下载后压缩包约12G,下载完成后会自动安装到上文设置的安装目录。

提醒:第一次下载完成后,把下载的包目录做个备份,下次安装同样的环境可以直接使用离线安装方式(第二步中选择本地安装)。

运行cygwin,在d出的命令行窗口输入:cygcheck-ccygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。

然后依次输入gcc_v,g++--version,make_version,gdb_version进行测试,(注意空格和-)如果都打印出版本信息和一些描述信息,这说明cygwin安装成功了。

3、安装ADT和配置Cygwin

1安装android开发插件

(1)打开Eclipse,在菜单栏上选择help->InstallNewSoftWare出现如下界面:

(2)点击Add按钮,出现如下界面

输入网址:/android/eclipse/(如果出错,请将https改成http)

名称:Android(这里可以自定义)

(3)点击OK,将出现如下界面

全部选中。

(4)点击Next按钮,出现如下界面:

(5)点击Next按钮,出现如下界面:

(6)选择Iacceptthetermsofthelicenseagreements点击Next,进入安装插件界面

(7)安装完成后,点击Yes按钮,重启Eclipse。

选择androidSDK解压后的目录(ADT18默认会扫描电脑,找到并配置好SDK位置)。

配置cygwin

在命令行中进入cygwin目录,并执行cygwinbat,如果不是用Administrator账号登录的系统,那么会在cygwinhome文件夹中生成一个以登录名命名的新的文件夹。

修改新生成文件夹中的“bash_profile”文件,用UE或editplus等文本编辑器打开,在最后增加:(e/android-ndk-r8-windows/android-ndk-r8是安装ndk的路径)

NDK_ROOT=/cygdrive/e/android-ndk-r8-windows/android-ndk-r8

exportNDK_ROOT

然后保存关闭。

至此便基本搭建完毕cocos2d-x的windows7android环境

打开cocos2d-win32vc2012sln,模式:自动、Debug、Win32,在解决方案上右键-生成方案(F7),等待然后设置TestCpp为启动项目,执行本地Windows调试器,能成功执行TestCppexe就行了

  Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。

  手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x项目可以很容易地建立和运行在iOS,Android,黑莓Blackberry等 *** 作系统中。Cocos2d-x还支持Windows、Mac和Linux等桌面 *** 作系统,因此,开发者编写的源代码很容易在桌面 *** 作系统中编辑和调试。

  cocos2d-x主要功能:

  流程控制(Flow control):非常容易地管理不同场景(scenes)之间的流程控制。

  精灵(Sprites):快速而方便的精灵。

  动作(Actions):告诉精灵们该做什么。可组合的动作如移动(move)、旋转(rotate)和缩放(scale)等更多。

  特效(Effects):特效包括波浪(waves)、旋转(twirl)和透镜(lens)等更多。

  平面地图(Tiled Maps):支持包括矩形和六边形平面地图。

  转换(Transitions):从一个场景移动到另外一个不同风格的场景。

  菜单(Menus):创建内部菜单。

  文本渲染(Text Rendering):支持标签和HTML标签动作。

  文档(Documents):编程指南 + API参考 + 视频教学 + 很多教你如何使用的简单测试例子。

  BSD许可:尽管用就是了。

  基于Pyglet:没有外部的依赖。

  基于OpenGL:支持硬件加速。

  cocos2d-x基本介绍:

  Cocos2d-x是MIT许可证下发布的开源游戏引擎,游戏开发快速、简易、功能强大。2015年2月,触控科技正式推出了游戏开发一站式解决方案cocos,将Cocos 2d-x、Cocos Studio、Cocos Code IDE等框架及工具整合在一起。

  Cocos2d-x核心优势在于允许开发人员利用C++、Lua及Javascript来进行跨平台部署,覆盖平台包括iOS、Android、Windows Phone、Windows, Mac OSX 3及Tizen等等,省事省力省成本。

  Cocos2d-x用户不仅包括个人开发者和游戏开发爱好者,还包括许多知名大公司如Zynga、Wooga、Gamevil、Glu、GREE、Konami、TinyCo、HandyGames、IGG及Disney Mobile等。截止2013年9月,全球基于Cocos2d-x引擎的游戏下载量高达逾15亿,其中许多还占据苹果应用商店(AppStore)和谷歌应用商店(Google Play)排行榜。同时许多公司如触控、谷歌、微软、ARM、英特尔的工程师在Cocos2d-x领域也非常活跃。

  另外,Cocos2d-x版本升级困难的问题,是许多开发者的一大苦恼,而经过整合的cocos,解决了Cocos2d-x的这一问题。升级cocos,其相匹配的Cocos2d-x也将自动进行升级,这极大的提高了开发效率,为开发者们带来便利,同时也为Cocos2d-x的进一步发展打下基础。

  cocos2d-x特点:

  易于使用:游戏开发者可以把关注焦点放在游戏设置本身,而不必消耗大量时间学习晦涩难懂的OpenGL ES,此外,Cocos2d-x还提供了大量的规范。

  高效:Cocos2d-x基于OpenGL ES进行图形渲染,从而让移动设备的GPU性能发挥到极致。

  灵活:方便扩展,易于集成第三方库。

  免费:基于MIT协议的免费开源框架,用户可以放心使用,不用担心商业授权的问题。

  社区支持:关心Cocos2d-x开发者自发建立了多个社区组织,可以方便查阅各类技术资料

学习cocos2d-x需要学习计算机语言,cocos2d 有多个语言的版本,建议用C++因为跨平台比较容易些, java C# object-c的版本都有,html5的也有,但是有局限性。

计算机语言(computer language)指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器,为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句),这些就是计算机能接受的语言。计算机语言的概念比通用的编程语言要更广泛,例如,HTML是置标语言,也是计算机语言,但并不是编程语言。

想学习游戏编程,需要具备IT相关的编程技能。可以选择去机制或者找资料自学。

主要内容如下:

1游戏编程:C++编程入门;基本数据类型和输入输出;过程控制声明;数组、指针和引用、函数;程序和写作规则;结构、联想、阶级;遗传和多态性;异常处理和程序调试。

2算法与数据结构:算法分析;数据结构;基础算法;STL的概念和使用;静态库和动态库;XML库的使用。

3Win32编程:Windows程序介绍;Windows消息;GDI绘图游戏工具和MFC:网络编程基础。

4游戏数学与智能应用:游戏中的坐标系;向量和矩阵;几何碰撞;物理模拟;人工智能与寻路算法。

52D游戏技术与应用:2D游戏技术介绍;游戏地图系统;GUI系统;战斗系统设计;任务系统;出色的声音引擎低音;;Cocos2D-X发动机;Box2D物理引擎。

互联网仍然是目前最火的行业。学习IT技能后如果足够优秀,将有机会进入腾讯、阿里、网易等互联网大公司高薪就业。发展前景很好,普通人都可以学。

如果想系统学习,可以调查比较一下开设IT专业的热门学校。好的学校有能力根据企业目前的需求自主开发课程。建议实地考察比较一下。

祝你学业有成,望采纳。

其实cocos你可以选择c++,js,lua任意一种语言开发。

大多数公司都是lua,现在也有很多用的js因为可以出h5版本游戏。所以如果自己要做游戏的话先看看选择哪种语言。不过我自己写游戏用的c++,公司用的lua。从学习难度上说,我觉得c++是最难的,剩下的lua和js我觉得相对c++学习会容易一些。不过如果要从js和lua选择的话,我建议用js来开发,因为前端html页面很多也用到js。

如果你一定用c++开发,差不多半月学习c++基础(游戏一般语法基础就够了,游戏难点主要还是算法上)。然后1个月熟悉下引擎的环境和API,写写demo。

游戏引擎的控件掌握差不多了,你就可以根据自己需求写一些小游戏了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12182163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存