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

> Use as estatísticas sazonais e o controle de versão do PlayFab para redefinir as pontuações dos jogadores de acordo com uma agenda, possibilitando temporadas, rankings e eventos de progressão com duração limitada.

Neste tutorial, explicamos o conceito de controle de versão das estatísticas. Há vários casos em que queremos ter
versões diferentes de uma determinada estatística. Por exemplo, se um jogo tiver temporadas, provavelmente redefinirá as estatísticas quando
a nova temporada começar.

Continuamos com o exemplo de [Criar uma estatística básica](/pt-BR/services/playfab/player-progression/statistics/create-basic-statistics). Imagine que nosso jogo de tiro está ficando muito popular. Por isso, o conceito de temporadas é introduzido. Todo mês, o jogo lança uma nova temporada temática para toda a
base de jogadores. Portanto, queremos manter estatísticas independentes por temporada.

## Criando uma definição de estatística para controle de versão

No exemplo anterior, ao criar uma definição de estatística, havia uma dica sobre a importância do parâmetro `VersionConfiguration`
para o controle de versão. Aqui, detalhamos como usá-lo e como ele funciona.

```C# theme={null}
public static async Task CreateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
    {
        Name = statName,
        AuthenticationContext = context,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 12,
            ResetInterval = ResetInterval.Month,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Longshots",
                AggregationMethod = StatisticAggregationMethod.Max,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}
```

A principal diferença deste exemplo em relação à estatística básica é o parâmetro `VersionConfiguration`. Esse parâmetro permite definir uma
configuração `MaxQueryableVersions`, que especifica quantas versões da mesma estatística podemos consultar. Neste caso, definimos para consultar 12 versões.
O parâmetro `ResetInterval` define com que frequência o processo de redefinição ocorre. Esse processo envolve criar uma estatística com a mesma configuração de
antes, mas sem nenhum valor, e o parâmetro de versão muda da seguinte forma: N = N + 1, com N = 0 na criação da definição da estatística.

Por exemplo, digamos que temos uma estatística com o parâmetro de versão igual a dois e um determinado valor. Agora
aumentamos a versão dessa estatística; o resultado será uma nova estatística com o parâmetro de versão igual a três, sem nenhum valor.
Enquanto isso, a estatística anterior permanece no sistema para ser consultada.

O `ResetInterval` pode funcionar de várias maneiras. Neste exemplo, ele é mensal, mas pode ser alterado de acordo com as necessidades do desenvolvedor. Neste caso
específico, significa que o placar será redefinido automaticamente todo mês a partir do momento em que foi configurado. Oferecemos suporte às seguintes estratégias de redefinição:

* Day
* Hour
* Manual
* Month
* Week

[Referência de API: criando uma estatística](https://learn.microsoft.com/en-us/rest/api/playfab/progression/statistics/create-statistic-definition)

## Incrementando a versão de uma estatística

Com essa nova configuração, podemos ter várias versões da mesma estatística para temporadas diferentes.
Mas o que acontece se precisarmos redefinir manualmente o placar devido a um problema e recomeçar a temporada?
Nesses casos, podemos executar uma redefinição manual usando a API. Veja um exemplo usando o SDK:

```C# theme={null}
public static async Task ResetStatistic(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    IncrementStatisticVersionRequest resetStatRequest = new IncrementStatisticVersionRequest()
    {
        AuthenticationContext = context,
        Name = statName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.IncrementStatisticVersionResponse> resetStatResponse = await statsAPI.IncrementStatisticVersionAsync(resetStatRequest);
}
```

Agora estamos preparados para lidar com quaisquer desafios de controle de versão das estatísticas. Um aspecto importante aqui é que o número de definições de estatísticas
que decidimos manter como versões será medido, pois elas usam armazenamento no serviço. Saiba mais sobre isso aqui:

* [Estatísticas](/pt-BR/services/playfab/pricing/meters/statistics-meters).

## Conclusões

Neste tutorial, aprendemos a fazer as seguintes operações:

* Criar uma estatística com a estratégia de redefinição correta
* Incrementar a versão de uma estatística

## Confira também

* [Fazendo mais com estatísticas](/pt-BR/services/playfab/player-progression/statistics/doing-more-statistics).
* [Criar estatísticas básicas](/pt-BR/services/playfab/player-progression/statistics/create-basic-statistics).
* [Adicionar dados contextuais às estatísticas](/pt-BR/services/playfab/player-progression/statistics/metadata-statistics).
* [Gravações transacionais](/pt-BR/services/playfab/player-progression/statistics/transactional-writes)
* [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)


## Related topics

- [Estatísticas com metadados](/pt-BR/services/playfab/player-progression/statistics/metadata-statistics.md)
- [Estatísticas da comunidade](/pt-BR/services/playfab/player-progression/statistics/community-statistics.md)
- [Limites das estatísticas](/pt-BR/services/playfab/player-progression/statistics/limits-statistics.md)
- [Cota de estatísticas](/pt-BR/services/playfab/player-progression/statistics/quota-statistics.md)
- [Fazendo mais com estatísticas](/pt-BR/services/playfab/player-progression/statistics/doing-more-statistics.md)
