Adición de Amazon GameLift al cliente de juegos - Amazon GameLift

Adición de Amazon GameLift al cliente de juegos

Integre Amazon GameLift en componentes de juego que precisen información de sesión de juego, crear nuevas sesiones de juego y añadir jugadores a 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 emparejamiento para un juego alojado en Amazon GameLift, consulte la Guía para desarrolladores de Amazon GameLift FlexMatch.

Configuración de Amazon GameLift en un servicio de backend

Añada código para inicializar un cliente de Amazon GameLift 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 de conexión de destino que se deben usar 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. Inicialice un cliente de Amazon GameLift. 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 de destino: muchas solicitudes de la API de Amazon GameLift 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.

    • Credenciales de AWS: todas las llamadas a Amazon GameLift deben proporcionar credenciales para la Cuenta de AWS que aloja el 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 utiliza un rol para administrar los permisos de usuario de los jugadores, añada código para asumir el rol antes de llamar a una API de Amazon GameLift. La solicitud para asumir el rol devolverá un conjunto de credenciales de seguridad temporales. Para obtener más información, consulte Cambio a un rol de IAM (API de AWS) 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 la API de AWS 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 deAWS 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

Utilice SearchGameSessions para obtener información sobre una sesión de juego específica, todas las sesiones activas o las sesiones que cumplan un conjunto de criterios de búsqueda. Esta llamada devuelve un objeto GameSession para cada sesión de juego activa que coincida con la 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(): permite obtener el estado de protección de la sesión de juego además de la información de la sesión de juego.

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

  • GetGameSessionLogUrl: permite acceder a registros de sesión 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. Existen dos opciones para crear sesiones de juego, en función de si el juego se implementa en varias Regiones de AWS o en una única región.

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

Utilice StartGameSessionPlacement para colocar una solicitud de una sesión de juego nueva en una cola. Para usar esta operación de, cree una cola. De esa forma, se determinará dónde coloca Amazon GameLift la nueva sesión de juego. Para obtener más información sobre las colas y cómo utilizarlas, consulte Administración de la ubicación de las sesiones de juego con colas de Amazon GameLift.

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 incluye los datos de latencia de los jugadores de las regiones relevantes, Amazon GameLift utiliza esa información para colocar la nueva sesión de juego en una flota que proporcione una experiencia de juego perfecta a 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 puede cancelar la solicitud en cualquier momento utilizando StopGameSessionPlacement. Para comprobar el estado de la solicitud de ubicación, llame a DescribeGameSessionPlacement.

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

Utilice CreateGameSession para crear una sesión nueva 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 objeto GameSession, podrá 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 utiliza la característica de protección de recursos de Amazon GameLift para limitar el número de sesiones de juego que puede crear un jugador, proporcione el ID de jugador de la persona que va a crear 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 jugadores nuevos y que tiene ranuras de jugador disponibles. Si se cumplen esos requisitos, Amazon GameLift reserva una ranura para el jugador, crea la nueva sesión de jugador y devuelve un objeto PlayerSession. 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 la sesión del jugador que se acaba de crear, que puede recuperarse llamando a DescribePlayerSessions(). Amazon GameLift también transfiere el objeto al servidor de juegos 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.

    Una vez establecida la conexión, el cliente de juegos y el proceso del servidor se comunican directamente sin involucrar a Amazon GameLift. El servidor mantiene la comunicación con Amazon GameLift para notificar el estado de conexión del jugador, el estado, etc. 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.

Uso de las propiedades de la sesión de juego

El cliente de juego puede transferir datos a una sesión de juego mediante una propiedad de juego. Las propiedades de juego son pares clave/valor que el servidor de juegos puede añadir, leer, enumerar y cambiar. Puede transferir una propiedad de 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 puede eliminar las propiedades de juego.

Por ejemplo, supongamos que el juego ofrece los niveles de dificultad Novice, Easy, Intermediate y Expert. El jugador elige Easy y entonces comienza el juego. El cliente de juego le solicita una nueva sesión de juego a Amazon GameLift mediante StartGameSessionPlacement o CreateGameSession, tal y como se ha explicado en las secciones anteriores. En la solicitud, el cliente pasa {"Key": "Difficulty", "Value":"Easy"}.

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

Más información