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à.
Interazioni GameLift tra Amazon e il server client di gioco
Questo argomento descrive le interazioni tra il client di gioco, un servizio di backend, un server di gioco e AmazonGameLift.
Il diagramma seguente illustra le interazioni tra il client di gioco, il servizio di backend, Amazon GameLift SDK, il server di gioco EC2 gestito, l'SDK del server Amazon e AmazonGameLift. GameLift Per una descrizione dettagliata delle interazioni mostrate, consulta le sezioni seguenti di questa pagina.
Inizializza un server di gioco
I passaggi seguenti descrivono le interazioni che si verificano quando prepari il server di gioco per ospitare sessioni di gioco.
-
Amazon GameLift lancia il server eseguibile su un'istanza Amazon Elastic Compute Cloud (Amazon EC2).
-
Il server di gioco chiama:
-
InitSDK()
per inizializzare l'SDK del server. -
ProcessReady()
per comunicare la disponibilità della sessione di gioco, le informazioni sulla connessione e la posizione dei file di registro delle sessioni di gioco.
Il processo del server attende quindi una richiamata da Amazon. GameLift
-
-
Amazon GameLift aggiorna lo stato del processo del server per
ACTIVE
abilitare il posizionamento delle sessioni di gioco. -
Amazon GameLift inizia a chiamare il
onHealthCheck
callback e continua a chiamarlo periodicamente mentre il processo del server è attivo. Il processo del server può segnalare lo stato di integrità o meno entro un minuto.
Creare una sessione di gioco
Dopo aver inizializzato il server di gioco, quando crei sessioni di gioco per ospitare i tuoi giocatori si verificano le seguenti interazioni.
-
Il servizio di backend richiama l'operazione SDK.
StartGameSessionPlacement()
-
Amazon GameLift crea un nuovo
GameSessionPlacement
ticket con statusPENDING
e lo restituisce al servizio di backend. -
Il servizio di backend ottiene lo stato di un ticket di collocamento da una coda. Per ulteriori informazioni, consulta Imposta la notifica degli eventi per il posizionamento della sessione di gioco.
-
Amazon GameLift avvia il posizionamento delle sessioni di gioco selezionando una flotta appropriata e cercando un processo server attivo in una flotta con sessioni di
0
gioco. Quando Amazon GameLift individua un processo server, Amazon GameLift effettua le seguenti operazioni:-
Crea un
GameSession
oggetto con le impostazioni della sessione di gioco e i dati del giocatore dalla richiesta di piazzamento con unoACTIVATING
stato. -
Richiama il
onStartGameSession
callback sul processo del server. Amazon GameLift trasmette informazioni all'GameSession
oggetto indicando che il processo del server può configurare la sessione di gioco. -
Cambia il numero di sessioni di gioco del processo server in
1
.
-
-
Il processo del server esegue la funzione di
onStartGameSession
callback. Quando il processo del server è pronto ad accettare le connessioni dei giocatori, chiamaActivateGameSession()
e attende le connessioni dei giocatori. -
Amazon GameLift aggiorna l'
GameSession
oggetto con le informazioni di connessione per il processo del server. (Queste informazioni includono l'impostazione della porta che è stata segnalata conProcessReady()
.) Amazon modifica GameLift anche lo stato inACTIVE
. -
Il servizio di backend chiama
DescribeGameSessionPlacement()
per rilevare lo stato aggiornato del ticket. Il servizio di backend utilizza quindi le informazioni di connessione per connettere il client di gioco al processo del server e partecipare alla sessione di gioco.
Aggiungere un giocatore a una partita
Questa sequenza descrive il processo di aggiunta di un giocatore a una sessione di gioco esistente. Le sessioni dei giocatori possono anche essere richieste come parte di una richiesta di collocamento di una sessione di gioco.
-
Il servizio di backend richiama l'operazione API del client
CreatePlayerSession()
con un ID di sessione di gioco. -
Amazon GameLift verifica lo stato della sessione di gioco (deve essere
ACTIVE
) e cerca uno slot per giocatori aperto nella sessione di gioco. Se è disponibile uno slot, Amazon GameLift effettua le seguenti operazioni:-
Crea un nuovo
PlayerSession
oggetto e imposta lo stato suRESERVED
. -
Risponde alla richiesta del servizio di backend con l'oggetto.
PlayerSession
-
-
Il servizio di backend collega il client di gioco direttamente al processo del server con l'ID della sessione del giocatore.
-
Il server chiama l'operazione API del server
AcceptPlayerSession()
per convalidare l'ID della sessione del giocatore. Se convalidato, Amazon GameLift passa l'PlayerSession
oggetto al processo del server. Il processo server accetta o rifiuta la connessione. -
Amazon GameLift effettua una delle seguenti operazioni:
-
Se la connessione è accettata, Amazon GameLift imposta lo
PlayerSession
stato suACTIVE
. -
Se non viene ricevuta alcuna risposta entro 60 secondi dalla
CreatePlayerSession()
chiamata originale del server backend, Amazon GameLift modifica loPlayerSession
statoTIMEDOUT
e riapre lo slot del giocatore nella sessione di gioco.
-
Rimuovi un giocatore
Quando si rimuovono giocatori da una sessione di gioco per creare spazio per la partecipazione di nuovi giocatori, si verificano le seguenti interazioni.
-
Un giocatore si disconnette dal gioco.
-
Il server rileva la connessione persa e richiama l'operazione
RemovePlayerSession()
API del server. -
Amazon GameLift modifica lo
PlayerSession
statoCOMPLETED
e riapre lo slot del giocatore nella sessione di gioco.
Chiudi la sessione di gioco
Questa sequenza di interazioni si verifica quando un processo del server interrompe la sessione di gioco corrente.
-
Il server chiude la sessione di gioco e il server.
-
Il server chiama
ProcessEnding()
AmazonGameLift. -
Amazon GameLift fa quanto segue:
-
Carica i registri delle sessioni di gioco su Amazon Simple Storage Service (Amazon S3).
-
Cambia lo
GameSession
stato inTERMINATED
. -
Cambia lo stato del processo del server in
TERMINATED
. -
Ricicla le risorse delle istanze.
-