Integra Amazon GameLift in un progetto Unity - 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à.

Integra Amazon GameLift in un progetto Unity

Questo argomento spiega come configurare il plug-in Amazon GameLift C# Server SDK per Unity e integrarlo nei tuoi progetti di gioco.

Risorse aggiuntive:

Prerequisiti

Per utilizzare il plug-in SDK del server Amazon GameLift C# per Unity, sono necessari i seguenti componenti:

  • Un ambiente di sviluppo e una versione di Unity Editor supportati dal plugin (vediSupporto allo sviluppo con Amazon GameLift). Per informazioni sulle versioni di Unity, consulta Requisiti di sistema per Unity nella documentazione di Unity.

  • Il plug-in Amazon GameLift Server SDK per il pacchetto Unity. Questo pacchetto include il server SDK 5+ per C#. Puoi scaricare il pacchetto da questo sito: Getting Started with Amazon. GameLift

  • Il registro UnityNuGet con ambito di terze parti. Questo strumento gestisce DLL di terze parti. Per ulteriori informazioni, consulta il UnityNuGetrepository Github.

Configurazione di UnityNuGet

Se non hai UnityNuGet configurato il tuo progetto di gioco, usa i seguenti passaggi per installare lo strumento utilizzando il gestore di pacchetti Unity. In alternativa, puoi utilizzare la NuGet CLI per scaricare manualmente le DLL. Per ulteriori informazioni, consulta il server SDK for Unity di Amazon GameLift C#. README

Da integrare UnityNuGet nel tuo progetto di gioco
  1. Con il progetto aperto in Unity Editor, vai al menu principale e seleziona Modifica, Impostazioni del progetto. Dalle opzioni, scegli la sezione Package Manager e apri il gruppo Scoped Registries.

  2. Scegli il pulsante + e inserisci i seguenti valori per il UnityNuGet registro con ambito:

    Name: Unity NuGet URL: https://unitynuget-registry.azurewebsites.net Scope(s): org.nuget
  3. Per gli utenti della versione Unity 2021:

    Dopo la configurazione UnityNuGet, verifica la presenza di Assembly Version Validation errori nella console Unity. Questi errori si verificano se i reindirizzamenti di associazione per gli assembly con nomi forti nei NuGet pacchetti non si risolvono correttamente nei percorsi all'interno del progetto Unity. Per risolvere questo problema, configura la convalida della versione dell'assembly di Unity:

    1. In Unity Editor, vai al menu principale e seleziona Modifica, Impostazioni progetto e apri la sezione Player.

    2. Deselezionate l'opzione di convalida della versione dell'assieme.

Installa il plugin

Utilizza la seguente procedura per installare il plug-in SDK del server Amazon GameLift C# per Unity e configurare la registrazione log4net.

Per installare il plug-in
  1. Con il progetto aperto in Unity Editor, vai al menu principale e seleziona Window, Package Manager.

  2. Scegli il pulsante + per aggiungere un nuovo pacchetto. Scegli l'opzione Aggiungi pacchetto da tarball.

  3. In Seleziona pacchetti su disco, individua il plug-in Amazon GameLift C# Server SDK per i file di download di Unity e scegli il file Amazon GameLift Server SDK. .tgz Scegli Apri per installare il plugin.

L'SDK GameLift del server Amazon utilizza il framework log4net per generare messaggi di log. Per impostazione predefinita, è configurato per inviare messaggi al terminale di un server costruito, ma Unity richiede la configurazione per aggiungere il supporto per la registrazione dei file. Puoi aggiungere questo supporto al tuo progetto importando l'esempio fornito all'interno del pacchetto Amazon GameLift Server SDK. Utilizza la seguente procedura per aggiungere l'esempio e configurare log4net:

