Bestenlisten in Android-Spielen

In diesem Leitfaden erfahren Sie, wie Sie Bestenlisten-APIs in einer Android-Anwendung verwenden, um visuelle Bestenlisten zu erstellen, die Punktzahl eines Spielers aufzuzeichnen und mit der Punktzahl des Spielers aus früheren Spielsitzungen zu vergleichen. Die APIs finden Sie in den Paketen com.google.android.gms.games und com.google.android.gms.games.leaderboards.

Hinweis

Falls Sie es noch nicht getan haben, sollten Sie sich die Spielkonzepte für Bestenlisten ansehen.

Bevor du mit dem Codieren mit den Bestenlisten-APIs beginnst, solltest du Folgendes beachten:

Leaderboard-Client abrufen

Damit Sie die Bestenlisten API verwenden können, muss Ihr Spiel zuerst ein LeaderboardsClient-Objekt abrufen. Rufen Sie dazu die Methode Games.getLeadeboardsClient() auf und übergeben Sie die Aktivität und das GoogleSignInAccount-Objekt für den aktuellen Spieler. Informationen zum Abrufen der Informationen zum Spielerkonto finden Sie unter Anmeldung in Android-Spielen.

Punktzahl des Spielers aktualisieren

Wenn sich die Punktzahl eines Spielers ändert, z. B. wenn der Spieler das Spiel beendet, kann das Spiel seine Punktzahl in der Bestenliste aktualisieren. Dazu ruft Ihr Spiel LeaderboardsClient.submitScore() auf und übergibt die Bestenlisten-ID und den ursprünglichen Punktzahlwert.

Das folgende Code-Snippet zeigt, wie Ihre App die Punktzahl des Spielers aktualisieren kann:

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

Es empfiehlt sich, die Bestenlisten-ID in der Datei strings.xml zu definieren, damit Ihr Spiel die Bestenlisten anhand der Ressourcen-ID referenzieren kann. Beachte bei Aufrufen zum Aktualisieren und Laden von Spielerpunkten auch diese Best Practices, um ein Überschreiten deines API-Kontingents zu vermeiden.

Bestenliste anzeigen

Rufe LeaderboardsClient.getLeaderboardIntent() auf, um Intent zu erhalten und die Standardbenutzeroberfläche für die Bestenliste zu erstellen. Ihr Spiel kann dann die Benutzeroberfläche aufrufen, indem es startActivityForResult aufruft.

Das folgende Code-Snippet zeigt, wie Ihre App den Punktestand des Spielers aktualisieren kann. Im Code-Snippet ist RC_LEADERBOARD_UI eine beliebige Ganzzahl für den Anfragecode.

private static final int RC_LEADERBOARD_UI = 9004;

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

Auch wenn kein Ergebnis zurückgegeben wird, müssen wir startActivityForResult verwenden, damit die API die Identität des aufrufenden Pakets abrufen kann. Unten sehen Sie ein Beispiel für die Standard-UI der Bestenliste.