游戏中心是苹果的社交网络解决方案。它可以让你验证玩家身份,存储他们的分数和显示器排行榜,并跟踪和显示他们的成就进展。此外,玩家可以邀请朋友玩,或选择快速找到匹配的人一起玩游戏。--
在这一章中,我不仅会为您介绍Game Center 及Game Kit(游戏套件)API,而且多人在线编程的基础知识,当然,还有如何在cocos2d中和Game Center一起使用。
由于很多苹果的例子是故意不完整的,我将在本章开发GameKitHelper类。这个类会删除一些你写的Game Center编程的复杂性。它会使你更容易使用Game Kit (游戏包)和Game Center功能,它将使您可以轻松地重复使用相同的代码为其他游戏。
要配置您的使用游戏中心的应用程序,你要使用iTunes Connect。信息在iTunes Connect网站被认为是苹果的机密信息,所以我不能在这本书中讨论。不过,我会指出你苹果的每一步,很坦率地说,优秀的文档,设置iTunes Connect排行榜和成就可能是游戏中心方面最简单的。
1.使用Game Center
Game Center,管理和存储玩家帐户,每个球员的朋友名单,排行榜和成就的服务。此信息存储在线苹果公司的服务器上,访问你iOS 4.1或以上的版本的所有设备安装的游戏或运行Game Center的应用程序。
Game Center是仅适用于运行iOS4.1及以上的设备,不可运行第一代设备或iPhone 3G的。
Game Center目前运行在iPod touch第二,第三,第四代,iPhone 3GS和iPhone4和iPhone4s和iPad,只要他们系统版本iOS 4.1或
更高版本。用户检查他们的设备是否支持Game Center的游戏最简单的方法下载Game Center应用程序。如果它存在,该设备是适用Game Center;
否则,不适用。你不用担心没有真机访问不到到Game Center功能。你可以使用iPhone/ iPad模拟器计划和测试Game Center功能,所有Game Center功能,可以在模拟器上进行测试。
另一方面,Game Kit API是你使用来编程Game Center功能的。Game Kit为编程提供访问Game Center服务器上存储的数据,并能够显示内置排行榜,成就,牵线搭桥屏幕。但Game Kit还提供了除了Game Center其他的功能,例如,通过蓝牙一对一网络和语音聊天功能。这些是仅有的两个 Game Kit的功能已经运行在iOS 3.0或更高版本的设备。
这个组合的最后一个要素是iTunes Connect。你通过iTunes Connect网站建立你的游戏的排行榜和成就。但最重要的是,它可以让使你的游戏在Game Center摆在首位 。
你学习更多关于Game Center,并创建一个游戏使用Game Center出发点所涉及的步骤,在苹果的入门游戏中心网站:http://developer.apple.com/devcenter/ios/gamecenter。
对于一个Game Center的高级别概述,我建议阅读Game Center文件入门:http://developer.apple.com/ios/download.action?path=/ ios/getting_started_with_ios_4.1/gettingstartedwithgamecenter.pdf
2.在 iTunes Connect中创建你的应用程序
第一步是用您在苹果iTunes的ID登录连接网站:https://itunesconnect.apple.com。
然后,你要添加一个新的应用程序,即使它尚不存在。对于大多数领域,iTunes Connect要求你填写,你可以输入虚假信息。有两个设置你必须正确设置。首先是,iTunes Connect询问你新的应用程序是否应该支持Game Center,你选择支持Game Center。
另一个是填写一个Bundle ID(也称为作为捆绑标识符),在Xcode项目中使用的相匹配。既然你还没有一个Xcode项目,你可以自由选择任何你想要的Bundle ID。苹果公司建议使用反向域名作为Bundle ID,并在在末尾附加的应用程序的名称。美中不足的是,Bundle ID必须是在所有的App Store的应用程序中是唯一的,而他们数以万计。
对于这本书的例子中,我选择com.learn cocos2d是应用程序的Bundle ID。由于这种Bundle ID现由我使用的,你将不得不使用自己的Bundle ID。如果你愿意,你可以选择简单字符的后缀,或选择一个全新的字符串作为后缀。只要记得每当我使用cocos2d的com.learn 的Bundle ID时候替换你自己的 Bundle ID。对于如何创建一个新的应用和如何设置一个应用程序的Game Center在iTunes Connect有详细描述,请参阅苹果公司的iTunes Connect开发指南:https://itunesconnect.apple.com/docs/iTunesConnect_DeveloperGuide.pdf。
具体来说,Game Center的部分标示,非常详细说明如何管理iTunes Connect的Game Center功能。
3.设立排行榜和成就
在大多数情况下,一个应用程序的Game Center启用后,你会做在iTunes Connect是设立一个或多个排行榜,这将保持你的分数的分数或时间,以及设立了一些成绩但玩家在玩你的游戏的同时可以解除。
要访问Game Center排行榜和成就,你ID指定他们。对于排行榜,你应该注意的领先类别的ID字符串,成就的ID字符串,能够查询和更新正确的排行榜和成就。
本章的目的,我已成立了以得分模式经过时间和游戏时间的领先类别ID的排名。为取得的成就,我已经进入一个成就,成就PlayedForTenSeconds ID,授予玩家5个成就点。
随时设立额外的排行榜和成就,但要记住,在本章的例子代码依赖至少有一个游戏时间的类别ID和一个PlayedForTenSeconds的成就ID的领先存在。
4.创建一个Cocos2d Xcode项目
现在是时候创建实际的Xcode项目。你可以从任何cocos2d模板创建,例如,cocos2d HelloWorld应用程序模板项目。您还可以使用现有的项目。
有一个警告:cocos2d版本应该至少 v0.99.5 beta 3。你有三种方式能确定您的项目使用哪个版本的cocos2d。首先,如果您的项目已建成并运行,在调试控制台的第一行,读这样的东西:2010-10-07 15:33:58.363 Tilemap[1046:207] cocos2d: cocos2d v0.99.5-beta3
或者,你可以利用cocos2dVersion自己的全球方法,例如打印出来,
using CCLOG in this way:
CCLOG(@"%@", cocos2dVersion());
再者是简单地看它。您的项目中,在cocos2d来源组,找到文件cocos2d.m,并打开它。It contains the version string in plain text:
static NSString *version = @"cocos2d v0.99.5-beta3";
我决定继续使用tilemap项目工作,所以我面临的问题,从以前的版本升级到cocos2d v0.99.5beta33。许多开发商都将继续面对这一问题,它不是一个简单的或简单的任务。事实上,如果你依赖上cocos2d模板,为您创造cocos2d项目,cocos2d代码的当前版本将被复制到您的项目。你不能升级,只需在新的代码复制该代码,因为你不知道它的源代码文件可能已添加,更名,迁址,或删除完全从cocos2d分布的。
其实升级cocos2d最简单的方法是创建一个新的项目,从cocos2d模板使用cocos2d的最新版本,然后读取这个新项目的所有源文件和资源。这样一来,至少你可以肯定,无论出现错误是造成cocos2d的最新版本中引入的不兼容性,或丢失的源代码或资源文件。
简明请看我的博客中介绍的cocos2d安装和升级。
要求至少使用cocos2d v0.99.5beta33是因为这个版本增加了一个RootViewController对象。到目前为止,cocos2d从来没有使用一个UIViewController,因为它永远需要一个,但游戏中心确实需要一个UIViewController能够显示其内置UIKit中的用户界面。为了避免过多的问题发生时,开发商在cocos2d项目中开始加入UIViewControllers支持Game Center,实施RootViewController增加到cocos2d是一个值得欢迎的。 GameKitHelper类将使用它。
5.配置Xcode项目
你现在应该做的第一件事是输入您的应用程序的Bundle ID(你在iTunes Connect输入的Bundle ID)。请记住,而我使用的示例项目的Bundle ID com.learn-cocos2d,你不能使用相同的,因为它现在已经采取了,Bundle ID必须是唯一的。
在项目的资源文件夹中找到的文件Info.plist和选择它。然后,您可以在属性列表编辑器中编辑它,在图14-1所示。你将要设置的包标识符键有相同的值作为你的应用程序的Bundle ID。我的情况下是,cocos2d com.learn,和你的情况,是你选择的应用程序的Bundle ID的字符串。
The Bundle identifier key must match your app’s Bundle ID.
实际上有两种方式来使用Game Kit,Game Center 。一个要求是你的应用程序将在只支持Game Center运行和正在运行iOS 4.1或更高版本的设备上运行。然而,我写的例子,并没有使Game Center的要求,因为检查Game Center是否可用是相对容易,然后如果它不是就不使用它。这可以让你的游戏在旧设备上运行只是没有所有的Game Center功能。
但如果你想要求Game Kit和Game Center存在,你可以在你的应用程序的Info.plist设置 UIRequiredDeviceCapabilities列表,加入一个布尔值类型的关键字gamekit和选中复选框,如图14-2所示,
Making Game Kit a strict requirement
注意:如果你添加 了Game Kit关键字,但后来你又决定不想
您可以告诉iTunes用户和潜在用户,您的应用程序需要Game Kit,因此需要iOS 4.1或更高版本系统。
您可以了解更多有关iTunes的要求和UIRequiredDeviceCapabilities关键字在Apple’s Build Time Configuration documentation: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneO SProgrammingGuide/BuildTimeConfiguration/BuildTimeConfiguration.html
接下来,您需要添加Game Kit framework(框架),以您的Xcode项目更具体地说,每一个项目的target。找到Tagets Groups&Files窗格中,寻找公牛的眼睛图标。在我的测试项目中,只有一个target,称为Tilemap,您可以双击单击或右键,然后选择“获取信息”,打开taget的信息对话框。
在常规选项卡,在下半部分,是这个taget的链接库的列表。添加另一个库,请单击下面的Linked Libraries列表的+按钮。你会看到另一个列表弹出如下图。您可能需要开展的类别标记设备 - iOS 4.1的SDK,然后找到GameKit.framework条目,然后单击“添加”按钮。
GameKit.framework将被添加到Linked Libraries列表。默认情况下,需要添加新libraries。看到Linked Libraries列表中的第二列,标记类型。设置必要的手段,你的应用程序只能在其中GameKit.framework库可用的设备使用。如果这是你想要的,你已经把关键字gamekit添加到Info.plist中的,在这一点上,你可以离开。否则,将设置更改弱读,为了能够运行应用程序,即使在没有提供Game Center的设备。我们可以考虑在代码做个相对简单的检查,然后万一设备不支持Game Kit情况禁用任何Game Kit功能的。
Adding GameKit.framework
最后,你会想GameKit.h头文件在你的项目的所有源文件使用。不是将它添加到每个源文件上,你应该把它添加到您的项目的Prefix.pch的文件。预编译头文件包含从外部框架的头文件,使项目更快的编译。
项目的名称前缀的前缀头文件。因此,例如,在tilemap项目中,Tilemap_Prefix.pch文件在the Other Sources group下可以发现。打开您的项目,它添加的GameKit头文件,如下所示。
Listing 14–1. Adding the GameKit Header to Your Project’s Prefix Header
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <GameKit/GameKit.h>
#endif
That’s it, your app is set up for use with Game Center.
总结来说:
总结,使您的应用程序使用Game Center需要以下步骤:
1。在iTunes Connect上创建一个新的应用程序:
a.指定一个新的应用程序 Bundle ID。
b.开启这个应用程序的Game Center功能。
2。在iTunes Connect成立您最初的排行榜和成就:
a.注意的领先类别ID和成就的ID。 (请注意,你可能会继续编辑和添加整个排行榜和成就随着你游戏的发展。)
3。创建或升级的Xcode项目:
a.确保使用cocos2d v0.99.5 beta 3或更高。
4。编辑Info.plist:
a.在Bundle identifier字段中输入应用程序的 Bundle ID。
b.选择需要Game Kit,就添加一个布尔值标记的game kit在UIRequiredDeviceCapabilities列表中。
5。添加必要的Game Kit引用:
a.添加的GameKit.framework链接库到每一个目标。改变
其类型从弱所需,如果游戏套件的支持是可选的。
b.添加#import <GameKit/GameKit.h> 在你项目的预编译头文件(.pch)中。
在开始之前,确保你已经按照每一个步骤。你可以随时回去以后进行必要的更改。不过,如果你在开始所有这些步骤不这样做,你会得到错误或将无法正常工作的东西,但相关的错误消息不一定会向你指出一个错误地方或监督有关这些步骤。
Game Center无法正常工作的常见原因是在该项目的Info.plist文件的Bundle ID和您的应用程序设置的Bundle ID跟在iTunes Center的不匹配。此外,使用cocos2d v0.99.5 Beta 3或以上是Game Center的基本要求.