Feuille de route de développement pour l'hébergement hybride avec Amazon GameLift - 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.

Feuille de route de développement pour l'hébergement hybride avec Amazon GameLift

Cette feuille de route vous explique comment développer une solution d'hébergement pour votre jeu multijoueur. Amazon GameLift propose plusieurs options d'hébergement de jeux ; pour plus d'informations sur ces options, consultez GameLift Solutions Amazon.

Une solution hybride utilise une combinaison de ressources d'hébergement, notamment des ressources basées sur le cloud gérées par Amazon GameLift et vos propres ressources d'hébergement autogérées. Pour une discussion plus détaillée sur l'hébergement hybride, consultez cet article : Hébergement de serveurs de jeux hybrides avec Amazon GameLift Anywhere. Avec Amazon GameLift, vous pouvez configurer une solution hybride qui utilise des composants et des processus communs, afin de gérer de manière centralisée un parc mondial et de déplacer facilement des charges entre tous les types de ressources.

Une architecture hybride comprend les composants suivants :

  • Une ou plusieurs flottes GameLift gérées par Amazon, qui utilisent des instances Amazon Elastic Compute Cloud (AmazonEC2) optimisées pour l'hébergement de jeux multijoueurs.

  • Une ou plusieurs flottes Amazon GameLift Anywhere, qui utilisent vos ressources sur site ou d'autres ressources d'hébergement existantes, y compris vos outils de gestion de configuration et de déploiement. (Vous pouvez éventuellement utiliser le AWS Systems Manager.)

  • Une version de serveur de jeu unique, intégrée au GameLift serveur AmazonSDK, à déployer sur toutes les flottes.

  • Un client de jeu unique et un service principal, intégrés au AWS SDK, pour interagir avec le GameLift service Amazon et demander des sessions de jeu.

  • Une GameLift file d'attente Amazon partagée pour placer de nouvelles sessions de jeu sur les serveurs de jeu disponibles et équilibrer la charge entre toutes les flottes.

  • L' GameLift agent Amazon, qui est déployé avec une flotte Anywhere, simplifie les tâches de gestion des processus de serveur sur les ordinateurs de tous les flottes.

  • (Facultatif) Un FlexMatch système de matchmaking pour créer des matchs multijoueurs et configurer des sessions de jeu pour eux.

Cette feuille de route présente une approche simplifiée pour que votre jeu multijoueur soit opérationnel avec succès dans une solution d'hébergement hybride avec Amazon GameLift. Une fois les composants nécessaires en place, vous pouvez continuer à développer le jeu et à personnaliser votre solution d'hébergement. À l'approche du lancement, consultez-les Préparation de votre jeu pour le lancement avec l' GameLift hébergement Amazon pour vous aider à préparer votre solution d'hébergement pour une utilisation en production.

Prenez un bon départ avec le GameLift plugin Amazon

Si vous développez des projets avec Unreal Engine ou Unity, commencez à configurer votre jeu pour l'hébergement avec le GameLift plugin Amazon. Avec le plugin, vous pouvez ajouter Amazon GameLift SDKs à votre projet de jeu et utiliser les flux de travail guidés pour créer une version simple et fonctionnelle d'une solution d'hébergement hybride avec à la fois une flotte Anywhere et une flotte GameLift gérée par Amazon. Vous pouvez ensuite utiliser ces principes fondamentaux pour les développer et les personnaliser selon vos besoins.

