译者:杨栋
邮箱:yangdongmy@gmail
第一章
介绍
有没有曾经梦想过自己可以编写一个电脑游戏,然后出售赚钱?现在通过为苹
果的iPhone, iPod Touch和iPad编写程序,然后在 iTunes程序商店(App Store)出售,你可以很容易地实现这个梦想。当然,编写游戏不是件容易的事情,你还要学习许多关于游戏开发和游戏编程的知识才行。不过因为你现在正
在阅读本书,所以我相信你已经决定要参与到游戏开发中来。而且你已经选择
了一个最有趣的游戏引擎:cocos2d for iPhone。
使用cocos2d的开发者们有着很多不同的背景。有些像我一样已经从事好多年花语
甚至十几年的专业游戏开发工作。另一些则刚刚开始学习iOS编程,或者刚刚
进入令人兴奋的游戏开发领域。不管你来自哪一个领域,你都可以通过本书学
到一些东西。
所有cocos2d开发者的一个共同特点是:每个人都喜欢游戏,也喜欢创造和编
写游戏。本书向此精神表示敬意。我也介绍了一些可以让开发过程变得容易的
工具。最重要的是,你将从本书学习到如何制作游戏和将这些知识应用到真实
的游戏开发中去。
我很反感那些花费所有的页面教人如何使用特定的API来制作另一款“小行星
克隆”(Asteroids Clone)游戏的书。我想最重要的应该是游戏设计概念和工具。这些东西不会随着API和你的个人编程喜好的改变而改变。在过去的20多年时间里,我积累了几百本编程和游戏开发的书籍。现在我最看重的书是那些
超越特定的技术,告诉我那些技术的设计原理。这本书不仅提供可以运行的代码,而且告诉你为什么这些代码可以运行和需要做出什么样的取舍。
我希望你可以学到如何编写有影响力的,在应用商店里出名的游戏。通过本书,我会带你理解这些游戏的理念和技术概念,也会告诉你cocos2d是怎样和Objective-C一起让你的游戏产生活力。本书的源代码有很多的注释,这些注
释将会帮助你理解代码的确切含义。
当我学习一样新的事物时,通过学习别人带有注释的代码是对我最有效的学习
方法。我想这个方法也同样适合你。因为你可以使用本书的代码作为你游戏的
基础代码,我很期待可以在不久的将来玩到你的游戏!不要忘记告诉我你写的
游戏!你可以发邮件给我:steffen@learn-cocos2d或者访问我为学习cocos2d专门设立的网站:www.learn-cocos2d。
为什么使用cocos2d for iPhone?
当游戏开发者寻游戏引擎时,他们首先会衡量一下各个引擎。我觉得
cocos2d是很多开发者非常好的选择,原因如下:
免费使用
首先,cocos2d是免费的。你可以用它为iPhone,iPod Touch和iPad编写免
费或收费的应用程序。你不需要付任何版税。
因为cocos2d基本上是Ricardo Quesada一个人创造的产品,你可以考虑向他
捐款,或者购买他的一些收费源代码项目,以支持他进一步开发cocos2d。你
可以通过cocos2d的商店捐款或者购买Richardo的产品:
/store。
开源
cocos2d是开源的。你可以学习游戏引擎的源代码,或者在必要的时候修改代码。你可以在此下载cocos2d:/download。
完全使用Objective-C编写
cocos2d是完全使用Objective-C来编写的。Objective-C是苹果用来编写iPhone应用程序的原生编程语言。iPhone SDK用的就是Objective-C,这样你
就可以更容易的理解苹果的文档和使用iPhone SDK的功能。
其他的一些诸如Facebook Connect和OpenFeint同样是用Objective-C编写的,因此这些功能也可以很
容易整合到cocos2d里面。
注:即使你喜欢使用别的编程语言,我还是建议学习Objective-C。虽然我已
经使用C++和C#很长时间,但是第一次看到Objective-C的语法时还是觉得很
奇怪。一开始其实我不大情愿学习这种据说已经是古老和过时的编程语言的。
我花费了不少时间来习惯它的语法,这要求我放弃很多既有的习惯和期望。
但是不要被Objective-C语法的表象分散你的注意力。你确实需要花些时间来
习惯它的语法,但是很快你就会发现它的好处。即使只是为了看懂苹果的那一
大堆文档,你也应该学习Objective-C。我保证你不会后悔花时间学习
Objective-C!
它是2D的
当然,cocos2d里面的“2D”是有意义的。相比于其他的iOS游戏引擎,
cocos2d专注于帮你制作2D游戏。你也可以自己编写3D渲染代码或者使用第
三方的解决方案,在cocos2d里面加载和显示3D模型。但是我觉得iOS设备更加适合2D游戏。一般来说,2D游戏更容易开发,也更容易让人理解。而且很
多时候,2D游戏对硬件的要求更小,这样就允许你创建更生动和拥有更多细节
的游戏图形。
自带物理引擎
10万左右买什么车好cocos2d整合了两套物理引擎。一套叫Chipmunk,另一套叫Box2d。它们的功
能基本相同,最大的区别是编写它们所使用的编程语言:Chipmunk是用C写的,Box2d是用C++写的。当然,如果你真要到它们的不同之处,你会到一些。
一劳永逸是什么意思不过这要求你理解物理引擎是如何工作的,从而做出选择。一般来说,你应该
选择比较容易理解的,并且提供更好文档的物理引擎。对大多数开发者来说, Box2d是比较好的选择,它面向对象的特性也更容易和Objective-C整合在一起。
降低了技术复杂度
游戏开发者喜欢cocos2d的一个原因是它隐藏了底端的OpenGL ES代码。大多
数cocos2d游戏中的图形由简单的Sprite类利用图片文件生成。换句话说,一个Sprite 就是一个贴图。你可以通过改变CCSprite类的Objective-C属性来
改变这个贴图的大小,旋转和颜。你不需要关心这些效果是怎样用OpenGL滦
ES代码来实现的。
同时,cocos2d允许你自由的在任何时间为任意游戏对象添加你自己的OpenGL ES 代码。你还可以添加一些Cocoa Touch的用户界面元素到你的程序中。
apple store注册cocos2d不仅让你不用处理OpenGL ES带来的复杂性,而且也提供了常用功能
高层次的抽象。这些功能可能需要你花费很多时间学习iPhone SDK。不过
cocos2d不会阻止你直接使用底层的功能。
需要编程知识
虽然cocos2d让游戏开发变得简单一些,但是说到底你还是需要很好的编程能
力和知识。其他的一些iOS游戏引擎,比如Unity, iTorque和Shiva专注于提供工具和流程以降低对编程知识的要求。但是使用那些工具的同时,你也牺牲
了灵活性,当然还有钞票。对于cocos2d,虽然你需要花点时间学习,但是你
是最接近于真正的游戏编程的,同时你不需要和引擎的核心打交道。
cocos2d有很好的社区支持
你总能在cocos2d的社区中到愿意提供帮助的人,快速得到答案。开发者们
很愿意分享他们的知识和经验。
几乎每天都会有新的教程和源代码示例分享出来,而且大多数是免费的。你也
可以在网上很多地方到学习资源。
一旦你的游戏制作完成,并在应用商店上架。你甚至可以在cocos2d的上
进行推广。至少你可以得到开发者们的关注和反馈。
注:我建议你跟随cocos2d在Twitter上的链接:twitter/cocos2d,你可以在第一时间得到来自cocos2d社区的消息。
你也可以跟随我的Twitter链接:twitter/gaminghorror。
打开Twitter页面后,在搜索框中输入“cocos2d”,然后点击“Save this search”链接,你就可以在以后一键查看与cocos2d相关的新闻了。你会经常看到在别的地方看不到的cocos2d新闻。你也可以在这里认识和你一样的cocos2d
开发者。
两条重要的关于cocos2d的花边新闻
我觉得cocos2d开发者需要知道以下两件事情:
Section 3.3.1
这个听起来有点像《星际迷航》中的秘密政府组织。其实Section 3.3.1是苹果开发者许可协议中的一节。当iPhone SDK 4发布时,这一节代表了苹果开发者
协议内容的重要变化。此条政策限制iOS开发者只能使用Objective-C, C, C++ 和JavaScript来开发iOS应用程序。这条限制让iOS开发者议论纷纷,也引起了
一部份人的担忧。
因为cocos2d是完全用Objective-C开发的,而且像物理引擎这样的外部库也是
用C和C++开发的,并且不使用任何的私有API。所以cocos2d开发者不需要担心
开发出来的应用会被苹果拒绝。
苹果的这条政策主要是用来防止使用Adobe Flash中间件开发出来的应用在iOS
市场上占据一席之地。
移植到其他平台上
你可能注意到cocos2d的接口在其他平台上也存在,包括Windows和Android。虽然它们都用一样的名字和开发理念,但是它们都是用不同的语言由不同的作者
所开发,和cocos2d for iPhone没有直接关系。比如,Android cocos2d的接口是用Java写的 - Java是
开发Android应用的原生编程语言。
如果你想把你的游戏移植到其他的平台,你首先要认识到不同平台上的cocos2d 游戏引擎很不一样。比如移植你的游戏到Android上就不是件容易的事情。首先,语言不一样,你需要将所有Objective-C代码用Java重写。完成重写后,你还需要做出相应的修改以适应目标平台上不同的cocos2d API,甚至有些功能还不被支持。最后,任何移植都会有它们自己的bug,每个平台都有它们自己的技术限制和挑战。
总体上来说,移植iOS游戏到别的同样叫cocos2d游戏引擎的平台需要花费与开
发全新软件一样的投入。不存在简单的移植。不同平台上的cocos2d引擎只是共享了相同的名字和理念而已。
这本书是为你写的
我可以想像到你拿起这本书是因为被它的标题所吸引。我想你可能是想给
iPhone和iPad开发游戏,而你选择的游戏引擎就是cocos2 for iPhone。或者你并不关心使用什么样的游戏引擎,你只是想给iOS设备开发2D游戏。也有可能你正在寻关于cocos2d的比较有深度的学习材料,因为你已经用它一段时间了。不管你选择本书的原因是什么,我敢确定你可以在这里学到很多
东西。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论