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

# Statistiques saisonnières

> Utilisez les statistiques saisonnières et la gestion des versions de PlayFab pour réinitialiser les scores des joueurs selon une planification, afin d'alimenter des saisons, des échelles de classement et des événements de progression limités dans le temps.

Dans ce tutoriel, nous expliquons le concept de gestion des versions des statistiques. Dans de nombreux cas, nous souhaitons disposer
de différentes versions d'une même statistique. Par exemple, si un jeu comporte des saisons, il réinitialisera très probablement les statistiques au début
de chaque nouvelle saison.

Nous poursuivons avec l'exemple de [Créer une statistique de base](/fr/services/playfab/player-progression/statistics/create-basic-statistics). Imaginez que notre jeu de tir devient très populaire. Le concept de saisons est donc introduit : chaque mois, le jeu lance une nouvelle saison thématique pour l'ensemble
de la base de joueurs. Nous voulons donc conserver des statistiques indépendantes par saison.

## Création d'une définition de statistique pour la gestion des versions

Dans l'exemple précédent, lors de la création d'une définition de statistique, nous avons évoqué l'importance du paramètre `VersionConfiguration`
pour la gestion des versions. Nous expliquons ici comment l'utiliser et comment il fonctionne.

```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);
}
```

La principale différence de cet exemple par rapport à la statistique de base réside dans le paramètre `VersionConfiguration`. Ce paramètre nous permet de définir
le paramètre `MaxQueryableVersions`, qui spécifie le nombre de versions d'une même statistique que nous pouvons interroger. Dans ce cas, nous le définissons sur 12 versions.
Le paramètre `ResetInterval` définit la fréquence du processus de réinitialisation. Ce processus consiste à créer une statistique avec la même configuration que
précédemment, mais sans aucune valeur, et le paramètre de version évolue comme suit : N = N + 1, avec N = 0 lors de la création de la définition de statistique.

Par exemple, supposons que nous ayons une statistique dont le paramètre de version est égal à deux, avec une valeur donnée. Si
nous incrémentons la version de cette statistique, nous obtenons une nouvelle statistique dont le paramètre de version est égal à trois, sans aucune valeur.
La statistique précédente reste quant à elle dans le système et peut être interrogée.

`ResetInterval` peut fonctionner de plusieurs façons. Dans cet exemple, la réinitialisation est mensuelle, mais elle peut être modifiée selon les besoins du développeur. Dans ce cas
précis, cela signifie que le classement sera réinitialisé automatiquement chaque mois à partir du moment où il a été configuré. Nous prenons en charge les stratégies de réinitialisation suivantes :

* Day
* Hour
* Manual
* Month
* Week

[Référence de l'API : création d'une statistique](https://learn.microsoft.com/en-us/rest/api/playfab/progression/statistics/create-statistic-definition)

## Incrémentation de la version d'une statistique

Avec cette nouvelle configuration, nous pouvons disposer de plusieurs versions de la même statistique pour différentes saisons.
Mais que se passe-t-il si nous devons réinitialiser manuellement le classement en raison d'un problème et recommencer la saison ?
Dans ce cas, nous pouvons effectuer une réinitialisation manuelle à l'aide de l'API. Voici un exemple avec le 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);
}
```

Nous sommes maintenant prêts à relever tous les défis liés à la gestion des versions des statistiques. Un aspect important est que le nombre de définitions de statistiques
que nous décidons de conserver sous forme de versions sera mesuré, car elles utilisent du stockage au sein du service. Pour en savoir plus :

* [Statistiques](/fr/services/playfab/pricing/meters/statistics-meters).

## Conclusions

Dans ce tutoriel, nous avons appris à effectuer les opérations suivantes :

* Créer une statistique avec la stratégie de réinitialisation appropriée
* Incrémenter la version d'une statistique

## Voir aussi

* [Aller plus loin avec les statistiques](/fr/services/playfab/player-progression/statistics/doing-more-statistics).
* [Créer des statistiques de base](/fr/services/playfab/player-progression/statistics/create-basic-statistics).
* [Ajouter des données contextuelles aux statistiques](/fr/services/playfab/player-progression/statistics/metadata-statistics).
* [Écritures transactionnelles](/fr/services/playfab/player-progression/statistics/transactional-writes)
* [Référence de l'API](/fr/services/playfab/player-progression/statistics/api-reference).
* [Limites](/fr/services/playfab/player-progression/statistics/limits-statistics).
* [Quota](/fr/services/playfab/player-progression/statistics/quota-statistics)


## Related topics

- [Statistiques communautaires](/fr/services/playfab/player-progression/statistics/community-statistics.md)
- [Métadonnées des statistiques](/fr/services/playfab/player-progression/statistics/metadata-statistics.md)
- [Limites des statistiques](/fr/services/playfab/player-progression/statistics/limits-statistics.md)
- [Quotas des statistiques](/fr/services/playfab/player-progression/statistics/quota-statistics.md)
- [Démarrage rapide des statistiques](/fr/services/playfab/player-progression/statistics/quickstart-statistics.md)
