Plugin per Unity: distribuisci il tuo gioco su flotte EC2 gestite - 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à.

Plugin per Unity: distribuisci il tuo gioco su flotte EC2 gestite

In questo flusso di lavoro, utilizzi il plug-in per preparare il gioco per l'hosting su risorse di elaborazione basate su cloud gestite da Amazon. GameLift Aggiungi il codice di gioco client e server per le GameLift funzionalità Amazon, quindi carica la build del server sul GameLift servizio Amazon per l'hosting. Una volta completato questo flusso di lavoro, avrai server di gioco in esecuzione nel cloud e un client di gioco funzionante in grado di connettersi ad essi.

Per avviare il flusso di lavoro Amazon EC2 GameLift gestito da Amazon:
  • Nel menu principale dell'editor Unity, scegli Amazon GameLift e seleziona Host with Managed EC2. Questo flusso di lavoro presenta un processo in sei fasi per integrare, creare, distribuire e avviare i componenti del gioco.

Imposta il tuo profilo

Scegli il profilo che desideri utilizzare quando segui questo flusso di lavoro. Il profilo selezionato influisce su tutte le fasi del flusso di lavoro. Tutte le risorse create sono associate all' AWS account del profilo e collocate nella AWS regione predefinita del profilo. Le autorizzazioni dell'utente del profilo determinano l'accesso alle AWS risorse e alle azioni.

  1. Seleziona un profilo dall'elenco a discesa dei profili disponibili. Se non hai ancora un profilo o desideri crearne uno nuovo, vai al GameLift menu Amazon e scegli Imposta profili AWS account.

  2. Se lo stato di bootstrap non è «Attivo», scegli il profilo Bootstrap e attendi che lo stato diventi «Attivo».

Integra il tuo gioco con Amazon GameLift

Per questo compito, aggiorni il codice del client e del server nel tuo progetto di gioco.

  • I server di gioco devono essere in grado di comunicare con il GameLift servizio Amazon per ricevere richieste di avvio di una sessione di gioco, fornire informazioni sulla connessione alla sessione di gioco e segnalare lo stato.

  • I client di gioco devono essere in grado di ottenere informazioni sulle sessioni di gioco, partecipare o avviare sessioni di gioco e ottenere informazioni di connessione per partecipare a una partita.

Nota

Se hai importato il gioco di esempio, puoi saltare questo passaggio. Le risorse del gioco di esempio dispongono già del codice server e client necessari.

Integra il codice del tuo server

Quando utilizzi il tuo progetto di gioco con scene personalizzate, usa il codice di esempio fornito per aggiungere il codice server richiesto al tuo progetto di gioco. Se hai integrato il tuo progetto di gioco per testarlo con una flotta Anywhere, hai già completato le istruzioni in questo passaggio.

  1. Nei file di progetto del gioco, apri la Assets/Scripts/Server cartella. Se non esiste, creala.

  2. Vai al GitHub repository aws/ amazon-gamelift-plugin-unity e apri il percorso. Samples~/SampleGame/Assets/Scripts/Server

  3. Individua il file GameLiftServer.cs e copialo nella cartella del tuo progetto di gioco. Server Quando crei un eseguibile sul server, usa questo file come obiettivo di compilazione.

Il codice di esempio include questi elementi minimi richiesti, che utilizzano l'SDK del server Amazon GameLift C# (versione 5):

  • Inizializza un client Amazon GameLift API. La chiamata initSDK () con i parametri del server è necessaria per una flotta Amazon GameLift Anywhere. Queste impostazioni vengono impostate automaticamente per l'uso nel plug-in.

  • Implementa le funzioni di callback richieste per rispondere alle richieste del GameLift servizio Amazon, tra cui OnStartGameSessionOnProcessTerminate, e. onHealthCheck

  • Chiamate ProcessReady() con una porta designata per notificare al GameLift servizio Amazon quando il processo del server è pronto per ospitare sessioni di gioco.

Se desideri personalizzare il codice server di esempio, consulta queste risorse:

Integra il codice del tuo cliente

Per i client di gioco che si connettono a server di gioco basati su cloud, è consigliabile utilizzare un servizio di backend lato client per effettuare chiamate al GameLift servizio Amazon, anziché effettuare le chiamate direttamente dal client di gioco.

