> ## 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 de temporada

> Configure tablas de clasificación de temporada de PlayFab con VersionConfiguration para restablecer las clasificaciones con una periodicidad mensual o personalizada y consultar versiones anteriores del torneo.

En este tutorial, explicamos el concepto de control de versiones para las tablas de clasificación. Hay varios casos en los que queremos tener
diferentes versiones de una tabla de clasificación determinada. Por ejemplo, en un juego con un modo de torneo mensual, la estructura de la tabla de clasificación
sigue siendo la misma, pero lo más probable es que los jugadores cambien, especialmente en un juego altamente competitivo.

Continuamos con el ejemplo de [Creación de una tabla de clasificación básica](/services/playfab/community/leaderboards/create-basic-leaderboard). Imagine que nuestro juego arcade es ahora muy popular. Por lo tanto, se presenta un nuevo modo llamado "Top of the Mountain". Cada mes, el juego incluye un
torneo al que puede unirse cualquier jugador. Quien quede entre los 100 primeros aparecerá en una tabla de clasificación especial en el menú principal,
para que todos puedan ver quién es el mejor en el juego.

## Creación de una definición de tabla de clasificación para el control de versiones

En el ejemplo anterior, al crear una definición de tabla de clasificación, se dio una pista sobre la importancia del parámetro `VersionConfiguration`
para el control de versiones. Aquí, detallamos cómo usarlo y cómo funciona.

```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 = 1000,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 12,
            ResetInterval = ResetInterval.Month,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "arcadeScoreTournament",
                SortDirection = LeaderboardSortDirection.Descending,
            }          
        }
    };

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

La principal diferencia de este ejemplo con respecto a la tabla de clasificación básica es el parámetro `VersionConfiguration`. Este parámetro nos permite definir una
configuración `MaxQueryableVersions`, que especifica cuántas versiones de la misma tabla de clasificación podemos consultar. En este caso, la establecemos para consultar 12 versiones,
lo que permite consultar las 12 tablas de clasificación más recientes. El parámetro `ResetInterval` define la frecuencia con la que se produce el proceso de restablecimiento. Esta acción implica
crear una tabla de clasificación con la misma configuración que antes, pero vacía, y el parámetro de versión cambia de la siguiente manera: N = N + 1, con N = 0 en el
momento de la creación de la definición de la tabla de clasificación.

Por ejemplo, supongamos que tenemos una tabla de clasificación con el parámetro de versión igual a dos y con cien entradas en la tabla de clasificación. Ahora,
cuando incrementamos la versión de esa tabla de clasificación, el resultado va a ser una nueva tabla de clasificación con el parámetro de versión igual a tres y vacía.
Mientras tanto, la tabla de clasificación anterior permanece en el sistema para poder consultarse.

`ResetInterval` puede funcionar de varias maneras. En este ejemplo, es mensual, pero se puede cambiar según las necesidades del desarrollador. En este caso
concreto, significa que la tabla de clasificación se va a restablecer automáticamente cada mes desde el momento en que se configuró. Se admiten las siguientes estrategias de restablecimiento:

* Día
* Hora
* Manual
* Mes
* Semana

Para obtener más información sobre todas las configuraciones disponibles, consulte la documentación de la API aquí:
[Referencia de API para la creación de una tabla de clasificación](https://learn.microsoft.com/en-us/rest/api/playfab/progression/leaderboards/create-leaderboard-definition)

## Incremento de la versión de una tabla de clasificación

Con esta nueva configuración, podemos tener varias versiones de la misma tabla de clasificación para el modo de torneo.
Pero ¿qué ocurre si necesitamos restablecer manualmente la tabla de clasificación debido a un problema y empezar de nuevo el torneo?
En esos casos, podemos realizar un restablecimiento manual mediante la API. Aquí hay un ejemplo con el SDK:

```C# theme={null}

public static async Task ResetLeaderboards(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    IncrementLeaderboardVersionRequest resetLeaderboardRequest = new IncrementLeaderboardVersionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.IncrementLeaderboardVersionResponse> resetLeaderboardResponse = await leaderboardsAPI.IncrementLeaderboardVersionAsync(resetLeaderboardRequest);
}

```

## Consulta de versiones anteriores

Ahora, si necesitamos consultar una versión anterior de una tabla de clasificación, podemos usar el parámetro `version` disponible en todas las API GetLeaderboards.
Aquí hay un ejemplo con el SDK:

```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,
        Version = 1
    };

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

Ahora estamos preparados para afrontar cualquier desafío con el control de versiones en las tablas de clasificación. Un aspecto importante aquí es que el número de definiciones de tablas de clasificación
que decidamos mantener como versiones se medirá, ya que usan almacenamiento dentro del servicio. Vea más sobre esto aquí:

* [Escrituras de tablas de clasificación](/services/playfab/pricing/meters/leaderboard-meters).

## Conclusiones

En este tutorial, aprendimos a realizar las siguientes operaciones:

* Crear una tabla de clasificación con la estrategia de restablecimiento adecuada.
* Incrementar la versión de una tabla de clasificación.
* Consultar versiones anteriores de una tabla de clasificación.

## 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).
* [Clasificación de jugadores por estadísticas](/services/playfab/community/leaderboards/leaderboards-linked-to-stats).
* [Tablas de clasificación de grupos](/services/playfab/community/leaderboards/group-leaderboards).
* [Niveles manuales](/services/playfab/community/leaderboards/manual-tiers).
* [Límites](/services/playfab/community/leaderboards/limits-leaderboards).
* [Cuota](/services/playfab/community/leaderboards/quota-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)


## Related topics

- [Tablas de clasificación de grupos](/es/services/playfab/community/leaderboards/group-leaderboards.md)
- [Cuota de tablas de clasificación](/es/services/playfab/community/leaderboards/quota-leaderboards.md)
- [Límites de las tablas de clasificación](/es/services/playfab/community/leaderboards/limits-leaderboards.md)
- [Inicio rápido de tablas de clasificación](/es/services/playfab/community/leaderboards/quickstart-leaderboards.md)
- [Creación de una tabla de clasificación básica](/es/services/playfab/community/leaderboards/create-basic-leaderboard.md)