Per configurare log4net per l'output dei file
  1. Con il progetto aperto in Unity Editor, vai al menu principale e seleziona Window, Package Manager.

  2. Dal menu a discesa, seleziona Pacchetti: In Project, quindi seleziona Amazon GameLift Server SDK dall'elenco dei pacchetti. Verranno visualizzati i dettagli del pacchetto.

  3. Nei dettagli del pacchetto, seleziona l'opzione del gruppo Samples e premi Importa.

  4. Il log4net.config file e LoggingConfiguration.cs lo script di accompagnamento eseguono automaticamente la configurazione, che ora è impostata nella cartella del Assets/Samples progetto.

    Nota

    Se è necessario spostare il log4net.config file in un'altra cartella del progetto, è necessario aggiornare anche il percorso del file di configurazione nello script LoggingConfiguration.cs con il nuovo percorso. Per ulteriori informazioni, consulta il manuale log4net sulla configurazione di log4net.

Per istruzioni più dettagliate e linee guida per i test, consulta il file che README si trova nel download del plugin.

Configura una GameLift Anywhere flotta Amazon per i test

Puoi configurare la tua workstation di sviluppo come flotta di GameLift Anywhere hosting Amazon per testare in modo iterativo la tua integrazione con Amazon GameLift . Con questa configurazione, puoi avviare i processi del server di gioco sulla tua workstation, inviare richieste di iscrizione o matchmaking dei giocatori GameLift ad Amazon per avviare sessioni di gioco e connettere i client alle nuove sessioni di gioco. Con la tua workstation configurata come server di hosting, puoi monitorare tutti gli aspetti dell'integrazione del gioco con Amazon. GameLift

Per istruzioni sulla configurazione della workstation, consulta Testa la tua integrazione utilizzando le GameLift Anywhere flotte Amazon i seguenti passaggi:

  1. Crea una posizione personalizzata per la tua workstation.

  2. Crea una GameLift Anywhere flotta Amazon con la tua nuova sede personalizzata. In caso di successo, questa richiesta restituisce un ID della flotta. Prendi nota di questo valore, poiché ti servirà in seguito.

  3. Registra la tua workstation come computer nella nuova Anywhere flotta. Fornisci un nome di elaborazione univoco e specifica l'indirizzo IP della tua workstation. In caso di esito positivo, questa richiesta restituisce un endpoint SDK del servizio, sotto forma di URL. WebSocket Prendi nota di questo valore, poiché ti servirà in seguito.

  4. Genera un token di autenticazione per il calcolo della tua workstation. Questa autenticazione di breve durata include il token e una data di scadenza. Il tuo server di gioco lo utilizza per autenticare la comunicazione con il servizio Amazon GameLift . Archivia l'autenticazione sul computer della tua workstation in modo che i processi del server di gioco in esecuzione possano accedervi.

Aggiungi il codice GameLift del server Amazon al tuo progetto Unity

Il tuo server di gioco comunica con il GameLift servizio Amazon per ricevere istruzioni e segnalare lo stato in corso. A tale scopo, aggiungi un codice per il server di gioco che utilizza l'SDK del GameLift server Amazon.

L'esempio di codice fornito illustra gli elementi di integrazione di base richiesti. Usa a MonoBehavior per illustrare una semplice inizializzazione del server di gioco con Amazon. GameLift L'esempio presuppone che il server di gioco funzioni su una GameLift Anywhere flotta Amazon per i test. Include codice per:

  • Inizializza un client Amazon GameLift API. L'esempio utilizza la versione di InitSDK() con i parametri del server per il tuo Anywhere parco macchine e le tue capacità di calcolo. Utilizza l' WebSocket URL, l'ID della flotta, il nome di calcolo (ID host) e il token di autenticazione, come definito nell'argomento precedente. Configura una GameLift Anywhere flotta Amazon per i test

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

  • Chiama ProcessReady () con una porta designata per avvisare il GameLift servizio Amazon quando il processo è pronto per ospitare sessioni di gioco.