Nel flusso di lavoro dei plug-in per l'hosting su una flotta EC2 gestita, ogni scenario di implementazione include un servizio di backend predefinito che include i seguenti componenti:

  • Un set di funzioni Lambda e tabelle DynamoDB utilizzate per richiedere sessioni di gioco e recuperare informazioni sulla sessione di gioco. Questi componenti utilizzano un gateway API come proxy.

  • Un pool di utenti Amazon Cognito che genera ID giocatore unici e autentica le connessioni dei giocatori.

Per utilizzare questi componenti, il client di gioco necessita della funzionalità necessaria per inviare richieste al servizio di backend per effettuare le seguenti operazioni:

  • Crea un utente giocatore nel pool di utenti di AWS Cognito ed esegui l'autenticazione.

  • Partecipa a una sessione di gioco e ricevi informazioni sulla connessione.

  • Partecipa a una partita usando matchmaking.

Utilizza le seguenti risorse come guida.

Seleziona lo scenario di implementazione

In questo passaggio, scegli la soluzione di hosting di giochi che desideri implementare in questo momento. Puoi avere più distribuzioni del gioco, utilizzando uno qualsiasi degli scenari.

  • Flotta a regione singola: distribuisce il server di gioco su un'unica flotta di risorse di hosting nella regione predefinita del profilo attivo. AWS Questo scenario è un buon punto di partenza per testare l'integrazione del server AWS e la configurazione della build del server. Implementa le seguenti risorse:

    • AWS fleet (On-Demand) con la build del server di gioco installata e funzionante.

    • Pool di utenti e client Amazon Cognito per consentire ai giocatori di autenticarsi e iniziare una partita.

    • Autorizzatore di gateway API che collega il pool di utenti alle API.

    • WebACL per limitare le chiamate eccessive dei giocatori al gateway API.

    • API gateway + funzione Lambda per consentire ai giocatori di richiedere uno slot di gioco. Questa funzione chiama CreateGameSession() se non ce ne sono disponibili.

    • API gateway + funzione Lambda per consentire ai giocatori di ottenere informazioni di connessione per la loro richiesta di gioco.

  • FlexMatch flotta: distribuisce il tuo server di gioco su una serie di flotte e configura un FlexMatch matchmaker con le regole per creare partite tra giocatori. Questo scenario utilizza un hosting Spot a basso costo con una struttura multi-flotta e più sedi per una disponibilità duratura. Questo approccio è utile quando sei pronto per iniziare a progettare un componente matchmaker per la tua soluzione di hosting. In questo scenario, creerai le risorse di base per questa soluzione, che potrai personalizzare in seguito, se necessario. Implementa le seguenti risorse:

    • FlexMatch configurazione del matchmaking e regole di matchmaking impostate per accettare le richieste dei giocatori e formare partite.

    • Tre AWS flotte con la configurazione del server di gioco installata e funzionante in più località. Include due flotte Spot e una flotta On-Demand come backup.

    • AWS coda per il posizionamento delle sessioni di gioco che soddisfa le richieste di partite proposte trovando la migliore risorsa di hosting possibile (in base a fattibilità, costo, latenza dei giocatori, ecc.) e avviando una sessione di gioco.

    • Pool di utenti e client Amazon Cognito per consentire ai giocatori di autenticarsi e iniziare una partita.

    • Autorizzatore di gateway API che collega il pool di utenti alle API.

    • WebACL per limitare le chiamate eccessive dei giocatori al gateway API.

    • API gateway + funzione Lambda per consentire ai giocatori di richiedere uno slot di gioco. Questa funzione chiamaStartMatchmaking().

    • API gateway + funzione Lambda per consentire ai giocatori di ottenere informazioni di connessione per la loro richiesta di gioco.

    • Tabelle Amazon DynamoDB per archiviare i ticket di matchmaking per i giocatori e le informazioni sulle sessioni di gioco.

    • Argomento SNS + funzione Lambda per GameSessionQueue gestire gli eventi.

Imposta i parametri di gioco

