Plugin para Unity: despliega tu juego en las flotas de EC2 gestionadas - 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.

Plugin para Unity: despliega tu juego en las flotas de EC2 gestionadas

En este flujo de trabajo, utilizas el complemento para preparar el juego para su alojamiento en recursos informáticos basados en la nube gestionados por Amazon GameLift. Añades el código del juego de cliente y servidor para la GameLift funcionalidad de Amazon y, a continuación, subes la versión de tu servidor al GameLift servicio de Amazon para su alojamiento. Cuando se complete este flujo de trabajo, dispondrás de servidores de juegos en la nube y de un cliente de juego funcional que podrá conectarse a ellos.

Para iniciar el flujo de trabajo de Amazon EC2 GameLift gestionado por Amazon:
  • En el menú principal del editor de Unity, elige Amazon GameLift y selecciona Host with Managed EC2. Este flujo de trabajo presenta un proceso de seis pasos para integrar, crear, implementar y lanzar los componentes del juego.

Configura tu perfil

Elija el perfil que desee utilizar al seguir este flujo de trabajo. El perfil que seleccione afectará a todos los pasos del flujo de trabajo. Todos los recursos que cree están asociados a la AWS cuenta del perfil y se colocan en la AWS región predeterminada del perfil. Los permisos del usuario del perfil determinan su acceso a AWS los recursos y las acciones.

  1. Seleccione un perfil de la lista desplegable de perfiles disponibles. Si aún no tienes un perfil o quieres crear uno nuevo, ve al GameLift menú de Amazon y selecciona Establecer perfiles de AWS cuenta.

  2. Si el estado del arranque no es “Activo”, seleccione Perfil de arranque y espere a que el estado cambie a “Activo”.

Integra tu juego con Amazon GameLift

Para esta tarea, debes actualizar el código del cliente y del servidor en tu proyecto de juego.

  • Los servidores de juegos deben poder comunicarse con el GameLift servicio de Amazon para recibir instrucciones para iniciar una sesión de juego, proporcionar información de conexión de la sesión de juego e informar del estado.

  • Los clientes del juego deben poder obtener información sobre las sesiones de juego, unirse a ellas o iniciarlas y obtener información de conexión para unirse a una partida.

nota

Si has importado el juego de muestra, puedes saltarte este paso. Los recursos del juego de muestra ya tienen el código de servidor y cliente necesario.

Integra tu código de servidor

Cuando utilices tu propio proyecto de juego con escenas personalizadas, utiliza el código de ejemplo proporcionado para añadir el código de servidor necesario a tu proyecto de juego. Si integraste tu proyecto de juego para probarlo con una flota de Anywhere, ya has completado las instrucciones de este paso.

  1. Abre la Assets/Scripts/Server carpeta en los archivos del proyecto del juego. Si no existe, créala.

  2. Ve al GitHub repositorio aws/ amazon-gamelift-plugin-unity y abre la ruta. Samples~/SampleGame/Assets/Scripts/Server

  3. Localiza el archivo GameLiftServer.cs y cópialo en la carpeta de tu proyecto de juego. Server Cuando crees un ejecutable de servidor, usa este archivo como destino de compilación.

El código de ejemplo incluye estos elementos mínimos obligatorios, que utilizan el SDK del servidor Amazon GameLift C# (versión 5):

  • Inicializa un cliente de Amazon GameLift API. La llamada initSDK () con los parámetros del servidor es necesaria para una flota de Amazon GameLift Anywhere. Estos ajustes se configuran automáticamente para su uso en el complemento.

  • Implementa las funciones de devolución de llamada necesarias para responder a las solicitudes del GameLift servicio de Amazon, incluidas OnStartGameSessionOnProcessTerminate, yonHealthCheck.

  • Llama ProcessReady() con un puerto designado para notificar al GameLift servicio de Amazon cuando el proceso del servidor está listo para albergar sesiones de juego.

Si quieres personalizar el código de servidor de muestra, consulta estos recursos:

Integre su código de cliente

Para los clientes de juegos que se conectan a servidores de juegos basados en la nube, se recomienda utilizar un servicio de back-end del lado del cliente para realizar llamadas al GameLift servicio de Amazon, en lugar de hacerlo directamente desde el cliente del juego.

