View a markdown version of this page

Plugin per Unreal: distribuisci il tuo gioco su una flotta di container 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 Unreal: distribuisci il tuo gioco su una flotta di container gestita

Usa questo flusso di lavoro guidato del plug-in per creare un'immagine del contenitore per il tuo server di gioco e distribuirla su una soluzione di hosting basata su container. Se non hai ancora integrato il codice del gioco, consulta. Plugin per Unreal: integra il tuo codice di gioco Una volta completato con successo questo flusso di lavoro, il server di gioco containerizzato è in esecuzione nel cloud e puoi utilizzare il plug-in per avviare un client di gioco, connetterti a una sessione di gioco e giocare.

Prima di iniziare

Questo flusso di lavoro presuppone che tu abbia completato le seguenti attività.

  • Integra il codice del server di gioco con l'SDK Amazon GameLift Servers del server. Il server di gioco ospitato deve essere in grado di comunicare con il Amazon GameLift Servers servizio in modo che possa rispondere alle richieste di avvio di nuove sessioni di gioco e segnalare lo stato della sessione di gioco. Se non hai completato questa operazione, ti consigliamo di seguire prima il flusso di lavoro del plugin Host with Anywhere. Per indicazioni su come preparare il codice del server di gioco, consultaAggiorna il codice del server di gioco. Per una flotta di container gestita, devi integrare il gioco con l'SDK del server versione 5.2 o successiva.

    Nota

    Se stai usando la mappa di avvio del gioco, questa operazione è già stata eseguita per te.

  • Crea un pacchetto eseguibile per il tuo server di gioco in modo che funzioni su Linux. Se stai sviluppando su Windows e integri C++ server SDK versione 5.2.x o precedente, dovrai utilizzare la toolchain di cross-compilazione Unreal per la tua versione UE sul sito Web della documentazione per gli sviluppatori di Epic Games. In alternativa, puoi configurare uno spazio di lavoro Linux separato o utilizzare uno strumento come Windows Subsystem for Linux (WSL).

  • Raccogli i file da distribuire con la build del tuo server di gioco. Sul tuo computer locale, crea una directory di lavoro per organizzare i file, che verrà incorporata nell'immagine del contenitore del tuo server di gioco. Questi potrebbero includere dipendenze di gioco, uno script per avviare i server di gioco e altri processi all'avvio di un contenitore, ecc.

  • Aggiungi i file della libreria OpenSSL per la build del tuo server di gioco. Puoi saltare questo passaggio se il tuo server di gioco è integrato con il server SDK 5.3 o successivo.

    Individua e copia manualmente le librerie OpenSSL nella cartella del pacchetto di build del gioco all'indirizzo. <YourGame>/Binaries/Win64 È necessario utilizzare la stessa versione di OpenSSL utilizzata nella versione di Unreal Engine 5. Le build di gioco distribuite con le librerie OpenSSL sbagliate non saranno in grado di comunicare con il servizio. Amazon GameLift Servers

    Per trovare le librerie OpenSSL, cerca nel codice sorgente del tuo motore di gioco. La posizione varia a seconda dell'ambiente di sviluppo:

    In Windows:

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll

    In Linux:

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1

  • Integra il codice del tuo client di gioco conAmazon GameLift Servers. Un modo per completare questa operazione è aggiungere una risorsa di esempio (inclusa nel plug-in) già integrata. Per indicazioni su come preparare il codice del client di gioco, consultaIntegra la mappa di gioco del tuo cliente.

  • Installa Docker sul tuo computer locale. È necessario che questo strumento sia installato se desideri che il plug-in crei immagini del contenitore per te e le invii a un repository ECR. In alternativa, puoi eseguire queste attività manualmente e indicare al plug-in di utilizzare un'immagine del contenitore esistente. Per ulteriori informazioni sulla creazione manuale dell'immagine, consultaCrea un'immagine del contenitore per Amazon GameLift Servers.

