View a markdown version of this page

Plugin per Unity: distribuisci il tuo gioco su una flotta EC2 gestita - GameLift Server Amazon

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 una flotta EC2 gestita

In questo flusso di lavoro, utilizzi il plug-in per preparare il gioco all'hosting su risorse di calcolo basate su cloud gestite da. Amazon GameLift Servers Aggiungete il codice di gioco del client e del server per Amazon GameLift Servers aumentarne la funzionalità, quindi caricate la build del server nel Amazon GameLift Servers servizio di 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 GameLift Server Amazon flusso di lavoro Amazon EC2 gestito:
  • Nel menu principale dell'editor di Unity, scegli Amazon GameLift Servers e seleziona Host with Managed EC2. Questo flusso di lavoro presenta un processo in sei fasi per integrare, creare, distribuire e lanciare 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 sono 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 vuoi crearne uno nuovo, vai al Amazon GameLift Servers menu e scegli Imposta i profili AWS dell'account.

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

Integra il tuo gioco con GameLift Server Amazon

A tale scopo, 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 Amazon GameLift Servers servizio per ricevere richieste di avvio di una sessione di gioco, fornire informazioni sulla connessione della 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 sulla connessione per partecipare a una partita.

Nota

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

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 il test con una flotta Anywhere, hai già completato le istruzioni di questo passaggio.

  1. Nei file del tuo progetto di 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 file eseguibile sul server, usa questo file come destinazione di compilazione.

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

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

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

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

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

Integra il tuo codice 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 Amazon GameLift Servers servizio, invece di effettuare chiamate direttamente dal client di gioco.

Nel flusso di lavoro dei plugin 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 sulle sessioni di gioco. Questi componenti utilizzano un gateway API come proxy.

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

Per utilizzare questi componenti, il tuo client di gioco necessita della funzionalità 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 le informazioni di connessione.

  • Partecipa a una partita usando il matchmaking.

Usa le seguenti risorse come guida.

(Solo Unity 6.3+) Integra lo script install.sh

Unity 6.3 su Linux richiede glibc 2.35. Amazon Linux 2023 include glibc 2.34. Viene fornito uno script install.sh che gestisce la compilazione di glibc 2.35 dai sorgenti e la configurazione dei binari di Unity per l'utilizzo di glibc 2.35.

  1. Vai al repository -gamelift-plugin-unity e apri il GitHub percorso aws/amazon. ExtraServerResources

  2. Individua il file install.sh e copialo nella cartella contenente la build del tuo server.

  3. Se ne hai già unoinstall.sh, unisci i contenuti di entrambi gli script in uno solo. install.sh

Seleziona lo scenario di distribuzione

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

  • Single-region flotta: distribuisce il tuo server di gioco su un'unica flotta di risorse di hosting nella regione predefinita AWS del profilo attivo. 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 è disponibile.

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

  • FlexMatch flotta: distribuisce il server di gioco su una serie di flotte e configura un FlexMatch matchmaker con regole per creare partite tra giocatori. Questo scenario utilizza un hosting Spot a basso costo con una struttura con più flotte 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 le partite.

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

    • AWS coda di piazzamento delle sessioni di gioco che soddisfa le richieste di proposte di abbinamento trovando la migliore risorsa di hosting possibile (in base alla fattibilità, al costo, alla latenza del giocatore, 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().

    • Gateway API + 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 gestire gli eventi. GameSessionQueue

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 Serversutilizza questo nome (insieme all'ID della flotta) quando elenca le risorse nella AWS console.

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

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

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

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

Scenario di distribuzione

In questa fase, distribuisci il gioco su una soluzione di hosting cloud in base allo scenario di distribuzione che hai scelto. Questo processo può richiedere diversi minuti per AWS convalidare la build del server, fornire le risorse di hosting, installare il server di gioco, avviare i processi del server e prepararli per ospitare sessioni di gioco.

Per iniziare la distribuzione, scegli Implementa. CloudFormation Puoi monitorare lo stato del tuo hosting di gioco 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 del server è in esecuzione e pronto per iniziare una sessione di gioco.

Avvia il client di gioco

Una volta schierata con successo la tua flotta, ora hai 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 plug-in di aggiornare una GameLiftClientSettings risorsa per il tuo progetto di gioco. Il plugin utilizza questa risorsa per memorizzare alcune informazioni di cui il client di gioco ha bisogno per connettersi al Amazon GameLift Servers servizio.

    1. Se non hai importato e inizializzato il gioco di esempio, crea una nuova GameLiftClientSettings risorsa. Nel menu principale dell'editor di Unity, scegli Assets, Create, Amazon GameLift, Client Settings. Se crei più copie del GameLiftClientSettings tuo progetto, il plug-in lo rileva automaticamente e ti avvisa quale risorsa aggiornerà il plug-in.

    2. In Launch Game, scegli Configura client: applica le 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 client eseguibile 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 il target di build vengono aggiornati automaticamente.

  3. Avvia il file eseguibile del client di gioco appena compilato. Per iniziare a giocare, avvia da due a quattro istanze client e utilizza l'interfaccia utente di ciascuna per partecipare a una sessione di gioco.

Se stai usando 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 viene effettuata alcuna convalida del giocatore. Puoi inserire qualsiasi valore per partecipare alla sessione di gioco.

  • Una semplice interfaccia utente per partecipare al gioco. Quando un cliente tenta di partecipare a una partita, cerca automaticamente una sessione di gioco attiva con uno slot disponibile per i giocatori. Se non è disponibile alcuna sessione di gioco, il cliente richiede una nuova sessione di gioco. Se è disponibile una sessione di gioco, il cliente 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 slot per quattro giocatori. Puoi avviare fino a quattro istanze del client di gioco contemporaneamente e tutte si uniranno alla stessa sessione di gioco.