iOS SDK: Game Center Achievements and Leaderboards – Part 1

iOS SDK: Game Center Achievements and Leaderboards – Part 1

Tutorial Details
  • Technology: iOS SDK
  • Difficulty: Intermediate
  • Completion Time: 1 Hour
This entry is part 1 of 1 in the series Game Center Achievements and Leaderboards
  • iOS SDK: Game Center Achievements and Leaderboards – Part 1

This is the first part of a step-by-step tutorial on how to use Game Center in your app. Game Center is supported since iOS 4.1. It’s Apple’s new social network. Game Center enables users to track their best score on a leaderboard, compare their achievements, invite friends to play a game, and start a game through auto-matching. This tutorial is only useful if you are a paid developer, because if you are not, you can’t setup the Game Center achievements and leaderboard in iTunes Connect. In the firts part we will create our project and create a new app in iTunes Connect with achievements and a leaderboard for this tutorial

Step 1: Creating the Project

Open Xcode and select “Create a new Xcode project”. Select a View-based Application and click Next. Enter a name for your project, I called mine “Game Center”. Enter your Company Identifier and make sure you select iPhone for Device Family, because we are going to make an iPhone app. If you are done, click next. Choose a place to save your project and click create.

Project Options

Step 2: Import the GameKit Framework

In the navigator area of Xcode 4, select the project name (in this case “Game Center”). Next, select the current target (“Game Center” here again), and then select the “Build Phases” tab. Expand the “Link Binary With Libraries” option, and then click the “+” button to add a new framework. Type “game″ into the search box, and select the GameKit.framework framework that appears in the list. Click “Add” to include this framework in the linking phase of your project.

GameKit.framework

Step 3: Creating the App ID

To do this, you have to be a paid developer. To use Game Center you need to add a new app and to that you need an App ID. Open up Safari or another web browser you prefer. Go to the iOS Dev Center and Log in to your iOS Developer account.

iOS Dev Center

If you are logged in, you see a button to go to the iOS Provisioning portal. Click that button and go to “App ID’s”. Because we want to create a new app ID, click “New App ID”. As description I choose “Game Center App ID” so I know that this app ID is for my Game Center app. We don’t want to make a suite of applications that share the same keychain access, so we leave the Bundle Seed ID to “Generate New”. The recommended usage for a Bundle Identifier is com.domainname.applicationname. As domainname I chose my own name, Jeroen van Rijn. I called my application “Game Center” so my Bundle Identifier is “com.jeroenvanrijn.gamecenter” (without the quotes). Click “submit” to finish the App ID.

App ID

Step 4: Adding a New App

Manage Your Applications

Go back to the iOS Dev Center and go to iTunes Connect by clicking the button that says “iTunes Connect” or go directly to iTunes Connect. Go to “Manage Your Applications”, here we will create a new app, that we will use for our Game Center example. Because I’ve one app in the App Store, this window may look some different. Click “Add New App” to start creating or new app.

App Information

If this is your first app you will need to enter some information, but that is pretty straight forward. If you entered that information, you need to enter an App name, a SKU number and a Bundle ID. The App name is of course the name of your app. The SKU Number is a unique number to identify the app you are adding. For the Bundle ID you need to choose the App ID you just created in the iOS Provisioning Portal. If you are done, click “Continue”.

Rights and Pricing

In the next window we will enter an availability date and the price of the app. I chose just a random date, because I’m not going to submit the app in the App Store. As Price Tier I chose “Free”, you can chose whatever you want. I deselected the “Discount for Educational Institutions”. This means that educational institutions can’t buy your app once and install it on different devices. If you are done, click “Continue”.

Version Information

In the third window we will enter our Version information. My screen says that I need to enter the following in Dutch, but yours will say the language you chose for your first application. The Metadata and rating are pretty straight forward. For the Images you need to choose an icon and an iPhone / iPod touch Screenshot. The iPad Screenshot is optional. You can choose your own images or use mine.

Icon
Screenshot

If you are done, click “Save”.

Game Center Overview

Congratulations, you have created a new app in iTunes Connect.

Step 5: Creating a Leaderboard

Now go to “Manage Game Center”, here we will enable our app for Game Center and later create a leaderboard and some achievements.

Manage Game Center

Click “Enable”, after you clicked, the button on your screen will chance and you can setup a leaderboard and achievements. First we will setup a leaderboard. In the “Leaderboards” section, click “Set up” and in the next window click “Add Leaderboard”.

Leaderbaords Setup

We want to create a single leaderboard, so under “Single Leaderboard” click “Choose”.

