手把手教你用cocos2d开发iphone游戏-译文1
(2011-07-07 16:37:00)
说明:本书的英文版美国当地时间7月8日出版,译文基于该书的Rough Cut版本(已更新至最新)
前言
什么是Cocos2D?
Cocos2D(www.cocos2d-iphone.org)是一个开源的Objective-C 框架,用于在iOS和Mac OS X系统上制作2D游戏(当然,现在已经有开源的cocos3D可以帮助开发3D游戏)。
使用cocos2d,你可以轻易的开发iPhone,iPod touch,iPad和Mac上的游戏。你可以把cocos2d作为一个库导入自己的Xcode项目,也可以使用内置的cocos2d模板来创建一款新游戏。
Cocos2d使用opengl es进行图像渲染,从而可以让ios设备的GPU可以发挥到极致。Cocos2d包含一系列的功能和特性,在学习的过程中我们会一一道来。
起初cocos2d诞生于一个用于开发2d游戏的Python框架。在2008年的冬天,有识之士把它引入到iphone中来,并使用objective-c来重新编写。当然,现在已经有了各个版本的cocos2d,包括Ruby,Java(Android),C++,甚至Mono(C#/.NET)。
温馨提示:
关注cocos2d的人们自发形成了一个异常活跃而友好互助的社区。其中www.cocos2d-iphone.org/forum
为什么要学习cocos2d?
使用cocos2d,游戏开发者可以把关注的焦点放在游戏机制的设计本身,而不是耗费大量时间学习晦涩难懂的低级API。如今的苹果应用商店早已人满为患,有多达40万的应用,而且这一数据每天都在迅速增加。要想在appstore中取得成功,就必须采用快速迭代的开发方式,要在尽可能短的时间内设计出游戏的原型,并开发出可以测试的版本。要做到这一点,cocos2d可谓是最佳神兵利器,否则开发者将被Opengl es或openal陡峭的学习曲线吓退百里。
Cocos2d里面还提供了很多的实用工具类,比如TextureCache,它可以自动将图像存放在缓存中,使得游戏的运行更加迅速顺畅。TextureCache在后台运行,而它只是cocos2d大量实用工具类中的一个,开发者甚至无需知道该类的具体使用,因为它会自动帮你搞定。其它比较实用的工具类还包括渲染,精灵表单,强大有效的音效系统,以及更多。
Cocos2d同时也是一款强大的游戏原型工具。开发者甚至可以在短短一小时内就快速开发一款游戏的原型。相信在看这本书的朋友都想开发Iphone和Ipad游戏,而cocos2d将帮助你尽快的实现这一目标。
Cocos2d的核心特性
看了以上这些,还不敢保证cocos2d适合你?好吧,让我们来先看看cocos2d的一些令人心动的特性,是不是真能帮忙开发者更方便快捷的开发游戏。
Actions(动作)
Actions(动作)是cocos2d最强大的特性之一。使用动作,开发者可以轻松的来移动,缩放,操作精灵和其它对象。让我们来看一个例子,如果想要在5秒钟内将一艘太空货船向屏幕的右侧移动400像素的距离,只需以下代码就可以了:
CCAction *moveAction = [CCMoveBy actionWithDuration:5.0f
[spaceCargoShipSprite runAction:moveAction];
就这么简单,两行代码而已!
内置字体支持
在cocos2d中处理文字非常容易,这一点对于显示菜单,分数,调试等等都非常有用。Cocos2d中内置了对TrueType字体的支持,同时还支持快速位图字体渲染系统,这样开发者仅需数行代码就可以在屏幕上显示文字。
海量的效果库
cocos2d中还包含了一个强大的粒子系统,可以给游戏添加各种很炫的效果,如烟,火,雨,雪等等。
同时,cocos2d还包含了一些内置效果,如翻转,淡入淡出,从而可以提供游戏屏幕切换的各类效果。
非常适合制作TileMap(瓦片地图)类游戏
cocos2d内建了对瓦片地图游戏的支持,如果开发者的游戏世界很大,由一些小的可重用图像构成,这一点将非常有用。在Cocos2d种也可以很方便的移动camera视角,从而实现滚动背景或关卡。更妙的是,cocos2d还支持视差滚动,从而让你的游戏充满三维的深度和透视效果。
声音/音效支持
cocos2d中内置的音效引擎可以轻松发挥OpenAL的强大威力,而无需苦心钻研那些低级API。借用cocos2d的音效引擎,开发者可仅用一行代码来播放背景音乐或音效。
两个无比强大的物理引擎
cocos2d还支持两个无比强大的物理引擎,Box2D和Chipmunk,这两款引擎对于游戏开发来说堪称梦幻。借用物理引擎,开发者可以让自己的游戏显得更加真实,同时可以使用游戏物理学来创建新的游戏机制。
重要概念
在我们正式开始学习之前,先让我们熟悉一下关于cocos2d和游戏编程的重要概念。
Sprite(精灵)
在游戏开发中,我们经常会看到sprite(精灵)这个术语。精灵是一个图像,可以在屏幕上独立的移动。一个精灵可能是玩家角色,或是敌人,或者是大的背景图像。一般情况下,精灵来自于开发者所准备好的PNG或PVRTC图像。一旦图像被载入内存,精灵将被转换成纹理图,从而被iphone GPU用于在屏幕上渲染。
Singleton(单例)
Singleton(单例)是一种特殊的Objective-C 类,通常只有一个实例对象。单例的经典就是iPhone应用中的Application Delegate类,或cocos2d的Director(导演)类。用户在代码中调用单例时,将返回该类的唯一实例,而不管是哪个类在调用它。
OpenGL ES
OpenGL ES是Open Graphics Library(开发图形程序接口,OpenGL)的移动版本(ES是嵌入式系统的缩写)。依靠opengl es,开发者可以在Iphone或Ipad中向gpu 发送0和1的数字信息。对于iPhone或iPad来说,OpenGl Es是最快捷的图像渲染方式。如果你是头一次接触游戏开发,恐怕会被Open Gl Es的陡峭学习曲线搞得头大。不过幸运的是,直接使用cocos2d可以让你避开对opengl es的学习。
到目前为止,iPhone和iPad支持OpenGL ES的1.1和2.0版本。Cocos2d的技术路线中打算以后支持OpenGL ES 2.0,但目前仅支持opengl es 1.1版本。
语言和屏幕分辨率
cocos2d是用Objective-C来编写的。为了让自己的游戏高效执行,我们必须理解一些基本的内存管理技术。Cocos2d支持所有的iOS设备,从2007年发布的iPhone1代到iPhone4代,iPad 2代,等等。
2d和3d之争
人总是先学会走路,再学会跑步。对于游戏开发来说,同样如此。为了以后更深入的学习3d游戏开发,我们首先得学会如何制作2d游戏。在cocos2d中提供了一些3d特效和过渡效果,如三维波浪效果,盘旋摄像机移动,但仅此而已。
Cocos2d是为开发2d游戏而设计的,因此本书中的教程和示例仅提供和2d游戏相关的内容。如果你想学习3d游戏的制作,可以考虑cocos3d,Unity, Unreal Engine(虚幻引擎),或直接用OpenGL。
书中的游戏:太空维京人
本书通过手把手的教你制作一个完整的iPhone和iPad游戏来学习cocos2d。你所制作的游戏名叫太空维京人。如果你现在就想体验一下,不妨直接从App Store中免费下载:http://itunes.apple.com/us/app/id400657526)
当然,如果你有足够的耐心来亲手制作这款游戏,那就更好不过了。你不仅能学会制作一款游戏,同时也可以在这一过程中尝试对游戏代码稍作调整,来看看会对游戏性产生哪些影响。
本书不光是为了教会你认识cocos2d的全部特性,更重要的是教你如何运用所学的东西来制作一款真正意义上的游戏。当你完成这一过程时,就可以有足够的知识和经验来开发一款游戏投放App Store的市场。你从太空维京人中所掌握的概念可以用来制作各类游戏,从动作游戏到解谜游戏,等等。
太空维京人的故事背景
每个游戏都是你想象力的延伸,有角色,有剧情,唯有这些才可以转换成游戏机制。以下是太空维京人的故事背景。
在遥远的未来,地球后代被迫移民到太阳系外的殖民星球。为了创建一个更适合人居住的环境,大型的星际机器穿越银河系,把从北欧和格陵兰挖掘的巨大冰块运送到这些移民星球。然而这些科学家们不知道的是,其中的一个冰块里面冰冻着维京人Ole,倒霉的Ole曾在亿万年前因为抵抗蛮族部落而不幸掉进了一条冰河。Ole在这个冰棺中沉睡了亿万年,却在远离家乡数万光年的地方被异星上升起的太阳唤醒了。
玩家可以使用屏幕左侧的虚拟控制手柄来左右移动Ole,使用右侧的虚拟手柄则可以让Ole跳跃和攻击敌人。刚苏醒的时候,Ole身无长物,唯有老拳。随着游戏关卡的进展,Ole会找回自己惯用的棒球棍。同时玩家还可以在物理关卡中使用重力加速计来控制他。
太空维京人是一款策略类动作游戏,重点在动作上。制作这款游戏的目的是让开发者不仅能够了解和使用cocos2d,更重要的是用它来开发一款真正的游戏。
太空维京人内置多个关卡,其中每个关卡可以教会大家学会cocos2d或游戏设计开发的某个方面。例如,第一关是使用两侧的虚拟手柄来攻击敌人,第四关是采矿车赛车,用来显示Box2D和Chipmunk的游戏物理学。我们真心希望大家可以将Space Viking中的代码重用到你自己的游戏中!
是的,这个游戏的所有代码都是开源的,你可以尽情重用到自己的游戏中!
本书所适用的读者
如果你曾经开发过iPhone上的应用,但是想改行开发游戏,那么无疑本书是适合你的。
如果你想开发3d游戏,那就不用浪费这个时间了。
学习本书所需要的知识
起码要对Objective-C, C , Xcode比较熟悉。 尽管本书将尽可能的保持简洁易懂的风格,同时尽量限制C语言的使用,但读者最好还是对以上有一定的了解和使用经验。
学习资源推荐:
http://developer.apple.com/iphone
http://www.iphonegametutorials.com