Testa la tua integrazione con Amazon GameLift Local - Amazon GameLift

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 con Amazon GameLift Local

Nota

Utilizza questa procedura di test se utilizzi una versione di Amazon GameLift Server SDK 4.x o precedente. Il pacchetto SDK del tuo server include una versione compatibile di Amazon GameLift Local. Se utilizzi la versione 5.x del server SDK, consulta Testa la tua integrazione utilizzando le GameLift Anywhere flotte Amazon i test locali con una flotta Amazon GameLiftAnywhere.

Usa Amazon GameLift Local per eseguire una versione limitata del GameLift servizio Amazon gestito su un dispositivo locale e testare l'integrazione del gioco con esso. Questo strumento è utile quando si esegue lo sviluppo iterativo sull'integrazione dei giochi. L'alternativa, ossia caricare ogni nuova build su Amazon GameLift e configurare una flotta per ospitare il gioco, può richiedere 30 minuti o più ogni volta.

Con Amazon GameLift Local, puoi verificare quanto segue:

  • Il tuo server di gioco è correttamente integrato con il Server SDK e comunica correttamente con il GameLift servizio Amazon per avviare nuove sessioni di gioco, accettare nuovi giocatori e segnalare lo stato di salute e lo stato.

  • Il tuo client di gioco è correttamente integrato con l'AWSSDK per Amazon GameLift ed è in grado di recuperare informazioni sulle sessioni di gioco esistenti, avviare nuove sessioni di gioco, unire giocatori ai giochi e connettersi alla sessione di gioco.

Amazon GameLift Local è uno strumento da riga di comando che avvia una versione autonoma del servizio Amazon gestito. GameLift Amazon GameLift Local fornisce anche un registro degli eventi in corso di inizializzazione dei processi del server, controlli di integrità e chiamate e risposte API. Amazon GameLift Local riconosce un sottoinsieme delle azioni AWS SDK per Amazon. GameLift È possibile effettuare chiamate dalla AWS CLI o dal client di gioco. Tutte le azioni API vengono eseguite localmente proprio come nel servizio GameLift web Amazon.

Ogni processo del server deve ospitare solo una singola sessione di gioco. La sessione di gioco è l'eseguibile che usi per connetterti ad Amazon GameLift Local. Una volta completata la sessione di gioco, è necessario chiamare GameLiftServerSDK::ProcessEndning e quindi uscire dal processo. Quando esegui i test localmente con Amazon GameLift Local, puoi avviare più processi server. Ogni processo si connetterà ad Amazon GameLift 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 terminare. È quindi necessario avviare manualmente un altro processo del server.

Amazon GameLift local supporta le seguenti API:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Configurazione GameLift locale di Amazon

Amazon GameLift Local viene fornito come .jar file eseguibile fornito in bundle con Server SDK. Può essere eseguito su Windows o Linux e utilizzato con qualsiasi linguaggio GameLift supportato da Amazon.

Prima di eseguire Local, è necessaria l'installazione di quanto segue.

  • Una build della versione Amazon GameLift Server SDK da 3.1.5 a 4.x.

  • Java 8

Testa 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 Local. 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 Amazon GameLift Server SDK.

  • Come parte del processo di avvio, il server di gioco notifica ad Amazon GameLift che il server è pronto per ospitare sessioni di gioco.

  • Il server di gioco invia lo stato di salute ad Amazon GameLift ogni minuto durante l'esecuzione.

  • Il server di gioco risponde alle richieste di avvio di una nuova sessione di gioco.

  1. Avvia Amazon GameLift Local.

    Aprire una finestra del prompt dei comandi, accedere alla directory contente il file GameLiftLocal.jar 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 parametro -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.

  2. Avviare il server di gioco.

    Avvia localmente il tuo server di gioco GameLift integrato in Amazon. Non è necessario modificare l'endpoint per il server di gioco.

    Nella finestra del prompt dei comandi Local, i messaggi di registro indicano che il tuo server di gioco è connesso al servizio Amazon GameLift Local. Ciò significa che il tuo server di gioco ha inizializzato correttamente l'Amazon GameLift Server SDK (conInitSDK()). Ha chiamato ProcessReady() 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 funzione, Amazon GameLift registra ogni rapporto sullo stato di salute dal 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:

    • <process ID>Errore: "ProcessReadynon ho trovato un processo con PiD:! È stato invocato initSDK ()?»

    • <process ID>Avviso: «Lo stato del processo esiste già per il processo con PiD:! Viene ProcessReady (...) invocato più di una volta?»

  3. Avviare 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 GameLift web Amazon. È 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

    Nella finestra del AWS CLI prompt dei AWS gamelift comandi, i comandi generano risposte come documentato nella Guida ai AWS CLIcomandi.

  4. Creare una sessione di gioco.

    Con ilAWS 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 Local, i messaggi di registro indicano che Amazon GameLift Local ha inviato una onStartGameSession richiamata al tuo server di gioco. Se una sessione di gioco è creata, il server di gioco risponde richiamando ActivateGameSession.

    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 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 cambia in Attivo quando il server di gioco viene richiamatoActivateGameSession. Se si desidera visualizzare lo stato modificato, utilizzare AWS CLI per richiamare 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 } }

