<!--
{
  "documentType" : "article",
  "framework" : "GameKit",
  "identifier" : "/documentation/GameKit/displaying-the-game-center-dashboard",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Displaying the Game Center dashboard"
}
-->

# Displaying the Game Center dashboard

Provide an interface for players to navigate to their Game Center data from your game.

## Discussion

The *dashboard* provides a central location from which players can browse and manage their Game Center data. The player can access information about their profile, as well as leaderboards, achievements, and challenges. The dashboard also displays highlights in these areas as the players navigate.

![Image of an iPhone screen in landscape layout, showing the dashboard with three sections, including icons and text, for navigating to the player’s profile, achievements, and leaderboards.](images/com.apple.gamekit/media-3678721@2x.png)

Use the [`GKGameCenterViewController`](/documentation/GameKit/GKGameCenterViewController) class to present the dashboard in a specific state — such as the *main dashboard*,_ _from which the player can navigate to any area, including the player profile or a list of leaderboards. For visionOS games, the dashboard appears anchored to the window, scene, or view relative to where you present the view controller.

Alternatively, to add the access point to a fixed location in your game that allows the player to open the dashboard whenever they want, see [Adding an access point to your game](/documentation/GameKit/adding-an-access-point-to-your-game).

For design guidance, see [Human Interface Guidelines > Technologies > Game Center > Custom dashboard links](https://developer.apple.com/design/human-interface-guidelines/game-center#Custom-dashboard-links).

### Present the main dashboard

To display the main dashboard, pass `dashboard` as the state parameter to the [`init(state:)`](/documentation/GameKit/GKGameCenterViewController/init(state:)) method when you create the view controller, set the delegate of the view controller to your object, and then present it:

```swift
// Display the dashboard.
let viewController = GKGameCenterViewController(state: .dashboard)
viewController.gameCenterDelegate = self
present(viewController, animated: true, completion: nil)
```

### Show the player’s profile

In the profile area, the player can see their achievements, find friends, and see what games their friends are playing. They can also edit their Game Center settings, such as their nickname and avatar.

![Image of an iPhone in landscape mode, showing the dashboard that displays the player’s profile.](images/com.apple.gamekit/media-3678724@2x.png)

To present the local player’s profile, pass `localPlayerProfile` as the state parameter to the [`init(state:)`](/documentation/GameKit/GKGameCenterViewController/init(state:)) method:

```swift
// Display the player's profile.
let viewController = GKGameCenterViewController(state: .localPlayerProfile)
viewController.gameCenterDelegate = self
present(viewController, animated: true, completion: nil)
```

### Present the list of leaderboards

You can display a list of leaderboards in the dashboard that allows the player to navigate to the leaderboards they want to see. When the player selects a leaderboard, the dashboard displays the details for that leaderboard.

![Image of an iPhone in landscape mode, showing the dashboard that displays leaderboards for the game.](images/com.apple.gamekit/media-3678722@2x.png)

To present a list of leaderboards, pass `leaderboards` as the state parameter to the [`init(state:)`](/documentation/GameKit/GKGameCenterViewController/init(state:)) method:

```swift
// Display a list of leaderboards.
let viewController = GKGameCenterViewController(state: .leaderboards)
viewController.gameCenterDelegate = self
present(viewController, animated: true, completion: nil)
```

### Display a single leaderboard

You can present a specific leaderboard in the dashboard that allows players to see how they rank against friends, players with whom they played recently, and players from all over the world. They can use the filter in the header area to adjust the scope of the leaderboard by a time period, or show a specific occurrence of a recurring leaderboard. They can scroll to the top of the list by tapping on the name in the header.

![Image of an iPhone in landscape mode, showing the dashboard that displays a single leaderboard containing ranked player scores.](images/com.apple.gamekit/media-3678725@2x.png)

To present a single leaderboard, pass the leaderboard ID (the identifier you entered in App Store Connect when creating the leaderboard) along with the player scope and time scope when you create the view controller:

```swift
// Display scores for a specific leaderboard.
let viewController = GKGameCenterViewController(
                leaderboardID: "grp.xyz.laketahoe",
                playerScope: .global,
                timeScope: .allTime)
viewController.gameCenterDelegate = self
present(viewController, animated: true, completion: nil)
```

The player can filter and scope scores by player (Friends, Recent, or Global) and time period (for example, All Time).

### Display the player’s achievements

You can show the player a list of achievements they received and achievements they’ve yet to complete. An *achievement* is a collectible item indicating that the player successfully reached a particular goal in your game. In the dashboard, an achievement appears as either locked, in-progress, completed, or hidden.

![Image of an iPhone in landscape mode, showing the dashboard that displays the player’s achievements in a game.](images/com.apple.gamekit/media-3729931@2x.png)

To present the achievements, pass `achievements` as the state parameter to the [`init(state:)`](/documentation/GameKit/GKGameCenterViewController/init(state:)) method:

```swift
// Display a list of achievements.
let viewController = GKGameCenterViewController(state: .achievements)
viewController.gameCenterDelegate = self
present(viewController, animated: true, completion: nil)
```

### Dismiss the dashboard

Implement the [`gameCenterViewControllerDidFinish(_:)`](/documentation/GameKit/GKGameCenterControllerDelegate/gameCenterViewControllerDidFinish(_:)) delegate method in the [`GKGameCenterControllerDelegate`](/documentation/GameKit/GKGameCenterControllerDelegate) protocol to dismiss the dashboard when the player closes it.

```swift
func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) {
    // Dismiss the view controller.
    gameCenterViewController.dismiss(animated:true)
}
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)