En el flujo de trabajo de los complementos para el alojamiento en una flota de EC2 gestionada, cada escenario de despliegue incluye un servicio de backend prediseñado que incluye los siguientes componentes:

  • Conjunto de funciones Lambda y tablas de DynamoDB que se utilizan para solicitar sesiones de juego y recuperar información sobre las sesiones de juego. Estos componentes utilizan una puerta de enlace API como proxy.

  • Un grupo de usuarios de Amazon Cognito que genera identificadores de jugador únicos y autentica las conexiones de los jugadores.

Para utilizar estos componentes, el cliente del juego necesita una funcionalidad que le permita enviar solicitudes al servicio de backend para hacer lo siguiente:

  • Crea un usuario jugador en el grupo de usuarios de AWS Cognito y autentícate.

  • Únase a una sesión de juego y reciba información de conexión.

  • Únete a una partida mediante el matchmaking.

Usa los siguientes recursos como guía.

Selecciona el escenario de despliegue

En este paso, tendrá que elegir la solución de alojamiento de juegos que desee implementar en ese momento. Puede disponer de varias implementaciones del juego mediante cualquiera de los escenarios.

  • Flota de una sola región: despliega tu servidor de juegos en una sola flota de recursos de alojamiento en la región predeterminada AWS del perfil activo. Este escenario es un buen punto de partida para probar la integración del servidor con AWS la configuración de compilación del servidor. Permite implementar los siguientes recursos:

    • La flota de AWS (bajo demanda) con la compilación del servidor de juegos instalada y en ejecución.

    • Grupo de usuarios y cliente de Amazon Cognito para permitir a los jugadores autenticarse e iniciar un juego.

    • Autorizador de la puerta de enlace de API que vincula el grupo de usuarios con las API.

    • WebACI para limitar las llamadas excesivas de los jugadores a la puerta de enlace de la API.

    • Puerta de enlace de la API + función de Lambda para que los jugadores soliciten una ranura de juego. Esta función llama a CreateGameSession() si no hay ninguna disponible.

    • Puerta de enlace de la API + función de Lambda para que los jugadores obtengan información de la conexión para su solicitud de juego.

  • FlexMatch flota: despliega tu servidor de juego en un conjunto de flotas y configura un FlexMatch emparejador con reglas para crear partidas de jugadores. En este escenario, se utiliza un alojamiento Spot de bajo coste con una estructura de varias flotas y ubicaciones para garantizar una disponibilidad duradera. Este enfoque resulta útil cuando estás listo para empezar a diseñar un componente de emparejamiento para tu solución de alojamiento. En este escenario, crearás los recursos básicos para esta solución, que podrás personalizar más adelante según sea necesario. Permite implementar los siguientes recursos:

    • FlexMatch Configuración y reglas de emparejamiento establecidas para aceptar las solicitudes de los jugadores y formar partidas.

    • Tres flotas de AWS con la compilación del servidor de juegos instalada y en ejecución en varios lugares. Incluye dos flotas de spot y una flota bajo demanda como respaldo.

    • Cola de ubicación de sesión de juego de AWS que responde a las solicitudes de emparejamientos propuestos mediante la búsqueda del mejor recurso de alojamiento posible (en función de la viabilidad, el costo, la latencia de los jugadores, etc.) y el inicio de una sesión de juego.

    • Grupo de usuarios y cliente de Amazon Cognito para permitir a los jugadores autenticarse e iniciar un juego.

    • Autorizador de la puerta de enlace de API que vincula el grupo de usuarios con las API.

    • WebACI para limitar las llamadas excesivas de los jugadores a la puerta de enlace de la API.

    • Puerta de enlace de la API + función de Lambda para que los jugadores soliciten una ranura de juego. Esta función llama a StartMatchmaking().

    • Puerta de enlace de la API + función de Lambda para que los jugadores obtengan información de la conexión para su solicitud de juego.

    • Tablas de Amazon DynamoDB para almacenar tickets de emparejamiento para jugadores e información sobre las sesiones de juego.

    • Tema de SNS más función Lambda para GameSessionQueue gestionar eventos.

Establece los parámetros del juego

