Intégrer Amazon GameLift dans un projet Unity - Amazon GameLift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Intégrer Amazon GameLift dans un projet Unity

Cette rubrique explique comment configurer le plugin SDK Amazon GameLift C# Server pour Unity et l'intégrer dans vos projets de jeu.

Ressources supplémentaires :

Prérequis

Pour utiliser le plug-in SDK du serveur Amazon GameLift C# pour Unity, vous avez besoin des composants suivants :

  • Un environnement de développement et une version de Unity Editor compatibles avec le plugin (voirAssistance au développement avec Amazon GameLift). Pour plus d'informations sur les versions de Unity, consultez la section Configuration requise pour Unity dans la documentation Unity.

  • Le plug-in SDK GameLift du serveur Amazon pour le package Unity. Ce package inclut le SDK du serveur 5+ pour C#. Vous pouvez télécharger le package à partir de ce site : Getting Started with Amazon GameLift.

  • Le registre UnityNuGet délimité par des tiers. Cet outil gère les DLL tierces. Pour plus d'informations, consultez le référentiel UnityNuGetGithub.

Configurer UnityNuGet

Si vous n'avez pas UnityNuGet configuré votre projet de jeu, procédez comme suit pour installer l'outil à l'aide du gestionnaire de packages Unity. Vous pouvez également utiliser la NuGet CLI pour télécharger manuellement les DLL. Pour plus d'informations, consultez le SDK du serveur Amazon GameLift C# pour Unity. README

À UnityNuGet intégrer à votre projet de jeu
  1. Votre projet étant ouvert dans l'éditeur Unity, accédez au menu principal et sélectionnez Modifier, Paramètres du projet. Parmi les options, choisissez la section Package Manager et ouvrez le groupe Scoped Registries.

  2. Cliquez sur le bouton + et entrez les valeurs suivantes pour le registre UnityNuGet délimité :

    Name: Unity NuGet URL: https://unitynuget-registry.azurewebsites.net Scope(s): org.nuget
  3. Pour les utilisateurs de la version Unity 2021 :

    Après la configuration UnityNuGet, vérifiez qu'aucune Assembly Version Validation erreur ne s'affiche dans la console Unity. Ces erreurs se produisent si les redirections de liaison pour les assemblages aux noms forts dans les NuGet packages ne sont pas résolues correctement vers les chemins de votre projet Unity. Pour résoudre ce problème, configurez la validation de la version d'assemblage de Unity :

    1. Dans l'éditeur Unity, accédez au menu principal, sélectionnez Modifier, Paramètres du projet, puis ouvrez la section Lecteur.

    2. Désélectionnez l'option Validation de la version d'assemblage.

Installez le plugin

Utilisez la procédure suivante pour installer le plug-in SDK du serveur Amazon GameLift C# pour Unity et configurer la journalisation log4net.

Pour installer le plug-in
  1. Votre projet étant ouvert dans l'éditeur Unity, accédez au menu principal et sélectionnez Window, Package Manager.

  2. Cliquez sur le bouton + pour ajouter un nouveau package. Choisissez l'option Ajouter un package à partir de l'archive tar.

  3. Dans Sélectionner les packages sur disque, recherchez le plug-in du SDK Amazon GameLift C# Server pour les fichiers de téléchargement Unity, puis choisissez le fichier du SDK .tgz Amazon GameLift Server. Choisissez Ouvrir pour installer le plugin.

Le SDK GameLift du serveur Amazon utilise le framework log4net pour générer des messages de journal. Il est configuré pour envoyer des messages au terminal d'une version de serveur par défaut, mais Unity nécessite une configuration pour ajouter le support de journalisation des fichiers. Vous pouvez ajouter ce support à votre projet en important l'exemple fourni dans le package SDK Amazon GameLift Server. Utilisez la procédure suivante pour ajouter l'exemple et configurer log4net :

Pour configurer log4net pour la sortie de fichiers
  1. Votre projet étant ouvert dans l'éditeur Unity, accédez au menu principal et sélectionnez Window, Package Manager.

  2. Dans le menu déroulant, sélectionnez Packages : In Project, puis sélectionnez Amazon GameLift Server SDK dans la liste des packages. Cela ouvre les détails du package.

  3. Dans les détails du package, sélectionnez l'option Groupe d'échantillons et appuyez sur Importer.

  4. Le log4net.config fichier et le LoggingConfiguration.cs script qui l'accompagne exécutent automatiquement la configuration, qui est désormais configurée dans le Assets/Samples dossier du projet.

    Note

    Si vous devez déplacer votre log4net.config fichier vers un autre dossier du projet, vous devez également mettre à jour le chemin du fichier de configuration dans le script LoggingConfiguration.cs avec le nouveau chemin. Pour plus d'informations, consultez le manuel de log4net sur la configuration de log4net.