In this window, we will enter our leaderboard information. The “Leaderboard Reference Name” is an internal name that you must provide for each leaderboard. I Named mine “Game Center Test Leaderboard”. The “Leaderboard ID” is a unique alphanumeric identifier that you create for this leaderboard. I chose “1”, because this will be the first leaderboard for this app. We will use this leaderboard ID later in Xcode to identity our leaderboard. The “score Format Type” is the type of format in which the score for your app will be expressed on the leaderboard in Game Center. Choose “Integer” as format type. For “Sort Order” choose “Descending”. This means that the highest score will be displayed first. If you want the lowest score to be displayed first, choose “Ascending”

There is still one thing left to do for finishing our leaderboard, and that is adding a language, so click “Add Language”.

Add Language

For “Language” I chose “English” Feel free to choose a language you prefer. The “Name”, is the name of the leaderboard displayed in Game Center. I named mine “Leaderboard”. The “score Format” is the format which will displayed on your leaderboard for each specified language. I chose “Integer (100.000.122)” The “Score Format Suffix (Singular)” and “Score Format Suffix (Plural) are optional. The score format suffix will be added to the end of scores displayed on your leaderboard. You can use this for clarifying the type of score your app uses. When you are done entering the language information, click “Save”. Feel free to add more languages, but I leave it at one for this tutorial. To finish the leaderboard click “Save”.

Add Leaderboard

Now, we have created a Game Center leaderboard. As you can see, this leaderboard is selected as the default leaderboard, because it’s the only leaderboard we have for this app. Click “Go Back”, so we can add some achievements.

Leaderboards

Step 6: Creating the Achievements

Now we are going to create the achievements. For this tutorial I am going to make 2 achievements. In the “Achievements” section click “Set up”. In the next window click “Add New Achievement”, to create the first achievement for this tutorial.

Add Achievement

The “Achievement Reference Name” and “Achievement ID” are the same as the ones for the leaderboard, we just created. As “Achievement Reference Name” I chose “1 Tap” and as “Achievement ID” I chose “1_tap”. For “Hidden” I chose “No”, because we don’t want that a achievement will remain hidden on Game Center until a player has achieved it. “Point Value” means the points that your achievement is worth. I chose 10 for this achievement. There is a maximum of 100 points per achievement and a maximum of 1000 point total for all achievements. Again we have to add a language. Click “Add language”. For “Language” I chose “English” again and for “Title”, “1 Tap”. The “Pre-earned Description” is the description of your achievement before they have earned it. I chose “Tap Once”, because that is what they need to do to earn this achievement. The “Earned Description” is of course the description of your achievement when they have earned it. I chose “You tapped the button”. You must provide a 512×512 pixels image. If you click the question mark at “Image” you can see the supported formats. You can choose your own image or use mine.

Achievement Image
Add Language

If you are done, click “Save”. You can add more languages, but I leave it at one. Click “Save” to finish this achievement.

In the next window you can add a new achievement. Click “Add New Achievement. This time I entered the following information:

  • Achievement Reference Name: 20 Taps
  • Achievement ID: 20_Taps
  • Hidden: No
  • Point Value: 50

Click “Add Language” to enter a language. This time I entered the following information:

  • Language: English
  • Title: 20 Taps
  • Pre-earned Description: Tap 20 Times
  • Earned Description: You tapped the button 20 times
  • Image: (the same as the first achievement)

If you are done, click “Save”. Click “Save” again to finish the second, and last achievement for this tutorial.

Step 7: Enabling Game Center

Click “Go Back” and in the next window click “Done”. In the “Versions” click “View Details”. In the next window scroll down to the “Game Center” section.

Enable Game Center

Click “Enable for This Version”. The “Game Center” section should change in this one:

Game Center Enabled

Now we are done in iTunes Connect. You can close your browser and go back to the Game Center project in Xcode we created at the beginning of this tutorial.

Step 8: Download GKTapper

We will use some files from the GKTapper Sample Code from Apple. You can download the GKTapper Sample Code here.
When the download completed, open the project and drag the following files to the “Project Navigator” in our Game Center project:

  • GameCenterManager.h
  • GameCenterManager.m
  • AppSpecificValues.h
Options for adding the files

Make sure “Copy Items into destination group’s folder (if needed) is checked, and click “Add”. Now you can close the GKTapper project. You can also delete it, if you want, because we won’t need it anymore for this tutorial. We use those files, because the GameCenterManger classes will do the heavy lifting for us.

Step 9: Change the Bundle identifier

