近几年,开源力量在全球软件行业里扮演着越来越重要的角色。就移动互联领域而言,Linux内核被广泛用在嵌入式系统和无头设备,Android崛起,PhoneGap诞生,服务端LAMP已是标配,svn/git和Redmine成为很多软件公司的管理工具。时至今日,已经很难有哪家软件公司敢说他们完全不用开源产品了。国内的盛大和淘宝等公司都推出了开源平台,尝试开放企业的一些内部项目的源代码,这些都是非常有意义的举动。就国内开源历史来看,最成功的开源项目当属Discuz、PHPWind和Dvbbs,这3个开源项目服务了国内无数中小网站的站长。而cocos2d-x这一开源项目所追求的目标正是服务大量的手机游戏开发者,把大家都需要花费大量时间学习和需要花费时间重复做的工作抽取出来,形成一套开源的公用库。往大了说就是,希望能通过这套公用库来降低手机游戏开发的技术门槛和研发成本,使得中小团队和个人开发者能从中受益。

cocos2d-x仅是cocos2d社区的一个分支。cocos2d开源项目诞生于2008年第一季度,以阿根廷人Ricardo Quesada为社区领袖和主要开发者。最初这仅是一个用Python语言写的游戏框架,并没有体现出什么商用价值,但2008年正好是苹果发布iPhone 2.0 SDK的时候,这给全球的手机游戏开发者提供了一个非常好的舞台。cocos2d社区抓住了这个时机,在2008年就开出cocos2d-iphone分支,用Objective-C语言替换Python重写了整个框架。cocos2d随着iOS的发展而快速壮大。到了2009年的4月,用cocos2d-iphone写的游戏StickWars在App Store美国区的付费榜冲到第一,这个里程碑事件标志着cocos2d完全脱离了自娱自乐过家家的水平,进入了可以稳定商用的阶段。在2010年,cocos2d已经成为iOS平台上首选的2D游戏框架:几乎每个初学iOS游戏开发的程序员都会从cocos2d入手,社区里时常有开发者跳出来炫耀他的cocos2d游戏冲到App Store Top10,让人“羡慕嫉妒恨”。

cocos2d框架的最大优势在于其简单易学,游戏开发者只需潜心学习一个月左右就能掌握,不需要学习复杂的OpenGL ES知识就可以开发出一款商用水平的游戏,却能完全享受OpenGL ES硬件加速给游戏带来的性能提升和各种炫酷特效。这一核心特点成就了许多个人开发者和中小团队通过cocos2d快速在iOS平台上掘金的梦想。

前文提到,2008年cocos2d社区用Objective-C替换Python对整个游戏框架进行了重写,而在2010年当Android崛起到能够和iPhone抗衡,开发者希望能把游戏移植到Android平台上的时候,同样的事情再次上演:cocos2d-x分支被开出来,框架用C++重写。虽然C++广被诟病,但作为iOS和Android两大平台都官方支持的编程语言,我们不得不“屈服”于C++的实力。事后证明这个技术路线的选择是对的!市面上各种Phone粉墨登场,都有自己独特的SDK、独特的UI控件接口,但对于游戏开发,它们具有两个相同点:一是支持C++开发,二是提供OpenGL ES接口。在这两点上,不论是国内的沃Phone、Ophone、乐Phone和魅族,还是国外的Bada和MeeGo等,都是一致的。甚至连封装层面甚高、直奔HTML5而去的WebOS都专门为游戏开发准备了C++&OpenGL ES专用的PDK。

和cocos2d-iphone的南美洲团队不同,cocos2d-x分支的主要维护团队在中国,我们有幸为大家做了这件事情,并很享受这个利他的过程。在大家的共同努力下,经过第一年的发展,社区里诞生了70多款基于cocos2d-x的游戏,其中包括多款Top 10的佳作,更有《捕鱼达人》、《Ah Up Planet》、《地铁总动员》和《91部落》等明星游戏。截至2011年10月中旬,基于cocos2d-x引擎创作的游戏在iOS平台已累计超过340万次下载,在Android平台则超过1000万次下载。

很快我们就发现大家都开始积极地回馈cocos2d-x项目。网龙公司为社区贡献了整套Lua绑定的代码,SuperRacccon、子龙山人、冬天的林和张文野等多位开发者不断撰写博客阐述使用要点,徐松林和黄猛更是热心地花费几个月的时间,为各位献上的这本教程。它不仅是cocos2d-x社区的第一本中文书,也是整个cocos2d社区的第一本中文书。

cocos2d-x的官方文档都受限于社区的国际化,因此没能提供中文版。另外,很多文档都是站在引擎开发者角度对原理进行阐述和解释的,对于初学者来说可能过于复杂。而此书从游戏开发者的角度,用通俗易懂的方式传授了cocos2d-x引擎的几个主要功能的用法,着重解决官方文档里没有涵盖的部分,如物理引擎和周边工具的使用,解答了新手经常感到困惑的热点问题,如开发环境安装、交叉编译和第三方库集成等。作者在这些地方都非常耐心地给出了按步骤的截图和代码段;最后,两位作者更是给出了一个很有分量的实际游戏案例,使得此书的学习价值大大提高。

非常感谢徐松林和黄猛两位作者的贡献,希望能有更多的游戏开发者从此书中受益。开源社区因为有大家的支持而更美好!