Estatísticas do jogador em jogos para 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 executar ações proativas, encorajando um jogador menos ativo a se envolver novamente com o jogo, como mostrar e promover novos itens no jogo quando o usuário fizer login.

Este guia mostra como usar a API Player Stats em jogos usando 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:

Acessar o cliente de estatísticas do jogador

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 transmita a atividade e o GoogleSignInAccount para o player atual. Para saber como extrair as informações da conta do jogador, consulte Fazer login em jogos Android.

Conceitos básicos das estatísticas do jogador

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

  • 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 aos serviços relacionados a jogos do Google Play.

  • 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 app 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 nos serviços relacionados a jogos do Google Play.

  • Percentil de sessões: o percentil de sessões aproximado do jogador, indicado como um valor decimal entre 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. 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 tipos de dados do jogador abaixo foram descontinuados e sempre retornam uma constante de valor não definido:

  • Probabilidade de desistência de usuários: uma previsão que avalia se o jogador vai desistir do jogo no dia seguinte, indicada como um valor decimal entre 0 e 1 (baixa e alta probabilidade de desistência, respectivamente). A desistência é definida como 7 dias de inatividade.
  • Probabilidade de gastos: a probabilidade aproximada do jogador decidir gastar no jogo, indicada como um valor decimal entre 0 e 1 (baixa e alta probabilidade de gastos, respectivamente).
  • Gastos totais nos próximos 28 dias: total aproximado estimado 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 vai gastar um valor posicionado no percentil 95 ou maior da base de usuários do jogo. Esse valor é indicado como um número decimal entre 0 e 1 (baixa e alta probabilidade do jogador fazer gastos altos, respectivamente).

Extrair dados da Player Stats

Para extrair dados da Player Stats para o 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 vão retornar um objeto Task, que carrega de forma assíncrona um objeto PlayerStats. Use os métodos desse objeto para extrair 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 de estatísticas do jogador

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 abaixo 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 vai 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 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.