Ajoutez des fonctionnalités à votre serveur de jeu afin qu'il puisse communiquer avec le GameLift service Amazon lorsqu'il est déployé pour l'hébergement. La même fonctionnalité est requise si le serveur de jeu fonctionne sur une flotte GameLift gérée par Amazon ou sur une flotte Anywhere.

  • Téléchargez le GameLift serveur Amazon SDK (version 5.x) pour votre projet de jeu. Le serveur SDK est disponible en C++, C# et Go. Téléchargez un GameLift serveur Amazon SDK.

  • Modifiez le code de votre serveur de jeu pour ajouter des SDK fonctionnalités de serveur. Pour de plus amples informations, consultez Intégrez des jeux à des serveurs de jeux personnalisés. Procédez au minimum comme suit :

    • Ajoutez du code pour initialiser Amazon GameLift SDK et établir une WebSocket connexion avec le GameLift service Amazon. Utilisez l'SDKaction du serveurInitSdk(). Incluez du code pour spécifier les paramètres du serveur lors de l'exécution sur un système de calcul de flotte Anywhere.

    • Ajoutez du code à signaler au GameLift service Amazon lorsque le processus du serveur est prêt à héberger des sessions de jeu. Utilisez l'SDKaction du serveurProcessReady().

    • Implémentez les fonctions de rappel requises OnRefreshConnection()OnProcessTerminate(), etOnStartGameSession(). Grâce à ces fonctions, les processus du serveur de jeu peuvent maintenir une connexion avec le GameLift service Amazon, lancer une session de jeu à la demande d'Amazon GameLift et répondre à une demande demandant de mettre fin au processus du serveur de jeu.

    • Ajoutez du code à signaler au GameLift service Amazon lorsque le processus du serveur met fin à une session de jeu. Utilisez l'SDKaction du serveurProcessEnding().

  • Package de la version de votre serveur de jeu. Créez un script d'installation avec vos fichiers de compilation, vos dépendances et les logiciels de support. Consultez Conditionner les fichiers de version de jeu. Nous vous recommandons d'utiliser un bucket Amazon Simple Storage Service (Amazon S3) pour stocker les versions de votre build de jeu.

  • Testez l'intégration de votre serveur de jeu. Pour cette tâche, nous vous recommandons de configurer un Amazon GameLift Anywhere flotte dotée d'un poste de travail local, comme décrit dansConfigurez des tests locaux avec Amazon GameLift Anywhere. Pour cette étape, installez manuellement le build de votre serveur de jeu sur le périphérique de test et lancez un processus serveur. Utilisez le AWS CLI pour demander une nouvelle session de jeu et vérifiez que le GameLift service Amazon invite correctement votre processus serveur à démarrer une session de jeu.

Créez un moyen pour votre client de jeu de demander à rejoindre une session de jeu, d'obtenir des informations de connexion, puis de se connecter directement à une session de jeu hébergée. L'approche la plus courante consiste à configurer une fonctionnalité de service principal qui sert d'intermédiaire entre votre client de jeu et le service Amazon. GameLift Cette approche protège vos ressources d'hébergement et vous permet de mieux contrôler la manière dont les joueurs sont placés dans les sessions de jeu.

  • Développez des fonctionnalités de service principal pour l'hébergement. Le service principal communique avec le GameLift service Amazon et fournit des informations de connexion à un client de jeu. Cette fonctionnalité inclut le démarrage de sessions de jeu, le placement de joueurs dans des jeux et la récupération des informations de session de jeu. Pour de plus amples informations, consultez Intégrez des jeux à des serveurs de jeux personnalisés. Procédez au minimum comme suit :

    • Procurez-vous le AWS SDK pour Amazon GameLift et ajoutez-le à votre projet de service principal. Consultez les GameLift SDKressources Amazon pour les services clients.

    • Ajoutez du code pour initialiser un GameLift client Amazon et enregistrer les paramètres clés. Consultez Configurer Amazon GameLift sur un service de backend.

    • Ajoutez des fonctionnalités permettant de lancer l' AWS SDKaction CreateGameSession() et de fournir des informations de connexion à une session de jeu à un client de jeu. Consultez la section Créer une session de jeu sur une flotte spécifique.

      CreateGameSession()L'appel est un point de départ pratique pour demander de nouvelles sessions de jeu. Une fois que vous aurez mis en place un système de placement de sessions de jeu (voir étape 3), vous remplacerez ce code par un appel à StartGameSessionPlacement() (ou StartMatchmaking() si vous utilisez FlexMatch).

      Pour obtenir des conseils sur la conception de votre service principal, consultezConcevez le service client de votre jeu.

  • Ajoutez des fonctionnalités à votre client de jeu qui permettent aux joueurs de rejoindre une session de jeu hébergée. Le client du jeu envoie des demandes à votre service principal, et non directement à Amazon GameLift. Une fois que le service principal a fourni les informations de connexion à la session de jeu, le client du jeu se connecte directement à la session de jeu pour jouer au jeu.

  • Testez l'intégration de votre client de jeu. Vous pouvez utiliser le même Amazon GameLift Anywhere flotte dotée d'un poste de travail local pour les tests.

    Pendant la phase de développement, si vous souhaitez tester le comportement de votre build de jeu dans une flotte GameLift gérée par Amazon, nous vous recommandons également de configurer un environnement de test basé sur le cloud. Cette solution Amazon GameLift Toolkit imite le comportement d'une flotte gérée, mais vous permet de mettre à jour les versions des serveurs de jeu avec un délai d'exécution minimal.

