准 备 ���
本部分内容
第1章 认识Cocos2D-x
第2章 搭建跨平台的开发环境
第1章 认识Cocos2D-x
在这个“不愿等待”的时代,人们更需要“随时随地”与人通信或享受服务。相比起台式计算机、笔记本电脑,移动设备是*贴近消费者的媒体。由于智能手机的兴起,移动电话的更新换代越来越快。而手机作为“带有体温”的设备,有更多功能的需求。移动互联网时代的到来,使移动应用成为了人们生活中的一部分,而游戏作为人的天性,在移动应用中更是占有举足轻重的位置。在游戏开发中,引擎可以起到提高开发效率、提高游戏品质的作用。Cocos2D系列游戏引擎在众多游戏引擎中脱颖而出,成为众多***的**。本章就带领大家走进Cocos2D和Cocos2D-x的世界,首先从认识Cocos2D和Cocos2D-x开始。
1.1 什么是Cocos2D
大家认识并且熟悉Cocos2D,应该是从App
Store上几款非常火爆的游戏开始的,但是实际上Cocos2D引擎*早并非是为iOS(iPhone Operating
System,苹果移动设备操作系统)设计的。*早它是一款用Python语言开发的游戏引擎,后来使用Objective-C被移植为iOS平台的Cocos2D-
iPhone版本。不仅如此,Cocos2D被移植成各个版本,形成了庞大的Cocos2D家族。
1.1.1 Cocos2D的特点
Cocos2D是一个开源框架,用于构建二维游戏、演示程序和其他图形界面交互应用等。
它于2008年2月诞生于阿根廷Cordoba市附近的Los
Cocos,*早是由Ricardo和他的朋友们用Python开发的。*早引擎的名字源自开发地Los
Cocos。后来引擎的0.1版本改名为Cocos2D。2008年6月引擎宣布与iOS平台对接,并在当月发布了以Objective-C为主语言的Cocos2D-
iPhone版本。它与*早的Python版在设计思路上是一致的。之后使用Cocos2D-
iPhone开发的**游戏StickWars在App Store美国区付费榜冲到**,Cocos2D进入了可商用阶段。
由于App Store的发展,很多***开始使用Cocos2D- iPhone开发游戏并将游戏提交到App
Store上。截至2008年年底App Store就已经有数十款游戏使用Cocos2D开发。
随着智能手机平台的发展,在其他平台上的游戏开发需求也开始多了起来。此时,Cocos2D的各种平台、各种编程语言移植版也开始涌现,ShinyCocos、Cocos2D-Android、CocosNet,Cocos2D-JavaScript相继诞生。
Cocos2D的发展及其分支如图1-1所示。
图1-1 Cocos2D的发展及其分支
同时,英国的设计大师Michael
Heald为Cocos2D设计了新的标志,如图1-2所示(Cocos2D*早的标志是一个奔跑的椰子)。
以下是Cocos2D的一些版本介绍。
ShinyCocos:Cocos2D-iPhone绑定Ruby的实现。
CocosNet:Cocos2D的.NET实现,运行在Mono上。
Cocos2D-Android:Cocos2D的Java实现,并且能够在Android操作系统上运行。
Cocos2D-Android1:此分支是由一位国内*****建立发展的。这是另一个关于Android操作系统的Cocos2D引擎实现。
Cocos2D-x:Cocos2D的C++语言移植版,目前2.0版本以上支持Win32(Windows
32,视窗32位操作系统)、Android、iOS。
Cocos2D-XNA:由Cocos2D-x团队开发的分支,支持WP(Windows Phone,视窗手机操作系统)。
Cocos2D-HTML5:由Cocos2D-x团队开发的分支,支持HTML5
Canvas技术,获得Google等公司的资助。
Cocos2D-JavaScript
:Cocos2D的JavaScript语言实现。由于HTML5技术的发展,相信Cocos2D-JavaScript会有更广阔的前景。
1.1.2 Cocos2D的主要功能
作为一款游戏引擎,在游戏开发方面Cocos2D引擎具有很多的实用功能。
首先Cocos2D降低了技术的复杂性。它虽然基于OpenGL(Open Graphics Library,开放图形库)和OpenGL
ES(OpenGL for Embedded
Systems,嵌入式系统开放图形库),但是使用Cocos2D系列的引擎无须掌握OpenGL的相关知识。大多数Cocos2D游戏中简单的图形对象由Sprite精灵对象生成。Sprite就是一个贴图。你可以调用Cocos2D中的方法来实现图片的缩放,如图1-3所示。
你也可以调用Cocos2D实现旋转,如图1-4所示。
图1-3 Cocos2D实现缩放的效果 图1-4 Cocos2D实现旋转的效果
你无须关心这些功能在底层是如何实现的。同时由于它是开源的,你可以获得引擎的全部源代码,也可以根据你的需要用OpenGL知识来修改或生成新的游戏对象。也就是说,对于初学者来说,Cocos2D可以避免你花费时间去研究OpenGL的相关内容,同时它也不排斥*****对于引擎的修改,进而使***随心所欲地来使用它。
Cocos2D自带的物理引擎可以提高玩家游戏的乐趣。目前非常火爆的《愤怒的小鸟》等多款游戏都在游戏中加入了物理引擎。Cocos2D系列引擎集成了目前比较流行的两款物理引擎(Chipmunk和Box2D),从而大大方便了游戏***,并且提高了开发的效率。Cocos2D中使用物理引擎的例子如图1-5和图1-6所示。
Cocos2D的***社区十分活跃。***在开发过程中如果有问题,会得到很快的解决。而且,相应的参考资料也很多,***们非常愿意将他们的经验和知识分享出来。因为它是开源的,所以你的修改也相对方便了许多,你在游戏开发中会有很大的灵活性,不必束缚在引擎的功能限制上。对于富有经验的游戏***来说,这点十分重要。
同时,由于Cocos2D开源性和强大的社区支持,相应的工具开发也非常活跃,例如*早的粒子编辑器到现在的动画编辑器。目前集成编辑器CocosBuilder已经初见雏形并且支持Cocos2D和Cocos2D-x。关于相关的工具,本书也会在之后的章节详细介绍。
1.1.3 Cocos2D的应用
Cocos2D作为一个游戏引擎,已经从*早的版本移植到很多种语言和框架上。其中*流行的几个包括:支持iOS操作系统的Cocos2D-iPhone版本,支持Android操作系统的Cocos2D-Android和Cocos2D-Android1,以及可以横跨两大操作系统(iOS和Android)的Cocos2D-x版本,当然也不能忽略有着先天跨平台优势的Cocos2D-HTML5版本。相信在不久的将来,Cocos2D会得到更广泛的应用。
当然,Cocos2D*为辉煌的舞台就是App
Store。使用Cocos2D-iPhone和Cocos2D-x两个版本开发的游戏在App
Store上有着举足轻重的位置,曾经创下过很多辉煌的战绩。如图1-7所示,使用Cocos2D引擎开发的游戏在付费应用榜(Top
Paid)前9里面占2席,在免费应用榜(Top Free)前12里面占7席,并且占据两个榜的**位。
图1-7 画框的游戏为使用Cocos2D引擎开发的游戏
随着Cocos2D-HTML5的发布,相信将来Cocos2D引擎会有更大、更好的舞台得以发挥,尤其是在网页游戏方面。而借助HTML5这个跨平台利器,Cocos2D在跨平台的支持上将会迈出更大的一步。
1.2 什么是Cocos2D-x
之前介绍了,Cocos2D-x是Cocos2D家族的一个重要分支。它的跨平台特性,使***编写一套代码就可以横跨Android和iOS两大平台,从而提高***的开发效率。Cocos2D-x不但具有跨平台的特性,还保留了Cocos2D的全部特性,这样之前的Cocos2D***可以很轻松地掌握Cocos2D-x。
1.2.1 Cocos2D-x的特点
随着智能设备平台的普及、用户数量的增多,智能平台的应用,尤其是游戏异常火爆。从《植物大战僵尸》到《愤怒的小鸟》,移动平台游戏的开发进入了新的阶段。但另一方面,平台的多样性也给***带来诸多不便。怎样将一款游戏发布到多个平台也是***们一直在探索的问题。特别是随着Android和iOS平台的兴起,***的游戏跨平台的需求更强了,随即Cocos2D-x分支诞生。其中“x”包含两个意思:一方面是C++的文件扩展CXX,“X”表示该项目是由C++编写的;另一方面意味着交叉,这个开源项目的目标是让用户创建跨平台的代码。Cocos2D-x是用C++重写的Cocos2D框架,因为Android和iOS均支持C++。
因为Cocos2D-x具有跨平台的特点,再加上Cocos2D全球社区的支持,Cocos2D框架简单易学、十分容易快速上手。因此Cocos2D-x迅速成为***的**。经过一段时间的发展,众多***使用Cocos2D-x开发出了多款游戏,包括捕鱼达人、地铁总动员等。2012年年初,英国设计大师Michael
Heald专门为Cocos2D-x设计了标志,如图1-8所示。
2012年年初,Cocos2D-x团队再次开发出两个分支,分别是支持Windows
Phone的XNA版和支持HTML5的HTML5版(后者还得到了Google公司的赞助)。此外,在Zynga的帮助下,还研发出绑定JavaScript的Cocos2D-x
2.0版本。随着Cocos2D及其分支的发展,其会有更多跨平台特性,从而可以支持更多的平台,这会提高***的开发效率。相信Cocos2D-x将会更加受到广大***的欢迎,Cocos2D-x引擎也可以扩大其影响,成为全平台的二维游戏引擎。
1.2.2 Cocos2D-x的主要功能
Cocos2D-x继承了Cocos2D的全部特点,包括如下内容:
流程控制:非常容易地管理不同场景之间的流程控制。
精灵:快速而方便的精灵。
动作:可组合精灵的动作(如移动、旋转和缩放等),使精灵动起来。
**:包括波浪、旋转和透镜等特性。
平面地图:支持平面地图和45度角地图。
转换:从一个场景移动到另外一个不同的场景。
菜单:创建内部菜单,包括主菜单和游戏菜单。
文本渲染:支持文本渲染标签。
文档:包括编程指南、API参考、视频教学和很多简单的测试例子。
BSD许可:BSD(Berkly Software
Distribution,伯克利软件套件)开源协议给予使用者很大的自由。使用者可以自由使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再次发布。
基于OpenGL:支持硬件加速。
2012年6月,Cocos2D-x发布了2.0版本(本书成书之时的*新版本是2.01版本,本书的示例也将使用2.01版本)。Cocos2D-x的2.0以上版本采用OpenGL
ES的2.0分支,支持CocosBuilder编辑器,并且支持一些扩展类,包括CCControlExtension、
CCNotification、
CCListView等,还支持JavaScript脚本的编写,并且*新版本只支持iOS、Android和Win32三个平台。图1-9所示是国外网友为Cocos2D-x制作的广告,说明了Cocos2D-x对于iOS和Android两个主流平台的支持。
图1-9 国外网友为Cocos2D-x制作的广告
1.2.3 Cocos2D-x的应用
由于跨平台的特性,Cocos2D-x得到了诸多***的喜爱。截至2012年4月月底,使用Cocos2D-x开发的游戏有200多个,同时有很多用Cocos2D-iPhone开发的游戏的移植版本。图1-10所示为使用Cocos2D-x开发的部分游戏。
***也尝试着使用Cocos2D-x实现很多不同游戏中的效果。CocoaChina论坛举办的**大赛中,很多**都基于Cocos2D-x游戏引擎开发。从显示水波纹效果到塔防游戏例子,从切绳子**到“愤怒小鸟”太空版效果模拟,Cocos2D-x的“江湖霸主”地位初步显现。图1-11所示为部分**示意图。
图1-10 使用Cocos2D-x开发的部分游戏
图1-11 CocoaChina论坛举办的**大赛中的部分**
1.3 Cocos2D-x与Cocos2D-iPhone的比较
Cocos2D-x与Cocos2D的其他版本和Cocos2D-iPhone版本*大的不同之处就是,它并不是单纯地为某一个平台而开发的。它的目的就是为了跨平台,包括Cocos2D-x和其分支下的Cocos2D-HTML5版本,所以从语言的选择上,Cocos2D-x选择了可以在两大主流移动平台Android和iOS上都支持的C++作为开发语言,并且在效率上也有所保证。Cocos2D-HTML5版本采用了HTML5作为跨平台的选择,使得Cocos2D这个游戏框架得以在更多的平台上使用,尤其是网页平台。
由于Cocos2D-x的跨平台特性,它的开发工具也体现出跨平台的特性。如果使用Windows操作系统,那么可以使用Visual
Studio进行开发,也可以使用Eclipse的C++插件及Android开发环境进行开发;如果使用Linux操作系统,那么可以使用Eclipse的C++插件及Android开发环境进行开发;如果使用Mac系统,可以使用Xcode进行开发。当然,如果想要编译出相应平台运行的游戏包,需要相应的开发环境。比如编译出Android操作系统上的APK(Android
Package,安卓系统安装包),就需要在Android的开发环境里进行编译(这些内容会在第2章介绍)。但是代码无须重新修改,这就为开发提供了便捷性和灵活性。这点与使用Cocos2D-iPhone相比,只是使用Xcode开发环境有所不同。
Cocos2D-x的另一个不同之处和利好优势就是它的主力开发团队在中国,这就为中国的***提供了不少便利,而且关于Cocos2D-x的中文资料和网站也比较多。
2012年3月31日,第四届CocoaChina游戏***大会暨Cocos2D-x技术研讨会在北京剧院举行。广大Cocos2D-x***和Cocos2D-x的研发团队有了面对面的机会,这也非常有利于***的交流。目前其中文网站和论坛也已经建立,网址为http://cn.Cocos2D-x.org/,方便广大中国***的学习和交流。图1-12为Cocos2D-x中文网站的首页。
图1-12 Cocos2D-x中文网站首页
2012年6月份,Cocos2D团队决定开放Wiki(夏威夷语"wee kee wee
kee",是一种多人协作的写作工具)。只要是Cocos2D-x.org注册用户,就可以编辑修改除了首页概述之外的所有Wiki页,也可以自己新建条目!按照Wikipedia(维基百科)的规则,没有人工审核,修改立刻生效,进而使Cocos2D-x的文档和参考资料更加丰富。
当然,为了方便***将已有的Cocos2D-iPhone游戏移植到Cocos2D-x上,Cocos2D-x也继承了很多Objective-C的内存机制和Objective-C提供的一些类(包括CCArray等),这些内容也会在后续章节陆续介绍。Cocos2D-x从2.0版本开始支持CocosBuilder工具,从而更加方便***将已有的Cocos2D-iPhone游戏移植到Cocos2D-x上。
1.4 本章小结
本章介绍Cocos2D和Cocos2D-x的由来、特征和应用。你需要了解Cocos2D的历史和它的各个分支的由来,以及Cocos2D框架和Cocos2D-x的特点和使用,为后面的章节做准备。从第2章开始,将带领大家逐渐走入Cocos2D-x的奇妙世界,首先是跨平台的各个开发环境的搭建。