购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

在本书中,我们将学习如何使用Apple内建的2D游戏框架Sprite Kit和Swift语言来开发iOS和tVOS游戏。那么,问题来了:

如果你是初学者,开发2D游戏绝对是最佳的入门方式。

如果你是高级开发者,开发2D游戏还是会比开发3D游戏快很多。既然并不一定能够通过3D游戏赚到更多的钱,为什么不选择更容易胜出的方式呢?此外,一些人(例如我)更喜欢2D游戏。

那么,剩下的事情就很自然了,有了iOS、tvOS、2D游戏和Sprite Kit,你就做出了最佳的选择。

两年前,我编写了一本名为《iOS Games by Tutorials》的图书,介绍了如何使用Sprite Kit开发2D游戏。一年后,我发布了这本书完全升级到Swift的第2版,并为已有的电子书读者免费更新。

在今年的WWDC上,Apple发布了一组叫做GameplayKit的、新的API。这一组API使得我们很容易将寻路算法、AI和其他很酷的功能添加到游戏中。

然后,还有“房间里的大象”——tvOS,现在,它使得我们能够开发在起居室里玩的游戏。

这些更新都很重要,以至于无法仅仅对《iOS Games by Tutorials》进行更新来完全涵盖这些内容,因此,我决定完全重新写一本书。这就是你手里的这本书。

如果你曾经阅读过《iOS Games by Tutorials》的话,你可能会问,本书中有什么新的内容呢?这里按照本书中包含的游戏来简单介绍一下。

正如你所看到的,这些就是主要的更新。如果你之前阅读过这本书,并且时间有限,最好的办法是关注那些新的游戏,或者你最感兴趣的章节。

这本书有点与众不同。在raywenderlich.com上,我们的目标是让本书成为你所阅读过的关于游戏编程的最好的图书。

已经有很多关于游戏编程的图书了,并且其中的很多图书都是相当不错的,因此,这是一个崇高的目标。为了实现这一目标,我们做了如下的一些设计。

当你阅读完本书后,如果你认为我们已经成功地满足了这些目标,请让我们知道。你可以随时给我们发E-mail:ray@raywenderlich.com。

我们希望你喜欢这本书,并且我们已经迫不及待地想要看看你会开发出什么样的游戏了。

正如你将会看到的,使用Sprite Kit开发iOS游戏是很容易的,但是,并非总是这样的。在iOS早期的日子里,你开发游戏的唯一的选择就是OpenGL ES,它(和Metal)是该平台上可用的最底层的图形API。OpenGL ES特别难以学习,并且它是很多游戏开发初学者的一个巨大障碍。

此后不久,第三方的开发者基于OpenGL发布了一些游戏开发框架,其中最流行的是Cocos2D,实际上,我们还编写过一本关于Cocos2D的图书。App Store排行榜上的很多游戏都是使用Cocos2D开发的,并且很多开发者表示Cocos2D是他们进入游戏开发领域的起点。

Cocos2D是一个很好的框架,但是,它并不是为Apple而编写的,也没有得到Apple的有力支持。为此,当iOS的新版本发布的时候,或者当系统中加入其他的Apple API的时候,常常会出现问题。

为了解决这个问题,Apple发布iOS 7的时候带有一个新的、用于制作2D游戏的框架,这就是Sprite Kit。其API和Cocos2D非常相似,精灵、动作和场景的类型都和开发者所熟知和喜爱的Cocos2D类似,因此,较旧的框架的粉丝肯定可以快速上手。Sprite Kit还拥有一些额外的功能,例如,支持播放视频、制作形状和应用特殊图像效果。

Sprite Kit API设计精良并且易于使用,特别适合于初学者。更好的是,你可以放心地使用,因为它得到了Apple的完全的支持,并且针对iOS上的2D游戏进行了很大程度的优化。

从现在开始,如果你想要开发在iOS、tvOS或MacOS X上运行的2D游戏的话,我们明确地推荐你使用Sprite Kit而不是其他的游戏开发框架。只有一个例外情况,那就是如果你想要开发跨平台的游戏(例如支持Android和Windows等)。Sprite Kit只是Apple的API,因此,要将你的游戏从Sprite Kit迁移到其他的平台上,你所面临的挑战可比使用Unity这样的其他框架大得多。

如果你想要让事情简单化,并且只支持Apple平台,Sprite Kit就是合适的选择。那么,让我们带你快速学习和掌握Sprite Kit吧。

要学习本书中的教程,你需要具备以下条件:

对于本书中的大多数章节,可以在Xcode自带的iOS 9模拟器上运行代码。然而,本书后面有一些章,需要在设备上进行测试。还要注意,Sprite Kit在设备上比在模拟器上表现得更好,因此,当在模拟器中运行游戏的时候,帧速率似乎比预期得要慢。

如果你还没有安装最新版本的Xcode,确保先安装它,然后再继续阅读本书。

