65.9K
CodeProject 正在变化。 阅读更多。
Home

iOS 7 的 SpriteKit 正在悄悄改变移动游戏业的未来——以下是如何在上面开发游戏

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年2月20日

CPOL

7分钟阅读

viewsIcon

21194

在本文中,我将仔细研究 SpriteKit 代码,展示它在最近一款游戏中的应用方式,最后,还将提供一个从零开始构建 SpriteKit 游戏的迷你教程。

我们是 Kii(www.kii.com),一个移动后端、分发、分析平台和一个新的游戏云服务。作为游戏云推出的部分内容,我们正在挑战开发商,让他们为一款新的手机游戏添加游戏云功能,并争夺 10,000 美元的奖金,以及在中国和日本这两个全球最大、盈利能力最强的移动市场进行分发。

现在让我们来看看 SpriteKit 及其如何改变移动游戏格局。

引言:为什么手机游戏开发者需要了解 SpriteKit

iOS 7 为手机游戏开发者带来了一些强大的新功能,这些功能在操作系统发布的热潮中被忽略了,但现在每一位游戏开发者都必须了解它们。这些新功能包括一些新的库,它们能开箱即用地为应用程序开发者带来复杂的物理效果、动画和粒子效果,并且可以像他们已经熟悉和喜爱的所有核心框架一样轻松使用。其中最主要的功能是一个名为SpriteKit 的新框架。顾名思义,这是一个用于创建 2D 游戏的框架,很有可能,在未来几年,SpriteKit 将成为我们开发手机游戏的主要方式。原因如下:

SpriteKit 的新功能与 iPhone 5S 完美契合,iPhone 5S 是第一款提供 64 位架构的智能手机。结合新的硬件,开发者将能够创造出真正出色的游戏,这些游戏在当前和未来几代 iOS 设备上都能比以往运行得更流畅。更重要的是,iOS7 已经是有史以来采用速度最快的移动操作系统——发布仅一个月后,它就已经安装在 64% 的设备上了。这意味着有数千万台设备在等待您的新 SpriteKit 游戏。该框架还可以用于最新(且免费!)的 OSX Mavericks 版本,这意味着您可以为 Mac 用户开发 SpriteKit 游戏。不仅如此,内部消息称 Apple TV 将成为一个独立的设备,或者至少会将类似 iOS 的游戏带到全球更大的屏幕和客厅。有了所有这些更新,SpriteKit 很可能会成为游戏开发者的重要工具。

因此,考虑到以上所有因素,我将仔细研究 SpriteKit 代码,展示它在最近一款游戏中的应用方式,最后,还将提供一个从零开始构建 SpriteKit 游戏的迷你教程。

SpriteKit 内部:面向游戏开发者的功能(以及缺点)

SpriteKit 拥有许多核心组件,可帮助游戏开发者快速轻松地创建强大有趣的游戏。此外,这个新框架已集成到核心 iOS 和 OSX SDK 中。这意味着 SpriteKit 基于 OpenGL 的渲染器与硬件深度集成,其运行效率将高于第三方库。

让我们来看看 SpriteKit 的核心功能:

原生物理引擎

为您的舞台添加物理效果再简单不过了。只需在创建世界时定义属性,其中的物体就会相应地做出反应。这是一个快速示例,用于跟踪我们的对象并将重力添加到具有向下向量 4.0 的场景中。

// MyScene : SKScene
self.physicsWorld.gravity = CGVectorMake(0, -4.0f);

一旦定义了世界,就为游戏中的物理体添加属性,它们将对环境做出反应。这可以很简单,就像

_ship.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:myPath];
_ship.physicsBody.mass = 2.0f;
_ship.physicsBody.friction = 0.4f;

纹理和精灵

SpriteKit 以非常简单的方式处理纹理和精灵。如果您是现有的 iOS 开发者,您将非常熟悉这种创建纹理精灵的方法。

SKSpriteNode *spaceship = [SKSpriteNode spriteNodeWithImageNamed:@"rocket.png"];
spaceship.position = CGPointMake(100,100);
[self addChild: spaceship];

SpriteKit 框架会自动处理将纹理加载到您的游戏中并正确显示所需的所有低级功能。有时您可能仍然需要更多控制(例如,如果您正在加载大量纹理并遇到性能下降)。幸运的是,如果您愿意,该框架仍然允许您自己管理此过程。

粒子系统编辑器

这是一个很棒的功能,现在已直接集成到 Xcode 中,并提供了一些模板,可以轻松地在您自己的游戏中使用。它附带了烟雾、火焰、雪等粒子,所有这些都可以完全自定义,为您的游戏提供您所需的精确外观和感觉。使用实用程序面板和实时预览,您可以立即调整粒子发射器。

一些功能对于现有的游戏开发者来说可能很熟悉,因为它们是制作出色 2D 游戏的基石。在 iOS7 之前,这些功能只能在 cocos2d 等第三方库中找到。

顺便说一句,粒子系统编辑器直接内置在 Xcode 的 IDE 中,允许开发者生成各种粒子系统,而无需使用外部编辑器。这种对游戏开发的承诺很可能只是一个开始,我们应该期望在每次迭代中看到 Xcode 和框架更加兼容。

缺点和优点:兼容性与操作系统锁定,与易用性和速度

没有解决方案是 100% 完美的,SpriteKit 也不例外。在当前版本的框架中,有些主题没有被涵盖,特别是与 cocos2d 等更成熟的框架相比。从功能角度来看,开发者无法运行任何自定义的 OpenGL 代码。如果您真的想调整图形或优化帧率,这可能会带来阻碍。

然而,最大的问题是您的游戏代码被锁定在 iEcosystem 中。SpriteKit 目前无法导出到 cocos2d 或 Unity 等其他平台——而且该选项在未来不太可能可用。这并不意味着您不能移植到其他流行平台,但这样做会增加项目的成本和时间。

无论如何,许多应用程序开发者已经选择 iOS-first,在 iOS 上构建他们的初始版本,而不必担心其他设备或操作系统。这大大减少了开发和测试时间,也降低了项目的成本和风险。从这个角度来看,SpriteKit 是一个在 iOS 上测试市场的好方法,看看它是否值得扩展到其他移动平台。

SpriteKit 的另一个优势是它将易于使用的 Apple API 设计引入了 2D 游戏开发,利用了设备的全部功能。这使得大量 Objective-C 和 iOS 开发者无需离开其生态系统即可涉足游戏开发世界。因此,无论您是刚刚开始游戏开发,还是想构建一款针对 iOS 优化的出色 2D 游戏——这个框架都可能适合您。

说起这个,让我们来看看一款使用 SpriteKit 开发的新 iOS 游戏。

SpriteKit 案例研究:BattleBats

BattleBats 是一款近期发布的 2D 游戏,它选择了 iOS-first 的开发模式,采用 MVP(最小可行产品)方法论,利用分析和用户反馈来调整和改进游戏。这款游戏基本上是《Pong》和《Breakout》的结合——但更加强大。它甚至有一个多人模式,您可以与最多 3 位其他玩家竞争。它完全在 SpriteKit 中构建,并利用其物理引擎来实现基本玩法(击球、反弹到积木上等),利用精灵来实现游戏中的对象(球、球拍、物品等),并利用粒子实现一些高级视觉效果。

BattleBats 现已在 iTunes 上线,适用于所有 iOS 设备。

BattleBats 集成了Kii Cloud,这是我们用于添加云后端和自定义分析的框架,并且是我们最近应用程序竞赛的获胜者。因此,我与开发者 Michael Burks 进行了交流,询问了他选择 SpriteKit 作为框架的原因。基本上是速度和效率。

我想构建一款有趣的多人游戏,但不想费心去重新发明轮子,处理底层物理或构建自己的云。我使用了 SpriteKit 和一个名为 Kii Cloud 的工具,在几周内就创建了这款游戏——迅速将其推向市场,以了解人们喜欢(或不喜欢)什么。

视频教程:使用 SpriteKit 进行游戏开发

现在您(希望!)已准备好尝试 SpriteKit 开发,这里有一个入门教程视频。由我旁白,并得到其他 Kii 开发者的帮助,这是我们关于为 iOS 开发完整云连接游戏的视频系列的一部分。本教程将向您介绍 SpriteKit 物理引擎,并向您展示如何创建 SpriteKit 项目。

顺便说一句,这个项目是开源的,是深入游戏开发或亲身体验 SpriteKit 的绝佳方式。在此处关注项目

有关 SpriteKit/云开发的问题?请随时在评论中提出,或在 Twitter 上找到我:@cjbeauchamp

Kii Cloud 是一个全栈移动后端,可加速 iOS、Android、HTML5 和 Unity 应用开发。可选的广告网络集成可帮助您实现盈利。在developer.kii.com 注册免费账户即可开始。

© . All rights reserved.