> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Usando estatísticas de jogadores

> Saiba como criar, atualizar e consultar estatísticas de jogadores do PlayFab como pares chave-valor e como configurar permissões de cliente e servidor no Game Manager.

Este tutorial descreve como criar e usar estatísticas de jogadores. As estatísticas de jogadores são armazenadas como pares chave-valor (KVPs), em que a chave é uma cadeia de caracteres e o valor é um inteiro de 32 bits (para compatibilidade com linguagens que não oferecem suporte a 64 bits).

As estatísticas de jogadores também são usadas pelos placares, mas este guia aborda exclusivamente as estatísticas de jogadores. Se você quiser ler sobre como as estatísticas de jogadores e os placares funcionam *juntos*, leia nosso tutorial [Usando estatísticas e placares redefiníveis](/pt-BR/services/playfab/community/leaderboards/tournaments-leaderboards/using-resettable-statistics-and-leaderboards).

<Note>
  Em algumas documentações e chamadas de API, você pode encontrar o termo **UserStatistics**. Para os fins desta discussão, os termos *usuário* e *jogador* são idênticos e intercambiáveis. Na página do **Game Manager**, a guia **Players** fornece acesso aos **Users/Players** do seu título e, dentro dela, às estatísticas deles. Estatísticas de jogadores referem-se especificamente a informações vinculadas a um jogador, não a informações analíticas sobre o jogador.
</Note>

## API do cliente

O cliente tem acesso para ler as estatísticas de jogadores, mas, para evitar trapaças, o cliente não pode atualizar estatísticas por padrão.

Para habilitar isso:

