

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Reposición de juegos existentes con FlexMatch
<a name="match-backfill"></a>

La reposición de emparejamiento utiliza los mecanismos de FlexMatch para encontrar nuevos jugadores para sesiones de juego existentes que ya están emparejadas. Aunque siempre puede añadir jugadores a cualquier juego (consulte [Conexión de un jugador a una sesión de juego](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#gamelift-sdk-client-api-join)), la reposición de emparejamiento garantiza que los nuevos jugadores cumplan con los mismos criterios de emparejamiento que los jugadores actuales. Además, la reposición de emparejamiento asigna los nuevos jugadores a equipos, administra la aceptación de los jugadores y envía información de emparejamiento actualizada al servidor de juegos. Encontrará más información sobre la reposición de emparejamientos en [Proceso de emparejamiento de FlexMatch](gamelift-match-howitworks.md).

**nota**  
La reposición de emparejamientos de FlexMatch no está disponible actualmente para los juegos que utilizan Amazon GameLift Servers Realtime.

Existen dos tipos de mecanismos de reposición:
+ Habilite la reposición automática para rellenar las sesiones de juego que comiencen con un número de jugadores inferior al máximo permitido. La reposición automática no rellena los espacios de los jugadores que se unen al juego y luego lo abandonan.
+ Configure un mecanismo de reposición manual para reemplazar a los jugadores que abandonen una sesión de juego en curso. Este mecanismo debe ser capaz de detectar un espacio vacío y generar una solicitud de reposición para llenarla. 

# Activación de la reposición automática
<a name="match-backfill-auto"></a>

Con la reposición automática de partidas, Amazon GameLift Servers desencadena automáticamente una solicitud de reposición cada vez que una sesión de juego comienza con una o más ranuras de jugadores sin rellenar. Esta característica permite que los juegos comiencen tan pronto como se encuentre el número mínimo de jugadores emparejados y llenen las ranuras restantes más tarde a medida que se emparejen jugadores adicionales. Puede optar por detener la reposición automática en cualquier momento. 

Como ejemplo, pensemos en un juego que pueda albergar de seis a diez jugadores. FlexMatch ubica inicialmente a seis jugadores, forma el emparejamiento e inicia una nueva sesión de juego. Con la reposición automática, la nueva sesión de juego puede solicitar inmediatamente cuatro jugadores adicionales. Dependiendo del estilo del juego, es posible que deseemos permitir que nuevos jugadores se unan en cualquier momento durante la sesión de juego. De forma alternativa, es posible que deseemos detener la reposición automática después de la fase inicial de configuración y antes de que comience la partida.

Para añadir la reposición automática a su juego, realice las siguientes actualizaciones en él.

1. **Habilite la reposición automática.** La reposición automática se administra en una configuración de emparejamiento. Cuando está habilitada, se utiliza con todas las sesiones de juego emparejadas que se crean con ese emparejador. Amazon GameLift Servers comienza a generar solicitudes de reposición para una sesión que no es de juego completo tan pronto como se inicia la sesión de juego en un servidor de juegos.

   Para activar la reposición automática, abra una configuración de emparejamiento y establezca el modo de reposición en "AUTOMÁTICO". Para obtener más información, consulte [Creación de una configuración de emparejamiento](match-create-configuration.md)

1. **Active la priorización de reposición**. Personalice el proceso de emparejamiento para priorizar la tramitación de las solicitudes de reposición antes de crear nuevos emparejamientos. En el conjunto de reglas de emparejamiento, añada un componente de algoritmo y establezca la prioridad de reposición en “alta”. Para obtener más información, consulte [Personalización del algoritmo de coincidencia](match-rulesets-components-algorithm.md).

1. **Actualice la sesión de juego con nuevos datos del emparejador.** Amazon GameLift Servers actualiza el servidor de juegos con información de emparejamiento mediante la función de devolución de llamada `onUpdateGameSession` del SDK del servidor (consulte [Inicialización del proceso del servidor](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize)). Añada código al servidor de juegos para administrar los objetos de la sesión de juego actualizados como resultado de la actividad de reposición. Obtenga más información en [Actualización de datos de emparejamientos en el servidor de juegos](match-backfill-server-data.md). 

1. **Desactive la reposición automática para una sesión de juego.** Puede optar por detener la reposición automática en cualquier momento durante una sesión de juego individual. Para detener el relleno automático, añade código a tu cliente o servidor de juego para realizar la llamada [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)a la Amazon GameLift Servers API. Esta llamada requiere un ID de ticket. Utilice el ID de ticket de reposición de la última solicitud de reposición. Puede obtener esta información a partir de los datos de emparejamiento de sesión de juego, que se actualiza tal y como se describe en el paso anterior.

# Generación de solicitudes de reposición manual desde un servidor de juegos
<a name="match-backfill-server"></a>

Puede iniciar solicitudes de reposición de emparejamiento manualmente desde el proceso del servidor de juegos que aloja la sesión de juego. El proceso del servidor es el que contiene la mayor cantidad de up-to-date información sobre los jugadores conectados al juego y el estado de los espacios vacíos.

En este tema se supone que ya ha creado los componentes de FlexMatch necesarios y que ha añadido correctamente procesos de creación de emparejamientos al servidor de juegos y un servicio de juego del lado del cliente. Para obtener más información sobre la configuración de FlexMatch, consulte [Hoja de ruta: Adición del emparejamiento a una solución de alojamiento de Amazon GameLift Servers](match-tasks.md). 

Para habilitar la reposición de emparejamiento para su juego, añada la siguiente funcionalidad:
+ Enviar solicitudes de reposición de emparejamiento a un creador de emparejamientos y hacer un seguimiento del estado de las solicitudes.
+ Actualice la información de emparejamiento de la sesión de juego. Consulte [Actualización de datos de emparejamientos en el servidor de juegos](match-backfill-server-data.md).

Al igual que con otras funcionalidades de servidor, los servidores de juegos utilizan el SDK del servidor de Amazon GameLift Servers. Este SDK está disponible en C\$1\$1 y C\$1. 

Para realizar solicitudes de reposición de emparejamiento desde su servidor de juegos, complete las siguientes tareas.

1. **Dispare una solicitud de reposición de emparejamiento.** Por lo general, es buena idea iniciar una solicitud de reposición siempre que un juego emparejado tiene una o varias ranuras de jugadores vacías. Es posible que desee vincular solicitudes de reposición a circunstancias específicas, por ejemplo, para suplir funciones de personaje cruciales o equilibrar equipos. También es probable que desee limitar la actividad de reposición en función de la antigüedad de una sesión de juego. 

1. **Cree una solicitud de reposición.** Añada código para crear y enviar solicitudes de reposición de emparejamiento a un creador de emparejamientos de FlexMatch. Las solicitudes de relleno se gestionan mediante los siguientes servidores APIs:
   + [ StartMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-startmatchbackfill)
   + [ StopMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-stopmatchbackfill)

   Para crear una solicitud de reposición, llame a `StartMatchBackfill` con la siguiente información. Para cancelar una solicitud de reposición, llame a `StopMatchBackfill` con el ID del ticket de solicitud de reposición.
   + **ID de ticket**: proporcione un ID de ticket del emparejador (o puede optar por que se generen automáticamente). Puedes usar el mismo mecanismo para asignar entradas tanto a las solicitudes de emparejamiento como IDs a las de relleno. Los tickets para el emparejamiento y la reposición se procesan de la misma forma.
   + **Emparejador**: identifique qué emparejador utilizar para la solicitud de reposición. Por lo general, deberá utilizar el mismo emparejador que se usó para crear el emparejamiento original. Esta solicitud toma un ARN de configuración de emparejamiento. Esta información se almacena en el objeto de sesión de juego ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), que se proporcionó al proceso del servidor Amazon GameLift Servers al activar la sesión de juego. La el ARN de configuración de emparejamiento se incluye en la propiedad `MatchmakerData`. 
   + **ARN de sesión de juego**: identifique la sesión de juego que se va a reponer. Puedes obtener el ARN de la sesión del juego llamando a la API del servidor [ GetGameSessionId()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-getgamesessionid). Durante el proceso de emparejamiento, los tickets de las nuevas solicitudes no tienen un ID de sesión de juego, mientras que los tickets de las solicitudes de reposición si lo tienen. La presencia del ID de sesión de juego es una forma de saber la diferencia entre los tickets de los nuevos emparejamientos y los tickets de las reposiciones.
   + **Datos del jugador**: incluya información del jugador ([Jugador](https://docs.aws.amazon.com/gamelift/latest/apireference/API_Player.html)) de todos los jugadores actuales en la sesión de juego que está en fase de reposición. Esta información permite a los creadores de emparejamientos localizar los mejores emparejamientos de jugador para los jugadores que se encuentren en la sesión de juego. Debe incluir la membresía del equipo de cada jugador. No especifique un equipo si no utiliza la reposición. Si el servidor de juegos ha comunicado de forma precisa el estado de conexión del jugador, tendría que poder adquirir estos datos como sigue: 

     1. El proceso del servidor que aloja la sesión de juego debe contener la mayor cantidad de up-to-date información sobre los jugadores que están conectados actualmente a la sesión de juego. 

     1. Para obtener las asignaciones de los jugadores IDs, los atributos y el equipo, extrae los datos de los jugadores del objeto de la sesión de juego ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), `MatchmakerData` propiedad (consulte[Acerca de los datos del emparejador](match-server.md#match-server-data)). Los datos del emparejador incluyen a todos los jugadores emparejados en la sesión de juego, por lo que tendrá que extraer los datos solo de los jugadores actualmente conectados. 

     1. Para la latencia de los jugadores, si el emparejador solicita datos de latencia, recopile nuevos valores de latencia de todos los jugadores actuales e inclúyalos en cada objeto `Player`. Si se omiten los datos de latencia y el creador de emparejamientos tiene una regla de latencia, la solicitud no se emparejará correctamente. Las solicitudes de reposición exigen datos de latencia solo para la región en la que se encuentra el juego en esos momentos. Puede obtener una región de sesión de juego de la propiedad `GameSessionId` del objeto `GameSession`; este valor es un ARN, que incluye la región. 

1. **Monitorice el estado de una solicitud de reposición.** Amazon GameLift Servers actualiza en su servidor de juegos el estado de las solicitudes de reposición por medio de la función de devolución de llamada `onUpdateGameSession` del SDK del servidor (consulte [Inicialización del proceso del servidor](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize)). Añada código para gestionar los mensajes estado, así como los objetos de sesión de juego actualizados como resultado de solicitudes de reposición correctas en [Actualización de datos de emparejamientos en el servidor de juegos](match-backfill-server-data.md). 

   Un creador de emparejamientos solo puede procesar una solicitud de reposición de emparejamiento de una sesión de juego a la vez. Si necesitas cancelar una solicitud, llama al [ StopMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-stopmatchbackfill). Si necesita cambiar una solicitud, llame a `StopMatchBackfill` y envíe una solicitud actualizada.

# Generación de solicitudes de reposición manual desde un servicio de backend
<a name="match-backfill-client"></a>

Como alternativa a enviar solicitudes de reposición desde un servidor de juegos, puede enviarlas desde un servicio de juego del lado del cliente. Para utilizar esta opción, el servicio del lado del cliente debe tener acceso a datos actualizados de la actividad de la sesión de juego y las conexiones del jugador; si el juego utiliza un servicio de directorio de sesiones, esto podría ser una buena opción.

En este tema se supone que ya ha creado los componentes de FlexMatch necesarios y que ha añadido correctamente procesos de creación de emparejamientos al servidor de juegos y un servicio de juego del lado del cliente. Para obtener más información sobre la configuración de FlexMatch, consulte [Hoja de ruta: Adición del emparejamiento a una solución de alojamiento de Amazon GameLift Servers](match-tasks.md). 

Para habilitar la reposición de emparejamiento para su juego, añada la siguiente funcionalidad:
+ Enviar solicitudes de reposición de emparejamiento a un creador de emparejamientos y hacer un seguimiento del estado de las solicitudes.
+ Actualice la información de emparejamiento de la sesión de juego. Consulte [Actualización de datos de emparejamientos en el servidor de juegos](match-backfill-server-data.md)

Al igual que con otras funciones del cliente, un servicio de juegos del lado del cliente utiliza el AWS SDK con Amazon GameLift Servers la API. Este SDK está disponible en C\$1\$1, C \$1 y en otros lenguajes. Para obtener una descripción general del cliente APIs, consulta la referencia de la Amazon GameLift Servers API, que describe la API del servicio para Amazon GameLift Servers las acciones y enlaza con guías de referencia específicas de cada idioma.

Para configurar un servicio de juego del lado del cliente para reponer juegos emparejados, complete las siguientes tareas.

1. **Dispare una solicitud de reposición.** Por lo general, un juego inicia una solicitud de reposición siempre que un juego emparejado tiene una o varias ranuras de jugadores vacías. Es posible que desee vincular solicitudes de reposición a circunstancias específicas, por ejemplo, para suplir funciones de personaje cruciales o equilibrar equipos. También es probable que desee limitar las reposiciones en función de la antigüedad de una sesión de juego. Independientemente de lo que utilice como disparador, necesitará la siguiente información como mínimo. Puedes obtener esta información del objeto de sesión de juego ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)) llamando [DescribeGameSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)con un identificador de sesión de juego.
   + *Número de ranuras de jugadores vacías en la actualidad*. Este valor se puede calcular a partir del límite de jugadores máximos de una sesión de juego y el recuento actual de jugadores. El recuento actual de jugadores se actualiza siempre que el servidor de juegos contacta con el servicio Amazon GameLift Servers para validar la conexión de un nuevo jugador o para informar del abandono de un jugador.
   + *Política de creación*. Esta configuración indica si la sesión de juego acepta nuevos jugadores.

    El objeto de sesión de juego contiene otra información potencialmente útil, incluida la hora de inicio de la sesión de juego, propiedades personalizadas del juego y datos del emparejador. 

1. **Cree una solicitud de reposición.** Añada código para crear y enviar solicitudes de reposición de emparejamiento a un creador de emparejamientos de FlexMatch. Las solicitudes de relleno se gestionan mediante los siguientes clientes APIs:
   + [StartMatchBackfill](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartMatchBackfill.html)
   + [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)

   Para crear una solicitud de reposición, llame a `StartMatchBackfill` con la siguiente información. Una solicitud de reposición es parecida a una solicitud de emparejador (consulte [Solicitud del emparejamiento de jugadores](match-client-start.md)), pero además identifica la sesión de juego existente. Para cancelar una solicitud de reposición, llame a `StopMatchmaking` con el ID del ticket de solicitud de reposición.
   + **ID de ticket**: proporcione un ID de ticket del emparejador (o puede optar por que se generen automáticamente). Puedes usar el mismo mecanismo para asignar entradas tanto a las solicitudes de emparejamiento como IDs a las de relleno. Los tickets para el emparejamiento y la reposición se procesan de la misma forma.
   + **Emparejador**: identifique el nombre de la configuración del emparejador que se va a usar. Por lo general, deberá utilizar el mismo emparejador para la reposición que el que se usó para crear el emparejamiento original. Esta información se encuentra en un objeto de sesión de juego ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), `MatchmakerData` propiedad, bajo la configuración de emparejamiento ARN. El valor del nombre es la cadena después de ""matchmakingconfiguration/". (Por ejemplo, en el valor de ARN "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MM-4v4", el nombre de la configuración del emparejador es "MM-4v4".) 
   + **ARN de sesión de juego**: especifique la sesión de juego que se va a reponer. Utilice la propiedad `GameSessionId` del objeto de sesión de juego; este ID utiliza el valor de ARN que usted necesita. Los boletos de emparejamiento ([MatchmakingTicket](https://docs.aws.amazon.com/gamelift/latest/apireference/API_MatchmakingTicket.html)) para las solicitudes de reposición tienen el ID de sesión de juego mientras se procesan; los boletos para nuevas solicitudes de emparejamiento no reciben un ID de sesión de juego hasta que se coloca el partido; la presencia de un ID de sesión de juego es una forma de diferenciar entre las entradas para nuevos partidos y las entradas para rellenarse.
   + **Datos del jugador**: incluya información del jugador ([Jugador](https://docs.aws.amazon.com/gamelift/latest/apireference/API_Player.html)) de todos los jugadores actuales en la sesión de juego que está en fase de reposición. Esta información permite al emparejador localizar los mejores emparejamientos de jugador para los jugadores que se encuentren en la sesión de juego. Debe incluir la membresía del equipo de cada jugador. No especifique un equipo si no utiliza la reposición. Si el servidor de juegos ha comunicado de forma precisa el estado de conexión del jugador, tendría que poder adquirir estos datos como sigue: 

     1. Llama al [DescribePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html) con el identificador de la sesión de juego para descubrir todos los jugadores que están conectados actualmente a la sesión de juego. Cada sesión de jugador incluye un ID de jugador. Puede añadir un filtro de estado para recuperar solo las sesiones de jugador activas.

     1. Extrae los datos del jugador del objeto de la sesión de juego ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), de la `MatchmakerData` propiedad (consulte[Acerca de los datos del emparejador](match-server.md#match-server-data). Usa el jugador IDs adquirido en el paso anterior para obtener datos únicamente para los jugadores conectados actualmente. Como los datos del emparejador no se actualizan cuando los jugadores abandonan el juego, tendrá que extraer los datos solo para los jugadores actuales.

     1. Para la latencia de los jugadores, si el emparejador solicita datos de latencia, recopile nuevos valores de latencia de todos los jugadores actuales e inclúyalos en el objeto `Player`. Si se omiten los datos de latencia y el creador de emparejamientos tiene una regla de latencia, la solicitud no se emparejará correctamente. Las solicitudes de reposición exigen datos de latencia solo para la región en la que se encuentra el juego en esos momentos. Puede obtener una región de sesión de juego de la propiedad `GameSessionId` del objeto `GameSession`; este valor es un ARN, que incluye la región. 

1. **Haga un seguimiento del estado de una solicitud de reposición.** Añada código para permanecer a la escucha de actualizaciones del estado del ticket de emparejamiento. Puede utilizar la configuración del mecanismo para realizar un seguimiento de los tickets de las nuevas solicitudes de emparejamiento (consulte [Seguimiento de eventos de emparejamiento](match-client-track.md)) utilizando notificación (preferido) o sondeo de eventos. Aunque no necesita disparar la actividad de aceptación del jugador con solicitudes de reposición y la información del jugador se actualiza en el servidor de juegos, aún tiene que vigilar el estado del ticket para gestionar errores y repeticiones de envío de solicitudes. 

   Un creador de emparejamientos solo puede procesar una solicitud de reposición de emparejamiento de una sesión de juego a la vez. Si necesita cancelar una solicitud, llame a [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html). Si necesita cambiar una solicitud, llame a `StopMatchmaking` y envíe una solicitud actualizada.

   Una vez que una solicitud de reposición de emparejamiento tiene éxito, su servidor de juegos recibe un objeto `GameSession` actualizado y gestiona las tareas necesarias para incorporar nuevos jugadores a la sesión de juego. Más información en [Actualización de datos de emparejamientos en el servidor de juegos](match-backfill-server-data.md). 

# Actualización de datos de emparejamientos en el servidor de juegos
<a name="match-backfill-server-data"></a>

Independientemente de cómo inicie las solicitudes de reposición de emparejamiento en su juego, el servidor de juegos tiene que poder gestionar las actualizaciones de sesión de juego que Amazon GameLift Servers proporciona como resultado de solicitudes de reposición de emparejamiento.

Cuando Amazon GameLift Servers completa una solicitud de reposición de emparejamiento, correctamente o no, llama a su servidor de juegos con la función de devolución de llamada `onUpdateGameSession`. Esta convocatoria tiene tres parámetros de entrada: el identificador de un boleto para completar el partido, un mensaje de estado y un GameSession objeto que contiene la mayoría de los datos de up-to-date emparejamiento, incluida la información del jugador. Tiene que añadir el siguiente código a su servidor de juegos como parte de la integración del servidor de juegos: 

1. Implemente la función `onUpdateGameSession`. Esta función tiene que poder gestionar los siguientes mensajes de estado (`updateReason`): 
   + MATCHMAKING\$1DATA\$1UPDATED: se han emparejado correctamente nuevos jugadores a la sesión de juego. El objeto `GameSession` contiene datos actualizados del emparejador, incluidos datos de jugador de los jugadores existentes y los jugadores recién emparejados. 
   + BACKFILL\$1FAILED: el intento de reponer el emparejamiento falló debido a un error interno. El objeto `GameSession` no ha cambiado.
   + BACKFILL\$1TIMED\$1OUT: el emparejador no pudo encontrar una emparejamiento de reposición dentro del límite de tiempo. El objeto `GameSession` no ha cambiado.
   + BACKFILL\$1CANCELLED: la solicitud de reabastecimiento de partidas se canceló mediante una llamada a StopMatchmaking (cliente) o (servidor). StopMatchBackfill El objeto `GameSession` no ha cambiado.

1. Para emparejamientos de reposición correctos, utilice los datos actualizados del emparejador para gestionar los nuevos jugadores cuando se conecten a la sesión de juego. Como mínimo, deberá utilizar las asignaciones de equipo para el o los nuevos jugadores, así como otros atributos del jugador necesarios para que el jugador inicie el juego.

1. En la acción de llamada de tu servidor de juegos al SDK del servidor [ ProcessReady()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-processready), añade el nombre del método de devolución de `onUpdateGameSession` llamada como parámetro del proceso.