Per iniziare GameLift Server Amazon flusso di lavoro con contenitori gestiti:
  • Nella barra degli strumenti principale dell'editor Unreal, scegli il Amazon GameLift Servers menu e seleziona Contenitori gestiti. Questa azione apre la pagina del plugin Host with Managed Containers, che presenta una procedura dettagliata per creare un'immagine del contenitore con la build del server di gioco, distribuirla su una flotta di container e lanciare il gioco.

Fase 0: Imposta il tuo profilo

Questa sezione mostra il profilo utente attualmente selezionato. Verifica che il profilo utente corrente sia quello che desideri utilizzare per questo flusso di lavoro. Tutte le risorse create in questo flusso di lavoro 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.

Potrebbe essere necessario modificare il profilo utente selezionato se:

  • Al momento non è selezionato alcun profilo.

  • Vuoi selezionare un profilo diverso o creare un nuovo profilo.

  • È necessario eseguire il bootstrap del profilo selezionato (se lo stato di bootstrap è inattivo).

Per impostare o modificare il profilo utente selezionato
  • Nel Amazon GameLift Servers menu, scegli Open AWS Access Credentials.

Fase 1: Valuta la disponibilità dei contenitori

Prima di distribuire il tuo server di gioco su una flotta di container, devi impacchettarlo in un'immagine del container e archiviarlo in un repository Amazon ECR. Il plugin può completare queste attività per te oppure puoi eseguirle manualmente. In questo passaggio, fornisci informazioni sullo stato dell'immagine del contenitore e del repository ECR.

Usa le domande di valutazione per indicare al plugin quali misure deve intraprendere:

  • Crea una nuova immagine del contenitore. Se scegli questa opzione, il passaggio successivo ti chiederà la posizione della directory di build del server di gioco e dell'eseguibile di build. Il plugin utilizza un modello Dockerfile (fornito daAmazon GameLift Servers) e lo configura automaticamente per il tuo gioco. Puoi visualizzare il modello all'indirizzo. Crea un'immagine del contenitore per Amazon GameLift Servers Dopo aver scelto questa opzione, indica dove desideri che il plugin memorizzi la nuova immagine:

    • Crea un nuovo repository Amazon ECR e inviaci l'immagine del contenitore. Il plug-in crea un repository ECR privato utilizzando l' AWS account e l'impostazione predefinita Regione AWS nel profilo utente selezionato.

    • Invia l'immagine del contenitore a un repository Amazon ECR creato in precedenza. Se scegli questa opzione, il passaggio successivo ti chiederà di selezionare un repository Amazon ECR esistente da un elenco. L'elenco include tutti i repository Amazon ECR per l' AWS account e quelli predefiniti Regione AWS nel profilo utente selezionato. Puoi selezionare un repository pubblico o privato.

  • Usa un'immagine del contenitore esistente. Se hai creato manualmente un'immagine, ti consigliamo di utilizzare il modello Dockerfile fornito daAmazon GameLift Servers, disponibile all'indirizzo. Crea un'immagine del contenitore per Amazon GameLift Servers Dopo aver scelto questa opzione, indica dove si trova l'immagine.

    • Un' Docker-generated immagine memorizzata localmente. Se scegli questa opzione, il plug-in crea un nuovo repository privato Amazon ECR e vi invia il file di immagine locale. Il passaggio successivo ti chiederà un ID dell'immagine, che il plug-in utilizza per localizzare il file di immagine.

    • Un'immagine del contenitore già archiviata in un repository Amazon ECR. Se scegli questa opzione, il passaggio successivo ti chiederà di selezionare un repository e un'immagine Amazon ECR esistenti da un elenco. L'elenco include tutti i repository Amazon ECR per l' AWS account e quelli predefiniti Regione AWS nel profilo utente selezionato. Puoi selezionare un repository pubblico o privato.

Fase 2: Configurare la distribuzione delle immagini

