Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Testa la tua integrazione usando Amazon GameLift Servers Local
Nota
Questo argomento tratta i test per i giochi integrati con l'SDK del server solo per le Amazon GameLift Servers versioni 3.x e 4.x. Il pacchetto SDK del server include una versione compatibile di Local. Amazon GameLift Servers Se utilizzi la versione 5.x dell'SDK del server, consulta Test locali con GameLift Server SDK 5.x per i test locali con una flotta Anywhere. Amazon GameLift Servers Per indicazioni sulla migrazione da SDK 4.x a 5.x, consulta Migrate to Server SDK 5.x. GameLift
Utilizza Amazon GameLift Servers Local per eseguire una versione limitata del servizio Amazon GameLift Servers gestito su un dispositivo locale e testare l'integrazione dei giochi. Questo strumento è utile quando si esegue lo sviluppo iterativo sull'integrazione dei giochi. L'alternativa, vale a dire caricare ogni nuova build Amazon GameLift Servers e configurare una flotta per ospitare il gioco, può richiedere diverse o più volte ogni volta.
Con Amazon GameLift Servers Local, è possibile verificare quanto segue:
-
Il server di gioco è correttamente integrato con l'SDK del server e comunica correttamente con il servizio Amazon GameLift Servers per avviare nuove sessioni di gioco, accettare nuovi giocatori e fornire rapporti sull'integrità e sullo stato.
-
Il client di gioco è correttamente integrato con l' AWS SDK per Amazon GameLift Servers ed è in grado di recuperare informazioni sulle sessioni di gioco esistenti, avviare nuove sessioni di gioco, unire giocatori alle partite e connettersi alla sessione di gioco.
Amazon GameLift ServersLocal è uno strumento da riga di comando che avvia una versione autonoma del servizio gestito. Amazon GameLift Servers Amazon GameLift Servers Local fornisce anche un registro degli eventi in esecuzione relativo all'inizializzazione dei processi del server, ai controlli di integrità e alle chiamate e risposte delle API. Amazon GameLift Servers Local riconosce un sottoinsieme delle azioni AWS SDK per. Amazon GameLift Servers Puoi effettuare chiamate dal AWS CLI o dal tuo client di gioco. Tutte le operazioni API vengono eseguite a livello locale proprio come avviene nel servizio Web Amazon GameLift Servers.
Ogni processo del server dovrebbe ospitare solo una singola sessione di gioco. La sessione di gioco è l'eseguibile che usi per connetterti a Amazon GameLift Servers Local. Quando la sessione di gioco è completata, dovresti chiamare GameLiftServerSDK::ProcessEnding
e poi uscire dal processo. Quando esegui il test localmente con Amazon GameLift Servers Local, puoi avviare più processi sul server. Ogni processo si connetterà a Amazon GameLift Servers Local. Puoi quindi creare una sessione di gioco per ogni processo del server. Al termine della sessione di gioco, il processo del server di gioco dovrebbe chiudersi. È quindi necessario avviare manualmente un altro processo del server.
Amazon GameLift Serverslocal supporta quanto segue APIs:
-
CreateGameSession
-
CreatePlayerSession
-
CreatePlayerSessions
-
DescribeGameSessions
-
DescribePlayerSessions
Configurazione Amazon GameLift Servers locale
Amazon GameLift Servers Local viene fornito come un file .jar
eseguibile integrato con l'SDK del server
Prima di eseguire Local, è necessaria l'installazione di quanto segue.
-
Una build dell'SDK del server per le versioni da 3.1.5 a 4.x. Amazon GameLift Servers
-
Java 8
Prova un server di gioco
Se desideri testare solo il tuo server di gioco, puoi utilizzarlo AWS CLI per simulare le chiamate dei client di gioco al servizio Amazon GameLift Servers locale. In questo modo si verifica che il server di gioco funziona come previsto nelle condizioni seguenti:
-
Il server di gioco si avvia correttamente e inizializza l'SDK del server per. Amazon GameLift Servers
-
Nell'ambito del processo di avvio, il server di gioco comunica ad Amazon GameLift Servers che il server è pronto per l'hosting di sessioni di gioco.
-
Il server di gioco invia lo stato di integrità a Amazon GameLift Servers ogni minuto durante l'esecuzione.
-
Il server di gioco risponde alle richieste di avvio di una nuova sessione di gioco.
-
Avviare Amazon GameLift Servers Local.
Aprire una finestra del prompt dei comandi, accedere alla directory contente il file
ed eseguire il file. Per impostazione predefinita, Local riceve le richieste provenienti dai client di gioco sulla porta 8080. Per specificare un numero di porta diverso, utilizzare il parametroGameLiftLocal.jar
-p
, come indicato nell'esempio seguente:java -jar GameLiftLocal.jar -p 9080
Una volta avviato Local, è possibile visualizzare i log che indicano che sono stati avviati due server locali, di cui uno rileva il server di gioco e l'altro il client di gioco o la AWS CLI. I log continuano a fornire rapporti sull'attività dei due server locali, comprese le comunicazioni da e verso i componenti di gioco.
-
Avviare il server di gioco.
Avviare il server di gioco integrato con Amazon GameLift Servers a livello locale. Non è necessario modificare l'endpoint per il server di gioco.
Nella finestra del prompt dei comandi di Local, i messaggi di log indicano che il server di gioco è connesso al servizio Amazon GameLift Servers Local. Ciò significa che il server di gioco ha inizializzato con successo l'SDK del server per (con). Amazon GameLift Servers
InitSDK()
Ha chiamatoProcessReady()
con i percorsi di log mostrati e, in caso di esito positivo, è pronto per l'hosting di una sessione di gioco. Mentre il server di gioco è in esecuzione, Amazon GameLift Servers registra ogni rapporto sullo stato di integrità del server di gioco. Il seguente esempio di messaggistica di log mostra un server di gioco integrato: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
Potenziali messaggi di errore e avviso sono i seguenti:
-
Errore: "ProcessReady non ho trovato un processo con PID:
<process ID>
! È stato invocato initSDK ()?» -
Avviso: «Lo stato del processo esiste già per il processo con PID:
<process ID>
! ProcessReady(...) è stato invocato più di una volta?»
-
-
Avvia il. AWS CLI
Una volta che il server di gioco ha completato la chiamata a
ProcessReady()
, è possibile iniziare a effettuare chiamate client. Aprire un'altra finestra del prompt dei comandi e avviare lo strumento AWS CLI . Per impostazione AWS CLI predefinita, utilizza l'endpoint del servizio Amazon GameLift Servers Web. È necessario sostituirlo con l'endpoint di Local in ogni richiesta con il parametro--endpoint-url
, come illustrato nella seguente richiesta di esempio.AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080 --fleet-id fleet-123
-
Creare una sessione di gioco.
Con AWS CLI, invia una richiesta CreateGameSession(). La richiesta deve seguire la sintassi prevista. Per Local, il parametro
FleetId
può essere impostato su qualsiasi stringa valida (^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
Nella finestra del prompt dei comandi di Local, i messaggi di log indicano che Amazon GameLift Servers Local ha inviato al server di gioco un callback
onStartGameSession
. Se una sessione di gioco è creata, il server di gioco risponde richiamandoActivateGameSession
.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"
Nella AWS CLI finestra, Amazon GameLift Servers risponde con un oggetto della sessione di gioco che include un ID della sessione di gioco. Si noti che lo stato della nuova sessione di gioco è Activating (In fase di attivazione). Lo stato diventa Attivo una volta ActivateGameSession richiamato il server di gioco. Se vuoi vedere lo stato modificato, usa il comando AWS CLI per chiamare.
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 } }
Prova un server e un client di gioco
Per verificare l'integrazione completa dei giochi, compresa la connessione dei giocatori ai giochi, è possibile eseguire sia il server sia il client di gioco a livello locale. In questo modo è possibile testare le chiamate programmatiche dal client di gioco ad Amazon GameLift Servers Local. È possibile verificare le seguenti azioni:
-
Il client di gioco sta effettuando correttamente le richieste AWS SDK al servizio Amazon GameLift Servers locale, tra cui la creazione di sessioni di gioco, il recupero di informazioni sulle sessioni di gioco esistenti e la creazione di sessioni di gioco.
-
Il server di gioco convalida correttamente i giocatori quando tentano di partecipare a una sessione di gioco. Per i giocatori convalidati, il server di gioco potrebbe recuperare i dati giocatore (se la funzione è implementata).
-
Il server di gioco segnala l'interruzione di una connessione quando un giocatore esce dal gioco.
-
Il server di gioco segnala la fine di una sessione di gioco.
-
Avviare Amazon GameLift Servers Local.
Aprire una finestra del prompt dei comandi, accedere alla directory contente il file
ed eseguire il file. Per impostazione predefinita, Local riceve le richieste provenienti dai client di gioco sulla porta 8080. Per specificare un numero di porta diverso, utilizzare il parametroGameLiftLocal.jar
-p
, come indicato nell'esempio seguente../gamelift-local -p 9080
Una volta avviato Local, è possibile visualizzare i log che indicano che sono stati avviati due server locali, di cui uno rileva il server di gioco e l'altro il client di gioco o la AWS CLI.
-
Avviare il server di gioco.
Avviare il server di gioco integrato con Amazon GameLift Servers a livello locale. Per ulteriori informazioni sui log dei messaggi, consultare Prova un server di gioco.
-
Configurare il client di gioco per Local e avviarlo.
Per utilizzare il client di gioco con il servizio Amazon GameLift Servers Local, occorre apportare le seguenti modifiche alla configurazione del client di gioco, come descritto nella sezione Configura Amazon GameLift Servers su un servizio di backend:
-
Modificare l'oggetto
ClientConfiguration
in modo che punti all'endpoint Local, ad esempiohttp://localhost:9080
. -
Impostare un valore di ID del parco istanze di destinazione. Per Local, non è necessario un vero e proprio ID del parco istanze; impostare il parco istanze di destinazione su qualsiasi stringa valida (
^fleet-\S+
), ad esempiofleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
. -
AWS Imposta le credenziali. Per Local, non occorrono vere e proprie credenziali AWS ; è possibile impostare la chiave di accesso e la chiave segreta su qualsiasi stringa.
Nella finestra del prompt dei comandi di Local, una volta avviato il client di gioco, i messaggi di log dovrebbero indicare che ha inizializzato
GameLiftClient
e ha comunicato con il servizio Amazon GameLift Servers. -
-
Eseguire il test delle chiamate del client di gioco al servizio Amazon GameLift Servers.
Verificare che il client di gioco esegua una o tutte le seguenti chiamate API:
Nella finestra del prompt dei comandi di Local, solo le chiamate a
CreateGameSession()
determinano messaggi di log. I messaggi di log mostrano quando Amazon GameLift Servers Local richiede al server di gioco di avviare una sessione di gioco (callbackonStartGameSession
) e ottiene unaActivateGameSession
riuscita quando il server di gioco la richiama. Nella finestra della AWS CLI , tutte le chiamate API determinano risposte o messaggi di errore come documentato. -
Verificare che il server di gioco convalidi le nuove connessioni dei giocatori.
Dopo aver creato una sessione di gioco e una sessione giocatore, stabilire una connessione diretta alla sessione di gioco.
Nella finestra del prompt dei comandi di Local, i messaggi di log devono mostrare che il server di gioco ha inviato una richiesta
AcceptPlayerSession()
per convalidare la nuova connessione dei giocatori. Se usi il comando AWS CLI to callDescribePlayerSessions()
, lo stato della sessione del giocatore dovrebbe cambiare da Riservato ad Attivo. -
Verificare che il server di gioco riporti lo stato del gioco e dei giocatori al servizio Amazon GameLift Servers.
Perché Amazon GameLift Servers gestisca la richiesta dei giocatori e riporti correttamente i parametri, il server di gioco deve segnalare diversi stati ad Amazon GameLift Servers. Verificare che Local registri gli eventi correlati alle operazioni seguenti. Potresti anche voler utilizzare il per AWS CLI tenere traccia delle modifiche allo stato.
-
Il giocatore si disconnette da una sessione di gioco: i messaggi di registro Amazon GameLift Servers locali dovrebbero mostrare che il server di gioco effettua chiamate
RemovePlayerSession()
. Le chiamate AWS CLI aDescribePlayerSessions()
riflettono una modifica dello stato daActive
aCompleted
. È inoltre possibile chiamareDescribeGameSessions()
per verificare che il numero di giocatori della sessione di gioco corrente diminuisce di uno. -
Fine della sessione di gioco: i messaggi di registro Amazon GameLift Servers locali dovrebbero mostrare che il server di gioco effettua chiamate
TerminateGameSession()
.Nota
La guida precedente era quella di chiamare al
TerminateGameSession()
termine di una sessione di gioco. Questo metodo è obsoleto con Amazon GameLift Servers Server SDK v4.0.1. Consultare Termina una sessione di gioco. -
Il processo del server è terminato: i messaggi di registro Amazon GameLift Servers locali dovrebbero mostrare che il server di gioco effettua chiamate.
ProcessEnding()
Una AWS CLI chiamata aDescribeGameSessions()
dovrebbe riflettere una modifica dello stato daActive
aTerminated
(oTerminating
).
-
Varianti con locale
Quando si utilizza Amazon GameLift Servers Local, è necessario ricordare quanto segue:
-
A differenza del servizio Web Amazon GameLift Servers, Local non monitora lo stato di integrità dei server e avvia il callback
onProcessTerminate
. Local interrompe semplicemente la registrazione dei rapporti sullo stato per il server di gioco. -
Per le chiamate all' AWS SDK, la flotta non IDs viene convalidata e può essere qualsiasi valore di stringa che soddisfi i requisiti del parametro ()
^fleet-\S+
. -
Le sessioni di gioco IDs create con Local hanno una struttura diversa. Includono la stringa
local
, come mostrato qui:arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6