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 SDKplug-in Amazon GameLift C# Server per Unity e integrarlo nei tuoi progetti di gioco.

Risorse aggiuntive:

Prerequisiti

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

Configurare 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 il NuGet CLI per scaricare manualmente ilDLLs. Per ulteriori informazioni, consulta il server Amazon GameLift C# SDK per UnityREADME.

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.

Installazione del plug-in

Utilizza la seguente procedura per installare il SDK plug-in 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 SDK plug-in Amazon GameLift C# Server per i file di download di Unity e scegli il SDK .tgz file Amazon GameLift Server. Scegli Apri per installare il plugin.

Il GameLift server Amazon SDK utilizza il framework log4net per inviare 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 SDK pacchetto Amazon GameLift Server. 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 un Amazon GameLift Anywhere flotta per i test

Puoi configurare la tua workstation di sviluppo come Amazon GameLift Anywhere flotta di hosting per testare in modo iterativo la tua GameLift integrazione con Amazon. 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 Configura test locali con Amazon GameLift Anywhere i seguenti passaggi:

  1. Crea una posizione personalizzata per la tua workstation.

  2. Crea un Amazon GameLift Anywhere flotta 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 nel nuovo Anywhere flotta. Fornisci un nome di calcolo univoco e specifica l'indirizzo IP della tua workstation. In caso di esito positivo, questa richiesta restituisce un SDK endpoint di servizio, sotto forma di un. WebSocket URL 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 GameLift servizio Amazon. 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 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 il codice del server di gioco che utilizza il GameLift server SDK 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 Amazon GameLift Anywhere flotta per i test. Include il codice per:

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

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

  • Chiama ProcessReady () con una porta designata per notificare al 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 SDK azioni e sui tipi di dati utilizzati in questo codice, leggiAmazon GameLift server SDK 5.x per C# e Unity: azioni.

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à: