Aggiungi Amazon GameLift al tuo server di gioco - 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à.

Aggiungi Amazon GameLift al tuo server di gioco

Il tuo server di gioco personalizzato deve comunicare con AmazonGameLift, perché ogni processo del server di gioco deve essere in grado di rispondere agli eventi GameLift avviati da Amazon. Il tuo server di gioco deve inoltre tenere Amazon GameLift informata sullo stato del processo del server e sulle connessioni dei giocatori. Per ulteriori informazioni su come il server di gioco, il servizio di backend, il client di gioco e Amazon GameLift collaborano per gestire l'hosting dei giochi, consultaInterazioni GameLift tra Amazon e il server client di gioco.

Per preparare il tuo server di gioco a interagire con AmazonGameLift, aggiungi Amazon GameLift Server SDK al progetto del server di gioco e integra le funzionalità descritte in questo argomento. Il Server SDK è disponibile in diverse lingue. Per ulteriori informazioni su Amazon GameLift Server SDK, consultaSupporto allo sviluppo con Amazon GameLift.

Riferimenti API SDK del server:

Inizializza il processo del server

Aggiungi codice per stabilire una comunicazione con Amazon GameLift e segnalare che il processo del server è pronto per ospitare una sessione di gioco. Questo codice deve essere eseguito prima di qualsiasi GameLift codice Amazon.

  1. Inizializza il client Amazon GameLift API InitSdk() chiamando. Per inizializzare un processo server su una risorsa di GameLift Anywhere elaborazione Amazon, chiama InitSdk() con quanto segue: ServerParameters

    • L'URL del websocket utilizzato per connettersi al server di gioco.

    • L'ID del processo utilizzato per ospitare il tuo server di gioco.

    • L'ID del computer che ospita i processi del server di gioco.

    • L'ID del GameLift parco veicoli contenente i tuoi dati di GameLift Anywhere calcolo Amazon.

    • Il token di autorizzazione generato dall'GameLiftoperazione Amazon. GetComputeAuthToken

  2. Notifica ad Amazon GameLift che un processo del server è pronto per ospitare una sessione di gioco. Chiama ProcessReady() (C++) (C#) (Unreal) (C++) con le seguenti informazioni. (Nota che dovresti chiamare ProcessReady() solo una volta per processo del server).

    • Il numero di porta utilizzato dal processo del server. Il servizio di backend fornisce il numero di porta e un indirizzo IP ai client di gioco per connettersi al processo del server e partecipare a una sessione di gioco.

    • La posizione dei file, come i registri delle sessioni di gioco, che desideri che Amazon GameLift conservi. Il processo del server genera questi file durante una sessione di gioco. Vengono temporaneamente archiviati nell'istanza in cui è in esecuzione il processo del server e vengono persi quando l'istanza si spegne. Tutti i file che elenchi vengono caricati su AmazonGameLift. Puoi accedere a questi file tramite la GameLiftconsole Amazon o chiamando l'operazione Amazon GameLift API GetGameSessionLogUrl().

    • I nomi delle funzioni di callback che Amazon GameLift può richiamare sul tuo processo server. Il tuo server di gioco deve implementare queste funzioni. Per ulteriori informazioni, vedere (C++) (C#) (Unreal) (C++)Unreal).

      • (Facoltativo)onHealthCheck: Amazon GameLift chiama questa funzione regolarmente per richiedere un rapporto sullo stato di salute dal server.

      • onStartGameSession— Amazon GameLift chiama questa funzione in risposta alla richiesta del client CreateGameSession().

      • onProcessTerminate— Amazon GameLift forza l'interruzione del processo del server, lasciandolo chiudere correttamente.

      • (Facoltativo)onUpdateGameSession: Amazon GameLift fornisce un oggetto della sessione di gioco aggiornato al server di gioco o fornisce un aggiornamento sullo stato di una richiesta di backfill della partita. La funzione di FlexMatchbackfill richiede questo callback.

    Puoi anche configurare un server di gioco per accedere in modo sicuro alle AWS risorse che possiedi o che controlli. Per ulteriori informazioni, consulta Comunica con altre AWS risorse delle tue flotte.

(Facoltativo) Stato dei processi del server di report

Aggiungi codice al tuo server di gioco per implementare la funzione di callback. onHealthCheck() Amazon GameLift richiama periodicamente questo metodo di callback per raccogliere i parametri sanitari. Per implementare questa funzione di callback, procedi come segue:

  • Valuta lo stato di salute del processo del server. Ad esempio, potresti segnalare il processo del server come non integro se le dipendenze esterne non sono riuscite.

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

  • Restituisce un valore booleano: vero per sano, falso per malsano.

Se non implementi un callback per il controllo dello stato, Amazon GameLift considera il processo del server integro a meno che il server non risponda.

Amazon GameLift utilizza l'integrità dei processi del server per porre fine a processi non sani e ripulire le risorse. Se un processo del server continua a essere segnalato come non integro o non risponde per tre controlli di integrità consecutivi, Amazon GameLift potrebbe interrompere il processo e avviarne uno nuovo. Amazon GameLift raccoglie le metriche sullo stato dei processi dei server di un parco veicoli.

(Facoltativo) Ottieni un certificato TLS

Se il processo server è in esecuzione su un parco macchine 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 tra server client. Una copia del certificato viene archiviata nell'istanza. Per ottenere la posizione del file, chiama GetComputeCertificate()(C++) (C#) (Unreal) (C++)Unreal).

Avvia una sessione di gioco

Aggiungere il codice per implementare la funzione di richiamata onStartGameSession. Amazon GameLift richiama questo callback per avviare una sessione di gioco sul 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 Amazon GameLift quando una nuova sessione di gioco è pronta ad accettare giocatori. Chiama l'operazione dell'API del server ActivateGameSession()(C++) (C#) (Unreal) (C++)Unreal). In risposta a una chiamata andata a buon fine, Amazon GameLift modifica lo stato della sessione di gioco inACTIVE.

(Facoltativo) Convalida un nuovo giocatore

Se stai monitorando lo stato delle sessioni dei giocatori, aggiungi un codice per convalidare un nuovo giocatore quando si connette a un server di gioco. Amazon GameLift tiene traccia dei giocatori attuali e degli slot disponibili per le sessioni di gioco.

Per la convalida, un client di gioco che richiede l'accesso alla sessione di gioco deve includere un ID della sessione del giocatore. Amazon genera GameLift automaticamente questo ID quando un giocatore chiede di partecipare a una partita utilizzando StartGameSessionPlacement() o StartMatchmaking(). La sessione del giocatore riserva quindi uno spazio libero in una sessione di gioco.

Quando il processo del server di gioco riceve una richiesta di connessione al client di gioco, chiama AcceptPlayerSession() (C++) (C#) (Unreal) (C++) della sessione del giocatore. In risposta, Amazon GameLift verifica che l'ID della sessione del giocatore corrisponda a uno slot aperto riservato nella sessione di gioco. Dopo che Amazon ha GameLift 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 non convalida l'ID della sessione del giocatore, il processo del server nega la connessione.

(Facoltativo) Segnala la fine di una sessione con un giocatore

Se stai monitorando lo stato delle sessioni dei giocatori, aggiungi un codice per avvisare Amazon GameLift quando un giocatore abbandona la sessione di gioco. Questo codice deve essere eseguito ogni volta che il processo del server rileva un'interruzione della connessione. Amazon GameLift utilizza 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 API del server RemovePlayerSession() (C++) (C#) (Unreal) (C++) della sessione del giocatore corrispondente.

Termina una sessione di gioco

Aggiungi codice alla sequenza di spegnimento del processo del server per avvisare Amazon GameLift quando termina una sessione di gioco. Per riciclare e aggiornare le risorse di hosting, Amazon GameLift interrompe i processi del server al termine della sessione di gioco.

All'avvio del codice di spegnimento del processo server, chiama l'operazione API del server ProcessEnding()(C++) (C#) (Unreal) (C++) (C#) (Unreal. Questa chiamata avvisa Amazon GameLift che il processo del server si sta spegnendo. Amazon GameLift modifica lo stato della sessione di gioco e lo stato del processo del server inTERMINATED. Dopo la chiamataProcessEnding(), è sicuro che il processo si interrompa.

Rispondere a una notifica di arresto del processo del server

Aggiungi codice per interrompere il processo del server in risposta a una notifica di AmazonGameLift. Amazon GameLift invia questa notifica quando il processo del server segnala costantemente problemi di integrità o se l'istanza in cui è in esecuzione il processo del server viene interrotta. Amazon GameLift può interrompere un'istanza come parte di un evento di riduzione della capacità o in risposta all'interruzione di un'istanza Spot.

Per gestire una notifica di spegnimento, apporta le seguenti modifiche al codice del server di gioco:

  • Implementare la funzione di richiamo onProcessTerminate(). Questa funzione dovrebbe richiamare il codice che arresta il processo del server. Quando Amazon GameLift richiama questa operazione, le interruzioni delle istanze Spot forniscono un preavviso di due minuti. Questo avviso dà al server il tempo necessario per disconnettere i giocatori con garbo, preservare i dati sullo stato del gioco ed eseguire altre attività di pulizia.

  • Richiama l'operazione dell'API del server GetTerminationTime() (C++) (C#) (Unreal) (C++) dal codice di spegnimento del server di gioco. Se Amazon GameLift ha effettuato una chiamata per interrompere il processo del server, GetTerminationTime() restituisce il tempo di terminazione stimato.

  • All'inizio del codice di spegnimento del server di gioco, chiama l'operazione API del server ProcessEnding()(C++) (C#) (Unreal) (C++) (C#) (Unreal. Questa chiamata notifica ad Amazon GameLift che il processo del server si sta spegnendo e Amazon modifica GameLift quindi lo stato del processo del server in. TERMINATED Dopo la chiamataProcessEnding(), è sicuro che il processo si interrompa.