> ## 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.

# Estatísticas da comunidade

> Crie estatísticas da comunidade do PlayFab que agregam valores de todos os jogadores do seu título para impulsionar metas globais, eventos e marcos compartilhados.

As estatísticas da comunidade são uma ferramenta poderosa para aumentar o engajamento e promover o investimento dos jogadores no seu jogo. Ao agregar estatísticas no nível do título do jogo, os desenvolvedores podem criar metas e desafios compartilhados que incentivam a colaboração entre os jogadores. Essa abordagem transforma ações individuais dos jogadores em contribuições para objetivos de toda a comunidade, gerando um engajamento contínuo à medida que os jogadores trabalham juntos para atingir marcos coletivos. Os jogadores sentem que suas contribuições individuais importam para a comunidade maior, fortalecendo sua conexão tanto com o jogo quanto com os outros jogadores.

Por exemplo, imagine implementar uma batalha global contra um chefe em que toda a base de jogadores precisa marcar coletivamente 10 milhões de eliminações em uma semana para desbloquear um evento especial no jogo. À medida que os jogadores veem a barra de progresso da comunidade avançar com cada uma de suas contribuições, eles se sentem motivados a ajudar a atingir a meta. Esse comportamento cria um poderoso ciclo de feedback de investimento e participação, especialmente quando combinado com atualizações de progresso em tempo real e recompensas por marcos ao longo do caminho.

Com o PlayFab, você pode gerenciar facilmente as estatísticas da comunidade definindo duas estatísticas: uma no nível do jogador (origem da agregação) e outra no nível do título ou do grupo (destino da agregação). As atualizações feitas nas estatísticas dos jogadores são agregadas automaticamente à estatística de destino. Para recuperar a pontuação atual da comunidade, você lê as estatísticas da entidade de destino.

O PlayFab oferece suporte a dois tipos de estatísticas da comunidade:

* **Nível do título**: agrega todas as atualizações dos jogadores em uma única estatística de todo o título. Ideal para metas globais compartilhadas por toda a base de jogadores.
* **Nível do grupo**: agrega as atualizações dos jogadores em uma estatística de entidade de grupo. Ideal para desafios de clãs, metas de guildas ou objetivos baseados em equipes, em que subconjuntos de jogadores trabalham em direção a um alvo compartilhado.

## Estatísticas da comunidade no nível do título

### Criando a definição da estatística de origem

Primeiro, crie uma definição de estatística para os jogadores, que atua como a origem da agregação:

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
{
    Name = "sourceStat",
    AuthenticationContext = context,
    EntityType = "title_player_account",
    VersionConfiguration = new VersionConfiguration()
    {
        MaxQueryableVersions = 1,
        ResetInterval = ResetInterval.Manual,
    },
    Columns = new List<StatisticColumn>()
    {
        new StatisticColumn()
        {
            Name = "Eliminations",
            AggregationMethod = StatisticAggregationMethod.Sum,
        },
    },
};

PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
```

### Criando a definição da estatística de destino

Em seguida, crie uma definição de estatística para o título, que atua como o destino da agregação. Especifique a definição de estatística do jogador como a origem da agregação da definição de estatística do título:

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
{
    Name = "communityStat",
    AuthenticationContext = context,
    EntityType = "title",
    Columns = new List<StatisticColumn>()
    {
        new StatisticColumn()
        {
            Name = "Eliminations",
            AggregationMethod = StatisticAggregationMethod.Sum,
        },
    },
    AggregationSources = new string[] { "sourceStat" };
};

PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
```

<Note>
  ***OBSERVAÇÃO:*** Defina
</Note>

`EntityType` como `title` e `AggregationSources` para fazer referência à estatística definida no nível do jogador.

Depois que você cria a estatística da comunidade, todas as atualizações feitas no nível do jogador começam a ser agregadas no nível do título. O sistema agrega apenas as novas atualizações. Se a estatística de origem já existir há algum tempo, o sistema não preencherá retroativamente esses valores históricos no nível do título.

### Lendo as estatísticas da comunidade do título

Para obter as pontuações atuais da estatística no nível do título, leia as estatísticas da entidade de título:

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

GetStatisticsRequest request = new GetStatisticsRequest()
{
    AuthenticationContext = context,
    Entity = new PlayFab.LeaderboardsModels.EntityKey()
    {
        Id = "<title id in hex>",
        Type = "title"
    },
};

