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.
Prueba de la de la de la
Usa Amazon GameLift Local para ejecutar una versión limitada del GameLift servicio gestionado de Amazon en un dispositivo local y comprobar la integración del juego con él. Esta herramienta es útil al realizar el desarrollo iterativo en la integración del juego. La alternativa (subir cada nueva versión a Amazon GameLift y configurar una flota para alojar tu juego) puede tardar 30 minutos o más cada vez.
Con Amazon GameLift Local, puede comprobar lo siguiente:
-
Tu servidor de juegos está integrado correctamente con el SDK del servidor y se comunica correctamente con el GameLift servicio de Amazon para iniciar nuevas sesiones de juego, aceptar nuevos jugadores e informar sobre el estado y el estado.
-
El cliente de juego está integrado correctamente con elAWS SDK de Amazon GameLift y puede recuperar información sobre las sesiones de juego existentes, iniciar nuevas sesiones de juego, unir a los jugadores a las partidas y conectarse a la sesión de juego.
Amazon GameLift Local es una herramienta de línea de comandos que inicia una versión autónoma del GameLift servicio gestionado de Amazon. Amazon GameLift Local también proporciona un registro de eventos en ejecución sobre la inicialización de los procesos del servidor, las comprobaciones de estado y las llamadas y respuestas a la API. Amazon GameLift Local reconoce un subconjunto de las acciones delAWS SDK de Amazon GameLift. Puede realizar llamadas desde la AWS CLI o desde el cliente de juego. Todas las acciones de la API se ejecutan localmente tal como lo hacen en el servicio GameLift web de Amazon.
Cada proceso del servidor solo debe albergar una sesión de juego. La sesión del juego es el ejecutable que utilizas para conectarte a Amazon GameLift Local. Cuando finalice la sesión de juego, debes llamarGameLiftServerSDK::ProcessEndning
y salir del proceso. Al realizar pruebas locales con Amazon GameLift Local, puede iniciar varios procesos de servidor. Cada proceso se conectará a Amazon GameLift Local. A continuación, puede crear una sesión de juego para cada proceso del servidor. Cuando finalice la sesión de juego, se cerrará el proceso del servidor del juego. A continuación, debe iniciar manualmente otro proceso del servidor.
Amazon GameLift local admite las siguientes API:
-
CreateGameSession
-
CreatePlayerSession
-
CreatePlayerSessions
-
DescribeGameSessions
-
DescribePlayerSessions
Configurar Amazon GameLift local
Amazon GameLift Local se proporciona como un.jar
archivo ejecutable incluido con el SDK del servidor
Antes de ejecutar Local, también debe tener instalado lo siguiente.
-
Una compilación de las versiones 3.1.5 a 4.x GameLift del SDK de Amazon Server.
-
Java 8
Probar un servidor de juegos
Si solo quieres probar tu servidor de juegos, puedes usarloAWS CLI para simular las llamadas del cliente del juego al servicio Amazon GameLift Local. De este modo, se verifica que el servidor de juegos se comporta según lo esperado:
-
El servidor del juego se inicia correctamente e inicializa el SDK de Amazon GameLift Server.
-
Como parte del proceso de lanzamiento, el servidor del juego notifica a Amazon GameLift que el servidor está listo para albergar sesiones de juego.
-
El servidor del juego envía el estado de salud a Amazon GameLift cada minuto mientras se ejecuta.
-
El servidor de juegos responde a las solicitudes para iniciar una sesión de juego nueva.
-
Inicie Amazon GameLift Local.
Abra una ventana de símbolo del sistema, vaya al directorio que contiene el archivo
y ejecútelo. De forma predeterminada, Local atiende a las solicitudes de clientes de juego en el puerto 8080. Para especificar un número de puerto diferente, utilice el parámetroGameLiftLocal.jar
-p
, tal y como se muestra en el ejemplo siguiente:java -jar GameLiftLocal.jar -p 9080
En cuanto Local arranque, verá los registros que indican que se iniciaron dos servidores locales, uno que atiende al servidor de juegos y otro al cliente de juego o a la AWS CLI. Los registros continúan informando sobre la actividad de los dos servidores locales, incluida la comunicación a y desde los componentes de juego.
-
Inicie el servidor de juegos.
Inicie su servidor GameLift de juegos integrado en Amazon de forma local. No es necesario cambiar el punto de enlace del servidor de juegos.
En la ventana de comandos local, los mensajes de registro indican que el servidor del juego se ha conectado al servicio Amazon GameLift Local. Esto significa que tu servidor de juegos inicializó correctamente el SDK de Amazon GameLift Server (con
InitSDK()
). Ha llamado aProcessReady()
con las rutas de registro que se muestran y, en caso de éxito, está listo para alojar una sesión de juego. Mientras el servidor del juego está en funcionamiento, Amazon GameLift registra cada informe de estado del servidor del juego. El siguiente ejemplo de mensajes de registro muestra un servidor de juegos integrado correctamente:16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp 16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal! 16:50:53,451 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true 16:50:53,543 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs" logPathsToUpload: "C:\\game\\error" port: 1935 16:50:53,544 INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true, 16:50:53,558 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy
A continuación se presentan posibles mensajes de error y advertencia:
-
Error: "No seProcessReady encontró ningún proceso con pID:
<process ID>! ¿Se invocó initSDK ()?»
-
Advertencia: «El estado del proceso ya existe para el proceso con pID:
<process ID>! ¿Se invoca ProcessReady (...) más de una vez?»
-
-
Inicie la AWS CLI.
En cuanto el servidor de juegos llame a
ProcessReady()
correctamente, podrá comenzar a realizar llamadas de cliente. Abra una ventana de símbolo del sistema y empiece con la herramienta AWS CLI. De formaAWS CLI predeterminada, utiliza el punto de enlace del servicio GameLift web de Amazon. Debe anularlo con el punto de enlace de Local en cada solicitud que emplee el parámetro--endpoint-url
, tal y como se muestra en el siguiente ejemplo.AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080 --fleet-id fleet-123
En laAWS CLI ventana de la línea de
AWS gamelift
comandos, los comandos generan respuestas tal como se documenta en la Referencia deAWS CLI comandos. -
Cree una sesión de juego.
Con elAWS CLI, envíe una solicitud CreateGameSession(). La solicitud debería seguir la sintaxis esperada. Para Local, el parámetro
FleetId
puede adaptarse a cualquier cadena válida (^fleet-\S+
).AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
En la ventana de comandos Local, los mensajes de registro indican que Amazon GameLift Local ha enviado una
onStartGameSession
llamada al servidor del juego. Si se crea una sesión de juego correctamente, el servidor de juegos responderá llamado aActivateGameSession
.13:57:36,129 INFO || - [SDKInvokerImpl] Thread-2 - Finished sending event to game server to start a game session: arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6. Waiting for ack response.13:57:36,143 INFO || - [SDKInvokerImpl] Thread-2 - Received ack response: true13:57:36,144 INFO || - [CreateGameSessionDispatcher] Thread-2 - GameSession with id: arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6 created13:57:36,227 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest requested? true13:57:36,230 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId: "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"
En laAWS CLI ventana, Amazon GameLift responde con un objeto de sesión de juego que incluye un ID de sesión de juego. Observe que el estado de la nueva sesión de juego es Activating. El estado cambia a Activo una vez que el servidor del juego lo invoca ActivateGameSession. Si desea ver el estado modificado, utilice la AWS CLI para llamar a
DescribeGameSessions()
.{ "GameSession": { "Status": "ACTIVATING", "MaximumPlayerSessionCount": 2, "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890", "IpAddress": "127.0.0.1", "Port": 1935 } }
Prueba un servidor y un cliente de juegos
Para comprobar la integración total del juego, incluidos los jugadores conectados a los juegos, puede ejecutar tanto el servidor como el cliente de juego localmente. Esto te permite probar las llamadas programáticas desde el cliente del juego a Amazon GameLift Local. Puede verificar las siguientes acciones:
-
El cliente del juego está realizando correctamente las solicitudes delAWS SDK al servicio Amazon GameLift Local, entre otras cosas para crear sesiones de juego, recuperar información sobre las sesiones de juego existentes y crear sesiones de jugadores.
-
El servidor de juegos está validando jugadores correctamente al intentar conectarse a una sesión de juego. Para validar los jugadores, el servidor de juego puede recuperar datos de los jugadores (si están implementados).
-
El servidor de juegos informa sobre la pérdida de la conexión cuando un jugador abandona el juego.
-
El servidor de juegos informa sobre la finalización de una sesión de juego.
-
Inicie Amazon GameLift Local.
Abra una ventana de símbolo del sistema, vaya al directorio que contiene el archivo
y ejecútelo. De forma predeterminada, Local atiende a las solicitudes de clientes de juego en el puerto 8080. Para especificar un número de puerto diferente, utilice el parámetroGameLiftLocal.jar
-p
, tal y como se muestra en el ejemplo siguiente../gamelift-local -p 9080
En cuanto Local arranque, verá los registros que indican que se iniciaron dos servidores locales, uno que atiende al servidor de juegos y otro al cliente de juego o a la AWS CLI.
-
Inicie el servidor de juegos.
Inicie su servidor GameLift de juegos integrado en Amazon de forma local. Consulte Probar un servidor de juegos para obtener más información acerca de los registros de mensajes.
-
Configure su cliente de juego para Local e inícielo.
Para usar tu cliente de juego con el servicio Amazon GameLift Local, debes realizar los siguientes cambios en la configuración del cliente de juego, tal y como se describe enConfigura AmazonGameLift en un servicio de backend:
-
Modifique el objeto
ClientConfiguration
para que apunte hacia el punto de enlace de Local, por ejemplohttp://localhost:9080
. -
Defina un valor de ID de la flota de destino. Para Local, no se requiere un ID de flota real; defina la flota de destino con cualquier cadena válida (
^fleet-\S+
), comofleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
. -
Defina las credenciales de AWS. Para Local, no requiere credenciales de AWS reales, de modo que puede definir la clave de acceso y la clave secreta para cualquier cadena.
En la ventana de comandos local, una vez que inicies el cliente del juego, los mensajes de registro deberían indicar que ha inicializado el GameLift servicio de Amazon
GameLiftClient
y que se ha comunicado correctamente con él. -
-
Pruebe las llamadas del cliente del juego al GameLift servicio de Amazon.
Compruebe que el cliente de juego realiza correctamente alguna o todas las llamadas a la API siguientes:
En la ventana de símbolo del sistema de Local, solo las llamadas a
CreateGameSession()
resultan en mensajes de registro. Los mensajes de registro se muestran cuando Amazon GameLift Local solicita a tu servidor de juegos que inicie una sesión de juego (onStartGameSession
devolución de llamada) yActivateGameSession
cuando el servidor del juego la invoca. En la ventana de la AWS CLI, todas las llamadas a la API generan respuestas o mensajes de error tal y como se documenta. -
Compruebe que el servidor de juegos valida las conexiones de jugadores nuevas.
Después de crear una sesión de juego y una sesión de jugador, establezca una conexión directa con la sesión de juego.
En la ventana de símbolo del sistema de Local, los mensajes de registro deberían mostrar que el servidor de juegos ha enviado una solicitud
AcceptPlayerSession()
para validar la conexión de jugadores nueva. Si utiliza la AWS CLI para llamar aDescribePlayerSessions()
, el estado de la sesión de jugador debería cambiar de Reserved a Active. -
Comprueba que tu servidor de juegos informa sobre el estado del juego y del jugador al GameLift servicio de Amazon.
Para GameLift que Amazon gestione la demanda de jugadores e informe correctamente las métricas, el servidor del juego debe informar de varios estados a Amazon GameLift. Compruebe que Local registra los eventos relacionados con las acciones siguientes. Es posible que también desee utilizar la AWS CLI para realizar un seguimiento de los cambios de estado.
-
El jugador se desconecta de una sesión de juego: los mensajes de registro de Amazon GameLift Local deberían mostrar que el servidor del juego llama
RemovePlayerSession()
. Una llamada de la AWS CLI aDescribePlayerSessions()
debería mostrar un cambio de estado deActive
aCompleted
. También puede llamar aDescribeGameSessions()
para comprobar que el recuento de jugadores actual de la sesión de juego resulta en un jugador menos. -
Finaliza la sesión del juego: los mensajes de registro de Amazon GameLift Local deberían mostrar que el servidor del juego llama
TerminateGameSession()
.nota
La guía anterior consistía en llamar
TerminateGameSession()
al finalizar una sesión de juego. Este método está en desuso en la versión 4.0.1 GameLift del SDK de Amazon Server. Consulte Finalización de una sesión de juego. -
El proceso del servidor ha finalizado. Los mensajes de registro de Amazon GameLift Local deberían mostrar que el servidor del juego llama
ProcessEnding()
. Una llamada de la AWS CLI aDescribeGameSessions()
debería mostrar un cambio de estado deActive
aTerminated
(oTerminating
).
-
Variaciones con lo local
Cuando utilice Amazon de la de la GameLift de la de la de la de la de la de la de la de la
-
A diferencia del servicio GameLift web de Amazon, Local no rastrea el estado de un servidor ni inicia la
onProcessTerminate
devolución de llamada. Local simplemente deja de registrar los informes de estado del servidor de juegos. -
Para realizar llamadas al SDK de AWS, los ID de la flota no están validados y puede tratarse de cualquier valor de cadena que cumpla los requisitos de parámetro (
^fleet-\S+
). -
Los ID de sesión de juego creados con Local tienen una estructura diferente. Incluyen la cadena
local
, tal y como se muestra aquí:arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6