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

# Classements à niveaux manuels

> Découvrez comment créer un système de niveaux manuel par-dessus les classements PlayFab, en répartissant les joueurs dans les niveaux Bronze, Argent, Or, Platine, Diamant et Sauveur.

# Niveaux manuels à l'aide des classements

Dans ce tutoriel, nous allons apprendre à appliquer certaines propriétés du service de classements
pour créer un système de niveaux pour les joueurs. Pour comprendre comment créer un système de niveaux manuel
basé sur les propriétés du service, nous allons commencer par un exemple. Imaginons un jeu où l'on tue des zombies,
dans lequel les joueurs disposent d'un temps limité pour marquer le plus de points possible. Différentes stratégies peuvent être employées pour gagner plus de points,
et des points sont aussi accordés lorsque le joueur ne subit aucun dégât.

Dans cet exemple, les joueurs gagnent des points d'expérience en fonction de leur performance dans chaque match. Nous voulons créer un système de niveaux pour identifier le meilleur joueur
avec le rang de « Sauveurs », tandis que les autres joueurs seront répartis entre différents rangs comme Bronze, Argent, Or, Platine et Diamant.

## Créer un classement

La première étape consiste à créer une définition de classement qui comprend les principaux éléments pour classer les joueurs. Pour notre jeu de zombies,
nous allons utiliser plusieurs scores. L'exemple suivant montre comment créer la définition de classement à l'aide du SDK C#.

```C# theme={null}
public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        SizeLimit = 10000,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Eliminations",
                SortDirection = LeaderboardSortDirection.Descending,
            },
            new LeaderboardColumn()
            {
                Name = "SkillPoints",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

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

Notre classement est ici défini avec trois scores différents. Pour plus d'informations sur la création de classements ou le fonctionnement du départage,
consultez le guide suivant : [Aller plus loin avec les classements](/fr-CA/services/playfab/community/leaderboards/doing-more-with-leaderboards).

## Niveaux manuels

Une fois le classement correctement créé, nous pouvons maintenant définir la façon dont nous voulons créer nos niveaux. D'abord,
nous devons définir comment nous voulons répartir la population de joueurs. En général, plus le rang est élevé,
moins il y a de joueurs. Avec ce concept en tête, voici comment nous allons définir nos niveaux.

* Bronze : de 0 à 35 % des joueurs.
* Argent : de 35 % à 60 % des joueurs.
* Or : de 60 % à 80 % des joueurs.
* Platine : de 80 % à 90 % des joueurs.
* Diamant : de 90 % à 99,5 % des joueurs.
* Sauveurs : les 0,05 % meilleurs joueurs.

Puisque ce processus est une approche manuelle d'un système de niveaux, la répartition des joueurs
doit être stockée de la façon que le développeur juge appropriée.

Pour récupérer les données, nous allons utiliser l'exemple suivant :

```C# theme={null}
public static async Task<List<EntityLeaderboardEntry>> GetLeaderboard(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    GetEntityLeaderboardRequest getLbRequest = new GetEntityLeaderboardRequest()
    {
        LeaderboardName = leaderboardName,
        StartingPosition = 1,
        PageSize = 20,
        AuthenticationContext = context,
    };

    PlayFabResult<GetEntityLeaderboardResponse> lbResponse = await leaderboardsAPI.GetLeaderboardAsync(getLbRequest);
    
    return lbResponse.Result;
}
```

Cet exemple est l'une des nombreuses façons de récupérer des données du classement. Dans la propriété Result de la réponse,
nous trouverons une propriété appelée `EntryCount` qui nous indique combien de lignes le classement comporte actuellement.
Ce nombre est différent de `SizeLimit`, qui représente le nombre maximal de lignes du classement.

Pour déterminer le niveau d'un joueur, nous prenons sa position dans le classement et la divisons par la propriété `EntryCount`
pour voir où il se situe parmi les niveaux définis.

Exemples rapides :

* Joueur en bas du classement : un joueur classé 8500e sur 10 000 se situe dans les 85 % de la population et tombe dans le niveau Bronze.
* Joueur au milieu du classement : un joueur classé 3500e sur 10 000 se situe dans les 35 % meilleurs joueurs et tombe dans le niveau Or.
* Meilleur joueur : un joueur classé 50e sur 10 000 se situe dans les 0,5 % meilleurs joueurs et devient un « Sauveur ».

## Conclusions

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

* Créer un classement.
* Interroger les données d'un classement.
* Créer une répartition manuelle en niveaux basée sur des centiles.
* Associer la position d'un joueur à un niveau réel.

## Voir aussi

* [Aller plus loin avec les classements](/fr-CA/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Créer un classement de base](/fr-CA/services/playfab/community/leaderboards/create-basic-leaderboard)
* [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).
* [Classer les joueurs selon les statistiques](/fr-CA/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [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)


## Related topics

- [XR047 Accès au profil utilisateur](/fr/publishing/certification/fma/xr-047.md)
- [XR074 Perte de connectivité aux services XBOX et partenaires](/fr/publishing/certification/fma/xr-074.md)
- [XR074 Perte de connectivité aux services XBOX et des partenaires](/fr-CA/publishing/certification/fma/xr-074.md)
- [Intégration des partenaires XBOX : accès et publication](/fr/home/onboarding.md)
- [Intégration des partenaires XBOX pour l'accès au GDK](/fr-CA/home/onboarding.md)
