前言
为什么要写这本书
在大学期间,我开始对移动游戏开发感兴趣,于是开始学习移动开发方面的相关知识,包括J2ME和Android等技术。现在,开始的好奇心和兴趣成就了我引以为豪的事业。在大四的时候,我到了天津猛犸实习,从J2ME平台到Android平台,从Android平台到iOS平台,我不仅接触了不同平台的开发,更学会了游戏开发的技巧和思想。如果说编程是一门艺术,那么游戏开发就是艺术中的艺术。作为一名游戏开发程序员,不仅要拥有熟练的编程技巧,还要对美术、策划和游戏有深入的理解。游戏程序员最重要的是游戏编程思想,因此当决定写这本书的时候,我深知不仅要分享Cocos2D-x相关的知识,更要分享游戏开发思想。
作为从J2ME手机游戏时代走过来的开发者,我深知移动平台游戏可移植性的重要。J2ME这项技术的学习相对简单,应用这项技术进行开发的速度也比较快,而且当时几乎所有手机平台都支持Java,所以“一次编码,到处运行”也就不是梦想了。但是由于受机型的硬件性能所限,不同的平台在移植上也需要下一番工夫,针对不同屏幕、不同内存,往往需要开发不同的版本。当时的开发者根据经验,往往把很多种机型分组处理,为每组开发一个模板,然后再针对在不同机型上的运行情况做不同的调整,从而形成一种相对高效的开发模式。尽管在这个阶段手机设备的硬件水平普遍偏低,但是开发者经常可以通过美术、程序、策划三方的配合,开发出具有非常好的效果的游戏。由于J2ME的学习和开发都很简单,因此很少有成型的引擎,只是不同的游戏对应不同的框架。
随着苹果iOS系统和iPhone、iPad等一系列产品的发布,随着Android系统和相应设备的诞生,移动平台的种类得到了丰富,并从单一的手机发展到平板电脑等多种手持设备上。而移动游戏的开发方式同样也有了改变,开发者们开始尝试针对不同平台的开发框架来进行开发。智能平台的硬件及性能的提高并没有带来游戏品质的提高,于是开发者们也探索着进行只针对单一平台的开发,他们利用平台特性(多点触屏,重力感应等)开发出了很多不错的游戏。虽然Android平台的屏幕及分辨率也是千差万别,但是由于出色的框架使得开发和移植变得简单起来,同时也不需要过多考虑内存的限制。但是问题依然存在,对于不同的智能平台(Android、iOS等操作系统)依然需要编写不同的代码来进行开发,如何跨平台这个问题摆在了开发者面前。
跨平台的引擎有基于HTML5的跨平台特性产生的开发引擎,也有基于OpenGL开发的游戏引擎,其中Cocos2D-x广泛受到开发者的关注,因为它不仅具有跨平台的特点,还具有受Cocos2D全球社区的支持、框架简单易学、十分容易上手等特点。经过一段时间的发展,开发者使用Cocos2D-x开发出了多款成功的游戏,包括捕鱼达人、地铁总动员等佳作。2012年年初,Cocos2D-x团队再次开发出两个分支,分别是支持Windows Phone的XNA版和支持HTML5的HTML5版,后者还得到了Google的赞助。在Zynga的帮助下,Cocos2D-x正在研发绑定JavaScript的Cocos2D-x2.0版本。随着Cocos2D及其分支的发展,Cocos2D会有更多跨平台特性,从而可以支持更多的平台,并且提高开发者的开发效率。相信Cocos2D-x将会更加受到广大开发者的欢迎。
正因为这样,2011年年底我开始接触Cocos2D-x引擎,并在我的CSDN博客上(博客地址:http://blog.csdn.net/bill_man)写了一些相关的文章,当初的目的就是为自学留下些笔记以供以后参考,因为当时的Cocos2D-x参考资料还不是很多。后来逐渐发展为把我学习中遇到的问题与大家分享。慢慢地,通过使用,我发现Cocos2D-x是一个对开发者十分友好的游戏引擎,于是我希望把自己引擎的使用经验结合游戏开发经验更系统、更全面的分享出来,于是就有了这本书。
读者对象
- Cocos2D-x初级及中级开发者,了解C++语言和游戏开发的读者;
- 没有接触过Cocos2D-x,但有过Cocos2D其他版本开发经验的开发者;
- 没有Cocos2D-x和C++开发经验,但是有C、Java等语言开发经验的游戏程序员;
- 相关项目的策划及管理人员;
- 游戏开发爱好者;
- 大专院校相关专业的师生。
如何阅读本书
本书分为四部分:
第一部分(第1~2章)为准备篇,介绍了Cocos2D-x的下载与安装,以及交叉编译环境的搭建,为后面的开发做准备。
第二部分(第3~10章)为基础篇,重点讲解了Cocos2D-x中的核心类、动作、动画、特效、文字、字体、事件处理、地图、声音以及物理引擎的使用,这部分结合Cocos2D-x自带的tests实例进行讲解,目的是让读者全面掌握Cocos2D-x的基础理论和基本使用。
第三部分(第11~12章)为实战篇,采用Cocos2D-x分别开发了一款纵版射击游戏和横版动作游戏,旨在让读者深入了解Cocos2D-x的基础知识在游戏开发中的实战使用,而且这两款游戏分别代表了纵版卷轴和横版卷轴,可以让开发者深入了解不同类型游戏的开发思想。
第四部分(第13~16章)为高级篇,在前面的章节基础上,介绍Cocos2D-x的粒子系统和相关粒子编辑器的使用,学习了Cocos2D-x实现常用的游戏算法、内存管理和调试方法,最后简单介绍了Cocos2D的一个新的分支—Cocos2D-HTML5。
如果你是一名对Cocos2D-x有一定了解的开发者,可以从第3章开始阅读,而如果你是一个Cocos2D-x的初学者,请从第1章开始阅读。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为了方便与大家交流,我专门申请了新浪微群(微群地址:http://q.weibo.com/1480459),大家有问题可以在群中提出,我会及时解答的,我还会在群中及时更正书中的错误,我也会将相应的功能更新及时发布出来。书中的全部源文件可以从华章网站下载。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱manshuoquan@sina.cn,期待能够得到你们的真挚反馈。
致谢
首先感谢Cocos2D以及Cocos2D-x的开发团队,感谢他们为广大游戏开发者开发出一款如此优秀的游戏引擎。
感谢我的“老东家”天津猛犸科技有限公司,感谢这家公司对我的锻炼和栽培,使我对游戏开发由“好奇”变成“爱好”,感谢公司中我的老师和好战友们,感谢他们和我并肩作战的日子,我在他们身上学到的东西让我对游戏开发有了更深的认识和热爱。
感谢天津大学以及我的老师和同学们,尤其是我的编程启蒙老师罗凯先生。
感谢CSDN网站上每一位阅读我文章的网友们,是你们给了我信心,让我一直写下去。
感谢实战篇中游戏实例的美术人员:其中第11章游戏实例的美术人员为许鹏(新浪微博地址:http://weibo.com/ashjackt),第12章游戏实例的美术人员为李祖一(新浪微博地址:http://weibo.com/u/1893797647)。
感谢机械工业出版社华章公司的杨福川和白宇,感谢二位老师在这一段时间中始终支持我的写作,是他们的鼓励和帮助引导我顺利完成全部书稿。可以说没有二位老师的帮助和支持,我不会有勇气写这本书。
感谢我的爷爷和奶奶,他们是我人生的启蒙老师,尽管他们已经离开这个世界,但是我依然能感受到他们对我的支持和爱。
最后感谢我的父母,他们不仅含辛茹苦抚养我长大,还教会我很多做人的道理,为了他们我要更加努力。
谨以此书献给我最亲爱的家人,以及众多热爱游戏开发和Cocos2D-x的朋友们!
满硕泉(bill_man)
于中国天津