Añade Amazon GameLift a tu servidor 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 servidor de juegos

Tu servidor de juegos personalizado debe comunicarse con Amazon GameLift, ya que cada proceso del servidor de juegos debe poder responder a los eventos que GameLift inicia Amazon. Tu servidor de juegos también debe mantener a Amazon GameLift informado sobre el estado del proceso del servidor y las conexiones de los jugadores. Para obtener más información sobre cómo el servidor de juegos, el servicio de backend, el cliente del juego y Amazon GameLift trabajan juntos para administrar el alojamiento de juegos, consultaInteracciones entre Amazon GameLift y el servidor de cliente del juego.

Para preparar tu servidor de juegos para interactuar con Amazon GameLift, añade el SDK de Amazon GameLift Server a tu proyecto de servidor de juegos e incorpora la funcionalidad descrita en este tema. El SDK del servidor está disponible en varios idiomas. Para obtener más información sobre el SDK de Amazon GameLift Server, consulteSoporte de desarrollo con Amazon GameLift.

Referencias de la API del SDK del servidor:

Inicialización del proceso del servidor

Agrega código para establecer la comunicación con Amazon GameLift e informar que el proceso del servidor está listo para albergar una sesión de juego. Este código debe ejecutarse antes que cualquier GameLift código de Amazon.

  1. Inicialice el cliente de la GameLift API de Amazon mediante una llamadaInitSdk(). Para inicializar un proceso de servidor en un recurso GameLift Anywhere informático de Amazon, llame InitSdk() con lo siguiente: ServerParameters

    • La URL del WebSocket que se utiliza para conectarse al servidor de juegos.

    • El ID del proceso utilizado para alojar su servidor de juegos.

    • El ID del proceso utilizado para alojar los procesos del servidor de juegos.

    • El ID de la GameLift flota que contiene tu Amazon GameLift Anywhere Compute.

    • El token de autorización generado por la GameLift operación de AmazonGetComputeAuthToken.

    nota

    Para inicializar un servidor de juegos en una instancia Amazon EC2 GameLift gestionada por Amazon, cree el ServerParameters suyo con el constructor InitSDK() predeterminado (C++) (C++) (C++) (Unreal. Amazon GameLift configura el entorno informático y se conecta automáticamente a Amazon GameLift por usted.

  2. Notifica a Amazon de GameLift que un proceso de servidor está listo para alojar una sesión de juego. Llame a ProcessReady() (C++) (C#) (Unreal) con la siguiente información. Tenga en cuenta que debe llamar a ProcessReady() solo una vez por proceso del servidor.

    • El número de puerto que utiliza el proceso del servidor. El servicio de backend proporciona el número de puerto y una dirección IP a los clientes del juego para que se conecten al proceso del servidor y se unan a una sesión de juego.

    • La ubicación de los archivos, como los registros de sesiones de juegos, que quieres que conserve Amazon GameLift. El proceso del servidor genera esos archivos durante una sesión de juego. Se almacenan temporalmente en la instancia en la que se ejecuta el proceso del servidor y se pierden cuando la instancia se cierra. Todos los archivos que publiques se subirán a Amazon GameLift. Puedes acceder a estos archivos a través de la GameLift consola de Amazon o llamando a la operación de la GameLift API de Amazon GetGameSessionLogUrl().

    • Procesa los nombres de las funciones de devolución de llamadas a las que Amazon GameLift puede llamar a tu servidor. El servidor de juegos debe implementar las siguientes funciones. Para obtener más información, consulte (C++) (C#) (Unreal) .

      • (Opcional)onHealthCheck: Amazon GameLift llama a esta función con regularidad para solicitar al servidor un informe de estado de salud.

      • onStartGameSession— Amazon GameLift llama a esta función en respuesta a la solicitud del cliente CreateGameSession().

      • onProcessTerminate— Amazon GameLift fuerza el proceso del servidor a detenerse, lo que permite que se cierre sin problemas.

      • (Opcional)onUpdateGameSession: Amazon GameLift envía un objeto de sesión de juego actualizado al servidor del juego o proporciona una actualización de estado en una solicitud de reabastecimiento de partidas. La función FlexMatch de relleno requiere esta devolución de llamada.

    También puedes configurar un servidor de juegos para acceder de forma segura a AWS los recursos que te pertenecen o controlas. Para obtener más información, consulte Comunicación con otros recursos de AWS de sus flotas.

Notificación del estado del proceso del servidor (opcional)

Añada código a su servidor de juegos para implementar la función de devolución de llamada onHealthCheck(). Amazon GameLift invoca este método de devolución de llamada periódicamente para recopilar estadísticas de salud. Al implementar esta función de devolución de llamada, realice el siguiente procedimiento:

  • Evalúe el estado del proceso del servidor. Por ejemplo, puede informar de que el proceso del servidor no está en buen estado si alguna dependencia externa ha fallado.

  • Complete la evaluación del estado y responda a la devolución de llamada en un plazo de 60 segundos. Si Amazon GameLift no recibe una respuesta en ese momento, automáticamente considerará que el proceso del servidor no está funcionando correctamente.

  • Devuelva un valor booleano: true para buen estado y false para mal estado.

Si no implementas una llamada de control de estado, Amazon GameLift considerará que el proceso del servidor está en buen estado, a menos que el servidor no responda.

Amazon GameLift utiliza el estado de los procesos del servidor para acabar con los procesos en mal estado y liberar recursos. Si un proceso del servidor sigue informando que no funciona correctamente o no responde durante tres controles de estado consecutivos, Amazon GameLift podría cerrar el proceso e iniciar uno nuevo. Amazon GameLift recopila métricas sobre el estado de los procesos de los servidores de una flota.

Obtención de un certificado TLS (opcional)

Si el proceso del servidor se ejecuta en una flota que tiene activada la generación de certificados TLS, puede recuperar el certificado TLS para establecer una conexión segura con un cliente de juegos y cifrar la comunicación cliente/servidor. En la instancia se almacena una copia del certificado. Para obtener la ubicación del archivo, llame a GetComputeCertificate() (C++) (C#) (Unreal) .

Inicio de una sesión de juego

Añada código para implementar la función de devolución de llamada onStartGameSession. Amazon GameLift invoca esta devolución de llamada para iniciar una sesión de juego en el servidor.

La onStartGameSession función toma un GameSessionobjeto como parámetro de entrada. Este objeto incluye información clave de la sesión de juego, como el número máximo de jugadores. También puede incluir datos del juego y de los jugadores. Durante el proceso de implementación de la función se deben realizar las siguientes tareas:

  • Inicie acciones para crear una nueva sesión de juego en función de las propiedades de GameSession. Como mínimo, el servidor de juegos debe asociar el ID de sesión del juego, al que los clientes del juego hacen referencia cuando se conectan al proceso del servidor.

  • Procese los datos del juego y de los jugadores según sea necesario. Esos datos se encuentran en el objeto GameSession.

  • Notifica a Amazon GameLift cuando haya una nueva sesión de juego lista para aceptar jugadores. Llame a la operación de la API del servidor ActivateGameSession()(C++) (C#) (Unreal) (C++)Unreal). En respuesta a una llamada exitosa, Amazon GameLift cambia el estado de la sesión del juego aACTIVE.

Validación de un jugador nuevo (opcional)

Si realiza un seguimiento del estado de las sesiones de los jugadores, añada un código para validar un jugador nuevo cuando se conecte a un servidor de juegos. Amazon GameLift rastrea a los jugadores actuales y a las tragaperras de sesión de juego disponibles.

Para la validación, el cliente del juego que solicite acceso a la sesión de juego debe incluir un ID de sesión del jugador. Amazon genera GameLift automáticamente este identificador cuando un jugador solicita unirse a una partida mediante StartGameSessionPlacement() o StartMatchmaking(). La sesión del jugador reserva entonces un espacio libre en una sesión de juego.

Cuando el proceso del servidor de juegos recibe una solicitud de conexión con el cliente del juego, llama a AcceptPlayerSession() (C++) (C#) (Unreal) (C++) con el ID de sesión del jugador. En respuesta, Amazon GameLift verifica que el ID de sesión del jugador corresponde a un espacio abierto reservado en la sesión de juego. Una vez que Amazon GameLift valida el identificador de sesión del jugador, el proceso del servidor acepta la conexión. A continuación, el jugador puede unirse a la sesión de juego. Si Amazon GameLift no valida el identificador de sesión del jugador, el proceso del servidor deniega la conexión.

Notificación de la finalización de una sesión de jugador (opcional)

Si estás rastreando el estado de las sesiones de los jugadores, añade un código para notificar a Amazon GameLift cuando un jugador abandone la sesión de juego. Este código debe ejecutarse siempre que el proceso del servidor detecte la interrupción de una conexión. Amazon GameLift utiliza esta notificación para hacer un seguimiento de los jugadores actuales y de las máquinas tragamonedas disponibles en la sesión de juego.

Para gestionar las conexiones interrumpidas, añada en el código una llamada a la operación de la API del servidor RemovePlayerSession() (C++) (C#) (Unreal) (C++) con el ID de sesión del jugador correspondiente.

Finalización de una sesión de juego

Añade código a la secuencia de cierre del proceso del servidor para avisar a Amazon GameLift de la finalización de una sesión de juego. Para reciclar y actualizar los recursos de alojamiento, Amazon GameLift cierra los procesos del servidor una vez finalizada la sesión de juego.

Al iniciar el código de cierre del proceso del servidor, llame a la operación de la API del servidor ProcessEnding() (C++) (C#) (Unreal) . Esta llamada notifica a Amazon GameLift que el proceso del servidor se está cerrando. Amazon GameLift cambia el estado de la sesión del juego y el estado del proceso del servidor aTERMINATED. Después de llamar a ProcessEnding(), es seguro que el proceso se cierre.

Respuesta a una notificación de cierre del proceso del servidor

Agrega un código para cerrar el proceso del servidor en respuesta a una notificación de Amazon GameLift. Amazon GameLift envía esta notificación cuando el proceso del servidor informa constantemente de que no está funcionando o si la instancia en la que se está ejecutando el proceso del servidor está finalizando. Amazon GameLift puede detener una instancia como parte de un evento de reducción de la capacidad o en respuesta a una interrupción de una instancia puntual.

Para gestionar una notificación de cierre, realice los siguientes cambios en el código del servidor de juegos:

  • Implemente la función de devolución de llamada onProcessTerminate(). Esta función debe llamar al código que apaga el proceso del servidor. Cuando Amazon GameLift invoca esta operación, las interrupciones de las instancias puntuales se notifican con dos minutos de antelación. El aviso proporciona al proceso del servidor tiempo para desconectar a los jugadores de forma correcta, mantener los datos de estado del juego y realizar otras tareas de limpieza.

  • Llame a la operación de la API del servidor GetTerminationTime() (C++) (C#) (Unreal) desde el código de cierre del servidor de juegos. Si Amazon GameLift ha emitido una llamada para detener el proceso del servidor, GetTerminationTime() devuelve el tiempo de finalización estimado.

  • Al iniciar el código de cierre del proceso del servidor de juegos, llame a la operación de la API del servidor ProcessEnding() (C++) (C#) (Unreal) . Esta llamada notifica a Amazon GameLift que el proceso del servidor se está cerrando y, a GameLift continuación, Amazon cambia el estado del proceso del servidor a. TERMINATED Después de llamar a ProcessEnding(), es seguro que el proceso se cierre.