Complemento para Unity: configuración de pruebas locales con Amazon GameLift Anywhere - Amazon GameLift

Complemento para Unity: configuración de pruebas locales con Amazon GameLift Anywhere

En este flujo de trabajo, se añadirá el código de juego del cliente y del servidor para la funcionalidad de Amazon GameLift y se utilizará el complemento para designar la estación de trabajo local como alojamiento del servidor de juegos de prueba. Cuando haya completado las tareas de integración, utilice el complemento para crear los componentes de cliente y servidor de juegos.

Inicio del flujo de trabajo de Amazon GameLift Anywhere
  • En el menú principal del editor de Unity, elija Amazon GameLift y seleccione Host with Anywhere. Esta acción abrirá la página del complemento para configurar el juego con una flota de @Anywhere. La página muestra un proceso de cinco pasos para integrar, compilar y lanzar los componentes del juego.

Configuración del 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 estarán asociados a la cuenta de AWS del perfil y se colocarán en la región de AWS predeterminada del perfil. Los permisos del usuario del perfil determinan su acceso a los recursos y acciones de AWS.

  1. Seleccione un perfil de la lista desplegable de perfiles disponibles. Si aún no tiene un perfil o quiere crear uno nuevo, vaya al menú de Amazon GameLift y seleccione Set AWS Account Profiles.

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

Integración del juego con Amazon GameLift

nota

Si ha importado el juego de ejemplo, puede omitir este paso. Los activos del juego de ejemplo ya tienen el código de servidor y cliente necesario.

Para este paso del flujo de trabajo, debe actualizar el código del cliente y del servidor en el proyecto del juego.

  • * Los servidores de juegos deben poder comunicarse con el servicio de Amazon GameLift a fin de recibir peticiones de inicio de sesión de juego, proporcionar datos de conexión de la sesión de juego e informar sobre el estado.

  • Los clientes del juego deben poder obtener información sobre las sesiones de juego, iniciar una sesión o unirse a ella y obtener datos de conexión para entrar en una partida.

Integración del código del servidor

Si emplea su propio proyecto de juego con escenas personalizadas, utilice el código de ejemplo proporcionado para añadir el código de servidor necesario al proyecto del juego:

  1. En los archivos del proyecto del juego, abra la carpeta Assets/Scripts/Server. Si el archivo no existe, créelo.

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

  3. Busque el archivo GameLiftServer.cs y cópielo en la carpeta Server del proyecto del juego. Cuando compile un ejecutable de servidor, use este archivo como destino de la compilación.

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

  • La inicialización un cliente de la API de Amazon GameLift. La llamada de InitSDK() con los parámetros del servidor es obligatoria para una flota de Amazon GameLift Anywhere. Estos ajustes se configuran automáticamente para el uso en el complemento.

  • La implementación de las funciones de devolución de llamada necesarias para responder a las solicitudes del servicio de Amazon GameLift, como OnStartGameSession, OnProcessTerminate y onHealthCheck.

  • Llamadas a ProcessReady() con un puerto designado para informar al servicio de Amazon GameLift cuando el proceso del servidor esté listo para alojar sesiones de juego.

Si desea personalizar el código de servidor de ejemplo, consulte estos recursos:

Integración del código del cliente

Si utiliza su propio proyecto de juego con escenas personalizadas, necesita integrar las funciones básicas en el cliente del juego. También debe añadir elementos de interfaz de usuario para que los jugadores puedan iniciar sesión y unirse a una sesión de juego. Utilice las API del servicio de Amazon GameLift (en AWS SDK) para obtener datos de la sesión de juego, crear nuevas sesiones de juego o unirse a sesiones existentes.

Al crear un cliente para pruebas locales con una flota de Anywhere, puede añadir llamadas directas al servicio de Amazon GameLift. Cuando desarrolle el juego para el alojamiento en la nube, o si planea usar flotas de Anywhere para el alojamiento de producción, necesitará crear un servicio de backend en el cliente a fin de gestionar toda la comunicación entre los clientes del juego y el servicio de Amazon GameLift.

Para integrar Amazon GameLift en el código del cliente, use los siguientes recursos como guía.

  • Integre el cliente con la clase GameLiftCoreApi en el repositorio aws/amazon-gamelift-plugin-unity de GitHub. Esta clase proporciona controles para la autenticación de los jugadores y para recuperar información de la sesión de juego.

  • Vea ejemplos de integraciones de juegos (están disponibles en el repositorio de GitHub aws/amazon-gamelift-plugin-unity, Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs).

  • Siga las instrucciones para añadir Amazon GameLift al cliente de juegos de Unity.

Los clientes de juego que se conecten a una flota de Anywhere necesitan la siguiente información. El complemento actualiza automáticamente el proyecto de juego para que use los recursos que haya creado en el complemento.

  • FleetId: el identificador único de la flota de Anywhere.

  • FleetLocation: la ubicación personalizada de la flota de Anywhere.

  • AwsRegion: la región de AWS en la que está alojada la flota de Anywhere; esta es la región que ha configurado en el perfil de usuario.

  • ProfileName: un perfil con credenciales de AWS en el equipo local que permite el acceso a AWS SDK para GameLift; el cliente del juego utiliza estas credenciales para autenticar las solicitudes al servicio de Amazon GameLift.

