前言
为什么要写这本书
从2011年开始,移动游戏开发引擎Cocos2D-X凭借其开源、易用和简单的特点逐步成为开发者开发二维手机游戏的首选。截止2013年年底,国内45个月收入超千万的游戏中,有30个是基于Cocos2D-X开发,占67%。中国区苹果畅销榜前10名游戏中,平均7个是基于Cocos2D-X开发;安卓360市场下载榜前10名游戏中,平均5个基于Cocos2D-X开发。在中国手游引擎领域,Cocos2D-X引擎以70%的占有率和过硬的技术支撑占据着绝对高地。除了开发功能上具备多维度外,在使用角色和用途上Cocos2D-X也在不断向其他领域渗透。小米电视的UI采用Cocos2D-X开发,新东方线上教育平台的应用采用Cocos2DHTML5开发。除了在国内,Cocos2D-X在日韩也有广泛的应用,Google Play韩国区畅销榜前15名游戏中,有9款游戏都是基于Cocos2D-X开发的。击败苹果应用商店,在日本区霸占榜首一年半之久游戏的《Monster Strike》也是由Cocos2D-X开发,另外在该榜单上前五名的游戏有3款采用Cocos2D-X开发,这是Cocos2d-X游戏再次在一个移动游戏重要区域拿下总榜第一。
相比起Cocos2D-X的“兄长”Cocos2D-iPhone,Cocos2D-X凭借其跨平台的特性受到更多开发者的欢迎,所以从2013年开始,Cocos2D家族由Cocos2D-iPhone和Cocos2D-X的联合发布逐步将重心转移到Cocos2D-X上来。在2013年9月底的CocoaChina秋季开发者大会中,Cocos2D-X创始人王哲宣布了Cocos2D-X的3.0计划,并且Cocos2D第一开发者Ricardo Quesada正式加盟触控科技,将主导Cocos2D-X的3.0版本开发,这正式预示着Cocos2D-X取代Cocos2D-iPhone成为Cocos2D最重要的分支,另外Cocos2D的最重要编辑器也由之前的CocosBuilder变成了之前由触控科技团队主导开发的CocoStudio,相比于之前1.0版本到2.0版本的进化,这次进化更有跨时代的价值。Cocos2D引擎家族进入“3.0”时代。
相比于2.0版本,这次对于引擎的改动和优化是前所未有的,大体上就是全面引入C++风格、去除Objective-C风格,而对代码的重新审核和重构确保了引擎在效率上的显著提升,同时加入全新的渲染系统、全新的事件分发和注册方式,并对于之前保守批评的UI控件进行了全面的重写。另外还完善了开发工具,比如新建项目的命令行方式和Lua代码编辑器等,可以说这次的版本提升不论从广度和深度上,都有了较大的提升。
本书第1版上市以来,受到读者的广泛好评,但是由于这次引擎的较大幅度改进,已经不能满足读者的需要,另外一些读者希望学习脚本等方面的内容,正是因为这些反馈和需求,我才有了编写本书第2版的想法,这一版不仅针对引擎更新,同时对原有内容和实例进行了扩充,希望继续成为广大Cocos2D-X使用者的入门图书和工作中的案头参考书。
读者对象
- Cocos2D-X初级及中级开发者,了解C++语言和游戏开发的读者;
- 没有接触过Cocos2D-X,但有过Cocos2D其他版本开发经验的开发者;
- 没有Cocos2D-X和C++开发经验,但是有C、Java等语言开发经验的游戏程序员;
- 相关项目的策划及管理人员;
- 游戏开发爱好者;
- 开设相关课程的大专院校。
如何阅读本书
本书分为三大部分:
第一部分为基础篇(第1~10章),首先介绍了Cocos2D-X的下载与安装,以及交叉编译环境的搭建,然后重点讲解了Cocos2D-X中的核心类、贴图类、动作、动画、特效、文字和字体、事件处理、地图、声音以及物理引擎的使用,这部分结合Cocos2D-X自带的tests实例进行讲解,目的是让读者全面掌握Cocos2D-X的基础理论和基本使用。
第二部分为高级篇(第11~16章),介绍了Cocos2D-X中的脚本引擎,常用算法在Cocos2D-X中的实现,粒子系统,着色器的使用和相关编辑器,在基础上进一步介绍引擎相关的内容,目的是让读者更加全面地了解Cocos2D-X的使用。
第三部分为实战篇(第17~20章),采用Cocos2D-X分别开发了一款纵版设计游戏、横板动作游戏、物理类游戏和消除类游戏,旨在让读者深入了解Cocos2D-X的基础知识在游戏开发中的实战使用,而且两种游戏分别代表了横板卷轴和纵版卷轴,可以让开发者深入了解不同类型的游戏的开发思想。
如果你是一名对Cocos2D-X有一定了解的开发者,可以从第3章开始阅读,而如果你是一个Cocos2D-X的初学者,请从第1章开始阅读。
第2版与第1版的区别
- Cocos2D-X引擎基础内容根据3.0版本重新编写。更新已有内容,添加新增功能,比如UI控件和全新渲染系统,等等。
- 添加Cocos2D-X脚本相关内容。从语言特点到在引擎中的使用,再到注意事项,全面学习Cocos2D-X脚本绑定。
- 添加Shader等引擎高级特性。
- 完善游戏实例,实例个数由原来的两个变成四个,并且四个实例分别采用不同知识点。
- 介绍CocosBuilder和CocoStudio两大编辑器。
具体章节调整如下:
第1章:原版第1章,内容更新,更新了Cocos2D-X的使用数据,主要是后半部分。
第2章:原版第2章,内容更新,新版本安装做了很大调整,新增了一些工具。
第3章、第4章:原版第3章,优化图片内存部分放到第4章。
第5章:原版第4章,新添加Flash转换一节,其他节更新了最新的API接口。
第6章:原版第5章,更新了最新的API接口。
第7章:原版第6章,新版本变化很大,内容做了很大改变,添加了UI控件的介绍。
第8章:原版第7章,更新为最新版本,添加最新功能,即8.1.4节介绍的地形功能。
第9章:原版第8章,更新API接口。
第10章:原版第10章,最后添加物理精灵介绍。
第11章、第12章:为新增加的章,讲述Cocos2D-X中的脚本语言Lua和JavaScript的应用。
第13章:原版14章,更新代码,其他不变。
第14章:原版13章,更新接口和编辑器版本,最后添加新的编辑器介绍。
第15章:为新添章节,介绍着色器的应用。
第16章:原版第9章,改动较大,主要针对编辑器部分。
第17章:原版11章,采用JS绑定重写编写。
第18章:原版12章,代码有更新。
第19,20章:为新增加的章,新增两个实用的案例开发,并给出详细解析。
勘误和支持
除封面署名外,参与本书的还有实例中部分游戏的美术人员:其中第17和19章游戏实例的美术人员许鹏(新浪微博地址:http://weibo.com/ashjackt),第18和20章游戏实例的美术人员李祖一(新浪微博地址:http://weibo.com/u/1893797647)。由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为了方便与大家交流,我申请了相关的QQ讨论群(群号:240533393,验证信息为:2dx3.0hzbook),大家有问题可以在群中提出,我也会及时解答并且在群中更新书中的错误。书中的全部源文件可以从华章网站下载,我也会将相应的功能更新及时更正出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱manshuoquan@sina.cn,期待能够得到你们的真挚反馈。
致谢
首先感谢Cocos2D以及Cocos2D-X的开发团队,感谢他们为广大游戏开发者开发出一款如此优秀的游戏引擎。
感谢我的老东家天津猛犸科技有限公司,感谢对我的锻炼和栽培,使我从对游戏开发由“好奇”变成“爱好”,感谢公司中我的老师和好战友们,感谢他们和我并肩作战的日子,我在他们身上学到的东西让我对游戏开发有更深的认识和热爱,另外感谢我目前的公司凯奇谷(北京)信息技术有限公司和我的同事们对于本书的支持。
感谢天津大学以及我的老师和同学们,尤其是我的编程启蒙老师罗凯先生。
感谢CSDN网站上每一位阅读我文章的网友,是你们给了我信心,让我一直写下去。
感谢本书第1版的读者的支持与鼓励,正是因为你们的支持,才有了第2版的问世。
感谢我的好朋友许鹏和李祖一,他们为本书同样付出了汗水和努力,感谢他们富有创意的游戏美术设计。
感谢机械工业出版社华章公司的首席策划编辑杨福川和编辑高婧雅,感谢他们在这一段时间中始终支持我的写作,引导我能顺利完成全部书稿。可以说没有他们的帮助和支持,我不会有勇气写这本书。
感谢我的爷爷和奶奶,他们是我人生的启蒙老师,尽管他们已经离开这个世界,但是我依然能感受到他们对我的支持和爱。
最后感谢我的父母,他们不仅含辛茹苦把我抚养长大,还教给我很多做人的道理,为了他们我要更加努力。
谨以此书献给我最亲爱的家人,以及众多热爱游戏开发和Cocos2D-X的朋友们!
满硕泉(bill_man)于天津