14-png

Cocos2d-Html5 — 打怪升级之路

突然想写篇文章总结下至今为止的cocos2d-html5学习使用经历和一些感想 ~

自己正式开始使用cocos2d-html5是在今年的2月份,虽然只是在少量的业余时间使用,不过就时间上来说也要半年多了~

之前就一直很关注这个分支,原因很简单,大学的时候,就一直很想学一些浏览器相关的前端技术 — html,css,js,jquery之类的,但每次都是看了《XXX入门教程》的第一个例子 — 做一个注册登录页面 — 就没兴趣在学下去了 ~
于是就又回研究室搞C++,MFC和图像处理去了 ~
所以cocos2d-html5让自己又看到了希望,因为之前一直用cocos2d-iphone版,期间-x,-python,-javascript (很久以前旧的那个) 也都用过,所以对整套API是非常熟悉的,所以cocos2d-html5的上手可以说是毫无障碍 ~
自己的框架学习习惯就是先大概熟悉下语言(30%就够了),然后是API(10%就够了),然后赶紧开始刷项目练级,在实践中把语言和API的熟练度提升上去 ~
刚开始当然是最简单的,刷了几个简单的UI控件小怪,或是效果,像是CCLabelTTF的简单特效:
接着是一个Timeline的控件:
到此为止差不多大致熟悉了JS语言和框架API与-iphone或-x版的些微差异 ~ 升级到LV5 ~
接着继续刷UI控件小怪,写了个相对复杂的日历控件:
这个东西做完以后,基本上对cocos2d最基础的核心CCLayer,CCSprite,CCAction之类的使用和扩展都有了完整的掌握  ~ 升级到LV8 ~
在这之前的项目,都是用记事本notepad++ (win) / textmate (mac) 来开发,靠cc.log来进行调试的 — 标准的不穿装备全裸练级  ~
当然这个对于刚开始起步是好事情,自己是反对刚接触就搞个牛X的IDE,补全提示功能齐全,这不利于熟悉API,有些时候自动补全,提示玩过头了就导致只是把参数填一下就了事,联函数名都不知道,只知道是cc.xxxxxxx ~
不过既然等级已经到一定程度了,那就该买装备了,于是开始四处找装备,最后确定了WebStrom IDE + MAMP的组合,试用下来也确实是相当不错,开发效率提高了而且调试也轻松多了 ~
于是,就开始考虑去刷高级怪练级,开始难度高的挑战,最终选取的目标,就是把自己2年前做的一个棋牌小游戏从cocos2d-iphone移植到cocos2d-html5,然后在发布到微博和Facebook上面去 ~
这个在当时来说可以算是刷LV30级的Boss,首先这是一个完整的游戏,不是刷个简单的UI控件小怪所能比拟的,再加上后期的平台对接部署这个就脱离了cocos2d-html5的范畴,需要各种浏览器前端知识的支撑 ~
虽然目标很高也很难达到,过程也很曲折,但是在一群NPC — gooole, yahoo.ip, baidu, stackoverflow,各种博客文章 — 的帮助下,总算顺利拿下Boss,虽然并不完美(微博至今不批准审核,连个详细的原因也没有) ~
另外在刷怪成功的同时还顺便将心得做了整理:
这一战可以说是能力全面大幅提升,首先对cocos2d-html5和-iphone分支的区别有了更深的认识;其次JS语言的熟悉度也提升了不止一个档次;再接着cocosbuilder的联合使用也有了掌握;最后还有cocos2d范畴之外的,应用部署,发布的经验和html,css基础知识的掌握 ~ 一口气飙到LV40 ~
游戏做完了,稍作休息,开始寻找下一个目标,毫无疑问cocos2d是个游戏引擎,但是谁说它只能做游呢?
至少cocos2d-html5分支,我看到的是后面的”-html5″ — 这是一个浏览器的窗口,不仅仅是移动平台,是通过浏览器面向世界的窗口 ~
于是下一个挑战的目标, 决定是一个怪是service类的新闻应用,使用cocos2d-html5 + python的架构 ~
说实话这次应用的客户端前端UI之类的完全是没难度,配合cocosbuilder轻松愉快的完成了,难点在于后台的服务器架构实现,再加上通过cocos2d-html5和后台服务器的交互(这里只是http的,没有socket) ~ 完成度不是很高,小升至LV45 ~
应用小怪刷完了,还有什么可能性呢? 这时候想到的,是HTML5的在线简历,一方面自己整理简历中,另一方面想到以前看到的一些不错的HTML5在线简历,很是羡慕,至少比普通的pdf cv要有吸引力多了,而且在一定程度上也是能力的证明 — 至少制作者有这个想法,而且付诸实施,并且实现了 ~
于是就决定刷CV小怪,这个当然也没什么压力,轻松小升至48级 ~
到这里为止,已经用cocos2d-html5做了很多东西,而且是不仅限于游戏范畴的东西,其中最大的一个体会,首先是语言上带来的便利性,对于JS这类动态语言来说相比C++或者OC,在学习难度和使用复杂度上是有绝对的优势的,再加上项目调试的方便快捷,现在的浏览器的内置debugger都是很强大的,项目修改后只要ctrl+s一下马上就生效,不用反复的编译连接安装运行~
那么这种优势,怎么能够把它延伸到移动平台上呢,这时候出现了野生的 — JSBinding ~
虽说是JSB,但是实际上最大的对手是SpiderMonkey,如果能把SpiderMonkey搞定,掌握C++和JS的交互方法,那么JSB也就拿下了 ~
当然还是老规矩,先翻翻文档,然后就是动手上项目,把之前的几个cocos2d-html5做的UI控件拿来做样品,试着在cocos2d-x中来进行交互调用 ~ 过程还是挺曲折的,不过最终还是搞定 ~ LV.50达成  🙂
同样顺便整理了下心得(虽然还没完成):
捕获了JSB这个强力的帮手后,自己的第一反应就是 — 之前看来已经走到头的cocos2d-html5的路,又再次延伸下去了 — 因为JSB的存在,使得JS和C++这两个世界得以交互,那就意味着JS世界中的一些好动西完全有可能拿到C++来用 ~
首先的想法自然是数不胜数的JS特效,JS插件,以前就一直很羡慕,原因很简单 — 它们都很炫,都很实用,而且自己看不懂也做不到 — 但是现在不一样了,首先因为cocos2d-html5的帮助,自己已经对JS有了相当的熟悉;其次因为JSB的存在,一些JS插件甚至可以直接拿来在cocos2d-x中使用,即使不能直接用,也一定可以拿来参考并做到cocos2d-html5的实现 ~ 于是就有了下面的各种尝试 ~
以前就很喜欢的手写识别,可以自定义任何复杂的手势:
一个cocos2d的CLI命令行,可以支持游戏运行时的日志输出,逻辑控制,而且可以JSB后在cocos2dx中使用:
至此,LV.60达成 ~
到这里为止,做了不少的项目,于是就有了建一个专门的网页的想法,最自己而言这在以前是做不到的,但是现在有了cocos2d-html5 + cocosbuilder,网页小怪轻松搞定 ~
至此,LV.62达成 ~
到这里对于cocos2d-html5的使用感觉已经是到了80%熟练的成都了,这一点也得到了证实,最近的一道面试题,要求做一个变则三消游戏,听完需求,直接cocos2-html5 + sublime text + chrome 做起,大约三天左右的时间(当然只是业余时间),完成到了一个可以发布的程度  ~ 再花半天的时间完成微博和FB的接入和提交申请(其实80%的时间花在整理素材填写app内容上) ~ 再花半天的时间完成JSB,结合cocos2d-x 可以在ios设备上流畅运行 ~
至此,算是对所掌握的东西的巩固,LV.65达成 ~
灵感总是突如其来的,就在前两天看到了raphaeljs库,一个可以绘制svg矢量图形的,在前端世界大名鼎鼎的JS库,对于崇尚“极简游戏”的我来说,这个当然得拿下,可以不用准备图片,直接svg path生成图形,那当然是再好不过了 ~
于是就有了下面的小老虎(虽然再试还没做优化,性能还比较低):
至此,LV.70达成 ~
回头看看这条练级之路,自己觉得是走的相当精彩,相当愉快的,因为这不是枯燥的练级 ~
对我而言,cocos2d-html5这条路还会继续走下去 ~ 只要一个灵感,一个目标,就算在困难,也一定能到达(实在不行就靠NPC们的帮助了,呵呵) ~
最后要感谢一下cocos2d-html5,让我真正进入了曾经一直想要进入的世界 ~ 对我而言,这个分支不仅仅是的游戏引擎那么简单,它意味着更多 — 那就是视野的开阔,这个极其重要,原来自己相当于是局限在c++/oc和移动平台上,但是通过cocos2d-html5 + JSB 这个范围被无限制的扩大,思维的范围也被扩大,遇到问题时的解决方案搜索空间也就变得更广 ~
现在LV.70 ~ 我想还会继续的 (貌似满级是Lv.999 ) ~
PS:
1. 文章里提到的项目基本都开源并上传github了,有兴趣请戳:
2. 个人建立的CocosLab,有兴趣请戳:
3. 给同样想开始cocos2d-html5之旅的朋友说几句
. cocos2d-html5真的不难
. 自己是JS零基础,前段零基础起步,现在Lv.70,所以你也可以
. 稍微看看看文档,看几篇号的博客教程,然后就开始刷怪练级吧
. cocos2d-html5对于环境硬件要求极低,所以刚开始不要拘泥于什么装备
. 不要眼高手低,觉得这怪等级太低,刷了没意义 ~ 其实你未必能赢 ~
. 初期问题多很正常,在求助真人前,至少找过5个以上NPC,这年头NPC都很强的,呵呵
. 小怪刷几个后,有了一定的经验等级,就可以买点装备,然后刷大怪了
. 可以尝试做个小游戏,但是一定要功能完整
. 尝试部署接入各大平台
. 尝试JSB然后在移动平台运行
. 祝打怪升级愉快 🙂