nota

El perfil con credenciales está generado por el complemento y se guarda en el equipo local. Por lo tanto, debe ejecutar el cliente en el equipo local (o en un equipo con el mismo perfil).

Conexión a una flota de Anywhere

En este paso, tendrá que designar la flota de Anywhere que desee utilizar. Una flota de Anywhere define un conjunto de recursos informáticos, que se pueden ubicar en cualquier lugar para el alojamiento de servidores de juegos.

  • Si la cuenta de AWS que utiliza actualmente dispone de flotas de Anywhere existentes, abra el campo desplegable Fleet name y elija una flota. Este menú desplegable solo muestra las flotas de Anywhere de la región de AWS para el perfil de usuario activo actualmente.

  • Si no hay ninguna flota existente, o si desea crear una nueva, seleccione Create new Anywhere fleet e introduzca un nombre para la flota.

Una vez que haya elegido una flota de Anywhere para su proyecto, Amazon GameLift verifica que el estado de la flota esté activo y muestra el ID de la flota. Puede hacer un seguimiento del progreso de esta solicitud en el registro de salida del editor de Unity.

Registro de un recurso de computación

En este paso, se registrará su estación de trabajo local como recurso informático en la nueva flota de Anywhere.

  1. Especifique un nombre de equipo para la máquina local. Si añade más de un recurso informático a la flota, los nombres deben ser únicos.

  2. Seleccione Register compute. Puede realizar un seguimiento del progreso de esta solicitud en el registro de resultados del editor de Unreal.

El complemento registra la estación de trabajo local con la dirección IP establecida en localhost (127.0.0.1). Esta configuración da por sentado que ejecutará el cliente y el servidor del juego en el mismo equipo.

Como respuesta a esta acción, Amazon GameLift comprueba que se puede conectar al recurso informático y devuelve información sobre el recurso informático recién registrado.

Lanzamiento del juego

En este paso, compilará los componentes del juego y los lanzará para poder jugar. Realice los siguientes pasos:

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

    1. Si no ha importado ni inicializado el juego de ejemplo, cree un nuevo activo GameLiftClientSettings. En el menú principal del editor de Unity, seleccione Assets, Create, GameLift, Client Settings. Si crea varias copias de GameLiftClientSettings en el proyecto, el complemento lo detectará automáticamente y le dirá qué activo actualizará el plugin.

    2. En Launch Game, seleccione Configure Client: Apply Anywhere Settings. Esta acción actualiza la configuración del cliente del juego para que use la flota de Anywhere que acaba de configurar.

  2. Compile y ejecute el cliente del juego.

    1. Compile un ejecutable del cliente mediante el proceso de compilación estándar de Unity. En File, Build Settings, cambie la plataforma a Windows, Mac, Linux. Si ha importado el juego de ejemplo y ha inicializado la configuración, la lista y el destino de la compilación se actualizarán automáticamente.

    2. Lance una o más instancias del ejecutable del cliente de juego recién compilado.

  3. Lance un servidor de juegos en la flota de Anywhere. Seleccione Server: Launch Server en el editor. Esta tarea inicia un servidor activo al que el cliente puede conectarse mientras el editor de Unity permanezca abierto.

  4. Inicie una sesión de juego o únase a una sesión. En las instancias del cliente de juego, use la interfaz de usuario para unir a cada cliente a una sesión de juego. La forma de hacerlo dependerá de cómo haya añadido la funcionalidad en el cliente.

Si utiliza el cliente de juegos de ejemplo, tendrá las siguientes características:

  • Un componente de inicio de sesión para jugadores. Al conectarse a un servidor de juegos en una flota de Anywhere, no hay validación de jugadores. Puede introducir cualquier valor para unirse 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 espacio disponible para un jugador. Si no hay ninguna sesión de juego disponible, el cliente solicita una nueva sesión de juego. Si hay alguna sesión de juego disponible, el cliente solicita unirse a esta. 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 espacio para cuatro jugadores. Puede lanzar hasta cuatro instancias de clientes de juego simultáneas: se unirán todas a la misma sesión de juego.

Lanzamiento desde un ejecutable de servidor (opcional)

Puede compilar y lanzar el ejecutable del servidor de juegos para probarlo en una flota de Anywhere.

  1. Compile un ejecutable del servidor mediante el proceso de compilación estándar de Unity. En File, Build Settings, cambie la plataforma a Dedicated Server y haga la compilación.

  2. Obtenga un token de autenticación temporal llamando al comando get-compute-auth-token de la CLI de AWS, con su región de AWS e ID de flota de Anywhere. El ID de flota aparece en Connect to an Anywhere Fleet al crear la flota. La región de AWS aparece en Set Your Profile cuando selecciona el perfil activo.

    aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
  3. Lance el ejecutable del servidor de juegos recién compilado desde una línea de comandos y pase un token de autenticación válido.

    my_project.exe --authToken [token]