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 Amazon GameLift, poiché 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 informato 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 client/server di gioco con Amazon GameLift.

Per preparare il tuo server di gioco all'interazione con Amazon GameLift, aggiungi Amazon GameLift Server SDK al tuo progetto di server di gioco e integra le funzionalità descritte in questo argomento. Il server SDK è disponibile in diverse lingue. Per ulteriori informazioni su Amazon GameLift ServerSDK, consultaOttieni gli strumenti di GameLift sviluppo di Amazon.

SDKAPIRiferimenti ai server:

Inizializza il processo del server

Aggiungi codice per stabilire una comunicazione con Amazon GameLift e per 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 GameLift API client Amazon InitSdk() chiamando. Per inizializzare un processo del server di gioco in esecuzione su un'EC2istanza GameLift gestita da Amazon, usa l'impostazione predefinita InitSDK()(C++) (C#) (Unreal) (Go) (C++) senza parametri. Amazon si connette GameLift automaticamente ad Amazon GameLift per te. Per inizializzare un processo del server di gioco in esecuzione su Amazon GameLift Anywhere risorsa di calcolo, chiama InitSdk() con quanto segue: ServerParameters

    • Il URL 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 GameLift flotta contenente il tuo Amazon GameLift Anywhere calcolare.

    • Il token di autorizzazione generato dall' GameLift operazione AmazonGetComputeAuthToken.

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

    • Il numero di porta utilizzato dal processo 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, ad esempio i registri delle sessioni di gioco, che vuoi 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 viene chiusa. Tutti i file che elenchi vengono caricati su Amazon GameLift. Puoi accedere a questi file tramite la GameLift console Amazon o chiamando l' GameLift APIoperazione Amazon GetGameSessionLogUrl().

    • I nomi delle funzioni di callback che Amazon GameLift può chiamare al processo del tuo server. Il tuo server di gioco deve implementare queste funzioni. Per ulteriori informazioni, consulta (C++) (C#) (Unreal) (Go) (C++)Unreal).

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

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

      • onProcessTerminate— Amazon GameLift impone l'interruzione del processo del server, lasciandolo spegnersi correttamente.

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

    Puoi anche configurare un server di gioco per accedere in modo sicuro alle 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 richiama periodicamente questo metodo di callback per raccogliere parametri sanitari. 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 non riceve una risposta entro tale termine, 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 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 integri e ripulire le risorse. Se un processo server continua a essere segnalato come non integro o non risponde a tre controlli di integrità consecutivi, Amazon GameLift potrebbe interrompere il processo e avviarne uno nuovo. Amazon GameLift raccoglie parametri sullo stato dei processi dei server di una flotta.

(Facoltativo) Richiedi un certificato TLS

Se il processo server è in esecuzione su una flotta in cui è attivata la generazione di TLS certificati, puoi recuperare il TLS certificato 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 ottenere la posizione del file, chiama GetComputeCertificate()(C++) (C#) (Unreal) (Go) (C++) (C#).

Inizia 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 per accettare giocatori. Chiama l'APIoperazione del server ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++)Unreal). In risposta a una chiamata riuscita, 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 il 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 di 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 slot 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) (Go) (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 di 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 notificare ad 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, aggiungi nel codice una chiamata all'APIoperazione 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 avvisare Amazon GameLift quando una sessione di gioco sta per terminare. 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, richiama l'APIoperazione del server ProcessEnding()(C++) (C#) (Unreal) (Go) g (C++) (Unreal). Questa chiamata notifica ad Amazon GameLift che il processo del server si sta chiudendo. 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.

Rispondi a una notifica di chiusura del processo del server

Aggiungi codice per arrestare il processo del server in risposta a una notifica di Amazon GameLift. Amazon GameLift 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 può interrompere un'istanza come parte di un evento di ridimensionamento della capacità o in risposta all'interruzione dell'istanza Spot.

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