Personnalisez la façon dont vous souhaitez GameLift qu'Amazon traite les demandes de nouvelle session de jeu et localise les serveurs de jeu disponibles pour les héberger. Amazon suit GameLift automatiquement la disponibilité de tous les serveurs de jeux sur toutes les flottes. Lorsqu'un client de jeu envoie une demande pour rejoindre une session de jeu, Amazon GameLift recherche le « meilleur emplacement possible » en fonction d'un ensemble de priorités définies telles que le minimum de latence, de coût et de disponibilité.

  • Créez une file d'attente de session de jeu pour placer une nouvelle session de jeu parmi les serveurs de jeu disponibles. Les files d'attente sont le principal mécanisme de placement des sessions de jeu. Pour de plus amples informations, consultez Création d'une file d'attente de sessions de jeu.

    • Ajoutez au minimum vos flottes Anywhere en tant que destinations dans votre file d'attente. Tous les autres paramètres sont des personnalisations facultatives.

  • Dans votre code de service principal, convertissez l'CreateGameSession()appel enStartGameSessionPlacement(). Consultez la section Création d'une session de jeu dans une file d'attente multisite.

  • Créez un mécanisme pour avertir un client de jeu lorsqu'une session de jeu est prête à être ouverte. Pendant le développement, vous pouvez demander l'état d'une session de jeu en appelant à DescribeGameSessionPlacement. Avant d'utiliser une file d'attente pour traiter des volumes importants, vous devez toutefois activer les notifications d'événements. Consultez Configurer une notification d'événement pour le placement des sessions de jeu.

  • (Facultatif) Ajoutez des composants FlexMatch de matchmaking. Pour obtenir des conseils, consultez le guide du GameLift FlexMatch développeur Amazon.

Jusqu'à présent, vous avez travaillé avec des appareils locaux (enregistrés sous le nom Anywhere fleet computes) pour tester et itérer les composants de votre jeu. L'étape suivante consiste à configurer le type de flottes dont vous aurez besoin pour un système de production. Commencez par une flotte Anywhere, puis ajoutez l' GameLift agent Amazon pour gérer certaines tâches clés de gestion des hôtes sur le plan informatique. Pour en savoir plus, consultez Collaborez avec l' GameLift agent Amazon.

  • Procurez-vous l' GameLift agent Amazon et ajoutez-le au package d'installation de votre serveur de jeu. Obtenez et compilez le code source de l'agent, disponible dans le référentiel Amazon GameLift Agent Github. Placez le JAR fichier exécutable obtenu dans le même répertoire que le fichier exécutable de votre build de jeu.

  • Modifiez le script de démarrage de l'agent selon vos besoins. Assurez-vous que le fichier exécutable de l'agent est lancé dès qu'un calcul commence à s'exécuter. Consultez le fichier readme dans le dépôt de l'agent pour obtenir de l'aide concernant l'installation et l'exécution de l'agent sur vos ordinateurs d'hébergement. Votre commande de lancement doit inclure des options permettant de spécifier, au minimum, l'ID de flotte Anywhere Région AWS, un emplacement personnalisé et un nom de calcul.

    L'agent gère automatiquement les tâches suivantes pour vous. Par conséquent, si vous les avez gérées à l'aide de scripts, vous pouvez les supprimer :

    • Appels RegisterCompute() pour ajouter le calcul à une flotte Anywhere.

    • Appels GetComputeAuthToken() pour authentifier les serveurs de jeu lorsqu'ils se connectent au GameLift service Amazon. L'agent gère l'obtention et l'actualisation du jeton d'authentification, qui peut être utilisé par tous les processus du serveur de jeu exécutés sur l'ordinateur.

    • Démarre de nouveaux processus serveur sur le calcul en fonction d'un ensemble d'instructions d'exécution.

  • Créez une configuration d'exécution pour les calculs de votre flotte Anywhere. Spécifiez au minimum le chemin de lancement de l'exécutable de votre serveur de jeu. Vous pouvez utiliser la GameLift console Amazon ou le AWS CLI pour créer ou modifier des instructions d'exécution pour le parc. L'agent exécute ces instructions et demande régulièrement des mises à jour au GameLift service Amazon.

  • Configurez ou modifiez la file d'attente de votre session de jeu selon vos besoins. Créez une nouvelle file d'attente (ou mettez à jour une file existante) et désignez une destination pour le parc Anywhere déployé avec l' GameLift agent Amazon.

  • Testez l'intégration de l'agent à vos flottes Anywhere. Vérifiez que l'agent démarre correctement les processus du serveur en fonction de la configuration d'exécution.

