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

# Tabelas de classificação com níveis manuais

> Saiba como criar um sistema de níveis manual com base nas tabelas de classificação do PlayFab, classificando os jogadores nos níveis Bronze, Prata, Ouro, Platina, Diamante e Salvador.

# Níveis manuais usando tabelas de classificação

Neste tutorial, vamos aprender a aplicar algumas propriedades do serviço de tabelas de classificação
para criar um sistema de níveis para os jogadores. Para entender como criar um sistema de níveis manual
com base nas propriedades do serviço, vamos começar com um exemplo. Imagine que temos um jogo de matar zumbis,
em que os jogadores têm um tempo limitado para marcar o máximo de pontos possível. Diferentes estratégias podem ser usadas para ganhar mais pontos,
e também há pontos por não receber nenhum dano.

Neste exemplo, os jogadores ganham pontos de experiência com base no desempenho em cada partida. Queremos criar um sistema de níveis para identificar os melhores jogadores
com a classificação de "Salvadores", enquanto os demais jogadores serão distribuídos em diferentes classificações, como Bronze, Prata, Ouro, Platina e Diamante.

## Criar uma tabela de classificação

A primeira etapa é criar uma definição de tabela de classificação que inclua os principais elementos para classificar os jogadores. Para o nosso jogo de zumbis,
vamos usar várias pontuações. O exemplo a seguir mostra como criar a definição da tabela de classificação usando o SDK do 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);
}
```

Aqui temos nossa tabela de classificação definida com três pontuações diferentes. Para obter mais informações sobre como criar tabelas de classificação ou como o desempate funciona,
confira o seguinte guia: [Fazendo mais com tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/doing-more-with-leaderboards).

## Níveis manuais

Com a tabela de classificação criada corretamente, podemos definir como queremos criar nossos níveis. Primeiro,
precisamos definir como queremos dividir a população de jogadores. Normalmente, quanto mais alta a classificação,
menos jogadores. Com esse conceito em mente, veja como vamos definir nossos níveis.

* Bronze: 0 a 35% dos jogadores.
* Prata: 35% a 60% dos jogadores.
* Ouro: 60% a 80% dos jogadores.
* Platina: 80% a 90% dos jogadores.
* Diamante: 90% a 99,5% dos jogadores.
* Salvadores: 0,05% melhores jogadores.

Como esse processo é uma abordagem manual para um sistema de níveis, a distribuição dos jogadores
precisa ser armazenada da forma que o desenvolvedor considerar mais adequada.

Para recuperar os dados, vamos usar o seguinte exemplo:

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

Este exemplo é uma das várias formas de recuperar dados da tabela de classificação. Na propriedade Result da resposta,
encontraremos uma propriedade chamada `EntryCount`, que informa quantas linhas a tabela de classificação tem atualmente.
Esse número é diferente de `SizeLimit`, que representa o número máximo de linhas da tabela de classificação.

Para determinar o nível de um jogador, pegamos a posição dele na tabela de classificação e a dividimos pela propriedade `EntryCount`
para ver onde ele se encaixa nos níveis definidos.

Exemplos rápidos:

* Jogador da parte de baixo: um jogador na posição 8500 de 10.000 está dentro de 85% da população, caindo no nível Bronze.
* Jogador intermediário: um jogador na posição 3500 de 10.000 está entre os 35% melhores jogadores, caindo no nível Ouro.
* Jogador do topo: um jogador na posição 50 de 10.000 está entre os 0,5% melhores jogadores, tornando-se um "Salvador".

## Conclusões

Neste tutorial, aprendemos a realizar as seguintes operações:

* Criar uma tabela de classificação.
* Aprender a consultar dados de uma tabela de classificação.
* Aprender a criar uma distribuição de níveis manual com base em percentis.
* Aprender a mapear o resultado da posição de um jogador para um nível real.

## Confira também

* [Fazendo mais com tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Criar uma tabela de classificação básica](/pt-BR/services/playfab/community/leaderboards/create-basic-leaderboard)
* [Tabelas de classificação de grupos](/pt-BR/services/playfab/community/leaderboards/group-leaderboards).
* [Limites](/pt-BR/services/playfab/community/leaderboards/limits-leaderboards).
* [Cota ](/pt-BR/services/playfab/community/leaderboards/quota-leaderboards).
* [Classificando jogadores por estatísticas](/pt-BR/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [Adicionar dados contextuais às tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/metadata-leaderboards)
* [Referência da API](/pt-BR/services/playfab/community/leaderboards/api-reference)
* [Tabelas de classificação e CloudScript](/pt-BR/services/playfab/community/leaderboards/leaderboards-cloudscript).
* [Tabelas de classificação com PlayStream](/pt-BR/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)


## Related topics

- [Tabelas de classificação com PlayStream e Telemetry](/pt-BR/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry.md)
- [Tabelas de classificação sazonais](/pt-BR/services/playfab/community/leaderboards/seasonal-leaderboards.md)
- [Tabelas de classificação de grupos](/pt-BR/services/playfab/community/leaderboards/group-leaderboards.md)
- [Limites das tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/limits-leaderboards.md)
- [Cota das tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/quota-leaderboards.md)
