Añade Amazon GameLift a tu 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.

Añade Amazon GameLift a tu cliente de juegos

Integra Amazon GameLift en los componentes del juego que necesitan información sobre la sesión del juego, crea nuevas sesiones de juego y añade jugadores a los juegos. Dependiendo de la arquitectura del juego, esta funcionalidad se coloca en servicios de backend que administran tareas como la autenticación de los jugadores, el emparejamiento o la ubicación de la sesión de juego.

nota

Para obtener información detallada sobre cómo configurar el matchmaking para tu juego GameLift alojado en Amazon, consulta la Guía para GameLift FlexMatch desarrolladores de Amazon.

Configurar Amazon GameLift en un servicio de back-end

Agrega código para inicializar un GameLift cliente de Amazon y almacenar la configuración clave. Este código debe ejecutarse antes que cualquier código que dependa de Amazon GameLift.

  1. Configure una configuración del cliente. Utilice la configuración de cliente predeterminada o cree un objeto de configuración de cliente personalizado. Para obtener más información, consulte AWS::Client::ClientConfiguration(C++) o AmazonGameLiftConfig(C#).

    La configuración de un cliente especifica la región y el punto final de destino que se utilizarán al contactar con Amazon GameLift. La región identifica el conjunto de recursos implementados (flotas, colas y emparejadores) que se van a utilizar. La configuración del cliente predeterminada establece la ubicación en la región Este de EE. UU. (Norte de Virginia). Para utilizar cualquier otra región, cree una configuración personalizada.

  2. Inicializa un GameLift cliente de Amazon. Utilice Aws:GameLift:: GameLiftClient () (C++) o AmazonGameLiftClient() (C#) con una configuración de cliente predeterminada o personalizada.

  3. Añada un mecanismo para generar un identificador único para cada jugador. Para obtener más información, consulte Generación de ID de jugador.

  4. Recopile y almacene la siguiente información:

    • Flota objetivo: muchas solicitudes de GameLift API de Amazon deben especificar una flota. Para ello, utilice un ID de la flota o un ID de alias que apunte hacia la flota de destino. Como práctica recomendada, utilice los alias de flota para poder cambiar los jugadores de una flota a otra sin tener que actualizar los servicios de backend.

    • Cola de destino: en el caso de los juegos que utilizan colas de varias flotas para organizar nuevas sesiones de juego, especifique el nombre de la cola que se va a utilizar.

    • AWS credenciales: todas las llamadas a Amazon GameLift deben proporcionar las Cuenta de AWS credenciales del anfitrión del juego. Estas credenciales se obtienen mediante la creación de un usuario jugador, tal y como se describe en Configuración de acceso mediante programación para su juego. En función de cómo administre el acceso del usuario jugador, realice los siguientes procedimientos:

      • Si utilizas un rol para gestionar los permisos de usuario de los jugadores, añade código para asumir el rol antes de llamar a una GameLift API de Amazon. La solicitud para asumir el rol devolverá un conjunto de credenciales de seguridad temporales. Para obtener más información, consulte Cambiar a un rol de IAM (AWS API) en la Guía del usuario de IAM.

      • Si dispone de credenciales de seguridad de larga duración, configure el código para localizar y utilizar las credenciales almacenadas. Consulte Autenticación mediante credenciales de larga duración en la Guía de referencia de SDK y herramientas de AWS . Para obtener información sobre el almacenamiento de credenciales, consulte las referencias de las AWS API para (C++) y (.NET).

      • Si dispone de credenciales de seguridad temporales, añada código para actualizarlas periódicamente mediante AWS Security Token Service (AWS STS), tal y como se describe en la sección Uso de credenciales de seguridad temporales con los SDK de AWS en la Guía del usuario de IAM. El código debe solicitar nuevas credenciales antes de que las antiguas caduquen.

Obtención de sesiones de juego

Añada código para descubrir las sesiones de juego disponibles y administrar la configuración de las sesiones de juego y los metadatos.

Búsqueda de sesiones de juego activas

Se usa SearchGameSessionspara obtener información sobre una sesión de juego específica, todas las sesiones activas o las sesiones que cumplen un conjunto de criterios de búsqueda. Esta llamada devuelve un GameSessionobjeto por cada sesión de juego activa que coincide con tu solicitud de búsqueda.

Utilice los criterios de búsqueda para obtener una lista filtrada de las sesiones de juego activas a las que puedan conectarse los jugadores. Por ejemplo, puede filtrar sesiones de la siguiente manera:

  • Excluya las sesiones de juego llenas: CurrentPlayerSessionCount = MaximumPlayerSessionCount.

  • Elija las sesiones de juego en función de la duración de la sesión: Evaluar CreationTime.

  • Encuentre sesiones de juego en función de una propiedad de juego personalizada: gameSessionProperties.gameMode = "brawl"

Administración de sesiones de juego

Utilice cualquiera de las operaciones siguientes para recuperar o actualizar la información de la sesión de juego.

  • DescribeGameSessionDetails() — Obtén el estado de protección de una sesión de juego además de la información sobre la sesión de juego.

  • UpdateGameSession() — Cambia los metadatos y la configuración de una sesión de juego según sea necesario.

  • GetGameSessionLogUrl— Accede a los registros de sesiones de juego almacenados.

Creación de sesiones de juego

Añada código para iniciar sesiones de juego nuevas en las flotas implementadas y ponerlas a disposición de los jugadores. Hay dos opciones para crear sesiones de juego, dependiendo de si vas a desplegar el juego en varias regiones Regiones de AWS o en una sola.

Creación de una sesión de juego en una cola de varias ubicaciones

Se usa StartGameSessionPlacementpara poner en cola una solicitud para una nueva sesión de juego. Para usar esta operación de, cree una cola. Esto determina dónde GameLift coloca Amazon la nueva sesión de juego. Para obtener más información sobre las colas y cómo utilizarlas, consulte Configuración de colas de Amazon GameLift para la ubicación de las sesiones de juego.

Al crear una ubicación de la sesión de juego, especifique el nombre de la cola que utilizar, un nombre de sesión de juego, la cantidad máxima de jugadores simultáneos y un conjunto de propiedades del juego opcionales. Si lo desea, también puede proporcionar una lista de los jugadores para que se unan automáticamente a la sesión de juego. Si incluyes los datos de latencia de los jugadores de las regiones pertinentes, Amazon GameLift utilizará esta información para incluir la nueva sesión de juego en una flota que ofrezca la experiencia de juego ideal para los jugadores.

La ubicación de sesiones de juego es un proceso asíncrono. Una vez realizada la solicitud, puede esperar a que funcione o a que caduque. También puedes cancelar la solicitud en cualquier momento utilizando StopGameSessionPlacement. Para comprobar el estado de su solicitud de colocación, llame DescribeGameSessionPlacement.

Creación de una sesión de juego en una flota específica

Se usa CreateGameSessionpara crear una nueva sesión en una flota específica. Esta operación síncrona funciona o no dependiendo de si la flota dispone de los recursos necesarios para alojar una sesión de juego nueva. Cuando Amazon GameLift cree la nueva sesión de juego y devuelva un GameSessionobjeto, podrás unir a los jugadores a ella.

Si utiliza esta operación, proporcione un ID de la flota o de alias, un nombre de sesión y un número máximo de jugadores simultáneos para dicho juego. De forma opcional, puede incluir un conjunto de propiedades del juego. Las propiedades del juego se definen en una matriz de pares clave-valor.

Si utilizas la función de protección de GameLift recursos de Amazon para limitar el número de sesiones de juego que puede crear un jugador, proporciona el ID de jugador del creador de la sesión de juego.

Conexión de un jugador a una sesión de juego

Añada código para reservar una ranura de jugador en una sesión de juego activa y conectar clientes de juego a sesiones de juego.

  1. Reserva de una ranura de jugador en una sesión de juego

    Para reservar una ranura de jugador, cree una sesión de jugador nueva para la sesión de juego. Para obtener más información sobre las sesiones de jugador, consulte Cómo se conectan los jugadores a los juegos.

    Existen dos formas de crear sesiones de jugador nuevas:

    Amazon GameLift primero verifica que la sesión de juego acepte nuevos jugadores y que tenga espacios disponibles para jugadores. Si tiene éxito, Amazon GameLift reserva un espacio para el jugador, crea la nueva sesión de jugador y devuelve un PlayerSessionobjeto. Este objeto contiene el nombre de DNS, la dirección IP y el puerto que necesita el cliente de juegos para conectarse a la sesión de juego.

    Una solicitud de sesión de jugador debe incluir un ID exclusivo para cada jugador. Para obtener más información, consulte Generación de ID de jugador.

    Una sesión de jugador puede incluir un conjunto de datos de jugador personalizados. Estos datos se almacenan en el objeto de sesión del jugador recién creado, que puedes recuperar llamando a DescribePlayerSessions(). Amazon GameLift también pasa este objeto al servidor del juego cuando el jugador se conecta directamente a la sesión de juego. A la hora de solicitar varias sesiones de jugador, proporcione una cadena de datos de jugador para cada jugador asignada al ID de jugador en la solicitud.

  2. Conexión a una sesión de juego

    Añada código al cliente de juego para recuperar el objeto PlayerSession, que contiene la información de conexión de la sesión de juego. Utilice esta información para establecer una conexión directa con el servidor.

    • Puede conectarse mediante el puerto especificado y el nombre de DNS o la dirección IP asignados al proceso del servidor.

    • Si las flotas tienen habilitada la generación de certificados TLS, conéctese mediante el nombre de DNS y el puerto.

    • Si el servidor de juegos valida las conexiones de los jugadores entrantes, consulte el ID de sesión del jugador.

    Tras realizar la conexión, el proceso del cliente y el servidor del juego se comunican directamente sin la intervención de Amazon GameLift. El servidor mantiene comunicación con Amazon GameLift para informar sobre el estado de conexión de los jugadores, su estado de salud y más. Si el servidor de juegos valida a los jugadores entrantes, verifica que el ID de sesión del jugador coincide con una ranura reservada en la sesión de juego y acepta o rechaza la conexión del jugador. Cuando el jugador se desconecte, el proceso del servidor notificará que se ha desconectado.

Usa las propiedades de la sesión del juego

El cliente de juego puede transferir datos a una sesión de juego mediante una propiedad del juego. Las propiedades del juego son pares clave-valor que el servidor de juegos puede añadir, leer, enumerar y cambiar. Puedes transferir una propiedad del juego al crear una nueva sesión de juego o más adelante, cuando la sesión de juego esté activa. Una sesión de juego puede contener hasta 16 propiedades de juego. No puedes eliminar las propiedades del juego.

Por ejemplo, tu juego ofrece los siguientes niveles de dificultad: NoviceEasy,Intermediate, yExpert. El jugador elige yEasy, a continuación, comienza el juego. El cliente del juego solicita una nueva sesión de juego a Amazon GameLift utilizando una de las secciones anteriores StartGameSessionPlacement o CreateGameSession tal como se explica en ellas. En la solicitud, el cliente pasa esto:{"Key": "Difficulty", "Value":"Easy"}.

En respuesta a la solicitud, Amazon GameLift crea un GameSession objeto que contiene la propiedad del juego especificada. GameLift Luego, Amazon indica a un servidor de juegos disponible que inicie la nueva sesión de juego y pasa el GameSession objeto. El servidor del juego inicia una sesión de juego con un Difficulty deEasy.

Más información