Créez une EC2 flotte GameLift gérée par Amazon pour compléter votre flotte Anywhere. Si vous avez configuré un environnement de test basé sur le cloud à l'étape 2 pour accélérer le développement, prévoyez de créer une flotte gérée une fois que vous aurez terminé la majeure partie du développement et des tests de votre jeu. Vous avez besoin d'un parc entièrement géré pour configurer et tester des paramètres supplémentaires tels que le dimensionnement automatique de la capacité.

  • Package de la création de votre serveur de jeu et téléchargez-le sur Amazon GameLift. Créez un script d'installation avec vos fichiers de compilation, vos dépendances et les logiciels de support. Vous pouvez utiliser le même logiciel de compilation avec vos flottes Anywhere et gérées. Consultez Déployez une version de serveur personnalisée pour l' GameLifthébergement Amazon. Vous pouvez télécharger votre build sur Amazon à GameLift l'aide de la console ou du AWS CLI.

    Avant de télécharger votre build, déterminez de quelle manière Région AWS vous souhaitez créer le parc géré. Vous devez télécharger le build dans la même région. Pour en savoir plus sur le choix de l'emplacement d'une flotte, voirEmplacement de la flotte.

  • Créez une EC2 flotte gérée. Vous pouvez utiliser la GameLift console Amazon ou le AWS CLI pour créer une flotte gérée. Lorsque vous créez une flotte, Amazon commence GameLift immédiatement à déployer la version de votre serveur de jeu à des fins d'hébergement. Vous pouvez configurer de nombreux aspects d'un parc géré. Pour de plus amples informations, consultez Créez une EC2 flotte GameLift gérée par Amazon. Procédez au minimum comme suit :

    • Donnez un nom à la flotte et spécifiez la version de jeu téléchargée à déployer.

    • Choisissez des instances à la demande pour votre flotte et sélectionnez un type d'instance disponible dans l'emplacement de votre flotte. Les flottes Spot constituent une option intéressante, mais nécessitent une conception et une configuration supplémentaires.

    • Créez une configuration d'exécution avec des paramètres similaires à ceux que vous avez utilisés avec le parc Anywhere. Spécifiez au minimum le chemin de lancement de l'exécutable de votre serveur de jeu.

    • Spécifiez les paramètres de port pour autoriser le trafic entrant à accéder à vos serveurs de jeu.

  • Ajoutez le parc géré à votre file d'attente de session de jeu partagée. Mettez à jour la file d'attente à partir de l'étape 4 afin qu'elle inclue les destinations de la flotte gérée et de la flotte Anywhere déployée avec l' GameLift agent Amazon.

  • Testez l'hébergement de jeux avec vos flottes gérées. À ce stade, vous devriez être en mesure de tester l'ensemble du cycle d'hébergement, avec un client de jeu demandant une session de jeu, obtenant des informations de connexion et se connectant avec succès à une session de jeu.