In your Xcode project, open the Game-Ceter-Info.plist file from the “Supporting Files” folder in the “Project Navigator”. Fill in the “Bundle Identifier” value with the one created earlier and associated with the App ID. I named my Bundle Identifier “com.jeroenvanrijn.gamecenter”.

update the Bundle Identifier

Conclusion

In this part of the tutorial we have covered how to create a new app with achievement and a leaderboard in iTunes Connect. In the second part we will finish the tutorial, so we can use the leaderboard and achievements.

Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • http://blog.end3r.com/ Ender

    Too bad You have to pay $100 just to have a possibility of doing some ‘hello world’ projects on iOS…

    • Jeroen van Rijn
      Author

      That $100 isn’t just for doing hello world apps. You can add Game Center to your app without an paid developer account, but than you can’t create leader boards or achievements, so it will be useless.

    • Felix Lapalme

      Also, by paying the 100$, you can send your app to the App Store.

      You couldn’t be more wrong.

      • Chris

        Actually, it’s $99. And you have to pay it yearly to stay in the developer program. Android costs $25, one time.

      • Dan

        Oh, it’s $99 and not $100? Thanks for the clarification.

      • Charles

        In ten years, that could save ten dollars

    • wsz

      haha~ i think so, someone just have an intrest with a minui

    • Rocko T

      Yeah, I paid $99 and a month later I had $117 in sales. That’s no great shakes, but it’s a positive $18.
      I paid $25 to Google, and a month later I’m out $25.

  • http://fuckpotter.org He Who Must Not Be Named

    Whens the second part of this coming out?

  • JFo

    This is great! When can we expect part 2?

    • Jeroen van Rijn
      Author

      Thanks, and the will be a second part.

  • http://www.softhec.com Haseeb

    hi .,,,
    Jeroen van Rijn thanks to u .. i am new to iphone programing …
    i want to integrate my cocos2d iphone game with game center …i just want to share the user score to the game center…

    i am not getting what i have to exactly do for the following …

    as user enter in game the game ask for account game center account … and as gameover score ll share on game center /// plaez give me suggs

    • Jeroen van Rijn
      Author

      The second part of this tutorial might be quiet helpful for you. It’s show how to log in and share a score and achievements on Game Center.

  • Sandeep Rai

    Excellent little tutorial. Really helpful to an amateaur developer like me.
    Thanks alot

  • Sandeep Rai

    Hi
    Do you know when you will release part 2 of the tutorial. I am really looking forward to reading it.
    Thanks

    • Jeroen van Rijn
      Author

      Thanks for reading!
      The second part is already released, but for some unkwown reason it’s not part of the series.
      You can find the second part here.

  • http://www.wagenheimer.com Cezar Wagenheimer

    My leaderboards never get updated!

    If I create another test user, so It seems that my leaderboard is updated, but it shows me very strange numbers, very high numbers quite different of what numbers I have submitted!

    It only happens if at least 2 test users have submitted something… If only 1 submits, it nevers shows anything!

    What am I doing wrong?

    Achievements is working fine! My problem is only with leaderboards.

  • wsz

    thank you very much! i think it’s no need for me to start the gamecenter from my own app,I just use the block of “submit the score to gamecenter”,and it works well. cause my app is a network game, every time the players enter into the app ,i get the score of player’s from myown sever,then i submit it to gamecenter.
    i dont give the user a access to enter to gamecenter app,the users need to press “Home Key” and go to gamecenter by themself.there,they can get what they want.

    thank you again it’s a perfect tutorial!

  • Don Clausius

    Hi again, I want to ask if you need to have a domain name to use Game Center? I notice you enter a Company Identifier and I wanted to know if I can add a wildcard * because most of my apps have a * … thank you

  • http://guavaen.com/wordpress tom Kim

    Just thanks, simple and quick understand you gave. I browsed about 5 written for GC and I’d like recommend yours first!

  • sefiroths

    i have set hidden in a achievement but it is always visible. in apple docs: When you report progress to Game Center, two things happen:

    If the achievement was previously hidden, it is revealed to the player. The achievement is revealed even if your player has made no actual progress on the achievement (a percentage of 0.0).
    so…at the end of the game i report achievement to gamecenter, then the player clicks on achievement button, and he could see the hidden achievement even if it is not reached…??? how can i mantain hidden this achievement?

  • b143

    step 9 is a problem for me. I added the three files as per instructions in #8, but it did not create a supporting files folder, and there is no game-center-info.plist file.

    • Emil Zeilon

      Pretty sure it has change in newer versions of Xcode, just change the info.plist file instead. It’s located in the Resources folder of your project.