> ## 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 et classent les joueurs selon les valeurs suivies.

Dans ce didacticiel, nous allons apprendre à utiliser conjointement les services Leaderboards et Statistics. Le résultat final est que, lorsqu'une statistique est mise à jour sur une entité, la modification est automatiquement répercuté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/services/playfab/player-progression/statistics)).

Commençons par l'exemple d'un jeu de tir qui utilise les deux services. Nous allons nous appuyer sur le
didacticiel [Créer une statistique de base](/fr/services/playfab/player-progression/statistics/create-basic-statistics) et partir du principe que nous avons déjà
créé des statistiques pour le jeu. Nous voulons maintenant suivre les tirs de loin chaque fois qu'un joueur en réussit un pendant une partie. Nous allons avoir
une statistique qui enregistre le meilleur tir de loin d'un joueur et un classement des meilleurs joueurs en tirs de loin.

## 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. Notez 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 effectuer le mappage.

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

## Dissocier une statistique d'un classement

Le service dispose également d'un mécanisme permettant de dissocier les statistiques du classement si nécessaire. Un développeur peut
vouloir effectuer cette action pour plusieurs raisons, par exemple pour tester différentes configurations ou mapper
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 des statistiques des classements chaque fois que nécessaire. Certaines contraintes importantes sont à garder à l'esprit :

* Les classements ne peuvent pas être mis à jour directement ; la mise à jour doit toujours passer par la statistique pour tirer parti 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 didacticiel, 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/services/playfab/community/leaderboards/create-basic-leaderboard).
* [Classements saisonniers](/fr/services/playfab/community/leaderboards/seasonal-leaderboards).
* [Classements de groupes](/fr/services/playfab/community/leaderboards/group-leaderboards).
* [Limites](/fr/services/playfab/community/leaderboards/limits-leaderboards).
* [Quota](/fr/services/playfab/community/leaderboards/quota-leaderboards).
* [Niveaux manuels](/fr/services/playfab/community/leaderboards/manual-tiers).
* [Aller plus loin avec les classements](/fr/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Ajouter des données contextuelles aux classements](/fr/services/playfab/community/leaderboards/metadata-leaderboards).
* [Référence de l'API](/fr/services/playfab/community/leaderboards/api-reference).
* [Classements et CloudScript](/fr/services/playfab/community/leaderboards/leaderboards-cloudscript).
* [Classements avec PlayStream](/fr/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)


## Related topics

- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [XR-018 : Contenu généré par l'utilisateur](/fr-CA/publishing/certification/xr/xr-018.md)
- [Exigences XBOX pour les jeux XBOX](/fr-CA/publishing/certification/xbox-requirements.md)
- [Outil de réinitialisation des données de joueur (XblPlayerDataReset.exe)](/fr-CA/tools/tools-services/live-player-data-reset.md)
- [Ressources d'accessibilité pour les développeurs](/fr/build/game-principles/accessibility/accessibility-resources.md)
