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

# Classer les joueurs selon les statistiques

> Liez un classement PlayFab à une définition de statistique afin que les mises à jour des statistiques des joueurs alimentent automatiquement les entrées du classement, classant ainsi les joueurs selon les valeurs suivies.

Dans ce tutoriel, nous allons apprendre à utiliser conjointement les services Leaderboards et Statistics. Le résultat final est que, lorsqu'une statistique est mise à jour pour une entité, elle est automatiquement reflétée dans le classement correspondant.
Pour plus d'informations sur PlayFab Statistics, consultez \[Vue d'ensemble de Statistics]\([Vue d'ensemble de PlayFab Statistics](/fr-CA/services/playfab/player-progression/statistics)).

Commençons par l'exemple d'un jeu de tir qui utilise les deux services. Ici, nous allons tirer parti du
tutoriel [Créer une statistique de base](/fr-CA/services/playfab/player-progression/statistics/create-basic-statistics) et poursuivre en supposant que nous avons déjà
des statistiques créées pour le jeu. Nous voulons maintenant suivre les tirs de longue portée chaque fois qu'un joueur en réussit un pendant un match. Nous allons avoir
une statistique qui enregistre le meilleur tir de longue portée d'un joueur et un classement des meilleurs joueurs en tirs de longue portée.

## Création d'un classement lié à une statistique

La première étape consiste à créer une définition de classement qui peut prendre en entrée les informations suivies par le service
Statistics. L'exemple suivant montre comment créer la définition de classement à l'aide du SDK C#.

```C# theme={null}

public static async Task CreateStatLinkedLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName, string statName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        EntityType = EntityType,
        Name = leaderboardName,
        SizeLimit = 1000,
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Distance",
                SortDirection = LeaderboardSortDirection.Descending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Distance",
                }
            },
            new LeaderboardColumn()
            {
                Name = "Caliber of the bullet",
                SortDirection = LeaderboardSortDirection.Ascending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Caliber",
                }
            }
        }
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}
```

Expliquons maintenant la principale différence avec les autres définitions de classement que nous avons créées précédemment. Remarquez l'objet `LeaderboardColumn`, avec une propriété appelée `LinkedStatisticColumn`, qui nous permet de créer un lien entre
les statistiques et le classement. Nous devons spécifier le nom de la statistique et le nom de la colonne dans cette statistique pour établir la correspondance.

Ainsi, nous suivons la progression du joueur avec le service Statistics. Le service Leaderboards utilise ensuite
ces informations et remplit le classement lié.

## Dissocier une statistique d'un classement

Le service dispose également d'un mécanisme pour dissocier les statistiques du classement au besoin. Un développeur peut vouloir effectuer cette action
pour plusieurs raisons, par exemple pour tester différentes configurations ou associer
différentes statistiques. L'exemple suivant montre comment dissocier les statistiques du classement à l'aide du SDK C#.

```C# theme={null}
public static async Task UnlinkLeaderboard(PlayFabAuthenticationContext context, string statName, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);

    UnlinkLeaderboardFromStatisticRequest unlinkLbRequest = new UnlinkLeaderboardFromStatisticRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        StatisticName = statName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> lbResponse = await leaderboardsAPI.UnlinkLeaderboardFromStatisticAsync(unlinkLbRequest);
}
```

Grâce à ces informations, nous pouvons lier et dissocier les statistiques des classements chaque fois que nécessaire. Il y a quelques contraintes importantes à garder à l'esprit :

* Les classements ne peuvent pas être mis à jour directement; il faut toujours passer par la mise à jour de la statistique pour profiter du mécanisme automatique.
* Les classements ne peuvent pas incrémenter leur version indépendamment de la statistique.
* Les classements ne peuvent pas être supprimés sans passer par le processus de dissociation.

## Conclusions

Dans ce tutoriel, nous avons appris à créer un classement alimenté par des statistiques ainsi qu'à dissocier les services.
Pour plus d'informations sur les autres fonctionnalités, consultez les pages suivantes :

* [Créer un classement de base](/fr-CA/services/playfab/community/leaderboards/create-basic-leaderboard).
* [Classements saisonniers](/fr-CA/services/playfab/community/leaderboards/seasonal-leaderboards).
* [Classements de groupe](/fr-CA/services/playfab/community/leaderboards/group-leaderboards).
* [Limites](/fr-CA/services/playfab/community/leaderboards/limits-leaderboards).
* [Quota](/fr-CA/services/playfab/community/leaderboards/quota-leaderboards).
* [Niveaux manuels](/fr-CA/services/playfab/community/leaderboards/manual-tiers).
* [Aller plus loin avec les classements](/fr-CA/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Ajouter des données contextuelles aux classements](/fr-CA/services/playfab/community/leaderboards/metadata-leaderboards).
* [Référence de l'API](/fr-CA/services/playfab/community/leaderboards/api-reference).
* [Classements et CloudScript](/fr-CA/services/playfab/community/leaderboards/leaderboards-cloudscript).
* [Classements avec PlayStream](/fr-CA/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)
