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

Questo argomento riguarda i test per i giochi integrati solo con la versione 4.x o precedente dell'SDK per GameLift server Amazon. Il pacchetto SDK del server include una versione compatibile di Amazon GameLift Local. Se utilizzi la versione 5.x dell'SDK Configura test locali con Amazon GameLift Anywhere per server, consulta la pagina dedicata ai test locali con una flotta Amazon GameLift Anywhere.

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

Con Amazon GameLift Local, puoi verificare quanto segue:

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

  • Il tuo client di gioco è correttamente integrato con l' AWS SDK 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 esecuzione relativo all'inizializzazione dei processi del server, ai controlli di integrità e alle chiamate e risposte delle API. Amazon GameLift Local riconosce un sottoinsieme delle azioni AWS SDK per Amazon. GameLift Puoi effettuare chiamate dal AWS CLI o dal tuo client di gioco. Tutte le azioni API vengono eseguite localmente proprio come nel servizio GameLift web Amazon.

Ogni processo del server dovrebbe 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, devi chiamare GameLiftServerSDK::ProcessEnding e poi uscire dal processo. Quando esegui 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 chiudersi. È quindi necessario avviare manualmente un altro processo del server.

Amazon GameLift local supporta le seguenti API:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Configura Amazon GameLift local

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 di Amazon GameLift Server SDK da 3.1.5 a 4.x.

  • 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 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 l'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 locale, 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 con successo 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 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?»

  3. 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 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 nel Command Reference.AWS CLI

  4. 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 Local, i messaggi di log indicano che Amazon GameLift Local ha inviato una onStartGameSession richiamata al 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 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. 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 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.

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

    • Imposta AWS 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 locale, una volta avviato il client di gioco, i messaggi di registro dovrebbero indicare che è stato inizializzato GameLiftClient e che è stato comunicato con successo con il servizio Amazon GameLift .

  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 usi la chiamata AWS CLI toDescribePlayerSessions(), lo stato della sessione del giocatore dovrebbe cambiare da Riservato ad Attivo.

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

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

    • Il giocatore si disconnette da una sessione di gioco: i messaggi di registro di Amazon GameLift Local dovrebbero mostrare che il server di gioco effettua chiamateRemovePlayerSession(). 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.

    • Fine della sessione di gioco: i messaggi di registro di Amazon GameLift Local dovrebbero mostrare che il server di gioco effettua chiamateTerminateGameSession().

      Nota

      La guida precedente era quella di chiamare al TerminateGameSession() termine di una sessione di gioco. Questo metodo è obsoleto con Amazon GameLift Server SDK v4.0.1. Per informazioni, consulta 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 effettua chiamateProcessEnding(). Una AWS CLI chiamata a DescribeGameSessions() dovrebbe riflettere una modifica dello stato da Active a Terminated (oTerminating).

Varianti con locale

Quando usi Amazon GameLift Local, tieni presente quanto segue:

  • A differenza del servizio GameLift web Amazon, Local non tiene traccia dello stato di salute del server e non avvia il onProcessTerminate callback. Local interrompe semplicemente la registrazione dei rapporti sullo stato per il server di gioco.

  • Per le chiamate all' AWS SDK, gli ID della flotta non vengono convalidati e possono essere qualsiasi valore di stringa che soddisfi i requisiti del parametro (). ^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