En este paso, debes describir el juego en el que quieres subirlo AWS .

  • Nombre del juego: proporciona un nombre significativo para tu proyecto de juego. Este nombre se usa en el complemento.

  • Nombre de la flota: proporcione un nombre significativo para la flota de EC2 gestionada. Amazon GameLift usa este nombre (junto con el identificador de flota) al publicar recursos en la AWS consola.

  • Nombre de compilación: proporciona un nombre significativo para la compilación de tu servidor. AWS usa este nombre para hacer referencia a la copia de la versión de tu servidor que se carga en Amazon GameLift y se usa para las implementaciones.

  • Parámetros de lanzamiento: introduzca las instrucciones opcionales que se ejecutarán al lanzar el ejecutable del servidor en una instancia de flota de EC2 gestionada. La longitud máxima es de 1024 caracteres.

  • Carpeta del servidor del juego: proporciona la ruta a la carpeta local que contiene la versión del servidor.

  • Archivo del servidor del juego: especifique el nombre del archivo ejecutable del servidor.

Escenario de despliegue

En este paso deberá implementar el juego en una solución de alojamiento en la nube en función del escenario de implementación que elija. Este proceso puede tardar varios minutos y, además, AWS valida la compilación del servidor, aprovisiona los recursos de alojamiento, instala el servidor de juegos, inicia los procesos del servidor y los prepara para albergar sesiones de juego.

Para iniciar la implementación, selecciona Implementar. CloudFormation Puede realizar el seguimiento del estado del alojamiento de su juego aquí. Para obtener información más detallada, puede iniciar sesión en la consola AWS de administración AWS y ver las notificaciones de eventos. Asegúrate de iniciar sesión con la misma cuenta, usuario y AWS región que el perfil de usuario activo del complemento.

Cuando se complete la implementación, tendrá el servidor de juegos instalado en una instancia de EC2 de AWS . Hay al menos un proceso del servidor en ejecución y listo para iniciar una sesión de juego.

Abre el cliente del juego

Cuando tu flota se haya desplegado correctamente, dispondrás de servidores de juegos en funcionamiento y disponibles para albergar sesiones de juego. Ahora puedes crear tu cliente, lanzarlo y conectarte para unirte a la sesión de juego.

  1. Configura tu cliente de juego. En este paso, le pides al complemento que actualice un GameLiftClientSettings activo para tu proyecto de juego. El complemento utiliza este recurso para almacenar cierta información que el cliente del juego necesita para conectarse al GameLift servicio de Amazon.

    1. Si no has importado ni inicializado el juego de muestra, crea un nuevo GameLiftClientSettings activo. En el menú principal del editor de Unity, selecciona Activos GameLift, Crear y Configuración del cliente. Si creas varias copias GameLiftClientSettings en tu proyecto, el complemento lo detecta automáticamente y te notifica qué activo actualizará el complemento.

    2. En Launch Game, seleccione Configurar cliente: aplicar la configuración de EC2 gestionada. Esta acción actualiza la configuración del cliente del juego para que utilice la flota de EC2 gestionada que acaba de implementar.

  2. Crea tu cliente de juego. Cree un cliente ejecutable mediante el proceso de compilación estándar de Unity. En Archivo, Configuración de compilación, cambia la plataforma a Windows, Mac o Linux. Si has importado el juego de muestra e inicializado la configuración, la lista de compilaciones y el objetivo de la compilación se actualizan automáticamente.

  3. Abre el ejecutable del cliente del juego recién creado. Para empezar a jugar, inicia de dos a cuatro instancias de cliente y usa la interfaz de usuario de cada una para unirte a una sesión de juego.

Si utilizas el cliente de juego de muestra, tiene las siguientes características:

  • Un componente de inicio de sesión para jugadores. Al conectarte a un servidor de juegos de una flota de Anywhere, no se valida el jugador. Puedes introducir cualquier valor para unirte a la sesión de juego.

  • Una interfaz de usuario sencilla para unirse al juego. Cuando un cliente intenta unirse a una partida, busca automáticamente una sesión de juego activa con un espacio de jugador disponible. Si no hay ninguna sesión de juego disponible, el cliente solicita una nueva sesión de juego. Si hay una sesión de juego disponible, el cliente solicita unirse a la sesión de juego disponible. Al probar el juego con varios clientes simultáneos, el primer cliente inicia la sesión de juego y los demás se unen automáticamente a la sesión de juego existente.

  • Sesiones de juego con ranuras para cuatro jugadores. Puedes lanzar hasta cuatro instancias de clientes de juego al mismo tiempo y se unirán a la misma sesión de juego.