Adición de FlexMatch a un cliente de juegos - 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.

Adición de FlexMatch a un cliente de juegos

En este tema se describe cómo añadir compatibilidad de emparejamiento de FlexMatch a sus servicios de juego del lado del cliente. El proceso es básicamente el mismo tanto si utiliza FlexMatch con el alojamiento administrado de Amazon GameLift como con otra solución de alojamiento. Para obtener más información sobre FlexMatch y de cómo configurar un creador de emparejamientos personalizado para sus juegos, consulte estos temas:

Para habilitar el emparejamiento de FlexMatch para su juego, añada la siguiente funcionalidad:

  • Prepare la solicitud de emparejamiento para uno o varios jugadores.

  • Realice un seguimiento del estado de las solicitudes de emparejamiento (obligatorio).

  • Solicite la aceptación de un jugador para una propuesta de emparejamiento (opcional).

  • Una vez que se ha creado una sesión de juego para el nuevo emparejamiento, obtenga la información de la conexión del jugador y únase al juego.

Preparación de la solicitud del emparejamiento de jugadores

Se recomienda encarecidamente que su cliente de juegos realice solicitudes de creación de emparejamientos a través de un servicio de juego del lado del cliente. Mediante un origen de confianza, puede protegerse más fácilmente contra intentos de ataques informáticos y datos de jugadores falsos. Si su juego dispone de un servicio de directorio de sesiones, esta es una buena opción para controlar las solicitudes de creación de emparejamientos.

Para preparar su servicio de cliente, realice las siguientes tareas:

  • Añada la API de Amazon GameLift. El servicio de cliente utiliza la funcionalidad en la API de Amazon GameLift, que forma parte del SDK de AWS. Consulte SDK de Amazon GameLift para servicios de cliente para obtener más información sobre el SDK de AWS y para descargar la versión más reciente. Añada este SDK al proyecto del servicio del cliente de juego.

  • Configure un sistema de tickets de emparejamiento. Se debe asignar un ID de ticket único a todas las solicitudes de creación de emparejamientos. Se necesita un mecanismo para generar ID únicos y asignarlos a las nuevas solicitudes de emparejamiento. Un ID de ticket puede usar cualquier formato de cadena, hasta un máximo de 128 caracteres.

  • Obtenga información sobre el creador de emparejamientos. Obtenga el nombre de la configuración de la creación de emparejamientos que piense utilizar. También necesita la lista de atributos de jugador obligatorios del creador de emparejamientos; estos atributos se definen en el conjunto de reglas del creador de emparejamientos.

  • Obtenga los datos de los jugadores. Configure una manera de obtener los datos relevantes de cada jugador. Esto incluye el ID de jugador, los valores de los atributos del jugador y los datos de latencia actualizados para cada región en la que es probable que se lo asigne a un juego.

  • (opcional) Habilite la reposición de emparejamiento. Decida la manera en la que desee realizar la reposición de los juegos emparejados existentes. Si los creadores de emparejamientos han establecido el modo de reposición en "manual", es posible que desee añadir soporte de reposición a su juego. Si el modo de reposición se establece en "automático", es posible que necesite una forma de desactivarlo para las sesiones de juego individuales. Para obtener más información sobre la administración de la reposición de emparejamiento, consulte Reposición de juegos existentes con FlexMatch.

Solicitud del emparejamiento de jugadores

Añada código a su servicio de cliente para crear y administrar las solicitudes de creación de emparejamiento a un creador de emparejamientos de FlexMatch. El proceso de solicitud de emparejamiento de FlexMatch es idéntico para los juegos que utilizan FlexMatch con alojamiento administrado de Amazon GameLift y para los juegos que utilizan FlexMatch como solución independiente.

