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.
Integrar Amazon GameLift en un proyecto de Unity
En este tema se explica cómo configurar el SDKcomplemento Amazon GameLift C# Server para Unity e integrarlo en tus proyectos de juegos.
Recursos adicionales:
Requisitos previos
Para usar el SDK complemento de servidor Amazon GameLift C# para Unity, necesitas los siguientes componentes:
-
Un entorno de desarrollo y una versión del editor Unity compatibles con el complemento (consulte Obtenga las herramientas de GameLift desarrollo de Amazon). Para obtener información sobre las versiones de Unity, consulte Requisitos del sistema para Unity
en la documentación de Unity. -
El paquete GameLift del SDK complemento de servidor Amazon para Unity. Este paquete incluye el servidor SDK 5+ para C#. Puedes descargar el paquete desde este sitio: Getting Started with Amazon GameLift
. -
El registro UnityNuGet controlado por terceros. Esta herramienta es gestionada por tercerosDLLs. Para obtener más información, consulta el repositorio de UnityNuGet
Github.
Configurar UnityNuGet
Si no lo has UnityNuGet configurado para tu proyecto de juego, sigue los siguientes pasos para instalar la herramienta mediante el administrador de paquetes de Unity. Como alternativa, puedes usar el NuGet CLI para descargar manualmente elDLLs. Para obtener más información, consulta el servidor Amazon GameLift C# SDK para UnityREADME
.
Para integrarlo UnityNuGet en tu proyecto de juego
-
Con el proyecto abierto en el editor de Unity, vaya al menú principal y seleccione Editar, Configuración del proyecto. Entre las opciones, elija la sección Administrador de paquetes y abra el grupo Registros con ámbito.
-
Pulse el botón + e introduzca los siguientes valores para el registro UnityNuGet abarcado:
Name: Unity NuGet URL: https://unitynuget-registry.azurewebsites.net Scope(s): org.nuget
Para los usuarios de la versión Unity 2021:
Tras la configuración UnityNuGet, comprueba si aparecen
Assembly Version Validation
errores en la consola de Unity. Estos errores se producen si los redireccionamientos de enlace de los ensamblajes con nombres fuertes de los NuGet paquetes no se resuelven correctamente en las rutas del proyecto de Unity. Para resolver este problema, configure la validación de la versión de ensamblaje de Unity:En el editor de Unity, diríjase al menú principal y seleccione Editar, Configuración del proyecto y abra la sección Jugador.
Cancele la selección de la opción Validación de la versión de ensamblaje.
Instalación del complemento
Usa el siguiente procedimiento para instalar el SDK complemento de servidor Amazon GameLift C# para Unity y configurar el registro de log4net.
Para instalar el complemento
Con el proyecto abierto en el editor de Unity, diríjase al menú principal y seleccione Ventana, Administrador de paquetes.
Elija el botón + para añadir un paquete nuevo. Seleccione la opción Añadir paquete desde archivo tarball.
En Seleccionar paquetes en disco, busca el SDK complemento Amazon GameLift C# Server para los archivos de descarga de Unity y selecciona el SDK
.tgz
archivo Amazon GameLift Server. Elija Abrir para instalar el complemento.
El GameLift servidor de Amazon SDK utiliza el marco log4net para generar mensajes de registro. Está configurado para enviar mensajes a la terminal de una compilación de servidor de forma predeterminada, pero Unity requiere una configuración para añadir compatibilidad con el registro de archivos. Puedes añadir este soporte a tu proyecto importando la muestra proporcionada dentro del SDK paquete de Amazon GameLift Server. Utilice el siguiente procedimiento para añadir la muestra y configurar log4net:
Para configurar log4net para la salida de archivos, realice el siguiente procedimiento:
Con el proyecto abierto en el editor de Unity, diríjase al menú principal y seleccione Ventana, Administrador de paquetes.
En el menú desplegable, selecciona Packages: In Project y, a continuación, selecciona Amazon GameLift Server SDK en la lista de paquetes. Se abrirán los detalles del paquete.
En los detalles del paquete, seleccione la opción Grupo de muestras y pulse Importar.
El archivo
log4net.config
y el script deLoggingConfiguration.cs
que lo acompaña ejecutan automáticamente la configuración, que ahora está configurada en la carpetaAssets/Samples
del proyecto.nota
Si necesita mover el archivo
log4net.config
a una carpeta diferente del proyecto, también debe actualizar la ruta del archivo de configuración en el scriptLoggingConfiguration.cs
con la nueva ruta. Para obtener más información, consulte el Manual de log4net sobre la configuración de log4net.
Para obtener instrucciones más detalladas y una guía de prueba, consulte el archivo README
que se encuentra en la descarga del complemento.
Configura un Amazon GameLift Anywhere flota para realizar pruebas
Puedes configurar tu estación de trabajo de desarrollo como Amazon GameLift Anywhere flota de hosting para probar de forma iterativa tu GameLift integración con Amazon. Con esta configuración, puedes iniciar los procesos del servidor de juegos en tu estación de trabajo, enviar solicitudes de unión o emparejamiento de jugadores GameLift a Amazon para iniciar sesiones de juego y conectar clientes a las nuevas sesiones de juego. Con tu propia estación de trabajo configurada como servidor de alojamiento, puedes supervisar todos los aspectos de la integración de tus juegos con Amazon GameLift.
Para obtener instrucciones sobre cómo configurar su estación de trabajo, consulte Configura las pruebas locales con Amazon GameLift Anywhere para completar los siguientes pasos:
Cree una ubicación personalizada para su estación de trabajo.
Crea un Amazon GameLift Anywhere flota con tu nueva ubicación personalizada. Si se realiza correctamente, esta solicitud devuelve un ID de la flota. Tome nota de ese valor, ya que lo necesitará más tarde.
Registre su estación de trabajo como una unidad de cómputo en la nueva Anywhere flota. Proporcione un nombre de procesamiento único y especifique la dirección IP de su estación de trabajo. Si se ejecuta correctamente, esta solicitud devuelve un SDK punto final de servicio, en forma de WebSocket URL. Tome nota de ese valor, ya que lo necesitará más tarde.
Genere un token de autenticación para el procesamiento de su estación de trabajo. Esta autenticación de corta duración incluye el token y una fecha de caducidad. El servidor de juegos lo usa para autenticar la comunicación con el GameLift servicio de Amazon. Guarde la autenticación en el recurso informático de su estación de trabajo para que los procesos del servidor de juegos en ejecución puedan acceder a él.
Agrega el código de GameLift servidor de Amazon a tu proyecto de Unity
Tu servidor de juegos se comunica con el GameLift servicio de Amazon para recibir instrucciones e informar sobre su estado actual. Para ello, añades un código de servidor de juegos que utilice el GameLift servidor de AmazonSDK.
El ejemplo de código proporcionado muestra los elementos básicos de integración necesarios. Utiliza un MonoBehavior
para ilustrar una sencilla inicialización de un servidor de juegos con Amazon GameLift. En el ejemplo se supone que el servidor del juego se ejecuta en un Amazon GameLift Anywhere flota para realizar pruebas. Incluye código para lo siguiente:
-
Inicializa un GameLift API cliente de Amazon. En el ejemplo se utiliza la versión de
InitSDK()
con parámetros de servidor para su Anywhere flota e informática. Utilice el ID de flota WebSocket URL, el nombre de cálculo (ID de host) y el token de autenticación, tal y como se definió en el tema anteriorConfigura un Amazon GameLift Anywhere flota para realizar pruebas. -
Implemente funciones de devolución de llamadas para responder a las solicitudes del GameLift servicio de Amazon, incluidas
OnStartGameSession
OnProcessTerminate
, yonHealthCheck
. -
Llama a ProcessReady () con un puerto designado para notificar al GameLift servicio de Amazon cuando el proceso esté listo para albergar sesiones de juego.
El código presentado en este tema establece la comunicación con el GameLift servicio de Amazon y. También implementa un conjunto de funciones de devolución de llamada que responden a las solicitudes. Para obtener más información sobre cada función y lo que hace el código, consulte Inicialización del proceso del servidor. Para obtener más información sobre las SDK acciones y los tipos de datos utilizados en este código, lee GameLift Servidor Amazon SDK 5.x para C# y Unity: acciones.
En este ejemplo se muestra cómo añadir todos los elementos necesarios, tal y como se describe en Añadir Amazon GameLift a tu servidor de juegos. Incluye:
Para obtener más información sobre cómo añadir GameLift la funcionalidad de Amazon, consulta estos temas:
using System.Collections.Generic; using Aws.GameLift.Server; using UnityEngine; public class ServerSDKManualTest : MonoBehaviour { //This example is a simple integration that initializes a game server process //that is running on an Amazon GameLift Anywhere fleet. void Start() { //Identify port number (hard coded here for simplicity) the game server is listening on for player connections var listeningPort = 7777; //WebSocketUrl from RegisterHost call var webSocketUrl = "wss://us-west-2.api.amazongamelift.com"; //Unique identifier for this process var processId = "myProcess"; //Unique identifier for your host that this process belongs to var hostId = "myHost"; //Unique identifier for your fleet that this host belongs to var fleetId = "myFleet"; //Authorization token for this host process var authToken = "myAuthToken"; //Server parameters are required for a GameLift Anywhere fleet. //They are not required for a GameLift managed EC2 fleet. ServerParameters serverParameters = new ServerParameters( webSocketUrl, processId, hostId, fleetId, authToken); //InitSDK establishes a local connection with an Amazon GameLift agent //to enable further communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters); if (initSDKOutcome.Success) { //Implement callback functions ProcessParameters processParameters = new ProcessParameters( //Implement OnStartGameSession callback (gameSession) => { //GameLift sends a game session activation request to the game server //with game session object containing game properties and other settings. //Here is where a game server takes action based on the game session object. //When the game server is ready to receive incoming player connections, //it invokes the server SDK call ActivateGameSession(). GameLiftServerAPI.ActivateGameSession(); }, (updateGameSession) => { //GameLift sends a request when a game session is updated (such as for //FlexMatch backfill) with an updated game session object. //The game server can examine matchmakerData and handle new incoming players. //updateReason explains the purpose of the update. }, () => { //Implement callback function OnProcessTerminate //GameLift invokes this callback before shutting down the instance hosting this game server. //It gives the game server a chance to save its state, communicate with services, etc., //and initiate shut down. When the game server is ready to shut down, it invokes the //server SDK call ProcessEnding() to tell GameLift it is shutting down. GameLiftServerAPI.ProcessEnding(); }, () => { //Implement callback function OnHealthCheck //GameLift invokes this callback approximately every 60 seconds. //A game server might want to check the health of dependencies, etc. //Then it returns health status true if healthy, false otherwise. //The game server must respond within 60 seconds, or GameLift records 'false'. //In this example, the game server always reports healthy. return true; }, //The game server gets ready to report that it is ready to host game sessions //and that it will listen on port 7777 for incoming player connections. listeningPort, new LogParameters(new List<string>() { //Here, the game server tells GameLift where to find game session log files. //At the end of a game session, GameLift uploads everything in the specified //location and stores it in the cloud for access later. "/local/game/logs/myserver.log" })); //The game server calls ProcessReady() to tell GameLift it's ready to host game sessions. var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters); if (processReadyOutcome.Success) { print("ProcessReady success."); } else { print("ProcessReady failure : " + processReadyOutcome.Error.ToString()); } } else { print("InitSDK failure : " + initSDKOutcome.Error.ToString()); } } void OnApplicationQuit() { //Make sure to call GameLiftServerAPI.ProcessEnding() and GameLiftServerAPI.Destroy() before terminating the server process. //These actions notify Amazon GameLift that the process is terminating and frees the API client from memory. GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); } } }
Recursos adicionales de
Utilice los siguientes recursos para probar el servidor de juegos y ampliar la funcionalidad:
-
Configura tu máquina de desarrollo como una flota de Amazon GameLift Anywhere y utilízala para realizar pruebas locales. Consulte Realización de una prueba de integración de servidor personalizada.
-
Crea tu servidor de juegos y sube la versión a Amazon GameLift. Consulta Subir una versión de servidor personalizada a Amazon GameLift.
Implementa tu versión de servidor de juegos en una EC2 flota GameLift gestionada por Amazon. Consulta Crear una nueva GameLift flota de Amazon.