4.1 Cocos2d家谱
在介绍Cocos2d-x引擎与Lua绑定之前,有必要先介绍一下Cocos2d的家谱,图4-1是Cocos2d的家谱。
图4-1 Cocos2d的家谱
Cocos2d最早是由阿根廷的Ricardo和他的朋友使用Python开发的,后移植到iPhone平台,使用的语言是Objective-C。随着在iPhone平台取得了成功,Cocos2d引擎变得更加多元化,其中各个引擎介绍如下:
□ ShinyCocos:使用Ruby对Cocos2d-iphone进行封装,使用Ruby api开发。
□ CocosNet:在MonoTouch平台上使用的Cocos2d引擎,采用.NET实现。
□ Cocos2d-android:为Android平台使用的Cocos2d引擎,采用Java实现。
□ Cocos2d-android-1:为Android平台使用的Cocos2d引擎,采用Java实现,是由国内人员开发的。
□ Cocos2d-javascript:采用Javascript脚本语言实现的Cocos2d引擎。
□ Cocos2d-x:采用C++实现的Cocos2d引擎,它是由Cocos2d-x团队开发的分支项目。
□ Cocos2d-JS:采用JavaScript API的Cocos2d引擎,一方面它可以绑定在Cocos2d-x上开发基于本地技术的游戏;另一方面它依托浏览器运行,开发基于Web的网页游戏。它也是由Cocos2d-x团队开发的分支项目。在Cocos2d-x 3.7之后,Cocos2d-x和Cocos2d-JS合并了。
此外,历史上Cocos2d还出现过很多分支,随着技术的发展逐渐消亡了,其中最有生命力的当属Cocos2d-x引擎了。
4.1.1 Cocos2d-x引擎
Cocos2d-x的设计目标如图4-2所示。横向能够支持各种操作系统,桌面系统包括Windows、Linux和Mac OS X,移动平台包括iOS、Android、Windows Phone、Bada、BlackBerry和MeeGo。纵向方面,向下能够支持OpenGL ES1.1、OpenGL ES1.5、OpenGL ES2.0,以及DirectX11等技术;向上支持JavaScript和Lua脚本绑定。
图4-2 Cocos2d-x设计目标
4.1.2 Cocos2d-x绑定Lua
Cocos2d-x设计得非常巧妙,可以绑定JavaScript和Lua脚本语言,使不熟悉C++的人员也能使用Cocos2d-x引擎开发游戏,它们不使用C++语言的API,而是使用JavaScript和Lua语言的API。Cocos2d-x绑定JavaScript和Lua脚本原理如图4-3所示。
图4-3 Cocos2d-x绑定JavaScript和Lua脚本
图4-3中的C线路是为C++熟悉的程序员准备的。通过C++API可以访问Cocos2d-x引擎,开发本地游戏。
图4-3中的D线路是本书重点介绍的内容,是为熟悉Lua脚本的程序员准备的。使用Lua binding(Lua绑定)技术透过C++API访问Cocos2d-x引擎。