Cree una solicitud de creación de emparejamiento:
  • Llame a la API de Amazon GameLift StartMatchmaking. Cada solicitud debe incluir la siguiente información.

    Creador de emparejamientos

    El nombre de la configuración de emparejamiento que desea utilizar para la solicitud. FlexMatch coloca cada solicitud en el grupo del emparejador especificado y la solicitud se procesa en función de la configuración del emparejador. Esto incluye la aplicación de un plazo, ya sea para solicitar la aceptación del jugador de los emparejamientos, qué cola utilizar cuando se coloque una sesión de juego resultante, etc. Para obtener más información sobre los creadores de emparejamientos y las reglas, consulte Diseña un FlexMatch casamentero.

    ID del ticket

    Un ID de ticket único asignado a la solicitud. Todo lo relacionado con la solicitud, incluidos los eventos y las notificaciones, hará referencia al ID de ticket.

    Datos del jugador

    Lista de jugadores para los que se desea crear un emparejamiento. Si alguno de los jugadores de la solicitud no cumple los requisitos de emparejamiento, según las reglas de emparejamiento y los mínimos de latencia, la solicitud de emparejamiento nunca dará lugar a un emparejamiento correcto. Puede incluir hasta diez jugadores en una solicitud de emparejamiento. Cuando hay varios jugadores en una solicitud, FlexMatch intenta crear un único emparejamiento y asignar todos los jugadores al mismo equipo (seleccionado de forma aleatoria). Si una solicitud contiene demasiados jugadores, por lo que no caben en uno de los equipos de emparejamiento, la solicitud no podrá emparejarse. Por ejemplo, si ha configurado el creador de emparejamientos de tal forma que cree emparejamientos 2v2 (dos equipos de dos jugadores), no puede enviar una solicitud de emparejamiento que contenga más de dos jugadores.

    nota

    Un jugador (identificado por su ID de jugador) solo puede incluirse en una solicitud de emparejamiento activa en cada momento. Si se crea una solicitud nueva para un jugador, cualquier ticket de creación de emparejamientos activo con el mismo ID de jugador se cancela automáticamente.

    Para cada jugador que aparezca, incluya los siguientes datos:

    • ID de jugador: cada jugador debe tener un ID de jugador único generado por usted. Consulte Generación de ID de jugador.

    • Atributos de jugador: si el emparejador en uso llama a atributos de jugador, la solicitud debe proporcionar esos atributos para cada jugador. Los atributos necesarios de los jugadores se definen en el conjunto de reglas del creador de emparejamientos, que también especifica el tipo de datos para el atributo. Un atributo de jugador es opcional solo cuando el conjunto de reglas especifica un valor predeterminado para el atributo. Si la solicitud de emparejamiento no proporciona atributos de jugador necesarios para todos los jugadores, la solicitud de creación de emparejamientos no podrá ser nunca correcta. Para obtener más información sobre los conjuntos de reglas del creador de emparejamiento y los atributos de jugador, consulte Creación de un conjunto de reglas de FlexMatch y FlexMatch ejemplos de conjuntos de reglas.

    • Latencias del jugador: si el emparejador en uso tiene una regla de latencias del jugador, la solicitud debe informar sobre la latencia de cada jugador. Los datos de latencias del jugador son una lista de uno o varios valores por jugador. Representa la latencia que el jugador experimenta para las regiones en la cola del creador de emparejamientos. Si no hay valores de latencia para un jugador incluidos en la solicitud, el jugador no podrá emparejarse y se producirá un error en la solicitud.

Recuperar detalles de la solicitud de emparejamiento:
  • Una vez que se envíe la solicitud de emparejamiento, podrá ver los detalles de la solicitud llamando a DescribeMatchmaking con el ID de ticket de la solicitud. Esta llamada devuelve la información de solicitud, incluido el estado actual. Una vez que se ha completado correctamente la solicitud, el ticket también contiene la información que necesita un cliente de juego para conectarse al emparejamiento.

Cancelar una solicitud de emparejamiento:
  • Puede cancelar una solicitud de creación de emparejamiento en cualquier momento llamando a StopMatchmaking con el ID de ticket de la solicitud.

Seguimiento de eventos de emparejamiento

Configure notificaciones para realizar un seguimiento de eventos que Amazon GameLift emite para procesos de creación de emparejamientos. Puede configurar notificaciones directamente, creando un tema de SNS o a través de Amazon EventBridge. Para obtener más información sobre la configuración de notificaciones, consulte Configuración de las notificaciones de eventos de FlexMatch. Una vez configuradas las notificaciones, añada un agente de escucha en su servicio de cliente para detectar los eventos y responder según sea necesario.

También es recomendable hacer copias de seguridad de las notificaciones mediante el sondeo periódico de actualizaciones de estado cuando transcurre un período significativo de tiempo sin notificaciones. Para minimizar el impacto en el rendimiento de emparejamiento, asegúrese de sondear solo después de esperar al menos 30 segundos después de que se haya enviado el ticket de emparejamiento o después de la última notificación recibida.

Recupere un ticket de solicitud de creación de emparejamiento, incluido el estado actual, llamando a DescribeMatchmaking con el ID de ticket de la solicitud. Recomendamos sondear no más de una vez cada 10 segundos. Este enfoque se utiliza únicamente en escenarios de desarrollo de bajo volumen.

nota

Debe configurar su juego con notificaciones de eventos antes de tener un uso de emparejamiento de gran volumen, como, por ejemplo, con pruebas de carga de preproducción. Todos los juegos en la versión pública deben usar notificaciones independientemente del volumen. El enfoque de sondeo continuo solo resulta apropiado para juegos en desarrollo con bajo uso de emparejamiento.

Solicitud de aceptación del jugador

Si utiliza un creador de emparejamientos que tenga la aceptación de jugador activada, añada el código a su servicio de cliente para administrar el proceso de aceptación del jugador. El proceso de administración de aceptaciones de jugadores es idéntico para los juegos que utilizan FlexMatch con alojamiento administrado de Amazon GameLift y para los juegos que utilizan FlexMatch como solución independiente.