本书针对从初级到高级iOS开发者。如果你是本书的目标读者,那么,你将会从本书中学到很多知识。

本书确实需要一些Swift的基础知识。如果你不了解Swift,也可以继续阅读本书,因为所有的介绍都是按部就班的。然而,很可能由于你的知识缺乏而导致对一些部分无法理解。在开始阅读本书之前,最好是先上我们的Swift初学者系列课程,www.raywenderlich.com/store,这个课程介绍了Swift开发的基础知识。

阅读本书有两种方式,这取决于你是iOS游戏开发的完全初学者,还是具备其他2D游戏框架知识的高级开发者。

如果你是一位完全初学者,阅读本书的最好的方式是从头到尾连续阅读。我们安排章节的时候,是按照最符合逻辑的方式进行的,从介绍性的内容开始,到一次一个层级地构建开发技能。

如果你是一位高级开发者,已经具备了2D游戏框架的知识,你可能会很容易就掌握了Sprite Kit,因为你会很熟悉核心的概念和语法。建议你跳过前面的章节,并专注于后面的、较为高级的章节,或者是你特别感兴趣的章节。

本书分为5个部分,从最基础的主题逐渐进入高级的主题。在每个部分中,我们都将从头创建一个完整的小游戏。本书最后还包括一些额外的章节,我们相信你会喜欢这些内容。让我们来依次看看各个部分的内容:

第一部分 基础知识

这一部分介绍了使用Sprite Kit开发2D游戏的基础知识。这些都是最重要的技术,几乎会在你所开发的每一款游戏中用到。学习完这个部分,你就为自己开发简单游戏做好了准备。

在整个这个部分中,我们将创建一款叫做Zombie Conga的、真正的游戏,其中,你将扮演一个无忧无虑的僵尸,它只是想举办舞会,如图1所示。

这个部分一共包括7章,我们将在这部分分步骤地构建这款游戏。

图1

第1章 精灵。首先,我们将第1个精灵添加到游戏中,这就是背景和僵尸。

第2章 手动移动。我们将让僵尸跟随你的触摸在屏幕上移动,并且完成2D向量数学基础知识的课程。

第3章 动作。我们将给游戏添加小猫和疯狂的猫女士,以及一些基本的碰撞检测和游戏设置。

第4章 场景。我们将给游戏添加一个主菜单,以及获胜和失败场景。

第5章 相机。我们将让游戏从左向右滚动,并且最后,还要添加其自己的康茄舞队。

第6章 标签。我们将添加标签,以显示僵尸的生命值以及他的康茄舞队中的小猫的数目。

第7章 初识tvOS。我们将让Zombie Conga在tvOS上运行,只需要一些简单的步骤就可以做到这一点。

第二部分 物理和节点

在本部分中,我们将学习如何使用Sprite Kit所包含的、内建的物理引擎,来创建类似《愤怒的小鸟》和《割绳子》游戏中的逼真的移动。我们还将学习如何使用特殊类型的节点,以允许在游戏中播放视频或创建形状。

在此过程中,我们将创建一个叫做Cat Nap的物理谜题游戏,其中你扮演一只小猫,它在经过了漫长的一天后只想要上床睡觉,如图2所示。

这个部分一共包括5章,我们将在这部分中分步骤地构建这款游戏。

图2

第8章 场景编辑器。我们首先创建了游戏的第一个关卡。最终,我们更好地了解了Xcode的关卡设计器,也更好地了解了场景编辑器。

第9章 物理基础。在本章中,我们打算开一个小差,学习一些为游戏创建物理模拟效果的基础知识。我们还将学习如何在Xcode playground中制作游戏原型。

第10章 中级物理。我们将学习基于物理的碰撞检测,并且为Sprite Kit节点创建定制类。

第11章 高级物理。我们将给这款游戏再添加两个关卡,并在此过程中学习交互性实体、实体之间的接合以及组合实体等。

第12章 裁剪、视频和形状节点。我们将给Cat Nap添加一种新的木头块,在此过程中,将学习一些其他类型的节点,这些节点允许我们做一些惊人的事情,如播放视频、裁剪图像以及创建动态形状。

第13章 中级tvOS。在这部分的最后这一章中,我们将把Cat Nap迁移到tvOS上。我们打算从这款完全开发好的游戏开始,并且为其添加tvOS的支持,以便玩家能够坐在沙发上、使用遥控器轻松地玩这款游戏。

第三部分 果汁

在这部分中,我们将学习如何给一款较好的游戏添加大量的特殊效果和体验(即所谓的果汁),将其变成一款伟大的游戏。

在此过程中,我们将创建一款叫做Drop Charge的游戏。游戏中,你是一位太空英雄,肩负着炸毁外星人的太空飞船的任务,并且要在飞船爆炸之前逃生。为了做到这一点,你必须从一个平台跳到另一个平台,一路上收集特殊的激励。但是要小心,不要跌入滚烫的岩浆之中,如图3所示。

