Есть ли кто-нибудь, кто знает, как интегрировать игровой центр в Cocos2d. Скажите, пожалуйста, шаги, чтобы я мог интегрировать это в свою игру.
Интеграция Gamecenter в cocos2d
Ответ 1
UPDATE:
Я создал свой собственный класс помощников, который работает со всеми типами приложений (также Cocos2D 1 и 2+) https://github.com/alexblunck/ABGameKitHelper
Привет, я предлагаю вам использовать класс GKHelper от Steffen Itterheim! Я загрузил GKHelper.h/GKHelper.m для вас: http://www.cl.ly/7ReW
Затем выполните следующие инструкции:
//0.0 Добавить GameKit Framework в Project (Спросить Если вы не знаете, как это сделать;))
//0. Изменить "[window addSubview: viewController.view];" в AppDelegate.m, чтобы: // Делаем это, если вы используете какой-либо выпуск cocos2D после 0.99.5:
window.rootViewController = viewController;
//1. Добавьте Gamekithelper.h/.m в проект
//2. Включите следующий делегат в данный заголовок:
<GameKitHelperProtocol>
//3. Добавить методы делегата в .m
//4. Добавьте GameKitHelper в "Сцена":
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);
}
Ответ 2
Вы можете работать с каркасом GamKit. Игровой центр очень эффективен для управления вашей онлайн-игрой и игровым счетом. с игровым центром есть два типа игр, которые вы можете создать
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
Ответ 3
Хотя ответ Александра Бланка резонный, для более ранних версий iOS (например, 3.2) следующая строка будет ошибочной, что не то, что вы хотите.
window.rootViewController = viewController;
Если вы собираетесь использовать код Steffen (ugh), тогда вам может понадобиться добавить метод, чтобы напрямую установить контроллер ui view, а не предполагать, что он может быть захвачен через UIApplication.