Solicite la aceptación del jugador para una propuesta de emparejamiento.
  1. Detecte cuando una propuesta de emparejamiento necesite la aceptación del jugador. Supervise el ticket de creación de emparejamientos para detectar cuándo el estado cambia a REQUIRES_ACCEPTANCE. Un cambio en este estado activa el evento de FlexMatch MatchmakingRequiresAcceptance.

  2. Obtener aceptaciones de todos los jugadores. Cree un mecanismo para presentar los detalles del emparejamiento propuesto a cada jugador en el ticket de creación de emparejamiento. Los jugadores deben poder indicar que aceptan o rechazan el emparejamiento propuesto. Puede recuperar detalles del emparejamiento llamando a DescribeMatchmaking. Los jugadores tienen un tiempo limitado para responder antes de que el creador de emparejamientos retire el emparejamiento propuesto y continúe.

  3. Informe de las respuestas de los jugadores a FlexMatch. Informe de las respuestas del jugador llamando a AcceptMatch para aceptar o rechazar. Todos los jugadores en una solicitud de emparejamiento deben aceptar el emparejamiento para que avance.

  4. Administrar tickets con aceptaciones erróneas. Se produce un error en la solicitud cuando un jugador del emparejamiento propuesto rechaza el emparejamiento o no responde antes de que transcurra el plazo de aceptación. Los tickets de los jugadores que aceptaron el emparejamiento se devuelven automáticamente al grupo de tickets. Los tickets de los jugadores que no aceptaron el emparejamiento pasan al estado de ERROR y dejarán de procesarse. En el caso de los tickets con varios jugadores, si alguno de los jugadores del ticket no acepta el emparejamiento, se pierde todo el ticket.

Conexión a un emparejamiento

Añada código a su servicio de cliente para administrar los emparejamientos formados correctamente (estado COMPLETED o evento MatchmakingSucceeded). Esto incluye la notificación de los jugadores del emparejamiento y el envío de información de la conexión a los clientes de juego.

En el caso de los juegos que utilizan el alojamiento administrado de Amazon GameLift, cuando se tramita correctamente una solicitud de emparejamiento, la información de conexión de la sesión de juego se añade al ticket de emparejamiento. Para recuperar un ticket de emparejamiento completado, llame a DescribeMatchmaking. La información de conexión incluye la dirección IP y el puerto de la sesión de juego, así como un ID de sesión de jugador para cada ID de jugador. Puede obtener más información en GameSessionConnectionInfo. Su cliente de juegos puede utilizar esta información para conectarse directamente a la sesión de juego para el emparejamiento. Una solicitud de conexión debe incluir un ID de jugador y un ID de sesión de jugador. Estos datos asocian el jugador conectado a los datos de emparejamiento de la sesión de juego, que incluye asignaciones del equipo (consulte GameSession).

En el caso de los juegos que utilizan otras soluciones de alojamiento, como Amazon GameLift FleetIQ, debe incorporar un mecanismo que permita a los jugadores conectarse a la sesión de juego adecuada.

Ejemplo de solicitudes de emparejamiento

Los siguientes fragmentos de código crean solicitudes de emparejamiento para diferentes emparejamientos. Como se ha indicado anteriormente, una solicitud debe proporcionar los atributos de jugador que necesita el creador de emparejamientos en uso, tal y como se definió en el conjunto de reglas del creador de emparejamientos. El atributo proporcionado debe utilizar el mismo tipo de datos, el número (N) o la cadena (S) que se defina en el conjunto de reglas.

# Uses matchmaker for two-team game mode based on player skill level def start_matchmaking_for_cowboys_vs_aliens(config_name, ticket_id, player_id, skill, team): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill} }, "PlayerId": player_id, "Team": team }], TicketId=ticket_id) # Uses matchmaker for monster hunter game mode based on player skill level def start_matchmaking_for_players_vs_monster(config_name, ticket_id, player_id, skill, is_monster): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "desiredSkillOfMonster": {"N": skill}, "wantsToBeMonster": {"N": int(is_monster)} }, "PlayerId": player_id }], TicketId=ticket_id) # Uses matchmaker for brawler game mode with latency def start_matchmaking_for_three_team_brawler(config_name, ticket_id, player_id, skill, role): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "character": {"S": [role]}, }, "PlayerId": player_id, "LatencyInMs": { "us-west-2": 20} }], TicketId=ticket_id) # Uses matchmaker for multiple game modes and maps based on player experience def start_matchmaking_for_multi_map(config_name, ticket_id, player_id, skill, maps, modes): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "experience": {"N": skill}, "gameMode": {"SL": modes}, "mapPreference": {"SL": maps} }, "PlayerId": player_id }], TicketId=ticket_id)