Integrate Gamecenter in cocos2d game

后端 未结 3 1928
遥遥无期
遥遥无期 2020-12-13 05:33

Is there any one who knows how to integrate game center in Cocos2d. Please tell me steps so i can integrate that in my Game.

相关标签:
3条回答
  • 2020-12-13 05:36

    You can go through with GamKit framework . Game center is very powerful for managing your online game and game score as well . with game center there are two types of game you can create

    1: Real time matches (Real time Car racing) 2: Turn Base Matches (Online card game )

    I am sharing with you link of RaywenderLich :

    Real time match : http://www.raywenderlich.com/3276/game-center-tutorial-for-ios-how-to-make-a-simple-multiplayer-game-part-12

    Turn Based Match http://www.raywenderlich.com/5480/beginning-turn-based-gaming-with-ios-5-part-1

    0 讨论(0)
  • 2020-12-13 05:51

    UPDATE:

    I created my own Helper Class that works with all kind of Apps (also Cocos2D 1 & 2+) https://github.com/alexblunck/ABGameKitHelper


    Hi I suggest you use GKHelper Class from Steffen Itterheim! I uploaded the GKHelper.h / GKHelper.m for you: http://www.cl.ly/7ReW

    Then follow these instructions:

    //0.0 Add GameKit Framework to Project (Ask If you don't know how to do this ;) )

    //0. Change "[window addSubview: viewController.view];" in the AppDelegate.m to: //Do this if you're using any release of cocos2D after 0.99.5:

    window.rootViewController = viewController;
    

    //1. Add Gamekithelper.h / .m to project

    //2. Include following delegate in given header:

    <GameKitHelperProtocol>
    

    //3. Add Delegate Methods to .m

    //4. Add GameKitHelper to "Scene":

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

    //Adding score to leaderboard:

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

    //Adding achievement completion:

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

    These are the delegate Methods that need to be added mentioned in Step #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);
    }
    
    0 讨论(0)
  • 2020-12-13 05:55

    Although Alexander Blunck's answer is reasonable, for earlier versions of iOS (such as 3.2) the following line will fault, which is not what you want.

    window.rootViewController = viewController;

    If you are going to use Steffen's code (ugh) then you might want to add a method to set the ui view controller directly rather than having it assume it can be grabbed via UIApplication.

    0 讨论(0)
提交回复
热议问题