In questo passaggio, fornisci le informazioni necessarie al plug-in per distribuire l'immagine del tuo container su una flotta di container. Questo passaggio richiede le seguenti informazioni:

  • La posizione della build del server di gioco, dell'immagine del contenitore o del repository Amazon ECR, in base alle selezioni effettuate nella Fase 1.

  • Lo scenario da utilizzare per la distribuzione dei container gestiti.

  • Il percorso di output della configurazione del client. Seleziona la cartella nella build del tuo client che contiene la tua AWS configurazione. Cercalo nella seguente posizione:[client-build]/[project-name]/Content/CloudFormation.

  • Impostazioni di distribuzione opzionali. Questa sezione contiene le impostazioni di configurazione che il plug-in utilizza per impostazione predefinita. Puoi modificarli o mantenere i valori predefiniti

    • Per impostazione predefinita, il nome del gioco è impostato sul nome del progetto di gioco. Tutte le AWS risorse create dal plugin fanno riferimento al valore del nome del gioco.

    • L'intervallo di porte, il limite di memoria e il limite di vCPU sono impostazioni di configurazione per la flotta di container. Per ulteriori informazioni sulla personalizzazione di questi valori, consulta Configurare le connessioni di rete l'intervallo delle porte di connessione e Imposta i limiti delle risorse i limiti delle risorse.

    • Il tag Container Image viene utilizzato per classificare le immagini del contenitore in Amazon ECR. Il valore predefinito è unreal-gamelift-plugin.

    • Nome del repository Amazon ECR. Puoi modificare questo campo per suggerire un nome personalizzato solo quando il plug-in sta creando un repository ECR per te. Il valore predefinito è unreal-game lift-plugin-ecr-repository.

Opzioni dello scenario di distribuzione

Questo scenario distribuisce il tuo server di gioco su una singola flotta di container. È un buon punto di partenza per testare l'integrazione del server AWS e la configurazione del container. Implementa le seguenti risorse.

  • Amazon GameLift ServersLa definizione del gruppo di container descrive come distribuire ed eseguire le immagini dei container su una flotta di container.

  • Amazon GameLift Serverscontainer fleet (On-Demand) con il container del server di gioco installato e funzionante, con alias.

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

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

  • Elenco di controllo degli accessi Web (ACL) per limitare le chiamate eccessive dei giocatori ad API Gateway.

  • Servizio di backend per effettuare richieste al Amazon GameLift Servers servizio per conto dei client di gioco, ad esempio per richiedere sessioni di gioco e partecipare ai giochi:

    • Funzione API Gateway + Lambda per consentire ai giocatori di richiedere uno slot per una sessione di gioco. Questa funzione chiama CreateGameSession() se non sono disponibili slot aperti.

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

Questo scenario distribuisce il server di gioco su una flotta di container, configura il posizionamento delle sessioni di gioco e imposta FlexMatch il matchmaking. Questo scenario è utile quando sei pronto per iniziare a progettare un matchmaker personalizzato per la tua soluzione di hosting. Usa questo scenario per creare le risorse di base per questa soluzione, che potrai personalizzare in seguito, se necessario. Implementa le seguenti risorse:

  • Amazon GameLift Serversdefinizione del gruppo di container che descrive come distribuire ed eseguire le immagini dei container su una flotta di container.

  • Amazon GameLift Serverscontainer fleet (On-Demand) con il container del server di gioco installato e funzionante, con alias.

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

  • Amazon GameLift Serverscoda di sessione di gioco che soddisfa le richieste di partite proposte 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 API Gateway che collega il pool di utenti alle API.

  • Elenco di controllo degli accessi Web (ACL) per limitare le chiamate eccessive dei giocatori ad API Gateway.

  • Servizio di backend per effettuare richieste al Amazon GameLift Servers servizio per conto dei client di gioco, ad esempio per richiedere sessioni di gioco e partecipare ai giochi:

    • Funzione API Gateway + Lambda per consentire ai giocatori di richiedere uno slot per una sessione di gioco. Questa funzione chiama StartMatchmaking() se non sono disponibili slot aperti.

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

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

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

Implementa una flotta di container

Una volta completata la configurazione della flotta, scegli il pulsante Implementa flotta di container per avviare l'implementazione. Questo processo può richiedere diversi minuti, mentre il plug-in crea un'immagine del container e la invia a ECR, fornisce le risorse di hosting per la flotta di container, implementa la flotta e altre AWS risorse per lo scenario della soluzione di hosting selezionata.

