我接触的许多程序员中,绝大多数都是知其然不知其所以然,做了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。
游戏引擎的控件掌握差不多了,你就可以根据自己需求写一些小游戏了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)