> ## 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 à partir des 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 didacticiel, nous allons apprendre à appliquer certaines propriétés du service
Leaderboards 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 partir d'un exemple. Imaginez un jeu où il faut éliminer des zombies,
dans lequel les joueurs disposent d'un temps limité pour marquer le plus de points possible. Différentes stratégies permettent de gagner davantage de points,
et des points sont également attribués lorsque le joueur ne subit aucun dégât.

Dans cet exemple, les joueurs gagnent des points d'expérience en fonction de leurs performances à chaque partie. Nous voulons créer un système de niveaux pour identifier les meilleurs joueurs
avec le rang « 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 inclut les éléments principaux 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 maintenant 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/services/playfab/community/leaderboards/doing-more-with-leaderboards).

## Niveaux manuels

Une fois le classement correctement créé, nous pouvons définir la manière dont nous voulons créer nos niveaux. Tout d'abord,
nous devons définir comment répartir la population de joueurs. En règle générale, plus le rang est élevé,
moins il y a de joueurs. Avec ce principe en tête, voici comment nous allons définir nos niveaux.

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

Comme ce processus est une approche manuelle d'un système de niveaux, la répartition des joueurs
doit être stockée de la manière 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 à partir du classement. Dans la propriété Result de la réponse,
nous trouverons une propriété appelée `EntryCount` qui nous indique le nombre de lignes que contient actuellement le classement.
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 dans quel niveau défini il se situe.

Exemples rapides :

* Joueur en bas du classement : un joueur classé 8 500e sur 10 000 se situe dans les 85 % de la population et appartient au niveau Bronze.
* Joueur au milieu du classement : un joueur classé 3 500e sur 10 000 se situe dans les 35 % meilleurs joueurs et appartient au 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 didacticiel, 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/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Créer un classement de base](/fr/services/playfab/community/leaderboards/create-basic-leaderboard)
* [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).
* [Classer les joueurs selon les statistiques](/fr/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [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

- [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)
