一、为什么要写这篇文章?
cocos2d-x游戏引擎已经出来N多年了,网上教程一堆一堆的,但是为什么这么二的我还要写篇入门导航呢?这不是瞎子点灯白费蜡吗?给了这么多疑问,接下来回答一下。
入门导航篇呢其实不是给大牛和高手看的,而是为了我们团队接下来的新人入门准备的,需要在这篇博文中为新人做个导航,同时也通过这篇导航博文来考一考新人是否有意愿走向移动应用领域。移动互联网已经热火朝天了,除了应用现在最火的就是游戏了,当然手游的地位也在稳步提升,虽然不知道什么时候手游也趋于平淡,但是至少现在看来还是一个不错的前景。随接下来为俺们的新人来介绍下手游引擎cocos2d-x,考验下俺们的新人是否有意愿来在移动应用领域干出一番事业。
二、cocos2d-x引擎介绍
什么是cocos2d-x引擎?为什么叫引擎?
引擎顾名思义为汽车发动机,好比人类的心脏,人体全部的动力和汽车的动力都源于引擎,有了引擎你能很轻松的构建你想要的机械设备(不吐槽国内的机械引擎开发能力了),当然这里的引擎只是机械引擎的一种技术层面上的意思,并非实物能看得见摸得着的东西。游戏引擎是游戏的心脏,有了引擎你能在最短的时间内构建你的应用程序,并能利用引擎中的便捷功能来轻松实现你想要的游戏功能。
cocos2d-x游戏引擎作为现在国内手游引擎占有率第一的引擎,不得不说其巨大的优点已经快速开发能力。借助cocos2d-x引擎你能轻松实现跨平台(跨平台不知道啥意思?少年,百度一下),一次编写,到处运行,毫不夸张。
作为游戏的入门导航,接下来就介绍一下cocos2d-x开发游戏的一般模式和运行流程介绍。
三、引擎开发游戏入门介绍
在cocos2d-x游戏引擎中,采用节点树形结构来管理游戏,一个游戏中只有一个导演来管理游戏中的各个部分,一个游戏又可以分为不同的场景(不懂场景是啥?少年,想想电影如何拍摄的),一个场景又可以分为不同的层(不懂游戏中的层?少年,电影镜头该知道吧),一个层又可以拥有任意个可见的游戏节点(也即对象,游戏中所有的类都继承自节点类Node)。
下面来以一张图来解释一下各个概念:
导演——Director
一款游戏好比一部电影,电影中你只是观众,不能随自己的想法来改变电影情节。游戏中不一样,它具有更强的交互性。cocos2d-x游戏引擎中把统筹游戏大局的类(不懂什么叫类,先放放,后面会懂的)抽象为导演——Director,Director是整个游戏的核心,是整个游戏的导航仪,游戏中一些常用操作都由Director来控制,比如游戏场景的切换,游戏的暂停,游戏世界中坐标的转换,以及对游戏中元素(元素不懂,少年,想想你玩的Dota中的英雄吧)的控制等。
同时游戏中的数据,以及屏幕尺寸的获取都有Director来控制。
Director是游戏中的总导演,也是唯一的最高指挥者,好比电影片场导演即为老大,且为唯一的老大,不可替代,因此游戏中的Director采用单例模式(不懂单例模式,先放放,后面会懂的),一个游戏用一个导演老统筹全局。
场景——Scene
场景是游戏中必不可少的,好比电影没有了拍摄地方,有导演也没用呢。游戏中通常至少需要一个场景(见过那个电影中只有一个场景的吗?哦,不吐槽家有儿女了,23333),游戏中的关卡、版块的切换也就是一个一个场景的切换,好比电影中的蒙太奇手法一样,镜头切换一下,齐天大圣就从玉帝老儿那里跑道了阎罗王那里,游戏中的关卡切换也是一个道理。场景的重要作用就是流程控制作用,电影中不同场景的逻辑排列才构成了一部好的电影,游戏中也一样,不同场景的的组合才构建了一个完整好玩的游戏。
导演控制着场景的切换,一切的流程控制都由导演说了算,谁让人家是老大呢。导演控制场景的方法即为调用不同的函数(函数不知道?黑箱子总该知道吧,塞进去必要的东西,出来你想要的东西,这就是函数),不同的函数可以有不同的效果,这里不再仔细介绍。
游戏中光有场景也不行呢?电影中要是没有演员,拍摄场景干啥呢?你以为是拍摄自然纪录片呢?纪录片也有大树、花鸟虫鱼呢。场景只是游戏中的一个容器,游戏中显示的一切东西都包含在这个场景中,当然场景中包含的最重要的即为层——Layer。
层——Layer
上面介绍了层是包含在场景中的,那么层又是个啥东西呢?游戏玩家所看到的游戏中的一切元素几乎都是呈现在层中来展示出来的,比如游戏中的树,道路,英雄,英雄的技能展示等等,同时,Layer接受用户的输入事件,比如触摸、加速计、键盘输入等。游戏中可以有不同的层,每个层中所展示的东西不同,当把游戏中的所有层叠加起来看时,各个层中不同的元素混合在一起,就构成了一个完整的游戏界面,下面来看一下层的展示效果图。
可以看到上面有三个层Layer1,Layer2,Layer3,这三个层是叠加的效果,Layer1层处在最下方,Layer3处在最上方,可以看到Layer3的完整部分,而Layer1和Layer2都有被遮挡的部分,这就是层的效果,最上面的层所展示的为它的全部,下面的依次被遮挡。每个层中都有其固定的内容,依次来独立出来游戏中的各个不同的元素,方便管理某一类事物,比如游戏中的植物为一个层,那么所有有关植物的逻辑关系以及展示都在这个层中,即使这个层出现问题,也只是这个层中的问题,不会影响到游戏中其他元素。分立的层也就是模块化,方便管理也方便多人开发。
精灵——Sprite
上面介绍了层,但是光有层的概念没有层中的物体一样无法构成一个游戏,游戏中能够移动或者能够有特定行为的东西都统称为精灵Sprite,Sprite可以移动、旋转、缩放、执行动画、以及展示一些其他效果。
最典型的Sprite就如Dota中的英雄,每一个单独的英雄都是一个独立的精灵。玩家可以通过层中的输入事件来控制精灵的行为,比如跳跃,比如发射子弹等等。精灵可以说是游戏中的最小单位,也是游戏中最灵活的事物,游戏的好坏几乎由精灵来展示出来,好比电影中的演员一样。所有游戏中看到的事物都是有图片来生成的,精灵也不例外,了解动漫的都该知道动漫都是由一组一组图片快速播放来展示出来的,精灵的行为也是一样的,不同的图片组合可以出现不同的效果,游戏好坏最大程度上取决于图片的制作,可以说游戏成败的关键在于美工,向用户展示的好,用户就喜欢,否则你的游戏就是失败的,即使策略再好也没用。
上面讲了游戏中最基本的四点元素,一个游戏光有这些知识还是远远不够的,但是每一个游戏的基本组成都是这样的,只是中间的实现效果不同,作为一个介绍cocos2d-x游戏引擎的入门篇,也是考验俺们新人的第一关的内容,上面的介绍完全够用了,作为新人读过上面的东西后,应该思考几个小问题,否则当老大问起你的时候你也许会茫然不知所措,什么问题呢?这个需要自己从文中挖掘。
好了,作为一篇cocos2d-x的入门讲解,大牛和高手可以飘过,本来也不是为这些人准备的,上面的介绍中有不到之处,小人能力有限,也只能介绍到这里了。
原文地址:http://blog.csdn.net/hust_superman/article/details/39176837