Integración de la funcionalidad de cliente de juego de Amazon GameLift Servers - Amazon GameLift Servers

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.

Integración de la funcionalidad de cliente de juego de Amazon GameLift Servers

Integre la funcionalidad de alojamiento de juegos de Amazon GameLift Servers en cualquier componente de la solución que necesite comunicarse con el servicio Amazon GameLift Servers, por ejemplo, para obtener información sobre las sesiones de juego o crear sesiones de juego nuevas. En la mayoría de los casos, esta funcionalidad está integrada en el componente de servicio de backend. Añada funciones para tareas básicas, incluidas las siguientes:

  • Solicitar la información y el estado de sesiones de juego activas.

  • Reservar un espacio para un jugador nuevo en una sesión de juego existente.

  • Crear una sesión de juego nueva para un grupo de jugadores.

  • Solicitar el emparejamiento de uno o varios jugadores.

  • Proporcionar datos actualizados de las sesiones de juego existentes.

Consulte Interacciones del cliente/servidor de juegos con Amazon GameLift Servers para obtener detalles adicionales sobre cómo interactúan los componentes de alojamiento de juegos a través del Amazon GameLift Servers SDKs.

Configuración de la API de Amazon GameLift Servers

Agregue el AWS SDK para C++ with Amazon GameLift Servers a un proyecto.

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

  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 Servers. 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 Amazon GameLift Servers. Utilice Aws:GameLift:: GameLiftClient () (C++) o AmazonGameLiftClient() (C#) con una configuración de cliente predeterminada o personalizada.

  3. Si utiliza sesiones de jugador, 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: si está creando sesiones de juego de forma manual en una flota específica, proporcione un ID de flota o un ID de alias que apunte a la flota de destino. Si se trata de una flota con múltiples ubicaciones, especifique una ubicación de flota. 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 ubicar las nuevas sesiones de juego, especifique el nombre de la cola a la que se deben enviar las solicitudes de ubicación.

    • AWS credenciales: todas las llamadas Amazon GameLift Servers deben proporcionar las credenciales de la entidad Cuenta de AWS que aloja el juego. Estas credenciales se pueden obtener 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 Servers. 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 Autenticarse con credenciales de larga duración en la Guía de referencia de herramientas AWS SDKs y herramientas. Para obtener información sobre el almacenamiento de credenciales, consulte las referencias de las AWS API para (C++) y (.NET).

      • Si tiene 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 la AWS SDKs 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 activas

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 utiliza 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. Este objeto contiene el nombre de DNS, la dirección IP y el puerto que necesita el cliente de juego para conectarse a la sesión de juego.

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 los datos de las 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. Existen dos opciones para crear sesiones de juego, dependiendo de la forma en que la solución de alojamiento de juegos administre la ubicación de las sesiones de juego.

Creación de una sesión de juego en una cola con múltiples 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 coloca Amazon GameLift Servers la nueva sesión de juego. Para obtener más información sobre las colas y cómo utilizarlas, consulte Configuración de 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 incluye los datos de latencia de los jugadores de las regiones relevantes, Amazon GameLift Servers 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.

Para obtener mediciones de latencia precisas, utilice señalizadores de pings de UDP de Amazon GameLift Servers. Estos puntos de conexión le permiten medir la latencia real de la red UDP entre los dispositivos de los jugadores y las posibles ubicaciones de alojamiento, de forma que pueda tomar decisiones de ubicación más precisas que utilizando pings de ICMP. Para obtener más información sobre el uso de señalizadores de pings de UDP para medir la latencia, consulte Señalizadores de pings de UDP.

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. Tras Amazon GameLift Servers crear la nueva sesión de juego y devolver un GameSessionobjeto, podréis 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 Servers 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. Esta acción está disponible si el juego usa sesiones de jugadores con un jugador único IDs. Para obtener más información sobre las sesiones de jugador, consulte Amazon GameLift Servers y la experiencia del jugador.

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

    Para reservar un espacio de jugador, cree una sesión de jugador para la sesión de juego. Hay dos formas de hacer esto:

    Una solicitud de sesión de jugador debe incluir un ID de jugador único. Para obtener más información, consulte Generación de ID de jugador. Al recibir la solicitud, Amazon GameLift Servers verifica que la sesión de juego acepta jugadores nuevos y que tiene espacios de jugador disponibles. Si lo consigue, Amazon GameLift Servers reserva un espacio para el jugador, crea la nueva sesión de jugador y devuelve un PlayerSessionobjeto.

    Una sesión de jugador puede incluir un conjunto de datos de jugador personalizados. Estos datos se almacenan en el objeto de sesión de jugador recién creado. Amazon GameLift Servers 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, asigne cada cadena de datos de jugador a un ID de jugador.

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

    Agrega código al servicio de backend para recuperar el PlayerSession objeto (por ejemplo, llamando a DescribePlayerSessions()) y devuélvelo al cliente del juego. Este objeto contiene el nombre de DNS, la dirección IP y el puerto. El cliente de juego puede usar 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 Servers. El servidor mantiene la comunicación con Amazon GameLift Servers 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 un espacio reservado 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.

Transferencia de datos de juego personalizados a una sesión de juego

El cliente de juego puede transferir datos a una sesión de juego. Al crear una sesión de juego, puede incluir un conjunto de propiedades de juego (pares clave-valor) o datos de la sesión de juego (valores de cadena) en la solicitud. También puede actualizar una sesión de juego existente con datos de juego nuevos o actualizados. Estos datos se transfieren al proceso del servidor de juegos que aloja la sesión de juego para que los utilice el código del servidor de juegos. No puede eliminar las propiedades de juego.

Como ejemplo, supongamos que el juego define niveles de dificultad: Novice, Easy, Intermediate y Expert. Un jugador elige unirse a un juego Easy. El cliente de juego, a través del servicio de backend, solicita una nueva sesión de juego con la siguiente propiedad de juego: {"Key": "Difficulty", "Value":"Easy"}. En respuesta, Amazon GameLift Servers solicita a un servidor de juegos disponible que inicie una sesión de juego nueva, y transfiere el objeto GameSession. El proceso del servidor de juegos utiliza la propiedad de juego proporcionada para establecer el nivel de dificultad de la sesión de juego.

Más información