Classements dans les jeux Android

Ce guide vous explique comment utiliser les API de classements dans une application Android pour créer des classements visuels, enregistrer le score d'un joueur et le comparer à celui obtenu lors de sessions de jeu précédentes. Les API sont disponibles dans les packages com.google.android.gms.games et com.google.android.gms.games.leaderboards.

Avant de commencer

Si vous ne l'avez pas déjà fait, consultez les concepts de classements dans les jeux.

Avant de commencer à coder à l'aide des API de classement :

Obtenir le client de classement

Pour utiliser l'API de classement, votre jeu doit d'abord obtenir un objet LeaderboardsClient. Pour ce faire, appelez la méthode Games.getLeadeboardsClient() et transmettez l'activité.

Mettre à jour le score du joueur

Lorsque le score du joueur change (par exemple, en fin de partie), votre jeu peut modifier son score dans le classement en appelant LeaderboardsClient.submitScore() et en indiquant l'identifiant du classement général et la valeur du score brut.

L'extrait de code suivant montre comment votre application peut mettre à jour le score du joueur :

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

Une bonne pratique consiste à définir l'identifiant du classement dans votre fichier strings.xml afin que votre jeu puisse référencer les classements par identifiant de ressource. Lorsque vous appelez pour mettre à jour et charger les scores des joueurs, veillez également à suivre ces bonnes pratiques afin d'éviter de dépasser votre quota d'API.

Afficher un classement

Pour afficher un classement, appelez LeaderboardsClient.getLeaderboardIntent() afin d'obtenir un Intent pour créer l'interface utilisateur du classement par défaut. Votre jeu peut alors afficher l'interface utilisateur en appelant startActivityForResult.

L'extrait de code suivant montre comment votre application peut actualiser le score du joueur. Dans l'extrait de code, RC_LEADERBOARD_UI est un nombre entier arbitraire associé au code de requête.

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Notez que même si aucun résultat n'est renvoyé, nous devons utiliser startActivityForResult afin que l'API puisse obtenir l'identité du package appelant. Voici un exemple d'interface utilisateur par défaut pour les classements :