Pour des instructions plus détaillées et des conseils de test, consultez le README lien situé dans le téléchargement du plugin.

Configurez une GameLift Anywhere flotte Amazon à des fins de test

Vous pouvez configurer votre station de développement en tant que parc d' GameLift Anywherehébergement Amazon pour tester de manière itérative votre GameLift intégration Amazon. Avec cette configuration, vous pouvez démarrer les processus du serveur de jeu sur votre poste de travail, envoyer des demandes d'adhésion de joueurs ou de matchmaking GameLift à Amazon pour démarrer des sessions de jeu, et connecter les clients aux nouvelles sessions de jeu. Avec votre propre poste de travail configuré en tant que serveur d'hébergement, vous pouvez surveiller tous les aspects de l'intégration de vos jeux avec Amazon GameLift.

Pour obtenir des instructions sur la configuration de votre poste de travail, reportez-vous Configurez des tests locaux avec Amazon GameLift Anywhere à la section pour effectuer les étapes suivantes :

  1. Créez un emplacement personnalisé pour votre poste de travail.

  2. Créez une GameLift Anywhere flotte Amazon avec votre nouvel emplacement personnalisé. En cas de succès, cette demande renvoie un numéro de flotte. Notez cette valeur, car vous en aurez besoin plus tard.

  3. Enregistrez votre station de travail en tant qu'ordinateur dans le nouveau Anywhere parc. Entrez un nom de calcul unique et spécifiez l'adresse IP de votre station de travail. En cas de succès, cette demande renvoie un point de terminaison du SDK de service, sous la forme d'une WebSocket URL. Notez cette valeur, car vous en aurez besoin plus tard.

  4. Générez un jeton d'authentification pour le calcul de votre station de travail. Cette authentification de courte durée inclut le jeton et une date d'expiration. Votre serveur de jeu l'utilise pour authentifier les communications avec le GameLift service Amazon. Stockez l'authentification sur l'ordinateur de votre poste de travail afin que les processus de votre serveur de jeu en cours puissent y accéder.

Ajoutez le code GameLift du serveur Amazon à votre projet Unity

Votre serveur de jeu communique avec le GameLift service Amazon pour recevoir des instructions et signaler le statut en cours. Pour ce faire, vous devez ajouter du code de serveur de jeu qui utilise le SDK GameLift du serveur Amazon.

L'exemple de code fourni illustre les éléments d'intégration de base requis. Il utilise un MonoBehavior pour illustrer une simple initialisation d'un serveur de jeu avec Amazon GameLift. L'exemple suppose que le serveur de jeu fonctionne sur une GameLift Anywhere flotte Amazon à des fins de test. Il inclut un code pour :

  • Initialisez un client d' GameLift API Amazon. L'exemple utilise la version de InitSDK() avec les paramètres du serveur pour votre Anywhere flotte et vos calculs. Utilisez l' WebSocket URL, l'ID de flotte, le nom de calcul (ID d'hôte) et le jeton d'authentification, tels que définis dans la rubrique précédenteConfigurez une GameLift Anywhere flotte Amazon à des fins de test.

  • Implémentez des fonctions de rappel pour répondre aux demandes du GameLift service Amazon, notamment OnStartGameSessionOnProcessTerminate, etonHealthCheck.

  • Appelez ProcessReady () avec un port désigné pour informer le GameLift service Amazon lorsque le processus est prêt à héberger des sessions de jeu.

Le code présenté dans cette rubrique établit la communication avec le GameLift service Amazon et. Il implémente également un ensemble de fonctions de rappel qui répondent aux demandes du. Pour plus d'informations sur chaque fonction et sur le rôle du code, voir Initialiser le processus du serveur. Pour plus d'informations sur les actions du SDK et les types de données utilisés dans ce code, consultezRéférence GameLift du SDK Amazon Server pour C#.

Cet exemple montre comment ajouter tous les éléments requis, comme décrit dans Ajouter Amazon GameLift à votre serveur de jeu. Il inclut :

Pour plus d'informations sur l'ajout de GameLift fonctionnalités Amazon, consultez les rubriques suivantes :

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); } } }

Ressources supplémentaires

Utilisez les ressources suivantes pour tester votre serveur de jeu et étendre ses fonctionnalités :