Alors que vous vous préparez au lancement du jeu, vous devrez peaufiner vos solutions d'hébergement. Parmi les décisions à prendre en compte, mentionnons les suivantes :

  • Pour les flottes Anywhere, automatisez le processus de démarrage et d'arrêt des ordinateurs selon les besoins, y compris l'installation et l'exécution du logiciel du serveur de jeu. Le recyclage des ordinateurs est utile pour garantir leur mise à jour régulière, et l'arrêt des ordinateurs peut permettre de réduire les coûts lorsqu'ils ne sont pas nécessaires.

  • Si votre serveur de jeu a besoin de communiquer avec d'autres AWS ressources, configurez IAM des rôles pour gérer l'accès. Consultez Communiquez avec les autres AWS ressources de vos flottes.

  • Déterminez l'emplacement géographique où vous souhaitez positionner les serveurs de jeu. Ajoutez des sites distants à vos flottes gérées. Consultez Guide de conception pour les flottes gérées.

  • Pour les flottes gérées, pensez à utiliser des flottes Spot pour réaliser des économies. Consultez Tutoriel : Création d'une GameLift file d'attente Amazon avec des instances Spot.

  • Optimisez les performances du parc en sélectionnant des configurations de ressources de calcul, puis en configurant vos instructions d'exécution pour exécuter le nombre optimal de processus serveur par calcul. Procédez ainsi pour les flottes Anywhere et les flottes gérées. Consultez Gérez la façon dont Amazon GameLift lance ses serveurs de jeux.

  • Testez les options de placement des sessions de jeu pour les flottes gérées, notamment en personnalisant les paramètres de priorisation. Consultez Concevez une file d'attente de session de jeu.

  • Pour les flottes gérées, configurez le dimensionnement automatique de la capacité pour répondre à la demande attendue des joueurs. Consultez Augmenter la capacité d'hébergement de jeux avec Amazon GameLift.

  • Pour les flottes Anywhere, créez des mécanismes permettant de gérer le dimensionnement manuel ou automatisé des capacités afin de répondre à la demande attendue des joueurs.

  • Concevez et implémentez le basculement vers d'autres ressources si nécessaire. Configurez des flottes de réserve dans d'autres, modifiez les files d'attente Régions AWS et le dimensionnement automatique pour gérer les basculements si nécessaire.

  • Configurez les outils d'observabilité de l'hébergement, notamment les outils d'analyse et de journalisation. Consultez Surveillance d'Amazon GameLift. Créez des groupes de mesures pour agréger les analyses de toutes vos ressources d'hébergement.

  • Automatisez votre déploiement à l'aide de l'infrastructure en tant que code (IaC). Consultez Gérer les ressources d' GameLift hébergement Amazon à l'aide de AWS CloudFormation.

    Amazon GameLift prend en charge l'utilisation de AWS CloudFormation modèles pour toutes les configurations spécifiques au déploiement. Vous pouvez également utiliser le AWS Cloud Development Kit (AWS CDK) pour définir vos GameLift ressources Amazon. Pour plus d'informations à ce sujet AWS CDK, consultez le guide du AWS Cloud Development Kit (AWS CDK) développeur.

    Pour gérer le déploiement de vos AWS CloudFormation stacks, nous vous recommandons d'utiliser des outils et services d'intégration continue et de livraison continue (CI/CD) tels que. AWS CodePipeline Ces outils vous permettent de déployer automatiquement ou avec approbation chaque fois que vous créez le binaire d'un serveur de jeu. Avec un outil ou un service CI/CD, le déploiement des ressources pour une nouvelle version de serveur de jeu peut ressembler à ceci :

    • Créez et testez le binaire de votre serveur de jeu.

    • Téléchargez le fichier binaire sur Amazon GameLift.

    • Déployez de nouvelles flottes avec la nouvelle version.

    • Ajoutez les nouvelles flottes à votre file d'attente de session de jeu et supprimez les flottes de la version précédente.

    • Lorsque les flottes de la version précédente n'hébergent plus de sessions de jeu actives, supprimez les AWS CloudFormation piles de ces flottes.