Estatísticas do jogador em jogos Android

A API Player Stats permite personalizar experiências de jogo para segmentos específicos de jogadores e diferentes fases do ciclo de vida do jogador. Você pode criar experiências personalizadas para cada segmento de jogadores de acordo com a forma como eles progridem, gastam e interagem. Por exemplo, você pode usar essa API para tomar medidas proativas e incentivar os jogadores menos ativos a se envolver novamente com o jogo, com a exibição e a promoção de novos itens no app quando o usuário fizer login.

Este guia mostra como usar a API Player Stats com os serviços relacionados a jogos do Google Play. As APIs podem ser encontradas nos pacotes com.google.android.gms.games.stats e com.google.android.gms.games.

Antes de começar

Antes de começar a usar a API Player Stats:

Incluir o cliente da Player Stats

Para começar a usar a API Player Stats, o jogo precisa incluir um objeto PlayerStatsClient. Para fazer isso, chame o método Games.getPlayerStatsClient() e passe a atividade e o GoogleSignInAccount do jogador atual. Para saber como recuperar as informações da conta do jogador, consulte Login em jogos Android.

Conceitos básicos da Player Stats

Você pode usar a API Player Stats para recuperar dados sobre a atividade de um jogador no jogo. Os tipos de dados de jogador que é possível recuperar incluem o seguinte:

  • Duração média da sessão: é a duração média da sessão do jogador em minutos. A duração de cada sessão é determinada pelo período em que o jogador permaneceu conectado ao Google Play Games Services.

  • Dias desde o último jogo: é o número aproximado de dias desde a última vez que o usuário jogou.

  • Número de compras: é o número aproximado de compras no aplicativo feitas pelo jogador.

  • Número de sessões: é o número aproximado de sessões do jogador. As sessões são determinadas pelo número de vezes que o jogador faz login no Google Play Games Services.

  • Percentil de sessões: é o percentil de sessões aproximado do jogador, indicado como um valor decimal entre 0 e 1 (incluindo os próprios números 0 e 1). Esse valor indica o número de sessões do jogador atual em comparação com o restante da base de usuários do jogo. Números maiores indicam que esse jogador jogou mais sessões.

  • Percentil de gastos: é o percentil aproximado de gastos do jogador, indicado como um valor decimal entre 0 e 1 (incluindo os próprios números 0 e 1). Esse valor indica quanto o jogador atual gastou em comparação com o restante da base de usuários do jogo. Números mais altos indicam que esse jogador gastou mais.

Os seguintes tipos de dados do jogador foram suspensos e sempre retornam uma constante de valor não definido:

  • Probabilidade de desligamento de usuários: é uma previsão que avalia se o jogador se desligará do jogo no dia seguinte, indicada como um valor decimal entre 0 e 1 (baixa e alta probabilidade de desligamento, respectivamente), incluindo os próprios números 0 e 1. O desligamento de usuários é definido como sete dias de inatividade.
  • Probabilidade de gastos: é a probabilidade aproximada de o jogador decidir gastar no jogo, indicada como um valor decimal entre 0 e 1 (baixa e alta probabilidade de gastos, respectivamente), incluindo os próprios números 0 e 1.
  • Gastos totais nos próximos 28 dias: é o total aproximado de gastos do jogador nos próximos 28 dias no jogo.
  • Probabilidade de gastos altos: é a probabilidade aproximada de que, nos próximos 28 dias, o jogador gastará um valor posicionado no percentil 95 ou superior da base de usuários do jogo. Esse valor é indicado como um número decimal entre 0 e 1 (baixa e alta probabilidade de o jogador fazer gastos altos, respectivamente).

Recuperar dados da Player Stats

Para recuperar dados da Player Stats do jogador conectado no momento, siga estas etapas:

  1. Chame o método PlayerStatsClient.loadPlayerStats().
  2. Se a chamada for bem-sucedida, os serviços relacionados a jogos do Google Play retornarão uma Task, que carregará um objeto PlayerStats assincronamente. Use os métodos desse objeto para recuperar dados sobre as atividades do jogador conectado ao app.

Veja um exemplo:

    public void checkPlayerStats() {
      Games.getPlayerStatsClient(this, GoogleSignIn.getLastSignedInAccount(this))
          .loadPlayerStats(true)
          .addOnCompleteListener(new OnCompleteListener<AnnotatedData<PlayerStats>>() {
            @Override
            public void onComplete(@NonNull Task<AnnotatedData<PlayerStats>> task) {
              if (task.isSuccessful()) {
                // Check for cached data.
                if (task.getResult().isStale()) {
                  Log.d(TAG, "using cached data");
                }
                PlayerStats stats = task.getResult().get();
                if (stats != null) {
                  Log.d(TAG, "Player stats loaded");
                  if (stats.getDaysSinceLastPlayed() > 7) {
                    Log.d(TAG, "It's been longer than a week");
                  }
                  if (stats.getNumberOfSessions() > 1000) {
                    Log.d(TAG, "Veteran player");
                  }
                  if (stats.getChurnProbability() == 1) {
                    Log.d(TAG, "Player is at high risk of churn");
                  }
                }
              } else {
                int status = CommonStatusCodes.DEVELOPER_ERROR;
                if (task.getException() instanceof ApiException) {
                  status = ((ApiException) task.getException()).getStatusCode();
                }
                Log.d(TAG, "Failed to fetch Stats Data status: "
                    + status + ": " + task.getException());
              }
            }
          });
    }
    

Dicas para usar dados da Player Stats

Com a API Player Stats, é possível identificar com facilidade vários tipos de jogadores de acordo com o comportamento de engajamento e gastos, além de aplicar estratégias adequadas para aprimorar a experiência do jogo.

A tabela a seguir lista alguns exemplos de segmentos de jogadores e as estratégias de engajamento recomendadas:

Segmento de jogadores Estratégia de engajamento
Jogadores frequentes com alto número de sessões e bom percentil de gastos, mas que não jogam há uma semana ou mais.
  • Envie uma notificação sobre um desconto ou bônus especial, que será disponibilizado quando o usuário voltar a jogar.
  • Mostre uma mensagem de boas-vindas, reconhecendo conquistas importantes, e ofereça um selo para incentivar o retorno ao jogo.
Jogadores altamente envolvidos em um percentil de gastos baixo.
  • Personalize bônus especiais para incentivar o usuário a convidar amigos a instalar e participar do jogo. Essa abordagem aproveita a satisfação demonstrada pelo usuário para recrutar novos jogadores.
Jogadores com gastos altos mostrando sinais de já terem passado pelo interesse máximo e começando a jogar com menos frequência.
  • Personalize um bônus para renovar o interesse do jogador, como a oferta de ferramentas, armas ou descontos de alto valor e curta duração.
  • Na próxima vez que o jogador fizer login, mostre um vídeo que direcione a recursos da comunidade, como ataques de clãs, que promovem um engajamento mais longo e frequente.
Jogadores com probabilidade muito alta ou muito baixa de gastar.
  • Não propensos a gastar: ofereça a opção de assistir um vídeo de publicidade. Mostre itens com preços baixos para compra.
  • Propensos a gastar: encaminhe esses usuários rapidamente à loja no jogo e ofereça promoções especiais para incentivar a compra.