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

# Tablas de clasificación con niveles manuales

> Aprenda a crear un sistema de niveles manual sobre las tablas de clasificación de PlayFab, clasificando a los jugadores en los niveles Bronce, Plata, Oro, Platino, Diamante y Salvador.

# Niveles manuales mediante tablas de clasificación

En este tutorial, vamos a aprender a aplicar algunas propiedades del servicio de tablas de clasificación
para crear un sistema de niveles para los jugadores. Para entender cómo crear un sistema de niveles manual
basado en las propiedades del servicio, vamos a empezar con un ejemplo. Imagine que tenemos un juego de matar zombis,
en el que los jugadores tienen un tiempo limitado para conseguir tantos puntos como sea posible. Se pueden emplear diferentes estrategias para ganar más puntos,
y también hay puntos por no recibir ningún daño.

En este ejemplo, los jugadores ganan puntos de experiencia en función de su rendimiento en cada partida. Queremos crear un sistema de niveles para identificar al mejor jugador
con el rango de "Saviors", mientras que el resto de los jugadores se distribuirá entre diferentes rangos como Bronce, Plata, Oro, Platino y Diamante.

## Creación de una tabla de clasificación

El primer paso es crear una definición de tabla de clasificación que incluya los elementos principales para clasificar a los jugadores. Para nuestro juego de zombis,
vamos a usar varias puntuaciones. En el ejemplo siguiente se muestra cómo crear la definición de la tabla de clasificación mediante el SDK de 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);
}
```

Aquí tenemos nuestra tabla de clasificación definida con tres puntuaciones diferentes. Para obtener más información sobre la creación de tablas de clasificación o cómo funciona el desempate,
consulte la guía siguiente: [Cómo hacer más con las tablas de clasificación](/services/playfab/community/leaderboards/doing-more-with-leaderboards).

## Niveles manuales

Con la tabla de clasificación creada correctamente, ahora podemos proceder a definir cómo queremos crear nuestros niveles. En primer lugar,
debemos definir cómo queremos dividir la población de jugadores. Normalmente, cuanto más alto es el rango,
menos jugadores hay. Con ese concepto en mente, así es como vamos a definir nuestros niveles.

* Bronce: 0 - 35 % de los jugadores.
* Plata: 35 % - 60 % de los jugadores.
* Oro: 60 % - 80 % de los jugadores.
* Platino: 80 % - 90 % de los jugadores.
* Diamante: 90 % - 99,5 % de los jugadores.
* Saviors: el 0,05 % superior de los jugadores.

Dado que este proceso es un enfoque manual de un sistema de niveles, la distribución de los jugadores
debe almacenarse de la manera que el desarrollador considere oportuna.

Para recuperar los datos, vamos a usar el ejemplo siguiente:

```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 ejemplo es una de las múltiples formas de recuperar datos de la tabla de clasificación. En la propiedad Result de la respuesta,
vamos a encontrar una propiedad denominada `EntryCount` que nos indica cuántas filas tiene actualmente la tabla de clasificación.
Este número es diferente de `SizeLimit`, que representa el número máximo de filas de la tabla de clasificación.

Para determinar el nivel de un jugador, tomamos su posición dentro de la tabla de clasificación y la dividimos por la propiedad `EntryCount`
para ver dónde encaja dentro de los niveles definidos.

Ejemplos rápidos:

* Jugador en la parte inferior: un jugador situado en la posición 8500 de 10 000 está dentro del 85 % de la población, por lo que entra en el nivel Bronce.
* Jugador en la parte media: un jugador situado en la posición 3500 de 10 000 está dentro del 35 % superior de los jugadores, por lo que entra en el nivel Oro.
* Jugador en la parte superior: un jugador situado en la posición 50 de 10 000 está dentro del 0,5 % superior de los jugadores, convirtiéndose en un "Savior".

## Conclusiones

En este tutorial, aprendimos a realizar las siguientes operaciones:

* Crear una tabla de clasificación.
* Aprender a consultar datos de una tabla de clasificación.
* Aprender a crear una distribución manual de niveles basada en percentiles.
* Aprender a asignar el resultado de la posición de un jugador a un nivel real.

## Consulte también

* [Cómo hacer más con las tablas de clasificación](/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Creación de una tabla de clasificación básica](/services/playfab/community/leaderboards/create-basic-leaderboard)
* [Tablas de clasificación de grupos](/services/playfab/community/leaderboards/group-leaderboards).
* [Límites](/services/playfab/community/leaderboards/limits-leaderboards).
* [Cuota ](/services/playfab/community/leaderboards/quota-leaderboards).
* [Clasificación de jugadores por estadísticas](/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [Adición de datos contextuales a las tablas de clasificación](/services/playfab/community/leaderboards/metadata-leaderboards)
* [Referencia de API](/services/playfab/community/leaderboards/api-reference)
* [Tablas de clasificación y CloudScript](/services/playfab/community/leaderboards/leaderboards-cloudscript).
* [Tablas de clasificación con PlayStream](/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)


## Related topics

- [Tablas de clasificación con Azure Functions](/es/services/playfab/community/leaderboards/leaderboards-cloudscript.md)
- [Cómo hacer más con las tablas de clasificación](/es/services/playfab/community/leaderboards/doing-more-with-leaderboards.md)
- [Tablas de clasificación con PlayStream y telemetría](/es/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry.md)
- [Información general sobre las tablas de clasificación basadas en eventos](/es/services/xbox-services/player-data/stats-leaderboards/event-based/live-leaderboards-eb-overview.md)
- [Uso de tablas de premios](/es/services/playfab/community/leaderboards/tournaments-leaderboards/using-prize-tables.md)