In questo passaggio, descrivi il gioco su cui caricarlo AWS .

  • Nome del gioco: fornisci un nome significativo per il tuo progetto di gioco. Questo nome viene utilizzato all'interno del plugin.

  • Nome della flotta: fornisci un nome significativo per la tua flotta EC2 gestita. Amazon GameLift utilizza questo nome (insieme all'ID della flotta) per elencare le risorse nella AWS console.

  • Nome build: fornisci un nome significativo per la build del tuo server. AWS usa questo nome per fare riferimento alla copia della build del tuo server caricata su Amazon GameLift e utilizzata per le distribuzioni.

  • Parametri di avvio: inserisci le istruzioni opzionali da eseguire all'avvio del server eseguibile su un'istanza gestita della flotta EC2. La lunghezza massima è di 1024 caratteri.

  • Cartella del server di gioco: fornisci il percorso di una cartella locale contenente la build del server.

  • File del server di gioco: specifica il nome del file eseguibile del server.

Scenario di distribuzione

In questo passaggio, distribuisci il gioco su una soluzione di hosting cloud in base allo scenario di implementazione scelto. Questo processo può richiedere diversi minuti per AWS la convalida della build del server, il provisioning delle risorse di hosting, l'installazione del server di gioco, l'avvio dei processi del server e la preparazione per ospitare sessioni di gioco.

Per iniziare la distribuzione, scegli Deploy. CloudFormation Puoi monitorare lo stato del tuo hosting di giochi qui. Per informazioni più dettagliate, puoi accedere alla console di AWS gestione AWS e visualizzare le notifiche degli eventi. Assicurati di accedere utilizzando lo stesso account, utente e AWS regione del profilo utente attivo nel plug-in.

Una volta completata la distribuzione, il server di gioco è installato su un'istanza AWS EC2. Almeno un processo server è in esecuzione ed è pronto per iniziare una sessione di gioco.

Avvia il client di gioco

Quando la tua flotta sarà dispiegata con successo, ora avrai dei server di gioco attivi e disponibili per ospitare sessioni di gioco. Ora puoi creare il tuo client, avviarlo, connetterti per partecipare alla sessione di gioco.

  1. Configura il tuo client di gioco. In questo passaggio, richiedi al plugin di aggiornare una GameLiftClientSettings risorsa per il tuo progetto di gioco. Il plug-in utilizza questa risorsa per memorizzare determinate informazioni di cui il client di gioco ha bisogno per connettersi al GameLift servizio Amazon.

    1. Se non hai importato e inizializzato il gioco di esempio, crea una nuova GameLiftClientSettings risorsa. Nel menu principale dell'editor di Unity, scegli Risorse, Crea GameLift, Impostazioni client. Se crei più copie del GameLiftClientSettings tuo progetto, il plugin lo rileva automaticamente e ti notifica quale risorsa verrà aggiornata dal plug-in.

    2. In Launch Game, scegli Configura client: applica impostazioni EC2 gestite. Questa azione aggiorna le impostazioni del client di gioco per utilizzare la flotta EC2 gestita che hai appena implementato.

  2. Crea il tuo client di gioco. Crea un eseguibile client utilizzando il processo di compilazione standard di Unity. In File, Build Settings, passa la piattaforma a Windows, Mac, Linux. Se hai importato il gioco di esempio e hai inizializzato le impostazioni, l'elenco delle build e l'obiettivo di build vengono aggiornati automaticamente.

  3. Avvia l'eseguibile del client di gioco di nuova build. Per iniziare a giocare, avvia da due a quattro istanze client e usa l'interfaccia utente di ciascuna per partecipare a una sessione di gioco.

Se utilizzi il client di gioco di esempio, ha le seguenti caratteristiche:

  • Un componente per il login del giocatore. Quando ci si connette a un server di gioco su una flotta Anywhere, non è prevista la convalida del giocatore. Puoi inserire qualsiasi valore per partecipare alla sessione di gioco.

  • Una semplice interfaccia utente di accesso al gioco. Quando un client tenta di partecipare a una partita, cerca automaticamente una sessione di gioco attiva con uno slot disponibile. Se non è disponibile alcuna sessione di gioco, il client richiede una nuova sessione di gioco. Se è disponibile una sessione di gioco, il client richiede di partecipare alla sessione di gioco disponibile. Quando provi il gioco con più client simultanei, il primo client avvia la sessione di gioco e i client rimanenti si uniscono automaticamente alla sessione di gioco esistente.

  • Sessioni di gioco con quattro slot per giocatori. Puoi avviare fino a quattro istanze del client di gioco contemporaneamente e queste si uniranno alla stessa sessione di gioco.