Aggiungi Amazon GameLift Servers al tuo server di gioco - Amazon GameLift Servers

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

Aggiungi Amazon GameLift Servers al tuo server di gioco

Questo argomento descrive come modificare il codice del server di gioco in modo che i processi del server di gioco possano comunicare con il Amazon GameLift Servers servizio. Utilizza queste istruzioni per i server di gioco che intendi implementare su EC2 flotte 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 lo stato dei processi del server e la sessione di gioco. Per informazioni dettagliate sulle interazioni tra i componenti della soluzione di hosting dei giochi (server di gioco, servizio di backend, client di gioco eAmazon GameLift Servers), consultaInterazioni client/server di gioco con Amazon GameLift Servers.

Per preparare il gioco per l'hosting, aggiungi l'SDK del server Amazon GameLift Servers al progetto del server di gioco. Se utilizzi il Amazon GameLift Servers plug-in per Unreal Engine o Unity, l'SDK del server è integrato e pronto per l'uso. Il Server SDK è disponibile in diverse lingue. Per ulteriori informazioni sul supporto degli strumenti per i server di gioco, incluso l'SDK del server, consulta. Ottieni strumenti Amazon GameLift Servers di sviluppo

Riferimenti alle API Server SDK:

Inizializza il processo del server

Aggiungi codice per stabilire una comunicazione con il Amazon GameLift Servers servizio e segnala 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.

  1. Inizializza un client Amazon GameLift Servers API InitSdk() chiamando. Se stai preparando il server di gioco per l'esecuzione su EC2 flotte Amazon GameLift Servers gestite, usa l'impostazione predefinita InitSDK()(C++) (C#) (Unreal) (Go) (C++) senza parametri. Il client API gestisce la connessione al servizio per te. Amazon GameLift Servers

    Se stai preparando il tuo server di gioco per l'uso su una flotta Amazon GameLift Servers Anywhere:

    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 della flotta contenente il tuo computer Amazon GameLift Servers Anywhere.

    • Il token di autorizzazione generato dall'Amazon GameLift Serversoperazione. GetComputeAuthToken

  2. Notifica al servizio che il processo del server di gioco è pronto per ospitare una sessione di gioco. Chiama ProcessReady() (C++) (C#) (Unreal) (Go) (C++) con quanto segue. ProcessParameters Ogni processo del server di gioco deve chiamare solo una volta. ProcessReady()

    • Il numero di porta per il processo 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 Amazon GameLift Servers salvi temporaneamente questi file sul computer in cui è in esecuzione il processo del server, questi file sono disponibili solo fino alla chiusura dell'istanza. È possibile accedere ai file archiviati tramite la Amazon GameLift Serversconsole o chiamando l'operazione Amazon GameLift Servers API GetGameSessionLogUrl().

      Se stai preparando il tuo server di gioco per l'uso su una flotta di container Amazon GameLift Servers gestita:

      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. È necessario implementare ognuna di queste funzioni nel codice del server di gioco. Per ulteriori informazioni, consulta ProcessParameters(C++) (C#) (Unreal) (Go) (C++)Unreal).

      • (Facoltativo)onHealthCheck: Amazon GameLift Servers chiama questa funzione regolarmente per richiedere un rapporto sullo stato di salute del 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 spegnersi correttamente.

      • (Facoltativo)onUpdateGameSession: Amazon GameLift Servers fornisce un oggetto della sessione di gioco aggiornato al server di gioco o fornisce un aggiornamento dello stato su una richiesta di ripristino della partita. La funzione di FlexMatchriempimento 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 Comunica con altre AWS risorse delle tue flotte.

(Facoltativo) Segnala lo stato dei processi 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 salute del processo del server. Ad esempio, è possibile segnalare che il processo del server non è integro se alcune dipendenze esterne non sono riuscite.

  • Completare la valutazione dello stato e rispondere alla richiamata entro 60 secondi. Se Amazon GameLift Servers non riceve una risposta entro tale lasso di tempo, considera automaticamente il processo del server non integro.

  • Restituisce un valore booleano: true per salutare, false per non salutare.

Se non implementi un callback per il controllo dello stato di salute, 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 a processi non integri e ripulire le risorse. Se un processo del server continua a essere segnalato come non integro o non risponde a tre controlli di integrità consecutivi, il servizio potrebbe arrestare il processo e avviarne uno nuovo. Il servizio raccoglie le metriche sullo stato dei processi del server di un parco macchine.

(Facoltativo) Ottieni un certificato TLS

Se il processo server è in esecuzione su una flotta in cui è attivata la generazione di certificati TLS, puoi recuperare il certificato TLS per stabilire una connessione sicura con un client di gioco e crittografare le comunicazioni client-server. Una copia del certificato viene archiviata nell'istanza. Per conoscere la posizione del file, chiamate GetComputeCertificate()(C++) (C#) (Unreal) (Go) (C++) (C#)Unreal).

Inizia 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 GameSessionoggetto 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 GameSession proprietà. 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 per accettare giocatori. Chiama l'operazione dell'API del server ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++)Unreal). 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 inizia 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++) 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 di una sessione di gioco

Se stai monitorando lo stato delle sessioni dei giocatori, aggiungi il codice per avvisare Amazon GameLift Servers quando un giocatore abbandona la sessione di gioco. Questo codice dovrebbe 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 codice, aggiungi una chiamata all'operazione dell'API del server RemovePlayerSession() (C++) (C#) (Unreal) (Go) (C++) di sessione del giocatore corrispondente.

Termina una sessione di gioco

Aggiungi codice alla sequenza di chiusura 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, chiudi ogni processo del server al termine della sessione di gioco.

All'avvio del codice di spegnimento del processo server, richiama l'operazione dell'API del server ProcessEnding()(C++) (C#) (Unreal) (Go) g (C++) (C#)Unreal). 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 di un processo del server

Aggiungi codice per arrestare il processo del server in risposta a una notifica del Amazon GameLift Servers servizio. Il servizio invia questa notifica quando il processo del server segnala costantemente che non è integro o se l'istanza in cui è in esecuzione il processo server viene interrotta. Amazon GameLift Serverspuò arrestare 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 fornisce 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 spegnimento, apporta le seguenti modifiche al codice del server di gioco: