1.1 我是怎样遇到Cocos2d-x的
对于一般开发者来说,游戏开发应该属于很高级的东西了,因为不管是桌面应用还是移动APP,最初入门时都可以直接使用一些现成的控件。Web开发就更不用说了,几天的HTML基础加上各种现成的源码,堆出一个非常华丽的界面是一件非常容易的事情。目前信息高度发达,不管是直接买书还是利用网上的教程,没有基础的人都可以非常轻松地构建出自己的APP,但是游戏开发就又是另一回事了。
首先,游戏要通过图像来展示,这就注定了不可能有太多现成的控件能够直接使用。
其次,游戏使用的算法逻辑要比一般APP中单纯的显示内容要复杂得多(当然只是说新闻浏览之类的简单APP),这就说明想要开发游戏,起码要有一定的算法基础。
以上两点似乎就注定了游戏开发在一般人眼中是一件非常“高大上”的事情,对于开发者来说是这样的,对于“外行”来说更是如此,因为现如今是一个看“脸”的世界。即使是一个不懂开发的人,也会觉得游戏开发是非常厉害的,因为他能够从屏幕的画面上看出这是什么。即使对面某程序员用XXX不知名的高级算法实现了可以预测未来改变世界的不知名算法。对于旁观者来说,没用的,这不过是一大坨没有意义的黑框框而已。
笔者当年正是遭受过这样的一次鄙视之后发愤图强,为了面子立志要做一个能让所有人都“看得到”的东西。但是毕竟隔行如隔山,照着教程用C#做了个类似连连看、五子棋这样简单的小游戏之后就不知道该如何继续了。
后来在贴吧看到有人说用Python学习做游戏比较方便,于是果断开始了学习Python的道路。花了一晚上时间了解了Python的基本语法之后,我才了解到一个真相:并不是Python这种语言适合开发游戏,而是在Python下有一个用于游戏开发的插件叫做Los Cocos,它能让新手快速地实现一些2D游戏的开发。
在我知道真相的时刻,实际上Cocos2d已经发展得非常壮大了,已经有了Cocos2d-iPhone、Cocos2d-Windows等不同的版本,如图1-1就是Cocos2d的主要版本以及它的分支。其中本书主要介绍的就是Cocos2d-x在Windows环境下的开发。而一般所说的Cocos2d大多是指Cocos2d在Mac平台下的开发(开发的是适用于iOS以及安卓平台的APP),也有少部分是用Cocos2d直接代替了Cocos2d-x,但是它们的代码大多数时候是可以通用的,因此不需要对此过多在意。
图1-1 Cocos2d的各个版本及分支
1.1.1 Cocos2d的历史
这里容笔者先小小地跑一下题,稍微回顾回顾Cocos2d的历史。1973年在阿根廷,一个叫做Ricardo Quesada的小孩诞生了。他暂时还不知道自己今后所肩负的使命,而是将整个童年都用来进行各种娱乐活动。直到他12岁时,母亲给他买了一台电脑,他用这台电脑学习编程语言开始制作一些简单的小游戏,然后在大学选择了计算机专业。
2005年,Ricardo萌生了一个“一星期编写一款游戏”的想法,在2005~2007两年间,他制作了许多的游戏。
终于在2008年,他在阿根廷的Los Cocos决定对之前所制作的游戏进行一次整合,于是就出现了一款基于Python的游戏引擎Los Cocos。一个月后,Los Cocos发布了第一个版本,其名称也变成了被人们所熟知的Cocos2d。
当时正值乔布斯在努力推广iPhone平台的游戏开发,Ricardo恰到好处地捕捉到了这一机遇,开始与iPhone平台接轨,于是就有了Cocos2d-iPhone版本出现。
而现在所说的Cocos2d-x则是由触控科技在2012年以来不断提供财力支持,由原本的Mac平台移植过来的。Cocos2d-x包括了Cocos2d-x、Cocos2d-js以及Cocos Studio等一系列产品。同时该公司也开发了一系列基于Cocos2d-x的游戏产品,如图1-2所示。
图1-2 触控科技官网所展示的基于Cocos2d-x的游戏产品
在表1-1中展示了目前Cocos2d家族的主要版本以及支持平台。
表1-1 Cocos2d各个版本以及支持平台
从表中不难看出,Cocos2d是非常强大的,尤其是Cocos2d-x和Cocos Studio集成了许多便于开发者开发的编辑器等工具,用起来更是十分方便。
1.1.2 简单介绍一下Cocos2d-x
刚刚说过,当前Cocos2d-x是由触控科技出资进行移植和维护的。之前的Cocos2d需要在Mac环境下进行开发,这对许多初学者来说是一个很大的瓶颈,因为许多开发者都是从业余爱好开始一边摸索一边真正走向游戏开发的道路的。为了简单的爱好而热血冲动买一台Mac电脑显然是有些太奢侈了,而使用Cocos2d-x则可以在Visual Studio中开发,而且最新版本的Cocos集成开发环境也让开发者在配置时方便了许多,这大大降低了开发者的门槛。而在Cocos2d引擎中文官网中所提供的资料也比较详细和全面,因此游戏开发入门人员上手是比较容易的。
提示:Cocos2d-x由国人维护正是它的一大优势,因为不管是查找资料还是在应用方法上,都会比较贴近我们日常的使用习惯。
经过一段时间的发展,Cocos2d-x已经成为国内游戏开发者的首选,笔者记得曾经在QQ群里看到某前辈说过的一句话:“同样3个月,使用Unity3D能够了解皮毛算是很有天分了,而如果还不能用Cocos2d-x开发完整的游戏,说明你真的不适合做程序员”。这也从一个侧面反映了Cocos2d-x能够迅速发展的原因。
目前,已经有许多令开发者和玩家都耳熟能详的游戏在Cocos2d-x下被创造了出来,比如《捕鱼达人》《地铁总动员》《我叫MT》等。后来由于它的发展实在是太迅速了,几乎可以与原有的Cocos2d分庭抗礼了,于是Cocos2d-x有了它自己的logo,如图1-3所示。
图1-3 Cocos2d(左)与Cocos2d-x(右)的logo对比
Cocos2d-x主要包括以下几项内容:
❑流程控制:管理游戏在不同场景之间的切换。
❑精灵:用于简单地显示游戏角色、物体等内容。
❑动作和特效:使精灵能够呈现出各种不同的行为,以及旋转、缩放等。
❑地图系统:包括了2D平面地图以及45度角的2D地图系统。
❑菜单和文本渲染:用于显示游戏中的文字等内容。
❑基于OpenGL的硬件加速:用于保证游戏能够流畅运行。
从以上内容可以看到,Cocos2d-x(Cocos2d也是类似的)看起来并不是一款游戏引擎,而是一款专注于渲染对象的图形渲染引擎。但实际上它确确实实是一款完整的游戏引擎,这主要是因为除了它本身的内容之外,在Cocos集成开发环境中还包括了用于实现骨骼动画、控件设计等功能的Cocos Studio、Cocos Builder,以及用于模拟现实世界的Box2d等物理引擎。这样一来它几乎就是全能的了。
1.1.3 笔者的个人感受
跑题归来,笔者可以继续表达自己的感受了,那就是虽然使用了Cocos2d-x之后,想要实现一款游戏依然要自己对需要的类进行设计,由于Cocos2d中对于各种常用类的设计已经比较完美了,只要选对了方法并不需要花费太多的时间。而且基本不需要关注太多底层(比如图形渲染方面)的内容,这对于新手来说真是太好了。
而且Cocos2d-x本身就支持Windows平台,所以即使是为安卓等平台开发的程序也不需要一遍一遍地上传到真机,或者是在卡得让人难以忍受的虚拟机上调试。除此之外,笔者固执地认为Visual Studio是世界上最方便的IDE,没有之一。无论是在流畅度、UI界面还是其本身提供的代码提示等功能上,微软帝国的实力都是有目共睹的,这也为笔者能够沿着这条Cocos2d之路一直坚持下来提供了不少帮助。
图1-4展示了不少使用Cocos2d-x开发的游戏,这些游戏都可以拿来模仿和学习,这是学习游戏开发时一个非常好的方法。
图1-4 使用Cocos2d-x开发的游戏