Il codice presentato in questo argomento stabilisce la comunicazione con il GameLift servizio Amazon e. Implementa inoltre una serie di funzioni di callback che rispondono alle richieste di. Per ulteriori informazioni su ciascuna funzione e sul funzionamento del codice, consulta Inizializzare il processo del server. Per ulteriori informazioni sulle azioni SDK e sui tipi di dati utilizzati in questo codice, leggi. Riferimento SDK per GameLift server Amazon per C#

Questo esempio mostra come aggiungere tutti gli elementi richiesti, come descritto in Aggiungi Amazon GameLift al tuo server di gioco. Include:

Per ulteriori informazioni sull'aggiunta di GameLift funzionalità Amazon, consulta questi argomenti:

using System.Collections.Generic; using Aws.GameLift.Server; using UnityEngine; public class ServerSDKManualTest : MonoBehaviour { //This example is a simple integration that initializes a game server process //that is running on an Amazon GameLift Anywhere fleet. void Start() { //Identify port number (hard coded here for simplicity) the game server is listening on for player connections var listeningPort = 7777; //WebSocketUrl from RegisterHost call var webSocketUrl = "wss://us-west-2.api.amazongamelift.com"; //Unique identifier for this process var processId = "myProcess"; //Unique identifier for your host that this process belongs to var hostId = "myHost"; //Unique identifier for your fleet that this host belongs to var fleetId = "myFleet"; //Authorization token for this host process var authToken = "myAuthToken"; //Server parameters are required for a GameLift Anywhere fleet. //They are not required for a GameLift managed EC2 fleet. ServerParameters serverParameters = new ServerParameters( webSocketUrl, processId, hostId, fleetId, authToken); //InitSDK establishes a local connection with an Amazon GameLift agent //to enable further communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters); if (initSDKOutcome.Success) { //Implement callback functions ProcessParameters processParameters = new ProcessParameters( //Implement OnStartGameSession callback (gameSession) => { //GameLift sends a game session activation request to the game server //with game session object containing game properties and other settings. //Here is where a game server takes action based on the game session object. //When the game server is ready to receive incoming player connections, //it invokes the server SDK call ActivateGameSession(). GameLiftServerAPI.ActivateGameSession(); }, (updateGameSession) => { //GameLift sends a request when a game session is updated (such as for //FlexMatch backfill) with an updated game session object. //The game server can examine matchmakerData and handle new incoming players. //updateReason explains the purpose of the update. }, () => { //Implement callback function OnProcessTerminate //GameLift invokes this callback before shutting down the instance hosting this game server. //It gives the game server a chance to save its state, communicate with services, etc., //and initiate shut down. When the game server is ready to shut down, it invokes the //server SDK call ProcessEnding() to tell GameLift it is shutting down. GameLiftServerAPI.ProcessEnding(); }, () => { //Implement callback function OnHealthCheck //GameLift invokes this callback approximately every 60 seconds. //A game server might want to check the health of dependencies, etc. //Then it returns health status true if healthy, false otherwise. //The game server must respond within 60 seconds, or GameLift records 'false'. //In this example, the game server always reports healthy. return true; }, //The game server gets ready to report that it is ready to host game sessions //and that it will listen on port 7777 for incoming player connections. listeningPort, new LogParameters(new List<string>() { //Here, the game server tells GameLift where to find game session log files. //At the end of a game session, GameLift uploads everything in the specified //location and stores it in the cloud for access later. "/local/game/logs/myserver.log" })); //The game server calls ProcessReady() to tell GameLift it's ready to host game sessions. var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters); if (processReadyOutcome.Success) { print("ProcessReady success."); } else { print("ProcessReady failure : " + processReadyOutcome.Error.ToString()); } } else { print("InitSDK failure : " + initSDKOutcome.Error.ToString()); } } void OnApplicationQuit() { //Make sure to call GameLiftServerAPI.ProcessEnding() and GameLiftServerAPI.Destroy() before terminating the server process. //These actions notify Amazon GameLift that the process is terminating and frees the API client from memory. GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); } } }

Risorse aggiuntive

Usa le seguenti risorse per testare il tuo server di gioco ed espandere le funzionalità: