随着Game Cloud的启动,向正在开发新移动游戏的游戏开发者发起挑战,将Game Cloud功能添加到他们的游戏中,并竞争赢得10,000美元的奖金,以及在世界上最大的、最赚钱的移动市场:中国和日本进行分发的机会。
现在让看看SpriteKit以及它是如何改变移动游戏领域的。
iOS 7为移动游戏开发者带来了一些强大的新功能,这些功能在操作系统发布时被忽视了,但每个游戏开发者现在都需要了解它们。这些包括新的库,它们为应用开发者提供了复杂的物理、动画和粒子效果,并且可以像他们已经熟悉和喜爱的所有核心框架一样轻松使用。其中最大的功能是一个名为SpriteKit的新框架。顾名思义,这是一个用于创建2D游戏的框架,很可能,SpriteKit将成为未来几年开发移动游戏的主要方式。原因如下:
SpriteKit的新功能与iPhone 5S相得益彰,这是第一款提供64位架构的智能手机。结合新的硬件,开发者将能够创建一些非常出色的游戏,这些游戏将在当前和未来的iOS设备上运行得比以往任何时候都更加流畅。更重要的是,iOS 7是有史以来最快被采用的移动操作系统——发布一个月后,它已经安装在64%的设备上。这意味着有数千万台设备在等待新SpriteKit游戏。该框架还可以在最新的(而且是免费的!)OSX Mavericks版本上使用,这意味着可以为Mac用户开发SpriteKit游戏。不仅如此,内部消息称Apple TV将成为一个独立的设备,或者至少,将iOS风格的游戏带到世界各地的更大屏幕和客厅中。随着所有这些更新,SpriteKit很可能成为游戏开发者的主要工具。
考虑到所有这些,将仔细研究SpriteKit代码,展示它是如何在最近的游戏中使用的,最后,以一个从零开始构建SpriteKit游戏的迷教程结束。
SpriteKit为游戏开发者提供了许多核心组件,以帮助他们快速轻松地创建强大而有趣的游戏。此外,这个新框架被内置到iOS和OSX SDK的核心中。这意味着SpriteKit的基于OpenGL的渲染器与硬件深度集成,将比第三方库运行得更高效。
让看看SpriteKit的核心功能:
为舞台添加物理效果再简单不过了。只需在创建世界及其内部的物体时定义属性,它们就会相应地做出反应。这里有一个快速的例子,用于跟踪对象并向场景添加向下的4.0向量重力:
// Objective-C
MyScene : SKScene
self.physicsWorld.gravity = CGVectorMake(0, -4.0f);
一旦定义了世界,就为游戏中的物理体添加属性,它们将对它们的环境做出反应。这可能就像下面这样简单:
// Objective-C
_ship.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:myPath];
_ship.physicsBody.mass = 2.0f;
_ship.physicsBody.friction = 0.4f;
SpriteKit以非常简单的方式处理纹理和精灵。如果是一个现有的iOS开发者,会对这种创建纹理精灵的方法感到非常舒适:
// Objective-C
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上进行开发,在iOS上构建他们的初始版本,而不用担心其他设备或操作系统。这大大减少了开发和测试时间,也降低了项目的成本和风险。从这个角度来看,SpriteKit是一个很好的方式,首先在iOS上测试市场,看看是否有可能将游戏扩展到其他移动平台。
SpriteKit的另一个优势是它将易于使用的Apple API设计带入了2D游戏开发,利用了设备的所有力量。这使得许多objective-c和iOS开发者可以进入游戏开发世界,而不必离开他们的生态系统。所以无论是第一次踏入游戏开发,还是想要为iOS构建一个优化的2D游戏——这个框架可能适合。
BattleBats是一款最近发布的2D游戏,选择首先在iOS上进行开发,使用MVP(最小可行产品)方法来利用分析和用户反馈来调整和改进游戏。这款游戏基本上是Pong和Breakout的混合体——但更刺激。它甚至有一个多人模式,所以最多可以和3个其他玩家竞争。它完全在SpriteKit中构建,并利用其物理引擎进行基本游戏玩法(击球,反弹块等),精灵用于游戏中的对象(球,挡板,物品等),粒子用于一些高级视觉效果。
BattleBats现在在iTunes上为所有iOS设备提供。
BattleBats整合了Kii Cloud,框架用于添加云后端和自定义分析,并是最近的应用程序竞赛的获胜者,所以一直在和开发者Michael Burks聊天,为什么他选择SpriteKit作为他的框架。基本上,速度和效率:
想构建一个有趣的多人游戏,但不想担心重新发明轮子,处理低级物理或构建云。使用了SpriteKit和一个叫做Kii Cloud的工具,在几周内就创建了这个游戏——迅速地将其推向市场,看看人们喜欢(或不喜欢)它的哪些方面。
现在(希望如此!)准备好尝试自己的SpriteKit开发了,这里有一个入门教程视频。由和其他Kii开发者协助叙述,它是正在进行的为iOS开发一个完整的云连接游戏的视频系列的一部分。这个教程将向介绍SpriteKit物理引擎,并向展示如何创建一个SpriteKit项目:
顺便说一下,这个项目是开源的,是深入了解游戏开发或第一手了解SpriteKit的好方法。
在此处关注项目。