Game Centerの導入について

Total Number(トータルナンバー)のGame Centerの導入について

今回は、Total Number(トータルナンバー)のゲームセンター対応についてです。
http://itunes.apple.com/jp/app/id441761823?mt=8

ゲームアプリを製作するに当たって、ゲームセンターを利用できるようにしたかったのですが、
いったい何をすればよいのか、ネットの情報を検索してもよくわかりませんでした。

で、そうこうしているうちに、なんとか動くようになって、アップルの審査も通ったので、とりあえずこれで、OKかなって思いましたので、
私のように悩んでいる方がみえたらお役に立つかもしれませんので、参考までにご紹介します。

まず、私が参考にさせていただいたネットの情報は、下記のとおりです。

Over&Out その後
http://d.hatena.ne.jp/shu223/20110131/1296408051

よこちんのアプリ開発ブログ
http://ameblo.jp/porcom-yokoyama/entry-10835688762.html

SickleWeasel
http://sickleweasel.cocolog-nifty.com/blog/2011/03/game-center-29a.html

特に、SickleWeaselさんのリンク先のユーチューブの動画では、

いとも簡単に、ゲームセンターを利用していたので、おどろきました。

また、書籍では、

ゲームアプリのための専用フレームワーク
cocos2dで作るiPhone&iPadゲームプログラミング
ISBN: 9784844330417

です。私が探した本の中では、これがゲームセンターについて、一番詳しく書かれていました。

ちなみに、ゲームセンターというと、GKTapperのサンプルだと思いますが、私にはよく理解できませんでした。。。
でも、とりあえずゲームセンターが利用できるようになったので、まっいいかってことで。。。

1.iTunes ConnectでGame Centerの設定について

私の場合は、すでに公開しているアプリにゲームセンター機能を追加したので、

「Manage Game Center」ボタン押して、リーダーボードの設定をするだけで、
App IDを新規作成して、アプリを登録したりする必要はありませんでした。

2.プロジェクトの作成について

(1) GameKitフレームワークを追加します。

(2) ヘッダファイルに追加した内容(私のアプリのコードなので汎用性はちよっと。。。です。)

#import <GameKit/GameKit.h>;

@interface TSM48ViewController : UIViewController <GKLeaderboardViewControllerDelegate >
{
IBOutlet UIButton    *gm;//アプリからLeaderbordを表示するボタン
float gmhiscoref;//送信データ関係
int gmhiscore;//送信データ関係
GKScore *scoreReporter;//送信データ関係
BOOL isGameCenterAvailablex;//iOSがゲームセンターが利用できるかチェック用
}

- (IBAction)showLeaderboard;//アプリからLeaderbordを表示するボタン

- (void)gmdatasend;//送信データの作成ルーチン

@end

(3) XXX.m ファイルに追加した内容(「Over&Out その後」さんと「よこちんのアプリ開発ブログ」さんのサイトを参考にしました)

#import <GameKit/GameKit.h>;

//ビューを読み込んだときに、iOSのバージョンが4.1以上か確認して、ゲームセンターにサインイン

- (void)viewDidLoad {

// check for presence of GKLocalPlayer API
Class gcClass = (NSClassFromString(@"GKLocalPlayer"));
BOOL isLocalPlayerAvailable = (gcClass != nil);

// check if the device is running iOS 4.1 or later
NSString *reqSysVer = @"4.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending);
NSLog(@"isGameCenterAvailable");
isGameCenterAvailablex = (isLocalPlayerAvailable && osVersionSupported);

//////iOSのバージョンが4.1以上のときサインイン
if (isGameCenterAvailablex == YES) {

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
if (error == nil) {
// 認証に成功した場合の処理コードをここに挿入する
NSLog(@"susess");
} else {
// アプリケーションはエラーパラメータを処理してプレーヤーにエラーを報告できる
NSLog(@"error");
}
}];
}

}

*******************************************

//アプリのトップページのGameCenterボタンをタッチしたとき、GameCenterのLeaderbordを表示する
- (IBAction)showLeaderboard
{
if (isGameCenterAvailablex == YES) {
//サインインしていなければサインインする
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
if (error == nil) {
// 認証に成功した場合
GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init];
leaderboardController.leaderboardDelegate = self;
[self presentModalViewController:leaderboardController animated:YES];

NSLog(@"susess");
} else {
// エラーの処理
NSLog(@"error");
}
}];

}
}

*******************************************

//leaderboardViewControllerDidFinish:を実装する
- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController {

[self dismissModalViewControllerAnimated:YES];
}

*******************************************

//送信データの作成(Leaderbordの「Easy(Average)」へデータを送信するとき)
- (void)gmdatasend  {

if (isGameCenterAvailablex == YES) {

gmhiscore = round(gmhiscoref);

scoreReporter = [[[GKScore alloc] initWithCategory:@"Easy"] autorelease];
scoreReporter.value = gmhiscore;
[scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
if (error != nil)
{
// エラーの処理
}
}];

}

}

*******************************************

 

私の場合以上のコードで、リーダーボードを設置することができました。よかったら参考にしてください。

最後に、私のやっちゃった失敗をひとつ。。。

「iTunes Connect」で、アップルへ申請するときに、必ず、Game Centerの項目をクリックして、
「Enabled for This Version」を緑色にしてください。。。

これをクリックし忘れたら、アプリ起動時に「このゲームは、Game Centerにより認識されません。」というエラーが表示されてしまいました。。。

カテゴリー: 未分類   パーマリンク

Game Centerの導入について への1件のコメント

  1. じぇふ より:

    とても勉強になります! ありがたい記事です(^-^)

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">


Advertisement