Quando si avvia un'implementazione, è possibile monitorare lo stato di avanzamento di ogni passaggio. A seconda della configurazione, i passaggi potrebbero includere quanto segue:

  • Configurazione dell'immagine del contenitore

  • Creazione di un repository Amazon ECR

  • Creazione di un'immagine e invio ad Amazon ECR

  • Creazione di una definizione di gruppo di contenitori

  • Creazione di una flotta di container

Per informazioni più dettagliate sulla distribuzione, scegli Visualizza in AWS Management Console. Quando la flotta di container raggiunge lo stato attivo, la flotta gestisce attivamente i container con processi server pronti per ospitare sessioni di gioco.

Una volta completata la distribuzione, disponi di una flotta di container funzionante pronta per ospitare sessioni di gioco e accettare connessioni tra i giocatori.

Non puoi interrompere uno schieramento in corso. Se la distribuzione entra in uno stato errato o fallisce, puoi ricominciare da capo utilizzando l'opzione Reimposta distribuzione.

Avvia il client

A questo punto, hai completato tutte le attività necessarie per avviare e giocare alla tua partita multigiocatore ospitataAmazon GameLift Servers. Per giocare, scegli Start Client per avviare un'istanza locale del tuo client di gioco.

  • Se hai utilizzato lo scenario a flotta singola, apri un'istanza del client di gioco con un giocatore e accedi alla mappa del server per spostarti. Puoi aprire una seconda istanza del client di gioco per aggiungere un secondo giocatore alla stessa mappa di gioco del server.

  • Se hai implementato FlexMatch lo scenario, la soluzione di hosting attende che almeno due client di gioco effettuino richieste di matchmaking. Apri almeno due istanze del tuo client di gioco con un giocatore. I due giocatori verranno abbinati e invitati a partecipare a una sessione di gioco per la partita.

Aggiorna una flotta di container

Se hai implementato con successo una soluzione di hosting di container gestiti, puoi utilizzare la funzione di distribuzione Update. Questa opzione consente di aggiornare le impostazioni di configurazione per una flotta di container distribuita, senza dover creare una nuova flotta.

Quando aggiorni una distribuzione, puoi distribuire un'immagine del contenitore con una build diversa del server di gioco, modificare il repository Amazon ECR, scegliere uno scenario di distribuzione diverso e personalizzare le impostazioni di configurazione opzionali.

Quando sei pronto per implementare le modifiche, scegli Aggiorna. Il tempo richiesto per un aggiornamento della distribuzione è simile a quello di una distribuzione completa. Per informazioni dettagliate sulla distribuzione, scegli Visualizza nella AWS console di gestione.

Pulisci le risorse distribuite

Come best practice, ripulisci le AWS risorse per la tua soluzione di container gestiti non appena non ti servono più. Potresti continuare a sostenere costi per queste risorse se non le rimuovi.

Elimina le seguenti risorse:

  • Stack di risorse del contenitore gestito. Le risorse in questo stack dipendono dallo scenario di distribuzione selezionato. Per eliminare l'intero stack, usa la CloudFormation console. Gli stack generati dal Amazon GameLift Servers plugin utilizzano la seguente convenzione di denominazione:. GameLiftPluginForUnreal-{GameName}-Containers Attendi il completamento del processo di eliminazione dello stack prima di avviare una nuova distribuzione di contenitori gestiti nel plug-in. Per ulteriori informazioni, consulta Eliminare uno stack dalla console. CloudFormation

  • Repository Amazon ECR. Se hai utilizzato il plug-in per creare un repository per l'immagine del tuo contenitore, potresti voler eliminare tutti i repository che non sono più necessari. Non è necessario eliminare un repository prima di reimpostare una distribuzione di contenitori gestiti. Se si aggiorna o si reimposta una distribuzione, il plug-in utilizzerà automaticamente lo stesso repository a meno che non venga indicato di utilizzarne un altro. Per ulteriori informazioni, consulta Eliminazione di un repository privato in Amazon ECR.