Cocos2d-x开发系列 磨刀不误砍柴工

项目初期的一些问题(版本选择、语言选择、环境搭建、一次触控技术交流会问题)

        一个项目开始肯定会碰到这些问题,究竟选择哪个引擎版本呢?我该选择C++开发,还是Lua呢?今天抽空来讲讲项目前期会碰到的一些问题。磨刀不误砍柴工,先把项目前期碰到的一些事情先理一理,我会尽量把项目开始到上线的点点滴滴记录下来。

一、引擎版本(到底该用哪个版本呢)

    这个项目刚开始的时候我安装的是Cocos2d-x3.2。出3.5没出几天,哥们号称看到3.5有解决重要的内存泄露的Bug消息(不知道在哪看到的)。差点没把我吓尿,被迫升级。不过后来发现一些3.2对android5.0的兼容问题,libcurl库的问题,以及音频的相关Bug。
    历来Cocos2d-x版本升级对开发人员来讲都是一件麻烦事,升级新版本并不是换几个文件那么简单。选择新版本就要承担未知的Bug。大家伙肯定都喜欢用自己最熟悉的版本。就像是枪手永远选择顺手的枪,而不是单纯的追求最牛最先进的武器。到现在3.7都出来了,这几个版本更新速度吓死人。
    所以总的来说,我会选择引擎相对 稳定版本。

二、语言选择问题(C++、Lua、JS)

一位号称几十年开发经验的老程序员同志,信誓旦旦的跟Boss说,Lua不行,性能差,耗电多,JS更不行。他们做了测试,Lua就是不行。最后我听了他们的测试方案傻了。他们拿一个Lua写的游戏,跟一个C++写的游戏同时连续打两个小时,Lua的手机要热一点,电量也多点。咋一听,感觉很权威嘛,细细一想觉得不对劲。暂且不论硬件问题,就单说你两个不同的游戏这样比,所用的技术手段,跟代码质量不一样。这个我觉得有点牵强了,毕竟Lua还是调用的C++去执行操作的。       说实在话,选择C++还是Lua,或JS真是不好说。用我之前说过的话,脱离项目谈语言,那就是扯淡。关于语言优势,大家可以在网上搜索下。
      所以我觉得公平起见,要测试也是用相同的机器,测试分别用Lua、C++做相同的事情采集数据。这样比较才有意义。
      我一开始使用C++开发比较多点,后来有项目使用了Lua写,瞬间感觉快速多了。所以现在只要项目我负责,我就会选择Lua,说说我的观点:
  •  最现实的问题是C++开发成本比Lua高。C++程序员价格高的。我在上海的时候,一个真正的大牛,写了一辈子代码了,说起这个的时候,就说了一句话,“实现一个功能C++可能要1000行代码,Java100行,脚本可能1行代码”。确实C++写起来繁琐些,但是Lua却简单明了。当然了,C++灵活性高些,性能佳。
  •   Lua支持热更新,基本上手游团队都希望能快速出产品,需求更新也会比较快,所以难免会出现一些Bug。如果两个竞争公司准备出类似的产品,一家C++,一家选择Lua。个人认为那么Lua开发团队具有压倒性的优势。C++开发出一个版本时间较长,但是Lua开发就不一样了,我可以先出主逻辑,核心玩法,然后可以快速迭代,换皮也很方便。
  • 不用操心野指针。
  •  今年5月左右的时候,触控引擎团队被我们公司请来讲座交流,我提了很多问题,其中就问了C++跟Lua选哪个好。王哲大神还是推荐Lua,讲的问题就包含上面这些
    至于JS,这里我简单说说,JS即将面临一个质的飞越,据说触控将在主流浏览器里嵌入Cocos的底层库。这样对JS开发者来讲是个福音。我也准备在这个项目结束后,研究下JS版本。

三、环境搭建

    关于环境搭建,最好的文章是官网的文档里面。 http://www.cocos.com/doc/article
    按部就班安装好相应的软件,按照教程来一般不会出错。这里我主要讲环境搭建过程中碰到的问题及解决方案。
    setup.py执行后,以为妥妥的了,结果忘记发现有路径写错了,在环境变量修改后,再回来看,还是没改掉。捣鼓了好久没辙了,重启下电脑,居然ok了。

    另外碰到一个android打包环境的问题,Cocos2d-x新版本以来引导开发者去使用cocos命令行去打包。在配置的过程中会出现一些问题,但是基本上是环境变量配置的问题。在eclipse里面导入项目后会报错,这时候需要把android的lib项目导入进去,并且作为设置为项目本体的依赖项目即可。脚本打包比eclipse打包确实要快很多。专门做了一台打包机器,制定任务计划,每天早上8点更新代码,8点半执行脚本自动打包。这样上班的时候,测试跟其它人就可以去指定目录拿包。
    之前在ERP项目中养成的习惯,要求所有人都统一配置在同一个目录,以避免不必要的麻烦。之后的博文都会是基于下面的软件环境的测试的。
版本参考
JDK -> 1.8 
NDK -> android-ndk-r10d
ADT -> 24
Python -> 2.7.3
Cocos2d-x3.5
VS2012
TexturePackerTexturePacker-2.4.5
Cocostudio2.x以上

四、一次触控技术交流会简答笔记

今年5月份,公司请了触控的专家团队来讲座。提出的一些问题,简单抽取几个。
1、C++可以热更新吗?
   Android是可以的,但是IOS不行。有公司这么做过,但是效果不好。
2、耗电量,性能瓶颈的解决方案
    性能查找的方法,使用对半查找方法,找出性能消耗点。
3、Lua会不会消耗太多内存
     Lua本身不会消耗占用太多内存。
4、Android5.0的音频Bug
     推荐使用AudioEngine,但是有一个Bug,StopAll的时候,会有线程锁。
5、关于资源释放问题,
      预加载方式,每个场景的时候手动释放。使用逐帧加载,由大到小的方式加载。可以选择用一个配置文件记录资源名称,建立一个过渡场景,避免场景切换的时候出现的峰值问题。
6、纹理优化
      网上可以搜索一大堆资料。
7、extension问题
      extension基本放弃了,现在一般使用UI下面的控件。之后可能会去掉这个库。


你可能感兴趣的:(C++还是Lua,cocos2d-x环境搭建)