Cocos2d-iphone、Cocos2d-x和Cocos2d-JS是目前最流行的2D游戏引擎。它们属于同一家族,具有相同的API。
在介绍Cocos2d-JS之前有必要先介绍一下Cocos2d的家谱,图3-1所示是Cocos2d的家谱。
图3-1 Cocos2d的家谱
Cocos2d最早是由阿根廷的Ricardo和他的朋友使用Python开发的,后移植到iPhone平台,使用的语言是Objective-C。随着在iPhone平台取得了成功,Cocos2d引擎变得更加多元化。其中各个引擎介绍如下:
(1)ShinyCocos:使用Ruby对Cocos2d-iphone进行封装,使用Ruby api开发。
(2)CocosNet:是在MonoTouch平台上使用的Cocos2d引擎,采用.NET实现。
(3)Cocos2d-android:是为Android平台使用的Cocos2d引擎,采用Java实现。
(4)Cocos2d-android-1:是为Android平台使用的Cocos2d引擎,采用Java实现,由国内人员开发。
(5)Cocos2d-javascript:是采用JavaScript脚本语言实现的Cocos2d引擎。
(6)Cocos2d-x:是采用C++实现的Cocos2d引擎,它是由Cocos2d-x团队开发的分支项目。
(7)Cocos2d-JS:是采用JavaScriptAPI的Cocos2d引擎,一方面它可以绑定在Cocos2d-x上开发基于本地技术的游戏;另一方面它依托浏览器运行,开发基于Web的网页游戏。它也是由Cocos2d-x团队开发的分支项目。
此外,历史上Cocos2d还出现过很多分支,随着技术的发展这些逐渐消亡了,其中最有生命力的当属Cocos2d-x和Cocos2d-JS引擎。
Cocos2d-x设计目标如图3-2所示。横向能够支持各种操作系统,桌面系统包括Windows、Linux和Mac OS X,移动平台包括iOS、Android、WinPhone、Bada、BlackBerry和MeeGo等。纵向方面向下能够支持OpenGL ES 1.1、OpenGL ES 1.5、OpenGL ES 2.0和DirectX 11等技术,向上支持JavaScript和Lua脚本绑定。
图3-2 Cocos2d-x设计目标
简单地说,Cocos2d-x设计目标是为了实现跨平台,用户不再为同一款游戏在不同平台发布而进行编译。而且Cocos2d-x为程序员考虑的更多,很多程序员可能对于C++不熟悉,针对这种情况可以使用JavaScript和Lua
开发游戏。
Cocos2d-JS设计得非常巧妙,使用的语言是JavaScript,容易上手。基于Cocos2d-JS引擎开发的游戏程序,一方面是通过Cocos2d-html5引擎在Web浏览器上运行,另一方面是通过JSB(JavaScript binding)技术通过Cocos2d-x引擎在本地运行。Cocos2d-JS运行原理如图3-3所示。
图3-3 Cocos2d-JS运行原理
Cocos2d-JS与Cocos2d-x相比更先进,不仅可以在本地运行,还可以在Web浏览器上运行。