从零开始的准备工作,主要在基于cocos2dx上开发手机游戏的环境准备上.看起来可能会有些复杂,做起来其实也没有那么复杂.可以去cocos2d-x.org下载一个开发包,也可以去github clone一个最新的版本.不过还是去官网下载一个稳定的版本比较好.
对于版本的选择,我也是浏览了一些网上的帖子,很多开发者比较信赖2.x版本,而3.x的群体也不小.cocos2dx 2.x的版本是我在学校的时候接触的,那时候环境配置远不如3.x那么方便,对于那时候独自探索一款新的游戏引擎的我来说,过程历尽千辛.Cocosdx在3.x版本架构发生了重大改变,采用Python作为项目组织开发脚本,使用cmake作为主体项目c++部分构建工具.这对于我来说当然是个意外的惊喜,因为我曾是一个linuxer,而且挚爱c++,所以cmake,python,lua之类的对于我来说都是很容易接受的,所以我选择的是cocos2dx 3.2版本.虽然新版本采用的c++11标准我并没有详细了解过,依然在c++03徘徊,不过这些都不是主要的障碍.
在准备搭建环境之前,有一点需要说明的就是,其实本篇文章是在win32上面搭建的,并没有考虑linux,我想没有多少开发者会像当年偏执的我那样,选择在linux发行版上面搭建android的开发环境吧,尤其是ubuntu,在ubuntu 13.x之后的版本,兼容32bit的依赖包已经被舍弃了,所以在使用android ndk/sdk的时候处理依赖关系会相当的麻烦,当然,我相信很多Linux高手很容易做的到,但是本文的主要意图也不是在这里了,所以就简单的涉及,然后带过吧.不过,如果真的有这方面的问题,可以给我发邮件,我想,我应该可以解决的,只是我的电脑由于之前我尝鲜玩win8,将自己的硬盘分区弄成了gpt,现在无法安装ubuntu双系统,所以可能我不能还原事故现场.如果体谅我,就不要在这个点难为我.
选用cocos2dx 3.2,最好使用的是andorid r9d ndk,如果不是的话,会遇到一个小问题,不过也只是时间问题,带过提一下而已.另外,需要cmake,apache ant,oracle jdk,android sdk/ndk,vs2012/2013. 至于vs2012/2013,安装好就可以了,在真正开发的时候我们其实并不会打开那个笨重的家伙,所以选用ultraedit + notepad++的组合吧.
在配置上述这些工具的时候,可以参见cocos2dx开发包中的readme和setup.py,其实也就是配置环境变量.而选用ultraedit的时候,合适的版本自己去找吧,不过记得去官网下载lua.uew,具体放置的位置,可以去配置选项里面去看,就是lua的高亮.而Notepad++则是为了补足ultraedit对cmake高亮不支持的缺点,在开发游戏的过程中,需要添加自己封装的C++模块,例如:http请求部分,这通常在账号验证的部分会用,参考cocos2dx对http支持,发现了不足,并没有封装到对应lua调用,所以就需要自己动手去完善,这部分我们就需要notepad++对cmake的高亮支持了,可以看得更舒服一点.
如果到这里没有发生什么问题的话,那么就可以使用cocos2dx提供的console工具去创建一个helloCocos2dx的项目了,然后自己去看一下相关的教程,使用cocos工具去编译发布win32和android平台项目了.
这一部分的准备工作,其实没有多少技术含量,但是作为着一些列的补充部分还是蛮合适的.开发游戏不只是仅有客户端部分,还需要有后端的配合.所以下面的补充部分主要是提供给那些同时兼顾前后端部分的同学的.
关于后端环境的补充部分:
后端开发在虚拟中做就可以了,因为同时兼顾前后端的开发,我们不可能将前端发布后安装到自己的手机上面去,再重启系统切换到linux去做后端的开发与调试,那样太浪费时间了,所以还是使用虚拟机去搭建后端的环境就好了.可以采用virtualbox/vmware workstation,安装Linux虚拟机,然后使用本地共享文件夹方式开发后端部分.数据库和web部分可以放在一台虚拟机上面,而后端程序放在一台机器上面跑就好了,不过需要兼顾自己的机器性能,最好是多加一条内存吧,现在的机器性能很容易做的到.
这里我说一下我的打算,使用virtualbox,采用桥接的方式,保证虚拟机与host以及虚拟机与虚拟机之间的通信.开发采用windows本地方式,使用ultraedit+c+++cmake+lua开发后端的程序,web部分采用php/golang(还没有决定好),数据库选择mysql,http服务选择apache,两者安装在一台虚拟机上面,这台虚拟机同时提供svn服务. 另外一台开发测试机器,则是使用svn update的方式获取最新的源码进行编译测试.当然,也可以直接使用netbeans的远程开发方式.看自己的喜好吧.