这个部分一共包括4章,我们将在这部分中分步骤地构建这款游戏。

图3

第14章 开发Drop Charge。我们将使用场景编辑器和代码将基本的游戏逻辑组合起来,发挥出在前面各章中所学的Sprite Kit技术的强大威力。

第15章 状态机。我们将学习什么是状态机以及如何使用它们。

第16章 粒子系统。我们将学习如何使用例子系统来创建惊人的特殊效果。

第17章 点亮游戏。设法给游戏添加音乐、声音和动画,更多的粒子系统和其他特殊效果,让你体验到掌握这些技术细节的好处。

第四部分 GameplayKit

在这个部分中,我们将学习如何使用iOS 9的、新的GameplayKit来改进游戏的架构和可重用性,并且还要添加寻路算法和基本的游戏AI。

在此过程中,我们将创建一款叫做Dino Defense的、有趣的塔防攻击游戏。游戏中,你要构建起完美的防御,以保护你的村庄免遭愤怒的恐龙的攻击,如图4所示。

这个部分一共包括3章,我们将在其中分步骤地构建这款游戏。

图4

第18章 实体—组件系统。我们将学习使用GameplayKit所提供的、新的GKEntity和GKComponent对象来建模游戏对象所需的所有知识,并且,我们还将使用所学的知识来实现第一个恐龙和塔防。

第19章 寻路算法。我们将使用GameplayKit的寻路功能让恐龙在场景中移动,并且避开障碍物和塔防。

第20章 代理、目标和行为。 最后,我们将给游戏添加另一只恐龙,它将使用GKAgent、GKGoal和GKBehavior对象,以一种更有组织的替代寻路方式在场景中移动。

第五部分 高级话题

在本部分中,我们将深入到一些较为高级的话题,例如程序式关卡生成、GameplayKit随机性和游戏控制器等。

在此过程中,我们将构建一款叫做Delve的、基于贴图的地牢探险游戏,其中,你将尝试引导矿工通过一个岩石构成的、充满地下生物的地牢,如图5所示。

这个部分一共包括4章,我们将在这部分中分步骤地构建这款游戏。

图5

第21章 贴图地图游戏。我们将学习构建贴图地图关卡的技术,包括如何创建一个功能完整的贴图地图游戏。

第22章 随机性。利用新的GameplayKit类GKRandom,来生成游戏世界。

第23章 程序式关卡。去除掉关卡生成的一些随机性,使得这个过程更具可预测性,但是仍然保持未知的惊险性。

第24章 游戏控制器。这个游戏特别适合使用一个外部的游戏控制器,我们将添加一个tvOS目标,并且探讨如何使用Apple TV遥控器作为游戏控制器。

第六部分 额外章节

本书并不是到此为止,在此基础上,我们还提供了一些额外的章节。

在这些章节中,你将学习Sprite Kit之外的一些API,当你开发iOS游戏的时候,了解这些API是很有帮助的。特别是,你将要学习如何向游戏中添加Game Center排行榜和成就,使用新的iOS 9 ReplayKit API,以及给游戏添加iAds。

在此过程中,我们将把这些API加入到一款叫做Circuit Racer的、自上向下滚动的(top-down)赛车游戏中,你在其中扮演一个优秀的赛车手,驾驶汽车去挑战世界纪录,如图6所示。只要不撞到赛道上的围栏,就不会有问题。

图6

第25章 Game Center成就。在游戏中打开Game Center,并且当用户完成某些任务的时候给他颁发成就。

第26章 Game Center排行榜。为游戏设置各种排行榜和数据,并且报告玩家的得分。

第27章 ReplayKit。你将学习如何允许玩家使用ReplayKit录制游戏视频并进行分享。

第28章 iAd。我们将学习如何把iAd加入到游戏中,以便能够有一个不错的收入来源。

第29章 写给程序员的2D美工知识。如果你喜欢这些小游戏中的美工图片,并且想要了解如何雇佣一位美术师,或者想要自己制作一些美工,那么,应该阅读本章。本章指导你使用Illustrator绘制一只可爱的小猫。

本书的每一章都带有完整的源代码。其中的一些章节,还有一个初始工程或者其他所需的资源,在阅读本书的时候,你肯定会需要这些内容。

我们为本书建立了一个论坛raywenderlich.com/forums。这是提出和本书相关的问题或者与Sprite Kit开发游戏相关的问题的好地方,也可以在这里提交你所发现的勘误。

感谢很多人为本书的编写过程提供帮助。 zFeahPhpM/izzD91Pj1Sb4Y2UBY8gY3e+rcYhmLImSoXiA0S47RRY0VIgXE3QiuO

点击中间区域
呼出菜单
上一章
目录
下一章
×