新書推薦:
《
塔西佗(全二册)(二十世纪人文译丛)
》
售價:NT$
1800.0
《
宋初三先生集(中国思想史资料丛刊)
》
售價:NT$
990.0
《
简帛时代与早期中国思想世界(上下册)(王中江著作系列)
》
售價:NT$
1400.0
《
天生坏种:罪犯与犯罪心理分析
》
售價:NT$
445.0
《
新能源材料
》
售價:NT$
290.0
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
編輯推薦:
深iOS开发工程师撰写,Box2D创始人Erin Catto等多位专家联袂推荐
系统讲解Cocos2D中的各种功能组件及技术实现细节,详细介绍Box2D、Chipmunk两大物理引擎的使用方法和粒子系统的原理,以及iOS游戏的性能测试和优化3)以一个真实有趣的游戏案例Space Viking为主线,全面展示了Cocos2D游戏开发的流程、方法和技巧,实战性强
內容簡介:
本书封底贴有Pearson Education(培生教育出版集团)激光防伪标签,无标签者不得销售。
这是一本系统的、富有趣味的、具有实战性的Cocos2D游戏开发指南。由两位资深的iOS开发工程师和游戏开发工程师撰写,Box2D创始人Erin Catto等多位专家联袂推荐。
全书以一个真实有趣的游戏案例Space Viking为主线,通过这个游戏案例的逐步迭代实现,将利用Cocos2D、Box2D和Chipmunk进行游戏开发必须掌握的各项关键技术(场景、图层、精灵、动画、动作、物理效果、粒子系统、碰撞检测、关卡设计、音效……)串联起来,系统讲解了iOS游戏开发者利用Cocos2D进行开发应该学习的理论知识,全面展示了Cocos2D游戏开发的流程、方法和技巧。此外,还介绍了粒子系统的原理,以及通过一个真实的游戏案例讲解了iOS游戏的性能测试和优化。
全书分五部分,共17章,第一部分(第1~4章)介绍了如何安装Cocos2D及如何用Cocos2D开始开发游戏,如何为游戏角色添加动画和动作;第二部分(第5~6章)介绍了如何在游戏中添加更多角色,并在此过程中介绍了Cocos2D中的动作和特效及文字功能;第三部分(第7~9章)介绍了如何通过添加菜单,使用声音和滚动来扩展游戏中的游戏关卡;第四部分(第10~13章)介绍了如何运用Cocos2D中的Box2D和Chipmunk为游戏添加特效,如重力、逼真的碰撞等,并添加了一些基于物理的关卡;第五部分(第14~17章)介绍了如何快速添加粒子系统到游戏中,如何添加成就系统和高分榜,以及如何使游戏运行得更快。本书最后是一个附录,其中介绍了Cocos2D中的关键类
關於作者:
Rod Strougo 资深iOS开发工程师和游戏开发工程师,精通Cocos2D和Box2D等移动游戏开发引擎,经验丰富。Rod接触物理引擎和游戏开发的时间非常早,可以追溯到早期的Apple II,当时他使用Basic编写游戏。Rod 是Prop Group 工作室(www.prop.gr)的创始人和首席开发者,近年来热衷于帮助其他人开始游戏制作之路。
Ray Wenderlich 资深iOS开发工程师和游戏开发工程师,精通Cocos2D和Box2D等移动游戏开发引擎,经验丰富。Ray是Razeware LLC创始人,著有一系列iOS应用和苹果应用开发相关的教程,涵盖Objective-C、iPhoneiOS、Cocos2D、Corona、Unity和OpenGL等众多主题,详情请见www.raywenderlich.com。
目錄 :
目录
本书赞誉
译者序
前言
第一部分 Cocos2D初接触
第1章 你好,Cocos2D 1
1.1 下载和安装Cocos2D 2
1.1.1 下载Cocos2D 2
1.1.2 安装Cocos2D模板 3
1.2 创建你的第一个Cocos2D应用HelloWorld 3
1.2.1 查看Cocos2D模板 4
1.2.2 构建Cocos2D HelloWorld项目 4
1.2.3 使HelloWorld更上一层楼 6
1.2.4 添加移动 7
1.3 为更好奇的读者:理解Cocos2D HelloWorld 8
1.3.1 场景和节点 8
1.3.2 开始 10
1.3.3 进一步探索Cocos2D源代码 14
1.4 安装CCHelloWorld到iPhone或iPad上 15
1.4.1 让Xcode为你做所有事情 16
1.4.2 为iPhone或iPad构建应用 17
1.5 小结 17
1.6 习题 17
第2章 你好,Space Viking 18
2.1 创建Space Viking项目 18
2.2 创建Space Viking类对象 19
2.3 创建背景层 20
2.4 GamePlayer层:把维京海盗Ole加入游戏中 23
2.5 GameScene类:把层与场景连接起来 25
2.6 Cocos2D Director 26
2.7 添加运动 27
2.7.1 导入JoyStick类 28
2.7.2 添加JoyStick和按键 28
2.7.3 将JoyStick运动应用于维京海盗Ole 31
2.8 纹理图集 35
2.8.1 纹理和纹理图集的技术细节 36
2.8.2 创建场景1纹理图集 38
2.8.3 添加场景1纹理图集到Space Viking 41
2.9 为更好奇的读者:测试CCSpriteBatchNode 41
2.10 在iPhone 3G和老旧设备上调校性能 43
2.11 小结 43
2.12 习题 43
第3章 Cocos2D动画和动作概述 45
3.1 Cocos2D中的动画 45
3.2 Space Viking设计基础 49
3.3 Cocos2D动作和动画基础 52
3.4 使用属性列表文件存储动画数据 53
3.5 组织、常量和通用协议 55
3.5.1 创建常量文件 56
3.5.2 通用协议文件 57
3.6 GameObject和GameCharacter类 59
3.6.1 创建GameObject 59
3.6.2 创建GameCharacter类 64
3.7 小结 66
3.8 习题 66
第4章 简单碰撞检测和第一个敌人 67
4.1 创建RadarDish和Viking类 67
4.1.1 创建RadarDish类 67
4.1.2 创建Viking类 72
4.2 最终步骤 86
4.3 小结 92
4.4 习题 92
第二部分 更多敌人和更多乐趣
第5章 更多动作、特效和Cocos2D调度器 93
5.1 道具 94
5.1.1 Mallet道具 94
5.1.2 Health道具 96
5.1.3 空间货运飞船 98
5.2 敌人机器人 100
5.3 添加PhaserBullet 111
5.4 GameplayLayer和Viking更新 114
5.5 为更好奇的读者:Cocos2D中的特效 118
5.5.1 Space Viking中有趣的特效 118
5.5.2 运行EffectsTest 120
5.5.3 将精灵和对象恢复正常 120
5.6 小结 121
5.7 习题 121
第6章 文字、字体和书面语 122
6.1 CCLabelTTF类 122
6.2 理解锚点和对齐 123
6.3 CCLabelBMFont 125
6.4 使用Glyph Designer字体设计器 125
6.5 使用Hiero字体构建工具 126
6.6 为更好奇的读者:实时调试 129
6.6.1 更新EnemyRobot 129
6.6.2 更新GameplayLayer 132
6.6.3 文字调试器的其他应用 133
6.7 小结 133
6.8 习题 133
第三部分 从关卡到游戏
第7章 主菜单、关卡完成和致谢场景 135
7.1 Cocos2D中的场景 135
7.2 GameManager概述 136
7.3 Cocos2D中的菜单 144
7.4 场景组织与图像 144
7.5 创建主菜单 146
7.5.1 创建MainMenuScene 146
7.5.2 MainMenuLayer类 147
7.6 其他菜单和GameplayLayer 153
7.6.1 导入Intro、LevelComplete、Credits和Options场景及层 153
7.6.2 GameplayLayer 153
7.6.3 修改SpaceVikingApp-Delegate类 155
7.7 为更好奇的读者:IntroLayer类和LevelComplete类 156
7.8 小结 157
7.9 习题 157
第8章 添加音效 158
8.1 CocosDenshion概述 158
8.2 导入并设置音频文件 158
8.2.1 为Space Viking添加音频 159
8.2.2 音频常量 159
8.3 同步异步加载音频的比较 161
8.3.1 同步加载音频 161
8.3.2 异步加载音频 163
8.3.3 添加音频到GameManager 163
8.4 添加SoundEngine到GameObject 174
8.5 为EnemyRobot添加声音 177
8.6 为Ole添加音效 180
8.7 为菜单场景添加音乐 185
8.7.1 为Gameplay添加音乐 185
8.7.2 为MainMenu添加音乐 185
8.8 为更好奇的读者:如果你需要更多音频控制 185
8.9 小结 186
8.10 习题 186
第9章 当世界变得更大:添加滚动 187
9.1 为更广阔的世界添加逻辑 188
9.2 创建更广阔的世界 190
9.2.1 创建第2个游戏场景 191
9.2.2 创建滚动层 197
9.3 与视差层一起滚动 203
9.4 无限制滚动 206
9.4.1 创建滚动层 206
9.4.2 创建平台场景 214
9.5 瓷片地图 216
9.5.1 安装Tiled工具 217
9.5.2 创建瓷片地图 218
9.5.3 Cocos2D压缩TileMap类 220
9.5.4 添加TileMap到ParallaxNode 222
9.6 小结 224
9.7 习题 225
第四部分 物 理 引 擎
第10章 基础游戏物理学:用Box2D增加现实性 227
10.1 开始 227
10.1.1 关于死亡的疯狂梦想 229
10.1.2 创建新场景 229
10.1.3 添加Box2D文件到你的项目 231
10.1.4 Box2D单位 235
10.2 你好,Box2D 236
10.2.1 创建Box2D对象 237
10.2.2 Box2D调试绘制 240
10.2.3 整合所有元素 241
10.2.4 创建地面 243
10.3 基础Box2D交互和装饰 245
10.3.1 拖动对象 247
10.3.2 质量、密度、摩擦力和弹性 251
10.3.3 用精灵装饰Box2D形体 254
10.4 制作一个Box2D解谜游戏 261
10.5 小结 271
10.6 习题 271
第11章 中级游戏物理学:建模、竞速和跨越 272
11.1 开始 272
11.1.1 添加资源文件 272
11.1.2 创建基本的Box2D场景 273
11.2 用Box2D创建一个小车 283
11.2.1 用Box2D创建一个定制图形 284
11.2.2 使用Vertex Helper工具 285
11.2.3 用Box2D旋转关节添加轮子 288
11.3 让小车移动和跳跃 291
11.3.1 利用加速计使小车移动 292
11.3.2 让它可滚动 294
11.3.3 力和冲量 302
11.3.4 固定倾卸台 302
11.3.5 让小车跳跃 303
11.3.6 更灵敏的转向 306
11.4 小结 307
11.5 习题 307
第12章 高级游戏物理学:更真实的物体 308
12.1 关节和人偶:带Ole回到场景 308
12.1.1 限制旋转关节 309
12.1.2 使用柱状关节 310
12.1.3 如何在恰当地点创建多个形体和关节 311
12.1.4 添加Ole:实现 313
12.2 添加障碍物和桥梁 318
12.2.1 添加桥梁 318
12.2.2 添加尖刺 321
12.2.3 添加改良的主循环 325
12.3 关底战斗 326
12.3.1 危险的挖掘机 334
12.3.2 最后一击:添加通关后电影序幕 340
12.4 小结 344
12.5 习题 344
第13章 Chipmunk物理引擎(不需要Alvin) 345
13.1 Chipmunk引擎是什么 345
13.2 Chipmunk引擎入门 347
13.2.1 添加Chipmunk引擎到你的项目中 351
13.2.2 创建基本的Chipmunk引擎场景 354
13.3 添加精灵并使它们移动 361
13.3.1 通过直接设置速度跳跃 366
13.3.2 通过设置表面速度移动地面 367
13.3.3 地面碰撞检测 367
13.3.4 Chipmunk引擎裁判器和法线 368
13.3.5 碰撞检测实现 368
13.3.6 移动和跳跃实现 372
13.4 Chipmunk引擎和约束 376
13.4.1 旋转平台 378
13.4.2 枢轴、弹簧和普通平台 380
13.5 伟大的逃脱 385
13.5.1 跟随Ole 385
13.5.2 布局平台 387
13.5.3 Ole动画序列 387
13.5.4 音乐和音效 391
13.5.5 添加背景 392
13.5.6 添加赢输条件限制 393
13.6 小结 394
13.7 习题 394
第五部分 粒子系统、游戏中心和性能
第14章 粒子系统:创建火焰、雪花、冰和更多 395
14.1 内置粒子系统 396
14.1.1 运行内置粒子系统 396
14.1.2 在沙漠中降雪 397
14.2 粒子设计器入门 398
14.3 为Space Viking创建并添加粒子系统 401
14.4 小结 406
14.5 习题 406
第15章 游戏中心的成就系统和高分榜 407
15.1 什么是游戏中心 407
15.2 为你的应用启用游戏中心 409
15.2.1 获取iOS开发者账号 409
15.2.2 为应用创建一个应用程序ID 409
15.2.3 在iTunes里注册你的应用 412
15.2.4 启用游戏中心支持 415
15.3 游戏中心身份验证 416
15.3.1 确定游戏中心可用 416
15.3.2 尝试给玩家进行验证 416
15.3.3 如果验证状态发生变化则告知 417
15.3.4 实现 418
15.4 配置成就系统 423
15.4.1 添加成就系统到iTunesConnect 423
15.4.2 成就系统如何工作 425
15.5 实现成就系统 426
15.5.1 创建游戏状态类 426
15.5.2 为加载和保存数据创建帮助函数 429
15.5.3 修改GCHelper以发送成就数据 431
15.5.4 在Space Viking中使用GameState和GCHelper 436
15.5.5 在应用中显示成就 440
15.6 设置并实现高分榜 442
15.6.1 在iTunes Connect里设置高分榜 442
15.6.2 高分榜的工作原理 443
15.6.3 实现高分榜 444
15.6.4 在游戏中显示高分榜 445
15.7 小结 448
15.8 习题 448
第16章 性能优化 449
16.1 CCSprite与CCSpriteBatchNode比较 449
16.1.1 测试性能差别 453
16.1.2 对纹理和纹理图集的建议 453
16.2 复用CCSprite 455
16.3 Cocos2D分析器 457
16.4 用Instruments发现性能瓶颈 459
16.4.1 时间分析器 460
16.4.2 OpenGL Driver Instrument 461
16.5 小结 464
16.6 习题 464
第17章 结束语 465
17.1 展望未来 466
17.2 Android及其他平台 466
17.3 最后的思考 467
附录 Cocos2D的主要类 468
內容試閱 :
前言
你想成为一个游戏开发者吗?
为iPhone或iPad开发游戏可以获得极大乐趣。这是少数几件能让你找回童年感觉的事情之一。似乎每个人都有关于游戏的创意,还有比iPhone和iPad更好的开发平台吗?
游戏开发涵盖广泛的计算机科学技能—图形、音频、网络,有时让人应接不暇而失去信心,这是阻碍大部分人真正着手开发游戏的原因。当首次开始时,能自如运用Objective-C语言可能已经是一个艰巨的任务,尤其是看到OpenGL ES、OpenAL和其他低层游戏应用程序接口时,会感到更加困难。
为iPhone和iPad开发游戏不需如此困难,的确如此。对于简化2D游戏开发任务,没有比Cocos2D更有远见的做法了。
我们不再需要为制作iPhone游戏而不得以使用低层OpenGL编程API,同时你不需要是数学或物理专家。当前有一个更快捷、更方便的途径—使用流行且免费的开源游戏开发框架Cocos2D。Cocos2D非常有趣且易于使用,使用它你可以跳过低层细节,专注于使游戏与众不同。
本书教授如何使用Cocos2D制作自己的游戏,现在就引导你一步步领略制作一个真正的苹果应用软件商店(App Store)游戏的过程!本书中编写的游戏名为“Space Viking”,讲述了一个厉害的维京海盗被传送到陌生星球的故事。在游戏制作过程中,可以获得使用Cocos2D框架所有重要元素的直接经验,并了解到每个元素如何相互协作而成为一个完整的游戏。
下载游戏
你可以从苹果应用软件商店下载Space Viking游戏:http:itunes.apple.comusapp space-vikingsid400657526mt=8。这个游戏是免费的,所以继续并且下载游戏,开始运行游戏,看看你是否足够厉害,可以将游戏打通关。
这部史诗般教程将向你展示如何使用Cocos2D制作一款真正的游戏。书中有许多代码可供实践,与此同时我们会解释每个步骤。当你读完本书并完成相应的编码后,你将完成一个完整的游戏。最棒的是,你将获得制作自己的游戏项目所需的知识和信心。
书中每一章会详细介绍游戏中的一个特定组件,以及支撑它所需的技术,不管是瓷片地图编辑器(tile map editor),还是我们用Cocos2D、Box2D及Chipmunk创建的一些特效。在完成功能和技术介绍后,该章还会详细介绍如何在Space Viking游戏中实现该组件。这种理论与实践相结合的方式填补了其他游戏开发书籍的空白。
Cocos2D是什么
Cocos2D(www.cocos2d-iphone.org)是一个开源的、基于Objective-C开发语言的、专注于iOS和Mac OS X平台的2D游戏开发框架,可以为 iPhone、iPad、iPod Touch、Mac等硬件设备开发游戏。Cocos2D既可以作为库文件导入Xcode创建的项目中,也可以在使用Cocos2D模板创建新游戏时自动添加进去。
Cocos2D框架使用OpenGL ES类库进行图形渲染,让用户在目标设备上获得图形处理器(GPU)的极高速度和性能。Cocos2D框架还有许多其他特性和能力,通过本书你会逐渐了解到。
Cocos2D起初是一个用于2D游戏编写的Python框架。2008年年底,它被移植到iPhone平台,并使用Objective-C重写。现在已被广泛移植到Ruby、Java(Android)和Mono(C#.NET)上。
注意 Cocos2D有一个充满活力的、积极的支持者与贡献者社区。Cocos2D论坛(www.cocos2d-iphone.orgforum)非常活跃,是学习和解决问题的一个非常优秀的资源,同时该论坛积极跟踪着Cocos2D的最新发展。
为什么应该使用Cocos2D
Cocos2D框架可使开发者避免纠缠于低层API,集中精力在游戏项目核心上。App Store这个市场流动性很强,经常发生变化。快速创建游戏原型并将其开发出来是在App Store获得商业成功的关键,而Cocos2D是避免陷入学习OpenGL ES或OpenAL的泥潭,快速开发游戏项目的最佳工具。
Cocos2D也同样自带大量工具类,例如TextureCache(纹理缓存),它能自动缓存图形,支持游戏快速平滑播放。 TextureCache在后台运行,是许多你甚至不用知道如何使用的Cocos2D功能中的一个,这些功能对你是显而易见的。其他有用的工具包括字体渲染、精灵表(sprite sheet)、强大的声音系统等。
Cocos2D是一个极佳的原型开发工具,能帮助你在一小时内(无论如何不会超过你阅读第2章所花费的时间)快速开发出属于你的游戏。你阅读本书是因为你想要为iPhone、iPad设备开发游戏,而毫无疑问,使用Cocos2D是达到此目的的最快方式。
Cocos2D关键特性
你仍然不确定Cocos2D是否合适?好吧,看看这些可以使你在制作下一个游戏时轻松许多的Cocos2D的惊人特性。
动作
动作(Action)是Cocos2D中最强大的功能之一。动作可以让你轻松地移动、缩放、控制精灵和其他对象。举个例子,在5秒内平滑地移动太空货运飞船,在屏幕上向右前进400像素的距离,需要的所有代码如下:
就是这样,只有两行代码!图P.1阐释了作用于太空货运飞船的moveAction。
图P.1 阐释了作用于太空货运飞船精灵的moveAction的效果
在Cocos2D中有许多内置动作:旋转、缩放、跳跃、闪烁、淡入淡出、着色、动画序列等。也可以把一些动作串联在一起,并且用很少的代码调用自定义回调得到很棒的效果。
内置字体支持
Cocos2D使得文本的处理变得很方便,这对于游戏的菜单系统、分数显示、调试,以及更多功能十分重要。Cocos2D包含嵌入TrueType字体支持,也包含一个快速位图字体渲染系统,所以只需要几行代码就可以在屏幕上显示文本。
庞大的特效库
Cocos2D包含一个强大的粒子系统,可以很方便地为游戏添加诸如烟雾、火焰、雨滴和雪花等很酷的特效。Cocos2D也内置了诸如翻转、渐现渐隐等游戏中屏幕间转换的特效。
理想的瓷片地图游戏支持
Cocos2D包含对瓷片地图(tile-mapped)游戏的内置支持,当拥有一个由微小的可复用图片组成的巨大游戏世界时,这是非常有用的。Cocos2D也使得来回移动摄像机(camera)以滚动背景或层变得很方便。最后,Cocos2D也支持视差滚动,从而赋予游戏3D深度错觉和透视效果。
音频声音支持
Cocos2D中的声音引擎允许你方便地使用OpenAL的强大威力,而不用关心低层API。使用Cocos2D声音引擎,只需要一行代码即可播放背景音乐或音效。
两个强大的物理引擎
Cocos2D捆绑了两个强大的物理引擎,Box2D和Chipmunk,它们对游戏来说都是很棒的。使用这两个物理引擎,你可以为游戏营造前所未有的真实感,并创建出全新的游戏类型—而不需要是一个数学大师。
重要概念
在开始之前,重要的是确保你熟悉关于Cocos2D和游戏编程通用的一些重要概念。
精灵
可以看到术语“精灵”(sprite)经常使用在游戏开发中。精灵是一个可以独立于其他图像在屏幕上移动的图像,可以是玩家角色、敌人,或者是用于背景中的一张大图。实际上,精灵主要由PNG或PVRTC格式的图像文件构成。一旦被加载到内存中,精灵通过iPhone GPU转换成纹理,渲染到屏幕上。
单例
单例(singleton)是一个特殊类型的Objective-C类,它只有一个实例。一个例子是,iPhone应用委托类(Application Delegate class),或Cocos2D中的Director类。在代码中调用一个单例实例时,无论是哪个类调用它,总是会获取到这个类的唯一一个实例对象。
OpenGL ES
OpenGL ES是一个移动版本(ES表示嵌入式系统,Embedded System)的开放图形语言(Open Graphics Language, OpenGL)。它是你在iPhone或iPad上将0和1发送给GPU的最常用语言。OpenGL ES是在iPhone或iPad上渲染图形的最快方式,由于它的起源,它是一个低层的应用程序编程接口。如果你是一个游戏开发新手,会觉得OpenGL ES很难学习,但是幸运的是使用Cocos2D不需要了解OpenGL ES。
在iPhone和iPad上,支持两个版本的OpenGL ES,即OpenGL ES 1.1和2.0。Cocos2D中计划支持OpenGL ES 2.0,但当前只支持1.1版本。
语言和屏幕分辨率
Cocos2D由Objective-C语言编写而成,与编写Cocoa Touch类库和主要的Apple iOS API的语言相同。在Objective-C中,了解一些基本的内存管理技术是很重要的,因为它是让你在iOS平台上成为一个高效游戏开发者的基础。Cocos2D支持从最早期的iPhone到iPad再到iPhone 4上的视网膜屏(retina)显示,支持所有设备的原生分辨率。
2D与3D
要想跑得先学会走。游戏开发也是如此,在潜心于3D游戏的更深层概念之前,要学习如何制作2D游戏。在Cocos2D中有一些3D特效和转换,例如一个3D声波特效和一个轨道摄像机移动,然而,大部分功能是面向2D游戏和图形的。
Cocos2D是为2D游戏设计的(因此名字中有2D字眼),所以本书中的指南和例子也是2D的。如果想要制作3D游戏,你要考虑不同的框架,例如Unity、Unreal Engine(虚幻引擎),或直接使用OpenGL。
本书背后的游戏:Space Viking
本书将带你体验为iPhone和iPad创建一个全功能的基于Cocos2D的游戏的全过程。在本书中创建的游戏名为Space Viking。如果想要现在尝试一下游戏,可以在App Store(http:itunes.apple.comusappid400657526)下载一个游戏的免费版本,并且在iPhone、iPod touch或iPad上安装它。
当然,如果你更有耐心,可以在学完本书后,构建属于自己的游戏,并且在设备上加载它。没有比有能力测试自己构建的游戏更美妙的学习经历了。
你不仅可以学到如何构建游戏,还可以回过头去,调整一下代码以改变相关的事情,去看看对游戏体验有哪些具体影响。好东西只给善于等待的人。
本书将教你如何使用Cocos2D的全部特性和能力,但更为重要的是,如何把它们应用于真正的游戏中。在学完本书后,你将拥有在App Store发布游戏的必要知识和经验。从构建Space Viking游戏学得的概念适用于从动作到解谜等不同种类的游戏。
Space Viking的故事
每个游戏都从创意开始,用角色和故事情节将其转化成游戏。这里是Space Viking的故事。
在未来,地球上的人类后裔被迫殖民到太阳系之外的行星。为了创造气候宜人的环境,庞大的星际机器在北欧和格陵兰岛采掘巨大的冰块,横跨星系运送到这些星球。科学家们不清楚,在这些冰块的一块中包裹着北欧海盗Ole,他在亿万年前,在击败入侵蛮族回家的路上跌入了冰冷的河水中,被装在一个冰冷的坟墓中过了许多世纪,由于外星太阳的温暖,Ole在几千年后苏醒—距离家乡几光年之外,如图P.2所示。
你开始扮演维京海盗Ole,并且与外星人战斗在陌生的世界中,希望找到一条路让Ole回到他的故乡和时代。
使用屏幕左侧的拇指游戏操纵杆,控制Ole左右移动。右侧是跳跃和攻击按键。开始Ole只使用双拳。在后来的关卡(level)Ole找到了他信赖的木槌,在物理关卡使用加速计控制Ole。
Space Viking是一个动作冒险类游戏,动作是其重点。我们的目标是从无到有创建一个真正的游戏,所以可以学习到不只是Cocos2D的知识,还有如何在一个全功能的游戏中使用它。游戏创意来自概念艺术家、图形艺术家Eric Stevens和其他一些资深游戏玩家,在开发早期我们共同讨论了这个游戏创意。
Space Viking由许多关卡构成,每个关卡展示Cocos2D或游戏类型的一部分。例如,第一关是一个横向滚动的生死战(beat抏m up),第四关是一个小车竞速关卡,这个关卡展示了来自Box2D和Chipmunk引擎的游戏物理效果。我们希望你可以在完成本书后,复用Space Viking游戏的一部分,制作自己的游戏!没错,你可以自由地复用本书中的代码来构建自己的游戏。
本书的组织结构
本书的目标是随着构建Space Viking游戏讲解关于使用Cocos2D开发游戏的知识(了解更多关于探索和维京海盗Ole的故事)。我们将从一个简单的关卡和一些基本的游戏机制开始,通过努力提升以创建使用物理系统和粒子系统的关卡,最终到本书末尾完成游戏。
首先学习Cocos2D的基础知识,用Ole的基本的奔跑和跳跃移动创建一个小的关卡。第二部分展示如何为Space Viking添加动画序列(animation)、动作、特效和文字。第三部分游戏更进一步,添加更多关卡和场景、声音和滚动的游戏体验。在第四部分中,用Box2D和Chipmunk物理引擎把真实感带到游戏中。最终在第五部分中,学习如何添加粒子系统、添加高分榜、连接到社交网络,以及调试优化Space Viking以为未来构建游戏找出最佳实践。
本书中有17章和一个附录,每章处理创建Space Viking的一个特定部分。
第一部分
学习如何安装Cocos2D并且开始使用它创建Space Viking。
学习如何为Ole和他的敌人添加动画序列,并让他们运动。
□ 第1章
本章介绍如何在Xcode中安装Cocos2D框架和模板,以及一些方便游戏开发的配套工具。这些工具都可以免费使用,并且有助于创建Cocos2D使用的元素。
□ 第2章
这里创建了Space Viking的基础,这个游戏贯穿全书。起初只是一个基本的Cocos2D模板,并且添加英雄(维京海盗Ole)到屏幕上。在本章的第二部分,添加处理触摸输入的方法,包括来回移动Ole,并使他跳跃。
□ 第3章
在本章中,通过给Ole在屏幕上移动时添加动画序列,学习如何让游戏看起来更具有真实性。
□ 第4章
在本章中,学习如何实现简单的碰撞检测,以及添加第一个敌人到Space Viking游戏中,这样Ole可以开始战斗以离开这个星球!
第二部分
学习如何为Ole的战斗创建更复杂的敌人,在此过程中学习Cocos2D动作和特效。使用Cocos2D文本功能,完成一个现场的、屏幕上的调试系统。
□ 第5章
动作是Cocos2D中的一个关键概念—是来回移动对象、使它们变大或者消失等的简单方式。在本章中,通过添加道具和武器到关卡实践它们(动作),并学习其他一些重要的Cocos2D能力,例如特效和调度器(scheduler)。
□ 第6章
大部分游戏中都有文字,Space Viking也不例外。在本章中,学习使用Cocos2D中不同的可用方法,将文字添加到游戏中。
第三部分
学习如何通过添加菜单、使用声音和滚动,来扩展已经构建完整的Space Viking游戏关卡。
□ 第7章
几乎所有的游戏都不止一个“屏幕”(screen,或称“场景”(scene),在Cocos2D中称为场景),通常至少是主菜单、主游戏场景、关卡完成和致谢场景。在本章中,通过在Space Viking中实现它们来学习如何创建多场景。
□ 第8章
在游戏中添加音效和音乐,可以大大提升游戏体验。Cocos2D使用CocosDenshion声音引擎使这变得十分简单,所以本章中,尝试一下它!
□ 第9章
大部分游戏都有一个单一屏幕不能容纳的世界,所以这个世界需要随着玩家的移动而滚动。正确处理这个问题是一个技巧,所以本章展示如何转换一个“生死战”为横向滚动(sidescroller),使用Cocos2D瓷片地图以提高效率。
第四部分
Box2D和Chipmunk物理引擎包含在Cocos2D中,可用来为游戏添加惊人的特效,例如重力、逼真的碰撞,甚至人偶动画(ragdoll)效果。在这个部分将为Space Viking添加一些基于物理(physics-based)的从简单到高级的关卡。
□ 第10章
正如Cocos2D可以使你在不了解OpenGL低层细节的情况下,很容易地为iPhone制作游戏一样,利用Box2D你可以很容易地为游戏对象添加物理效果,而不必是一个数学专家。在本章中,通过创建一个对象根据重力移动的有趣的解谜游戏,来学习如何开始使用Box2D。
□ 第11章
在本章中,通过启动横向滚动小车竞速游戏,展示了一些Box2D可以处理的纯粹的物体。在此过程中,你将学习如何模拟任意形状的图形、添加物理形体的关节移动约束,以及更多内容!
□ 第12章
在本章中,通过添加要躲避的尖刺和史诗般的关底战,为小车竞速关卡添加更多令人惊叹的效果。将学习关节、如何检测碰撞,以及如何为敌人添加逻辑。
□ 第13章
Cocos2D自带的第二个物理引擎名为Chipmunk,与Box2D相似。本章展示了如何使用Chipmunk引擎,将其与Box2D进行比较,以及通过制作一个银河战士风格的逃逸关卡,帮读者获得直接的实践经验。
第五部分
学习如何快速创建粒子系统并将其添加到游戏中,如何为在线高分榜和成就系统整合苹果游戏中心(Apple抯 Game Center),以及一些性能主题和技巧以使游戏运行得更快。
□ 第14章
使用Cocos2D的粒子系统可以为游戏添加一些令人惊叹的特效—极其简单!在本章中,将学习如何使用粒子系统为Space Viking添加一些特效,例如飞船尾焰。
□ 第15章
利用苹果游戏中心,可以十分方便地为游戏添加成就系统和高分榜,对玩家来说会有更多的乐趣,也可能会帮助提高销量。本章介绍如何在Space Viking中一步步设置。
□ 第16章
在本章中,将学习如何解决优化中要面对的一些常见挑战和问题,以及最大程度优化和完善Cocos2D游戏。你可以获得最常用的调试性能问题的经验和解决方案。
□ 第17章
最后一章回顾了所学的知识,并且介绍下一步的方向:3D,在其他平台(例如Android)使用Cocos2D以及更多高级的游戏开发主题。
□ 附录
附录提供了一个Cocos2D中将要使用的主要类的概述。
此时你已经完成了本书的阅读,将拥有从头制作一个很棒的游戏的实际经验!可以采用所学到的概念(甚至是一些代码),把自己的游戏变成现实。
本书的读者
本书的读者包括那些迟迟不愿进行游戏开发的开发人员,因为他们认为学习会很漫长、很复杂。许许多多的开发者有编写游戏的意愿,但是不清楚从哪里入手游戏开发或Cocos2D框架。本书是一本指南,引导你从非常初级的Cocos2D使用到运用Box2D和Chipmunk物理引擎中的高级物理概念。
本书是针对有兴趣在包括iPhone、iPad和iPod touch等iOS设备上创建游戏的开发者。本书假定读者对Objective-C、Cocoa Touch和Xcode工具有基本的了解。不需要了解任何低级应用程序接口(Core Audio、OpenGL ES等),因为这些都是在Cocos2D内部使用的。
本书的目标读者
如果你已经在为其他平台的iPhone开发应用程序,但是想要从功能应用转移到游戏,那么本书很适合你。本书基于读者已掌握的开发知识,通过介绍术语、技术和必要的工具,以及一个真实的游戏实现例子,引领读者步入游戏开发的世界。
非本书的目标读者
如果读者已经理解创建一个游戏必要的工作流,或者有一个坚定的游戏创意必须要为3D图形使用OpenGL ES,那么本书不适合这样的读者。
我们期望,在阅读本书之前,读者已经熟悉了Objective-C、C、Xcode和Interface Builder。虽然本书中所描述的实现已经尽可能简单,对C语言的使用也是最低限度的,但这些语言的坚实基础是必备的。
以下书籍可以帮助提供通读本书的必要背景知识:
这些书和其他能在网络上找到的资源,将帮助读者学习更多在Mac和iPhone上编程的方法,让读者更深入地了解Objective-C语言和Cocoa框架的知识。
源码、视频指南和论坛
获取信息不局限于本书。还有完整的(也包括Space Viking的全部源代码)源码和视频指南(可以在http:cocos2Dbook.com下载)可帮助读者掌握每章介绍的概念。
贯穿全书有大量的代码和习题,所以假定读者已经获取了苹果开发工具,例如Xcode和iPhone SDK。所有这些工具都可以从苹果iPhone开发中心下载:http:developer.apple.comiphone。
在阅读本书时,如果想与同行交流,可以访问本书的论坛http:cocos2dbook.comforums。
致谢
如果没有以下这些人的辛勤工作、热心投入以及全力支持,本书不会完成:
首先,感谢我们的编辑Chuck Toporek及其助手Olivia Basegio。Chuck在完成本书的过程中给予了我们太多的耐心帮助和鼓励(尽管我们两个都是第一次写书),并协调管理了把一个简单的Word文档变成读者今天手中所捧的这本书的全部工作。Olivia在整本书编写过程中,对成员间的工作协调以及技术评审有着巨大的贡献。再次感谢你们使本书得以问世!
另一位我要感谢的人是Addison-Wesley公司的Chuti Prasertsith,他为本书精心设计了封面。
衷心感谢Cocos2D的主开发者兼协调者Ricardo Quesada(也被称为Riq),以及其他的Cocos2D贡献者,如Steve Oldmeadow及其他同仁。如若没有Riq团队的苦心经营和他们的奉献精神,便不会有Cocos2D今天所拥有的完善框架和社区,更不会有这本书的诞生。同时,我们相信Cocos2D已经给很多人的生活带来了颠覆性的改变,使他们梦想拥有专属于自己游戏的愿望得以实现。Riq把Cocos2D作为他的全职工作,如果你想感谢他为本书所做出的辛勤付出,可以登录www.cocos2d-iphone.orgstore为他捧场。Riq也出售他的游戏Sapus Tongue的源代码,以及一个名为Level-SVG的优秀物理编辑器。想了解更多的内容,请登录 www.sapusmedia.com。
感谢Erin Catto(Box2D首席开发者)和Scott Lembcke(Chipmunk首席开发者)在非凡的物理引擎库上的工作。如Riq对Cocos2D所做出的贡献一样,Erin和Scott的团队使无数程序员得以更加轻松快捷地写好一款很炫酷的基于物理的游戏。Erin和Scott极其投入地专注于对物理库和社区的支持与维护,并抽出时间来评审本书中物理引擎相关的章节。如果你想为Erin或者Scott在物理引擎库上的辛勤工作捐款,可以访问以下链接:www.box2d.org和http:code.google.compchipmunk-physics。
十分感谢Cocos2D声音引擎CocosDenshion的首席开发者Steve Oldmeadow。Steve评审了音频章节。Steve的付出使很多游戏开发者可以快速轻松地为他们的游戏添加音乐和音效。
Eric Stevens是美国杰出艺术家、兼职游戏插画家。他和我们紧密合作,制作了游戏中的所有音效(包括Ole苏醒)。Eric维护着插画站点http:imagedesk.org,你可以在美国西南部的几个画廊上以及http:ericstevensart.com看到他的作品。
音乐家Mike Weiser为Space Viking游戏制作了摇滚声轨和音效。我们认为音乐使Space Viking游戏与一般游戏有巨大的不同,真正给了我们期许的音乐气氛。特别感谢Andrew Peplinski的维京海盗呼噜声和Rulon Brown带来的在游戏开始时听到的和声。Mike为许多流行的iOS游戏制作了音乐,可以在www.mikeweisermusic.com了解更多他的作品。
万分感谢我们的技术审校:Farim Farook、Marc Hebert、Mark Hurley、Mike Leonardi,以及Nick Waynik。这些工作伙伴及时地纠正在整个过程中我们正要犯下的愚钝错误,并为我们提供了很多的意见,这促使我们更好地完成了全书的每一章,非常感谢你们,我的伙伴们!
我们每一个人心中都还有很多感谢的话想说。
Rod Strougo的致谢
十分感谢我的妻子和家人在我全身心投入此书的写作中时,对我能够如此耐心。曾经有无数个夜晚,我埋头在办公室里,写作、编辑以及写代码。假如没有Agata的支持和理解,这本书将不可能存在。我的大儿子Alexander在这本书完成的过程中,也扮演着十分重要的角色,他协助完成了Space Viking的测试工作,我的孩子Anton在我完成最后一章的时候出生了。Agata,感谢你所给予我的所有鼓励、爱和支持。我还要感谢Ray的参与,Ray完成了Box2D、Chipmunk和Game Center章节的编写。Ray非常出色地完成了对Box2D和 Chipmunk的深度覆盖,并为Space Viking增添了很多有趣的关卡。
Ray Wenderlich的致谢
首先,十分感谢我的妻子,也是我最好的朋友,Vicki Wenderlich,感谢她在我写作本书的整个过程中对我一如既往的支持,给我鼓励并提供宝贵意见。没有她的帮助,我今天无法制作iOS应用,它们不可能像现在这样出色!此外,也要感谢我的家人。你们信任我,伴我走过作为一名iOS独立开发者的起起伏伏,支持我一路走来。非常感谢你们!
最后,感谢我的iOS教程博客www.raywenderlich.com的所有读者和支持者。没有你们的关注、鼓励和支持,我将失去继续完成教程的动力,也许将会和出版此书的机会失之交臂。万分感谢你们,让这本书的出版成为现实,同时我也希望你们都能喜欢这本书。