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

# Clasificación de jugadores por estadísticas

> Vincule una tabla de clasificación de PlayFab a una definición de estadística para que las actualizaciones de las estadísticas de los jugadores alimenten automáticamente las entradas de la tabla de clasificación, clasificando a los jugadores por los valores registrados.

En este tutorial, vamos a aprender a usar los servicios de tablas de clasificación y estadísticas de forma conjunta. El resultado final es que, cuando se actualiza una estadística en una entidad, se refleja automáticamente en la tabla de clasificación correspondiente.
Para obtener más información sobre las estadísticas de PlayFab, consulte \[Información general sobre estadísticas]\([PlayFab Statistics overview](/services/playfab/player-progression/statistics)).

Empecemos con un ejemplo de un juego de disparos que usa ambos servicios. Aquí vamos a aprovechar el
tutorial de [Creación de una estadística básica](/services/playfab/player-progression/statistics/create-basic-statistics) y continuaremos con la suposición de que ya
tenemos estadísticas creadas para el juego. Ahora, queremos registrar los disparos de larga distancia cada vez que un jugador acierta uno en una partida. Vamos a tener
una estadística que registre el mejor disparo de larga distancia de un jugador y una tabla de clasificación con los mejores jugadores que aciertan disparos de larga distancia.

## Creación de una tabla de clasificación vinculada a una estadística

El primer paso es crear una definición de tabla de clasificación que pueda tomar como entrada la información registrada por el servicio de estadísticas. 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 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);
}
```

Ahora, expliquemos la principal diferencia con las otras definiciones de tablas de clasificación que creamos anteriormente. Observe el objeto `LeaderboardColumn`, con una propiedad denominada `LinkedStatisticColumn`, que nos permite crear un vínculo entre
las estadísticas y la tabla de clasificación. Es necesario especificar el nombre de la estadística y el nombre de la columna dentro de esa estadística para realizar la asignación.

Al hacerlo, registramos el progreso del jugador con el servicio de estadísticas. Después, el servicio de tablas de clasificación usa
esta información y rellena la tabla de clasificación vinculada.

## Desvinculación de una estadística de una tabla de clasificación

El servicio también cuenta con un mecanismo para desvincular las estadísticas de la tabla de clasificación si es necesario. Puede haber varias
razones por las que un desarrollador quiera realizar esta acción, como probar diferentes configuraciones o asignar
estadísticas distintas. En el ejemplo siguiente se muestra cómo desvincular las estadísticas de la tabla de clasificación mediante el SDK de 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);
}
```

Con esta información, podemos vincular y desvincular estadísticas de las tablas de clasificación siempre que sea necesario. Hay algunas restricciones importantes que se deben tener en cuenta:

* Las tablas de clasificación no se pueden actualizar directamente; siempre se debe pasar por la actualización de la estadística para hacer uso del mecanismo automático.
* Las tablas de clasificación no pueden incrementar su versión de forma independiente de la estadística.
* Las tablas de clasificación no se pueden eliminar a menos que se realice el proceso de desvinculación.

## Conclusiones

En este tutorial, aprendimos a crear una tabla de clasificación basada en estadísticas y también a desvincular los servicios.
Para obtener más información sobre otras características, consulte las páginas siguientes:

* [Creación de una tabla de clasificación básica](/services/playfab/community/leaderboards/create-basic-leaderboard).
* [Tablas de clasificación de temporada](/services/playfab/community/leaderboards/seasonal-leaderboards).
* [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).
* [Niveles manuales](/services/playfab/community/leaderboards/manual-tiers).
* [Cómo hacer más con las tablas de clasificación](/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [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)
