引擎简介
Cocos2d-x的原型是Cocos2d,一个最早来源于几位Python开发者在PyWeek竞赛中的作品,目的是封装底层绘图代码,简化2D游戏的开发过程,避免每次都"重新发明轮子"。有了Cocos2d,开发者就可以把全部精力集中在游戏开发上,而不必关心绘图的细节。这个Python版本的引擎最早发布于2008年4月,并一直保持版本的更新。
在Cocos2d发布的同年3月,苹果发布了iOS的SDK,允许第三方开发者为iOS设备开发各种应用,其中游戏应用是最热门的。同样是为了简化游戏开发的难度,把大家从复杂的OpenGL编程中解放出来,RicardoQuesada将Cocos2d从Python移植到了iOS上,并使用iOS的原生语言Objective-C重写了游戏引擎。2008年11月,Cocos2d-iPhone引擎正式开源,发布了0.1版,为2D游戏开发提供了一个便利的方式。伴随着iOS开发的大潮,Cocos2d-iPhone引擎逐步完善,这得益于社区内世界各地开发者的贡献,并且其发展速度已经大大超过了Python版本。由于Cocos2d的易用性,使用Cocos2d-iPhone开发的游戏数量日益增多,至今已经有2500多个游戏在AppStore上架。
后来,Android的兴起大大扩展了移动终端的游戏市场,也由此产生了一个迫切的需求,即游戏开发者需要将游戏同时部署在两个热门平台上,但是为一个游戏维护两套代码的代价是非常昂贵的,尤其是在两个平台的主流语言、主流引擎还不统一的情况下。
因此,基于C++语言、以Cocos2d-iPhone为基础开发的Cocos2d-x出现了,它凭借其从语言到接口的跨平台特性,受到了跨平台游戏开发者的广泛关注。使用Cocos2d-x开发的游戏已经可以做到"代码通用",只需要经过少量调整,就可以移植到包括iOS、Android、Windows、Linux在内的诸多平台上。
从本质上说,Cocos2d是一个图形引擎,封装了复杂的图形接口,通过抽象出精灵、动作等概念,降低了游戏开发难度,简化了开发过程。Cocos2d-x为保证游戏能方便地移植到不同平台上,又在此基础上做了很多扩展,包括一套Objective-C风格的基础类系、平台无关的多点触摸协议、重力感应和音频系统等。
Cocos2d系列产品关系
自Cocos2d-iPhone取得成功后,Cocos2d系列产品已经推出许多子项目。这里列出了一些最为出名的旗下分支游戏引擎。
蓝色方框中的分支引擎(包括Cocos2d-iPhone,Cocos2d-x,Cocos2d-HTML5及CocosBuilder编辑器)在同一路径图上合作运行,并已发布协调版本。这意味着开发人员可以期待一条完整的工具链为网络设备或移动设备开发多平台游戏。
从下表可知,不同分支引擎支持不同的目标平台并使用不同的编程语言。
分支引擎 |
编程语言 |
平台 |
Cocos2d |
Python |
桌面操作系统 |
Cocos2d-iphone |
Objective-C,JavaScript |
iOS |
Cocos2d-x |
C++,Lua,JavaScript |
参见支持平台和编程语言部分 |
Cocos2d-html5 |
JavaScript |
支持HTML5的浏览器 |
ShinyCocos |
Ruby |
iOS |
Cocos2d-windows |
C++ |
WindowsXP/7 |
Cocos2d-android |
Java |
Android |
Cocos2d-android-1 |
Java |
Android |
Cocos2d-xna |
C# |
MicrosoftandMonoGameplatforms |
Cocos2d-javascript |
JavaScript |
支持HTML5的浏览器 |
Cocos-net |
C# |
Mono-supported平台 |
Cocos3d |
Objective-C |
iOS |
架构
目录结构
目录名称 |
说明 |
CocosDenshion |
|
cocos2dx |
Cocos2d-x框架的主目录。 |
document |
你可以下载doxygen文档系统,利用该系统打开本文档文件夹内的doxygen.config文件,然后再生成离线API文档。 |
Extensions扩展 |
如果需要更多图形用户界面的控制功能、网络访问、CocosBuilder支持甚至2.5D功能,你可以使用usingnamespacecocos2d::extension。 |
External外部的 |
|
licenses |
cocos2d依赖很多其他开源项目。所有授权许可文件都在这个目录。 |
samples |
重要!这是你该开始用到的文件。从Cpp/HelloCpp开始学习,你会在TestCpp中发现所有类的用法。lua和js样本也在这个目录。 |
scripting |
我知道你不喜欢C++,写起来太复杂。没问题,我们有Lua和Javascript。Scripting文件夹包括来自火狐的lua官方引擎和SpiderMonkey引擎。 |
template |
该目录包括在不同集成开发环境及不同平台中创建Cocos2d-x新项目的模板。这里汇集了数量庞大覆盖各种开发环境和平台的模板! |
tools |
|
CHANGELOG |
作者修订记录文档。 |
主要功能
- 流程控制(flowcontrol):非常容易管理不同场景(scene)之间的流程控制。
- 精灵(sprite):快速而方便的精灵用于显示一切可见的元素。
- 节点(node):基于树结构的分层组织方式,方便管理不同层次的游戏元素,同时提供了统一管理的计时器(scheduler)。
- 动作(action):应用于精灵或其他游戏元素的动画效果,可以组合成复杂的动作,如移动(move)、旋转(rotate)和缩放(scale)等。
- 特效(effect):包括波浪(wave)、旋转(twirl)和透镜(lens)等视觉特效。
- 平面地图(tiledmap):支持矩形和六边形的平面地图。
- 转换(Transitions):从一个场景移动到另外一个不同风格的场景
- 菜单(menu):创建游戏中常用的菜单。
- 文本渲染(TextRendering):支持标签和HTML标签动作
- 用户输入:提供接受用户触摸事件、传感器(如加速度计)等输入的简单解决方案。
- 文档(document):编程指南、API参考、视频教学以及很多简单可靠的测试样例。
- MIT许可:免费开放的协议,但是请谨记尊重版权。
- 基于Pyglet:没有外部的依赖
- 基于OpenGL:支持硬件加速
- 3D对象:MD2模型支持
- 脚本语言:支持Lua,JavaScript语言