Reposición de juegos existentes con FlexMatch - Amazon GameLift

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

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), 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.

nota

La reposición de FlexMatch no está disponible actualmente para los juegos que utilizan Realtime Servers.

Existen dos tipos de mecanismos de reposición:

  • Para completar sesiones de juego que comiencen con menos jugadores que el máximo permitido, habilite la reposición automática.

  • Para reemplazar a los jugadores que abandonan una sesión de juego en curso, agregue funcionalidad a su servidor de juegos para enviar solicitudes de reposición.

Activación de la reposición automática

Con la reposición automática de emparejamientos, Amazon GameLift activa 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.

Considere, por ejemplo, que tiene un juego que puede contener entre seis y diez jugadores. FlexMatch inicialmente localiza 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 creación de emparejamientos. Cuando esa opción esté habilitada, se utilizará con todas las sesiones de juego combinadas que se creen con ese emparejador. Amazon GameLift comenzará a generar solicitudes de reposición para una sesión de juego que no esté completa en cuanto la sesión de juego se inicie 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.

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

  3. Actualice una sesión de juego con datos nuevos del emparejador. Amazon GameLift actualiza el servidor de juegos con la información de los emparejamientos mediante la función de devolución de llamada del SDK del servidor onUpdateGameSession (consulte Inicialización del proceso del servidor. 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.

  4. 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 la reposición automática, añada el código a su cliente de juegos o servidor de juegos para realizar la llamada a la API de Amazon GameLift StopMatchmaking. 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 creación de emparejamientos de sesión de juego, que se actualiza tal y como se describe en el paso anterior.

Envío de solicitudes de reposición (desde un servidor de juegos)

Puede iniciar solicitudes de reposición de emparejamiento directamente desde el proceso del servidor de juego que aloja la sesión de juego. El proceso del servidor tiene la información más actualizada sobre los jugadores conectados al juego en un momento dado y el estado de ranuras de jugadores vacías.

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 Integración de FlexMatch con el alojamiento de Amazon GameLift..

Para habilitar la reposición de emparejamiento para su juego, añada la siguiente funcionalidad:

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

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.

  2. 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 reposición se gestionan con estas API del servidor:

    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). Puede utilizar el mismo mecanismo para asignar ID de tickets tanto para el creador de emparejamientos como para las solicitudes de reposición. 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 creador de emparejamientos 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), que Amazon GameLift proporcionó al proceso del servidor cuando se activó 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. Para obtener el ARN de la sesión de juego, llame a la API del servidor 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) 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 tener la información más actualizada sobre que jugadores están actualmente conectados a la sesión de juego.

      2. Para obtener los ID, atributos y asignaciones de equipo del jugador, extraiga datos del jugador de la propiedad del objeto de sesión de juego (GameSession), propiedad MatchmakerData (consulte Trabajo con datos del emparejador). Los datos del creador de emparejamientos 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.

      3. Para la latencia de los jugadores, si el creador de emparejamientos 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.

  3. Realice un seguimiento del estado de una solicitud de reposición. Amazon GameLift 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 del SDK del servidor (consulte Inicialización del proceso del servidor). 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.

    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 StopMatchBackfill(). Si necesita cambiar una solicitud, llame a StopMatchBackfill y envíe una solicitud actualizada.

Envío de solicitudes de reposición (desde un servicio de cliente)

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 Integración de FlexMatch con el alojamiento de Amazon GameLift..

Para habilitar la reposición de emparejamiento para su juego, añada la siguiente funcionalidad:

Al igual que con otras funcionalidades de cliente, un servicio de juego del lado del cliente utiliza el SDK de AWS con una API de Amazon GameLift. Este SDK está disponible en C++, C # y en otros lenguajes. Para obtener una descripción general de las API de cliente, consulte la Referencia de la API del servicio Amazon GameLift, que describe las API de servicio de bajo nivel para acciones relacionadas con Amazon GameLift e incluye enlaces a guías de referencia específicas de un lenguaje.

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. Puede obtener esta información de la sesión de juego del objeto (GameSession) llamando a DescribeGameSessions con un ID 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 de Amazon GameLift 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 creador de emparejamientos.

  2. 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 reposición se gestionan con estas API del cliente:

    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 creador de emparejamientos (consulte Solicitud del emparejamiento de jugadores), 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). Puede utilizar el mismo mecanismo para asignar ID de tickets tanto para el creador de emparejamientos como para las solicitudes de reposición. 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 creador de emparejamientos para la reposición que el que se usó para crear el emparejamiento original. Esta información se encuentra en la propiedad de un objeto de sesión de juego (GameSessionMatchmakerData), bajo el ARN de configuración del emparejador. 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 creador de emparejamientos 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 tickets del creador de emparejamientos (MatchmakingTicket) para solicitudes de reposición tienen el ID de sesión de juego mientras están siendo procesados; los tickets de nuevas solicitudes de emparejamiento no reciben un ID de sesión de juego hasta que el emparejamiento está implementado; la presencia del ID de sesión de juego es una forma de saber la diferencia entre tickets para nuevos emparejamientos y tickets para reposiciones.

    • Datos del jugador: incluya información del jugador (Jugador) de todos los jugadores actuales en la sesión de juego que está en fase de reposición. Esta información permite al creador 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. Llame a DescribePlayerSessions() con el ID de sesión de juego para descubrir qué jugadores 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.

      2. Extraiga datos del jugador de la propiedad del objeto de sesión de juego (GameSessionMatchmakerData) (consulte Trabajo con datos del emparejador). Utilice los ID de jugadores adquiridos en el paso anterior para obtener datos solo de los jugadores conectados actualmente. Como los datos del creador de emparejamientos no se actualizan cuando los jugadores abandonan el juego, tendrá que extraer los datos solo para los jugadores actuales.

      3. Para la latencia de los jugadores, si el creador de emparejamientos 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.

  3. 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) 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. 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.

Actualización de datos de emparejamientos en el servidor de juegos

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 proporciona como resultado de solicitudes de reposición de emparejamiento.

Cuando Amazon GameLift 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 llamada tiene tres parámetros de entrada: un ID de ticket de reposición de emparejamiento, un mensaje de estado y un objeto GameSession que contiene los datos del creador de emparejamientos más actualizados, 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_DATA_UPDATED: se han emparejado correctamente nuevos jugadores a la sesión de juego. El objeto GameSession contiene datos actualizados del creador de emparejamientos, incluidos datos de jugador de los jugadores existentes y los jugadores recién emparejados.

    • BACKFILL_FAILED: el intento de reponer el emparejamiento falló debido a un error interno. El objeto GameSession no ha cambiado.

    • BACKFILL_TIMED_OUT: el emparejador no pudo encontrar una emparejamiento de reposición dentro del límite de tiempo. El objeto GameSession no ha cambiado.

    • BACKFILL_CANCELLED: la solicitud de reposición de emparejamiento fue cancelada por una llamada a StopMatchmaking (cliente) o StopMatchBackfill (servidor). El objeto GameSession no ha cambiado.

  2. Para emparejamientos de reposición correctos, utilice los datos actualizados del creador de emparejamientos 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.

  3. En la llamada del servidor de juegos a la acción del SDK del servidor ProcessReady(), añada el método de devolución de llamada onUpdateGameSession como un parámetro del proceso.