Testa un server di gioco e un client

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. Ciò ti consente di testare le chiamate programmatiche dal tuo client di gioco ad Amazon GameLift Local. È possibile verificare le seguenti azioni:

  • Il client di gioco sta effettuando correttamente le richieste AWS SDK al servizio Amazon GameLift Local, tra cui la creazione di sessioni di gioco, il recupero di informazioni sulle sessioni di gioco esistenti e la creazione di sessioni per i giocatori.

  • 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.

  1. Avvia Amazon GameLift Local.

    Aprire una finestra del prompt dei comandi, accedere alla directory contente il file GameLiftLocal.jar 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 parametro -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.

  2. Avviare il server di gioco.

    Avvia localmente il tuo server di gioco GameLift integrato in Amazon. Per ulteriori informazioni sui log dei messaggi, consultare Testa un server di gioco.

  3. Configurare il client di gioco per Local e avviarlo.

    Per utilizzare il tuo client di gioco con il servizio Amazon GameLift Local, devi apportare le seguenti modifiche alla configurazione del client di gioco, come descritto inConfigura Amazon GameLift su un servizio di backend:

    • Modificare l'oggetto ClientConfiguration in modo che punti all'endpoint Local, ad esempio http://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 esempio fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d.

    • Impostare le credenziali AWS. 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 locale, una volta avviato il client di gioco, i messaggi di registro dovrebbero indicare che il client è stato inizializzato GameLiftClient ed è stato comunicato correttamente con il servizio AmazonGameLift.

  4. Prova le chiamate dei client di gioco al GameLift servizio Amazon.

    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 registro vengono visualizzati quando Amazon GameLift Local richiede al server di gioco di avviare una sessione di gioco (onStartGameSessioncallback) e hanno esito positivo ActivateGameSession quando il server di gioco la richiama. Nella finestra della AWS CLI, tutte le chiamate API determinano risposte o messaggi di errore come documentato.

  5. 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 si utilizza AWS CLI per richiamare DescribePlayerSessions(), lo stato della sessione giocatore deve cambiare da Reserved (Prenotato) ad Active (Attivo).

  6. Verifica che il tuo server di gioco stia segnalando lo stato del gioco e del giocatore al GameLift servizio Amazon.

    Affinché Amazon possa GameLift gestire la domanda dei giocatori e riportare correttamente le metriche, il tuo server di gioco deve segnalare diversi stati ad Amazon. GameLift Verificare che Local registri gli eventi correlati alle operazioni seguenti. È possibile anche utilizzare la AWS CLI per tenere traccia delle modifiche di stato.

    • Il giocatore si disconnette da una sessione di gioco: i messaggi di registro di Amazon GameLift Local dovrebbero mostrare che il tuo server di gioco chiamaRemovePlayerSession(). Le chiamate AWS CLI a DescribePlayerSessions() riflettono una modifica dello stato da Active a Completed. È inoltre possibile chiamare DescribeGameSessions() per verificare che il numero di giocatori della sessione di gioco corrente diminuisce di uno.

    • La sessione di gioco termina: i messaggi di registro di Amazon GameLift Local dovrebbero mostrare che il tuo server di gioco chiamaTerminateGameSession().

      Nota

      La guida precedente consisteva nel chiamare al TerminateGameSession() termine di una sessione di gioco. Questo metodo è obsoleto con Amazon GameLift Server SDK v4.0.1. Consultare Termina una sessione di gioco.

    • Il processo del server è terminato: i messaggi di registro di Amazon GameLift Local dovrebbero mostrare che il server di gioco chiamaProcessEnding(). Le chiamate AWS CLI a DescribeGameSessions() riflettono una modifica dello stato da Active a Terminated (o Terminating).

Variazioni con lingua locale

Quando usi Amazon GameLift Local, tieni presente quanto segue:

  • A differenza del servizio GameLift web Amazon, Local non monitora lo stato di salute di un server e non avvia la onProcessTerminate richiamata. Local interrompe semplicemente la registrazione dei rapporti sullo stato per il server di gioco.

  • Per le chiamate all'SDK AWS, gli ID del parco istanze non vengono convalidati e possono essere qualsiasi valore di stringa che soddisfi i requisiti dei parametri (^fleet-\S+).

  • Gli ID delle sessioni di gioco creati 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