PlayFabResult<GetStatisticsResponse> result = await statsAPI.GetStatisticsAsync(request); 
```

## Estatísticas da comunidade no nível do grupo

As estatísticas da comunidade no nível do grupo permitem agregar as ações dos jogadores em um grupo específico, como um clã ou uma guilda. Essa agregação é útil em cenários como um desafio de clã, em que os membros trabalham coletivamente em direção a uma meta compartilhada.

### Criando a definição da estatística de destino

Crie uma definição de estatística com `EntityType` definido como `group`. Especifique a definição de estatística do jogador como a origem da agregação:

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
{
    Name = "groupCommunityStat",
    AuthenticationContext = context,
    EntityType = "group",
    Columns = new List<StatisticColumn>()
    {
        new StatisticColumn()
        {
            Name = "Eliminations",
            AggregationMethod = StatisticAggregationMethod.Sum,
        },
    },
    AggregationSources = new string[] { "sourceStat" }
};

PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
```

<Note>
  A definição da estatística de origem (no nível do jogador) é a mesma usada nas estatísticas da comunidade no nível do título. Você pode reutilizar uma definição de estatística de origem existente.
</Note>

### Atualizando a estatística de origem

Ao atualizar a estatística de origem de um jogador para a agregação no nível do grupo, especifique a entidade de grupo de destino na propriedade `AggregationTargetEntityKeys` do objeto `StatisticUpdate`. Essa propriedade informa ao PlayFab em qual entidade de grupo a atualização deve ser agregada.

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

UpdateStatisticsRequest request = new UpdateStatisticsRequest()
{
    AuthenticationContext = context,
    Entity = new PlayFab.LeaderboardsModels.EntityKey()
    {
        Id = "<player entity id>",
        Type = "title_player_account"
    },
    Statistics = new List<StatisticUpdate>()
    {
        new StatisticUpdate()
        {
            Name = "sourceStat",
            Scores = new List<string> { "5" },
            AggregationTargetEntityKeys = new List<PlayFab.LeaderboardsModels.EntityKey>()
            {
                new PlayFab.LeaderboardsModels.EntityKey()
                {
                    Id = "<group entity id>",
                    Type = "group"
                }
            }
        }
    }
};

PlayFabResult<UpdateStatisticsResponse> result = await statsAPI.UpdateStatisticsAsync(request);
```

<Info>
  Nas estatísticas da comunidade no nível do título, `AggregationTargetEntityKeys` não é necessário, pois o título é o destino de agregação padrão. Nas estatísticas da comunidade no nível do grupo, você deve especificar a chave da entidade de grupo. No momento, você só pode especificar uma chave de entidade em `AggregationTargetEntityKeys`.
</Info>

### Lendo as estatísticas da comunidade do grupo

Para obter as pontuações atuais da estatística da comunidade do grupo, leia as estatísticas da entidade de grupo:

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

GetStatisticsRequest request = new GetStatisticsRequest()
{
    AuthenticationContext = context,
    Entity = new PlayFab.LeaderboardsModels.EntityKey()
    {
        Id = "<group entity id>",
        Type = "group"
    },
};

PlayFabResult<GetStatisticsResponse> result = await statsAPI.GetStatisticsAsync(request);
```

## Restrições

* Você só pode especificar uma origem de agregação para a estatística da comunidade.
* Você não pode especificar a configuração de versão da estatística da comunidade. A configuração de versão que você especificar para a estatística de origem também se aplica à estatística da comunidade.
* O `EntityType` da estatística da comunidade deve ser `title` ou `group`.
* Você não pode usar a agregação `Last` em nenhuma das colunas.
* Você só pode especificar uma chave de entidade em `AggregationTargetEntityKeys` ao atualizar a estatística de origem.

## Confira também

* [Criar estatísticas básicas](/pt-BR/services/playfab/player-progression/statistics/create-basic-statistics)
* [Fazendo mais com estatísticas](/pt-BR/services/playfab/player-progression/statistics/doing-more-statistics)
* [Estatísticas sazonais](/pt-BR/services/playfab/player-progression/statistics/seasonal-statistics)
* [Adicionar dados contextuais às estatísticas](/pt-BR/services/playfab/player-progression/statistics/metadata-statistics)
* [Referência de API](/pt-BR/services/playfab/player-progression/statistics/api-reference)
* [Limites](/pt-BR/services/playfab/player-progression/statistics/limits-statistics)
* [Cota](/pt-BR/services/playfab/player-progression/statistics/quota-statistics)
* [Medidores de estatísticas](/pt-BR/services/playfab/pricing/meters/statistics-meters)


## Related topics

- [Documentação de progressão do jogador do PlayFab](/pt-BR/services/playfab/player-progression/index.md)
- [Medidores de estatísticas](/pt-BR/services/playfab/pricing/meters/statistics-meters.md)
- [Página de visão geral da Comunidade](/pt-BR/services/playfab/community/what-is-community.md)
- [Visão geral de Godot e engines da comunidade](/pt-BR/paths/community-engines/overview.md)
- [Obter estatísticas da fila](/pt-BR/services/playfab/api-references/rest/multiplayer/matchmaking/get-queue-statistics.md)
