Placares em jogos para Android

Este guia mostra como usar as APIs de placares em um aplicativo Android para criar placares visuais, registrar a pontuação de um jogador e comparar a pontuação com a de sessões anteriores do jogo. As APIs podem ser encontradas nos pacotes com.google.android.gms.games e com.google.android.gms.games.leaderboards.

Antes de começar

Caso ainda não tenha feito isso, recomendamos consultar os conceitos de placares no jogo.

Antes de começar a programar usando as APIs de placares:

Acessar o cliente de placares

Para começar a usar a API de placares, o jogo precisa ter um objeto LeaderboardsClient. Para fazer isso, chame o método Games.getLeadeboardsClient() e transmita a atividade e o GoogleSignInAccount para o player atual. Para saber como recuperar as informações da conta do jogador, consulte Fazer login em jogos Android.

Atualizar a pontuação dos jogadores

Quando a pontuação do jogador muda (por exemplo, quando ele termina uma partida), o jogo pode atualizar o placar chamando LeaderboardsClient.submitScore() e transmitindo o ID do placar e o valor bruto da pontuação.

O snippet de código abaixo mostra como o app pode atualizar a pontuação do jogador:

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

É recomendado definir o ID do placar no arquivo strings.xml para que o jogo possa referenciar os placares pelos IDs de recurso. Ao fazer chamadas para atualizar e carregar pontuações de jogadores, siga as práticas recomendadas para evitar exceder sua cota de APIs.

Mostrar um placar

Para mostrar o placar, chame LeaderboardsClient.getLeaderboardIntent() para receber um Intent e criar a interface do usuário padrão. Em seguida, o jogo pode mostrar a IU chamando startActivityForResult.

O snippet de código abaixo mostra como o app pode atualizar a pontuação do jogador. No snippet de código, RC_LEADERBOARD_UI é um número inteiro arbitrário para o código da solicitação.

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);
        }
      });
}

Mesmo que nenhum resultado seja retornado, precisamos usar startActivityForResult para que a API possa receber a identidade do pacote de chamada. Confira abaixo um exemplo da IU de placar padrão.