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à.
Add (Aggiungi) GameLift Server Amazon al tuo server di gioco con il server SDK
Questo argomento fornisce indicazioni generali sulla funzionalità SDK del server da aggiungere al codice del server di gioco/Questa funzionalità consente ai processi del server di gioco di comunicare con il servizio. Amazon GameLift Servers Usa queste istruzioni per i server di gioco che intendi installare su flotte EC2 Amazon GameLift Servers gestite, flotte di container gestite o flotte Anywhere.
I processi del server di gioco comunicano con il Amazon GameLift Servers servizio per ricevere istruzioni dal servizio e per segnalare l'integrità dei processi del server e lo stato della sessione di gioco. Per informazioni dettagliate sulle interazioni tra i componenti della soluzione di hosting di giochi (server di gioco, servizio di backend, client di gioco eAmazon GameLift Servers), consultaclient/server Interazioni di gioco con GameLift Server Amazon.
Scarica l'SDK del server
Per preparare il gioco per l'hosting, aggiungi l'SDK per il server Amazon GameLift Servers al tuo progetto di server di gioco. Il Server SDK è disponibile in diverse lingue. Per ulteriori informazioni sul supporto degli strumenti per i server di gioco, incluso il server SDK, consulta. Get GameLift Server Amazon strumenti di sviluppo
Scarica l'SDK del server per il tuo linguaggio di sviluppo da github. com/amazon
Nota
Se stai sviluppando utilizzando Unreal Engine o Unity, scarica il Amazon GameLift Servers plug-in per questi motori di gioco. L'SDK del server è integrato e pronto all'uso. Per ulteriori informazioni, consulta questi link:
-
Unreal Engine (scarica il plug-in
) (guida Integra GameLift Server Amazon in un progetto Unreal Engine all'integrazione) -
Unity (scarica il plugin
) (Guida all'integrazione Guida all'integrazione)
Riferimenti alle API Server SDK:
Inizializza il processo del server
Aggiungi codice per stabilire una comunicazione con il Amazon GameLift Servers servizio e segnalare quando il processo del server di gioco è pronto per ospitare una sessione di gioco. Questo codice deve essere eseguito prima di qualsiasi Amazon GameLift Servers codice.
-
Inizializza un client Amazon GameLift Servers API
InitSdk()chiamando. Se stai preparando il tuo server di gioco per funzionare su flotte EC2 Amazon GameLift Servers gestite, usa l'impostazione predefinitaInitSDK()(C++) (C#) (Unreal) (Go) (C++) (C#) . Il client API gestisce la connessione al servizio per te. Amazon GameLift ServersSe stai preparando il tuo server di gioco per l'utilizzo su un GameLift Server Amazon Flotta ovunque:
Inizializza il client Amazon GameLift Servers API chiamando
InitSdk()con quanto segue:ServerParameters-
L'URL del websocket utilizzato per connettersi al server di gioco.
-
L'ID del processo utilizzato per ospitare il server di gioco.
-
L'ID del computer che ospita i processi del server di gioco.
-
L'ID del parco macchine contenente il tuo computer Amazon GameLift Servers Anywhere.
-
Il token di autorizzazione generato dall'Amazon GameLift Serversoperazione.
GetComputeAuthToken
-
-
Notifica al servizio che il processo del server di gioco è pronto per ospitare una sessione di gioco. Chiama
ProcessReady()(C++) (C#) (Unreal) (Go) (C++)ProcessParametersOgni processo del server di gioco deve chiamare una sola volta.ProcessReady()-
Il numero di porta per il processo del server. Quando il processo server avvia una sessione di gioco, fornisce la porta al Amazon GameLift Servers servizio, che aggiorna le informazioni sulla sessione di gioco. Il gioco può recuperare queste informazioni e fornirle ai client di gioco, che le utilizzano per connettersi al processo del server e partecipare alla sessione di gioco.
-
Le posizioni dei file che desideri Amazon GameLift Servers archiviare per te. Questi potrebbero includere i registri delle sessioni di gioco e altri file generati dal processo del server durante una sessione di gioco. Sebbene questi file vengano Amazon GameLift Servers salvati temporaneamente sul computer su cui è in esecuzione il processo server, sono disponibili solo fino alla chiusura dell'istanza. È possibile accedere ai file archiviati tramite la Amazon GameLift Servers console
o chiamando l'operazione Amazon GameLift Servers API GetGameSessionLogUrl (). Se stai preparando il tuo server di gioco per l'utilizzo su un GameLift Server Amazon flotta di container gestiti:
Non è necessario specificare i parametri di registro per una flotta di container. Invia invece la sessione di gioco e altri dati di registro allo standard output. Le flotte di container acquisiscono automaticamente tutti gli output standard dei container come flusso di log.
-
Le seguenti funzioni di callback che consentono di Amazon GameLift Servers inviare messaggi o prompt a un processo del server di gioco. Devi implementare ognuna di queste funzioni nel codice del tuo server di gioco. Per ulteriori informazioni, vedi
ProcessParameters(C++) (C#) (Unreal) (Go) (C++) .-
(Facoltativo)
onHealthCheck: Amazon GameLift Servers chiama questa funzione regolarmente per richiedere un rapporto sullo stato di salute dal server. -
onStartGameSession— Amazon GameLift Servers chiama questa funzione in risposta alla richiesta del client CreateGameSession (). -
onProcessTerminate— Amazon GameLift Servers forza l'arresto del processo del server, lasciandolo chiudere correttamente. -
(Facoltativo)
onUpdateGameSession: Amazon GameLift Servers invia un oggetto della sessione di gioco aggiornato al server di gioco o fornisce un aggiornamento dello stato su una richiesta di risposta di una partita. La funzione di FlexMatch backfill richiede questo callback.
-
Puoi anche configurare un server di gioco in modo che possa accedere in modo sicuro ad altre AWS risorse che possiedi o controlli. Per ulteriori informazioni, consulta Collega il tuo GameLift Server Amazon server di gioco ospitato su altro AWS risorse.
-
(Facoltativo) Segnala lo stato del processo del server
Aggiungi codice al tuo server di gioco per implementare la funzione onHealthCheck() di callback. Amazon GameLift Serversrichiama periodicamente questo metodo di callback per raccogliere metriche sullo stato di salute. Per implementare questa funzione di callback, procedi come segue:
-
Valuta lo stato di integrità del processo del server. Ad esempio, è possibile segnalare il processo del server come non integro se alcune dipendenze esterne hanno avuto esito negativo.
-
Completare la valutazione dello stato e rispondere alla richiamata entro 60 secondi. Se Amazon GameLift Servers non riceve una risposta entro tale termine, considera automaticamente il processo server non integro.
-
Restituisce un valore booleano: true per sano, falso per non sano.
Se non si implementa un callback per il controllo dello stato, Amazon GameLift Servers considera il processo del server integro a meno che il server non risponda.
Il Amazon GameLift Servers servizio utilizza l'integrità dei processi del server per porre fine ai processi non integri e cancellare le risorse. Se un processo server continua a essere segnalato come non integro o non risponde per tre controlli di integrità consecutivi, il servizio potrebbe arrestare il processo e avviarne uno nuovo. Il servizio raccoglie metriche sullo stato dei processi server di una flotta.
(Facoltativo) Ottieni un certificato TLS
Se il processo server è in esecuzione su una flotta in cui è attivata la generazione del certificato TLS, puoi recuperare il certificato TLS per stabilire una connessione sicura con un client di gioco e crittografare le comunicazioni tra client e server. Una copia del certificato viene archiviata nell'istanza. Per ottenere la posizione del file, chiama GetComputeCertificate() (C++) (C#) (Unreal) (Go) (C++) (C#)
Avvia una sessione di gioco
Aggiungi codice per implementare la funzione di callback. onStartGameSession Amazon GameLift Serversrichiama questo callback per avviare una sessione di gioco sul processo del server.
La onStartGameSession funzione accetta un GameSession oggetto come parametro di input. Questo oggetto include informazioni chiave sulla sessione di gioco, come il numero massimo di giocatori. Può anche includere dati di gioco e dati dei giocatori. L'implementazione della funzione dovrebbe svolgere le seguenti attività:
-
Avvia azioni per creare una nuova sessione di gioco in base alle
GameSessionproprietà. Come minimo, il server di gioco deve associare l'ID della sessione di gioco, a cui fanno riferimento i client di gioco quando si connettono al processo del server. -
Elabora i dati di gioco e i dati dei giocatori secondo necessità. Questi dati si trovano nell'
GameSessionoggetto. -
Avvisa il Amazon GameLift Servers servizio quando una nuova sessione di gioco è pronta ad accettare giocatori. Chiama l'operazione API del server
ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++) In risposta a una chiamata riuscita, il servizio modifica lo stato della sessione di gioco in.ACTIVE
(Facoltativo) Convalida un nuovo giocatore
Se stai monitorando lo stato delle sessioni dei giocatori, aggiungi il codice per convalidare un nuovo giocatore quando si connette a un server di gioco. Amazon GameLift Serverstiene traccia dei giocatori attuali e degli slot disponibili per le sessioni di gioco.
Per la convalida, un client di gioco che tenta di partecipare a una sessione di gioco deve includere un ID di sessione del giocatore. Amazon GameLift Serversgenera questo ID quando il gioco avvia nuove sessioni di gioco chiamando StartGameSessionPlacement () o StartMatchmaking (). Su queste richieste, uno slot libero in una sessione di gioco è riservato alla sessione del giocatore.
Quando il processo del server di gioco riceve una richiesta di connessione al client di gioco, chiama AcceptPlayerSession() (C++) (C#) (Unreal) (Go) (C++) con l'ID della sessione del giocatore. In risposta, Amazon GameLift Servers verifica che l'ID della sessione del giocatore corrisponda a uno slot aperto riservato nella sessione di gioco. Dopo aver Amazon GameLift Servers convalidato l'ID della sessione del giocatore, il processo del server accetta la connessione. Il giocatore può quindi partecipare alla sessione di gioco. Se Amazon GameLift Servers non convalida l'ID della sessione del giocatore, il processo del server nega la connessione.
(Facoltativo) Segnala la fine della sessione di un giocatore
Se stai monitorando lo stato delle sessioni dei giocatori, aggiungi un codice per notificare Amazon GameLift Servers quando un giocatore abbandona la sessione di gioco. Questo codice deve essere eseguito ogni volta che il processo del server rileva una connessione interrotta. Amazon GameLift Serversutilizza questa notifica per tenere traccia dei giocatori attuali e degli slot disponibili nella sessione di gioco.
Per gestire le connessioni interrotte nel tuo codice, aggiungi una chiamata all'operazione API del server RemovePlayerSession() (C++) (C#) (Unreal) (Go) (C++) con l'ID di sessione del giocatore corrispondente.
Termina una sessione di gioco
Aggiungi codice alla sequenza di spegnimento del processo del server per notificare Amazon GameLift Servers quando una sessione di gioco sta per terminare. Per riciclare e aggiornare le risorse di hosting, interrompi ogni processo del server al termine della sessione di gioco.
All'inizio del codice di arresto del processo del server, richiama l'operazione API del server ProcessEnding() (C++) (C#) (Unreal) (Go) (C++) (C#) Questa chiamata notifica Amazon GameLift Servers che il processo del server si sta chiudendo. Amazon GameLift Serversmodifica lo stato della sessione di gioco e lo stato del processo del server in. TERMINATED Dopo la chiamataProcessEnding(), è sicuro che il processo si interrompa.
Rispondi a una notifica di chiusura del processo del server
Aggiungi il codice per chiudere il processo del server in risposta a una notifica del Amazon GameLift Servers servizio. Il servizio invia questa notifica quando il processo server segnala costantemente che non è integro o se l'istanza in cui il processo server è in esecuzione viene interrotta. Amazon GameLift Serverspuò interrompere un'istanza come parte di un evento di riduzione della capacità o in risposta all'interruzione dell'istanza Spot. Un'interruzione di un'istanza Spot prevede un preavviso di due minuti, che dà al server il tempo necessario per disconnettere correttamente i giocatori, conservare i dati sullo stato del gioco ed eseguire altre attività di pulizia.
Per gestire una notifica di chiusura, apporta le seguenti modifiche al codice del server di gioco:
-
Implementa la funzione di callback
onProcessTerminate()(C++) (C#) (Unreal) (Go) (C++) Questa funzione dovrebbe richiamare il codice che arresta il processo del server. -
Richiama l'operazione API del server
GetTerminationTime()(C++) (C#) (Unreal) (Go) (C++) dal codice di chiusura del server di gioco. Se Amazon GameLift Servers ha effettuato una chiamata per interrompere il processo del server, restituisce il tempo di terminazione stimato.GetTerminationTime() -
All'inizio del codice di spegnimento del server di gioco, richiama l'operazione API del server
ProcessEnding()(C++) (C#) (Unreal) (Go) (C++) (C#) Questa chiamata avvisa il servizio Amazon GameLift Servers che il processo del server è in fase di arresto. Il servizio modifica quindi lo stato del processo del server in.TERMINATEDDopo la chiamataProcessEnding(), è sicuro che il processo si interrompa.