Интеграция Gamecenter в игру cocos2d - PullRequest
10 голосов
/ 08 июня 2011

Есть ли кто-нибудь, кто знает, как интегрировать игровой центр в Cocos2d.Пожалуйста, скажите мне шаги, чтобы я мог интегрировать это в мою игру.

Ответы [ 3 ]

30 голосов
/ 09 июня 2011

UPDATE:

Я создал свой собственный класс помощников, который работает со всеми видами приложений (также Cocos2D 1 и 2+) https://github.com/alexblunck/ABGameKitHelper


Привет, я предлагаю вам использовать GKHelper Class от Steffen Itterheim! Я загрузил для вас GKHelper.h / GKHelper.m: http://www.cl.ly/7ReW

Затем следуйте этим инструкциям:

// 0.0 Добавить GameKit Framework в проект (спросите, если вы не знаете, как это сделать;))

// 0. Изменить "[window addSubview: viewController.view];" в AppDelegate.m, чтобы: // Делаем это, если вы используете любой релиз cocos2D после 0.99.5:

window.rootViewController = viewController;

// 1. Добавьте Gamekithelper.h / .m в проект

// 2. Включить следующий делегат в данный заголовок:

<GameKitHelperProtocol>

// 3. Добавить методы делегата в .m

// 4. Добавьте GameKitHelper к «Scene»:

GameKitHelper *gkHelper = [GameKitHelper sharedGameKitHelper];
gkHelper.delegate = self;
[gkHelper authenticateLocalPlayer];

// Добавление счета в таблицу лидеров:

GameKitHelper *gkHelper = [GameKitHelper sharedGameKitHelper];
[gkHelper submitScore:scoreValue category:@"LeaderboardID"];

// Добавление завершения достижения:

GameKitHelper *gkHelper = [GameKitHelper sharedGameKitHelper];
[gkHelper reportAchievementWithID:@"AchievementID" percentComplete:100];

Это методы делегата, которые необходимо добавить, упомянутые на шаге № 3:

#pragma mark GameKitHelper delegate methods
-(void) onLocalPlayerAuthenticationChanged
{
    GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];
    CCLOG(@"LocalPlayer isAuthenticated changed to: %@", localPlayer.authenticated ? @"YES" : @"NO");

    if (localPlayer.authenticated)
    {
        GameKitHelper* gkHelper = [GameKitHelper sharedGameKitHelper];
        [gkHelper getLocalPlayerFriends];
        //[gkHelper resetAchievements];
    }   
}
-(void) onFriendListReceived:(NSArray*)friends
{
    CCLOG(@"onFriendListReceived: %@", [friends description]);
    GameKitHelper* gkHelper = [GameKitHelper sharedGameKitHelper];
    [gkHelper getPlayerInfo:friends];
}
-(void) onPlayerInfoReceived:(NSArray*)players
{
    CCLOG(@"onPlayerInfoReceived: %@", [players description]);


}
-(void) onScoresSubmitted:(bool)success
{
    CCLOG(@"onScoresSubmitted: %@", success ? @"YES" : @"NO");
}
-(void) onScoresReceived:(NSArray*)scores
{
    CCLOG(@"onScoresReceived: %@", [scores description]);
    GameKitHelper* gkHelper = [GameKitHelper sharedGameKitHelper];
    [gkHelper showAchievements];
}
-(void) onAchievementReported:(GKAchievement*)achievement
{
    CCLOG(@"onAchievementReported: %@", achievement);
}
-(void) onAchievementsLoaded:(NSDictionary*)achievements
{
    CCLOG(@"onLocalPlayerAchievementsLoaded: %@", [achievements description]);
}
-(void) onResetAchievements:(bool)success
{
    CCLOG(@"onResetAchievements: %@", success ? @"YES" : @"NO");
}
-(void) onLeaderboardViewDismissed
{
    CCLOG(@"onLeaderboardViewDismissed");

    GameKitHelper* gkHelper = [GameKitHelper sharedGameKitHelper];
    [gkHelper retrieveTopTenAllTimeGlobalScores];
}
-(void) onAchievementsViewDismissed
{
    CCLOG(@"onAchievementsViewDismissed");
}
-(void) onReceivedMatchmakingActivity:(NSInteger)activity
{
    CCLOG(@"receivedMatchmakingActivity: %i", activity);
}
-(void) onMatchFound:(GKMatch*)match
{
    CCLOG(@"onMatchFound: %@", match);
}
-(void) onPlayersAddedToMatch:(bool)success
{
    CCLOG(@"onPlayersAddedToMatch: %@", success ? @"YES" : @"NO");
}
-(void) onMatchmakingViewDismissed
{
    CCLOG(@"onMatchmakingViewDismissed");
}
-(void) onMatchmakingViewError
{
    CCLOG(@"onMatchmakingViewError");
}
-(void) onPlayerConnected:(NSString*)playerID
{
    CCLOG(@"onPlayerConnected: %@", playerID);
}
-(void) onPlayerDisconnected:(NSString*)playerID
{
    CCLOG(@"onPlayerDisconnected: %@", playerID);
}
-(void) onStartMatch
{
    CCLOG(@"onStartMatch");
}
-(void) onReceivedData:(NSData*)data fromPlayer:(NSString*)playerID
{
    CCLOG(@"onReceivedData: %@ fromPlayer: %@", data, playerID);
}
3 голосов
/ 27 ноября 2014

Вы можете пройти через GamKit Framework.Игровой центр очень эффективен для управления вашей онлайн-игрой и счетом игры.с помощью игрового центра вы можете создавать игры двух типов:

1: Матчи в реальном времени (Автомобильные гонки в реальном времени) 2: Матчи по очереди (Онлайн карточная игра)

Я делюсь с вамиссылка RaywenderLich:

Матч в реальном времени: http://www.raywenderlich.com/3276/game-center-tutorial-for-ios-how-to-make-a-simple-multiplayer-game-part-12

Матч по очереди http://www.raywenderlich.com/5480/beginning-turn-based-gaming-with-ios-5-part-1

2 голосов
/ 26 марта 2012

Хотя ответ Александра Бланка является разумным, в более ранних версиях iOS (например, 3.2) произойдет сбой следующей строки, а это не то, что вам нужно.

window.rootViewController = viewController;

Если вы собираетесь использовать код Стеффена (тьфу), то вам может потребоваться добавить метод для непосредственной установки контроллера представления пользовательского интерфейса вместо того, чтобы предполагать, что его можно получить с помощью UIApplication.

...