* [Faça logon no PlayFab](https://developer.playfab.com/en-us/my-games)
* Selecione seu **Title**.
* Selecione **Settings** no menu à esquerda.
* Selecione a guia **API Features**.
* Localize e ative **Allow client to post player statistics**.

<Note>
  Fazer isso desabilita uma camada de segurança do seu título, permitindo que os jogadores publiquem pontuações arbitrárias em todas as suas estatísticas. Se o seu jogo tiver *qualquer* aspecto competitivo, recomendamos que você *nunca* publique estatísticas a partir do cliente.
</Note>

## Estatísticas são informações públicas

Não existem estatísticas privadas ou exclusivas do servidor. Um jogador sempre pode ler todas as suas próprias estatísticas por meio de [GetPlayerStatistics](xref:titleid.playfabapi.com.client.playerdatamanagement.getplayerstatistics) e pode ler as estatísticas de todos os outros jogadores por meio de chamadas de API de placar. Isso é verdade mesmo que você *não* exiba uma estatística no jogo nem use placares.

A única exceção seria se você desabilitasse recursos do cliente por meio da nossa [Política de acesso à API](/pt-BR/services/playfab/api-references/api-access-policy). Consulte esse link para obter mais informações sobre como usar as configurações de política para títulos, pois esse é um tópico avançado que não é abordado neste tutorial.

## Definindo estatísticas

O código Unity/C# a seguir cria (ou atualiza, se já existir) um valor de *estatística de força* para um jogador.

```csharp theme={null}
PlayFabClientAPI.UpdatePlayerStatistics( new UpdatePlayerStatisticsRequest {
    // request.Statistics is a list, so multiple StatisticUpdate objects can be defined if required.
    Statistics = new List<StatisticUpdate> {
        new StatisticUpdate { StatisticName = "strength", Value = 18 },
    }
},
result => { Debug.Log("User statistics updated"); },
error => { Debug.LogError(error.GenerateErrorReport()); });
```

## Obtendo estatísticas

O código Unity/C# a seguir recupera todos os valores de estatística atuais de um jogador.

```csharp theme={null}
void GetStatistics()
{
    PlayFabClientAPI.GetPlayerStatistics(
        new GetPlayerStatisticsRequest(),
        OnGetStatistics,
        error => Debug.LogError(error.GenerateErrorReport())
    );
}

void OnGetStatistics(GetPlayerStatisticsResult result)
{
    Debug.Log("Received the following Statistics:");
    foreach (var eachStat in result.Statistics)
        Debug.Log("Statistic (" + eachStat.StatisticName + "): " + eachStat.Value);
}
```

## Método de agregação

O PlayFab oferece suporte a algumas opções práticas de agregação de estatísticas. As quatro opções incluem:

* **Last**
* **Min**
* **Max**
* **Sum**

Você pode criar uma definição de estatística por meio da chamada de API [CreatePlayerStatisticDefinition](xref:titleid.playfabapi.com.admin.playerdatamanagement.createplayerstatisticdefinition), embora isso não seja obrigatório. Qualquer chamada para atualizar uma estatística de jogador do título criará *automaticamente* a definição de estatística padrão, usando o método de agregação Last.

Para alterar o método de agregação de uma estatística, você pode usar o Game Manager ou a chamada de API [UpdatePlayerStatisticDefinition](xref:titleid.playfabapi.com.admin.playerdatamanagement.updateplayerstatisticdefinition).

Para editar uma definição de estatística no **Game Manager**:

* Faça logon no [PlayFab](https://developer.playfab.com/en-us/my-games)

* Selecione seu **Title**.

* Selecione **Leaderboards** no menu à esquerda (**Statistics** e **Leaderboards** estão intimamente relacionados).

* Selecione a estatística existente que deseja modificar, ou

* Selecione o botão **New Leaderboard**.
  * Para uma estatística existente, você verá outra página, com um botão **Edit Leaderboard**.

* Nesse ponto, você deverá ver a página mostrada abaixo.

  <img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/player-progression/player-data/tutorials/playfab-edit-leaderboard-stat-aggregation.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=5a2df0b42ab1f848705b3bac3b2633d8" alt="PlayFab Leaderboards - Edit Leaderboard - Stat aggregation" width="1280" height="900" data-path="images/playfab/player-progression/player-data/tutorials/playfab-edit-leaderboard-stat-aggregation.png" />

Alguns exemplos de como usar a agregação de estatísticas:

* **Max** e **Min** podem ser usados para salvar as **melhores/piores** pontuações, como tiros na cabeça ou precisão:
  * Em resumo, eles aplicam a regra: **se esta for maior (ou menor) que a pontuação existente, atualize a pontuação**.
  * Publique a estatística ao final da sessão, e a **agregação Min/Max** se encarrega de decidir se deve atualizar ou não.
  * Elas podem ser muito úteis para [placares redefiníveis](/pt-BR/services/playfab/community/leaderboards/tournaments-leaderboards/using-resettable-statistics-and-leaderboards), bem como para uma [regra do PlayStream](https://playfab.com/introducing-playstream/) que concede conquistas.

* **Sum** pode ser usado para salvar pontos de experiência:
  * Você publica a experiência obtida nesta batalha, e ela é adicionada ao valor de estatística existente do jogador.

* **Last** permite que você mesmo gerencie a estatística:
  * Sempre que você publica uma estatística, o valor mais recente é usado.

## Placares

Um placar é gerado para todas as estatísticas salvas no PlayFab. Acessar um placar de uma estatística específica é opcional.

A frequência de redefinição e os métodos de agregação desempenham um papel importante no dinamismo dos placares do seu jogo. O recurso **Tournaments** se concentra em placares com frequências de redefinição automática e é descrito no tutorial [Usando estatísticas e placares redefiníveis](/pt-BR/services/playfab/community/leaderboards/tournaments-leaderboards/using-resettable-statistics-and-leaderboards).

Incentivamos você a usar estatísticas de todas as formas relevantes para o seu jogo. Você pode usar estatísticas redefiníveis para realizar torneios diários e estatísticas de longo prazo, como pontos de experiência, lado a lado.


## Related topics

- [Registrando-se para notificações de alteração de estatísticas de jogadores](/pt-BR/services/xbox-services/fundamentals/rta/concepts/live-register-for-stat-notifications.md)
- [Usando estatísticas e placares redefiníveis](/pt-BR/services/playfab/community/leaderboards/tournaments-leaderboards/using-resettable-statistics-and-leaderboards.md)
- [Classificando jogadores por estatísticas](/pt-BR/services/playfab/community/leaderboards/leaderboards-linked-to-stats.md)
- [Início rápido de estatísticas](/pt-BR/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [Tabelas de classificação usando o Azure Functions](/pt-BR/services/playfab/community/leaderboards/leaderboards-cloudscript.md)
