Déployez votre jeu sur un hébergement cloud avec des flottes EC2 gérées - 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.

Déployez votre jeu sur un hébergement cloud avec des flottes EC2 gérées

Dans ce flux de travail, vous utilisez le plugin pour préparer votre jeu à l'hébergement sur des ressources informatiques basées sur le cloud gérées par Amazon GameLift. Vous ajoutez le code de jeu client et serveur pour les GameLift fonctionnalités Amazon, puis vous téléchargez la version de votre serveur sur le GameLift service Amazon pour l'hébergement. Lorsque ce flux de travail sera terminé, vous disposerez de serveurs de jeu exécutés dans le cloud et d'un client de jeu fonctionnel qui pourra s'y connecter.

Pour démarrer le flux de travail Amazon EC2 GameLift géré par Amazon :
  • Dans le menu principal de l'éditeur Unity, choisissez Amazon, GameLift puis Host with Managed EC2. Ce flux de travail présente un processus en six étapes pour intégrer, créer, déployer et lancer les composants de votre jeu.

Définissez votre profil

Choisissez le profil que vous souhaitez utiliser lorsque vous suivez ce flux de travail. Le profil que vous sélectionnez a un impact sur toutes les étapes du flux de travail. Toutes les ressources que vous créez sont associées au AWS compte du profil et sont placées dans la AWS région par défaut du profil. Les autorisations de l'utilisateur du profil déterminent votre accès aux AWS ressources et aux actions.

  1. Sélectionnez un profil dans la liste déroulante des profils disponibles. Si vous n'avez pas encore de profil ou si vous souhaitez en créer un nouveau, rendez-vous dans le GameLift menu Amazon et choisissez Set AWS Account Profiles.

  2. Si le statut du bootstrap n'est pas « Actif », choisissez le profil Bootstrap et attendez que le statut passe à « Actif ».

Intégrez votre jeu à Amazon GameLift

Pour cette tâche, vous devez mettre à jour le code du client et du serveur dans votre projet de jeu.

  • Les serveurs de jeu doivent être en mesure de communiquer avec le GameLift service Amazon pour recevoir des instructions pour démarrer une session de jeu, fournir des informations de connexion à une session de jeu et signaler le statut.

  • Les clients du jeu doivent être en mesure d'obtenir des informations sur les sessions de jeu, de rejoindre ou de démarrer des sessions de jeu, et d'obtenir des informations de connexion pour rejoindre une partie.

Note

Si vous avez importé l'exemple de jeu, vous pouvez ignorer cette étape. Les exemples de ressources de jeu contiennent déjà le code serveur et client nécessaire.

Intégrez le code de votre serveur

Lorsque vous utilisez votre propre projet de jeu avec des scènes personnalisées, utilisez l'exemple de code fourni pour ajouter le code de serveur requis à votre projet de jeu. Si vous avez intégré votre projet de jeu à des fins de test à une flotte Anywhere, vous avez déjà suivi les instructions de cette étape.

  1. Dans les fichiers de votre projet de jeu, ouvrez le Assets/Scripts/Server dossier. S'il n'existe pas, créez-le.

  2. Accédez au GitHub repo aws/ amazon-gamelift-plugin-unity et ouvrez le chemin. Samples~/SampleGame/Assets/Scripts/Server

  3. Localisez le fichier GameLiftServer.cs et copiez-le dans le Server dossier de votre projet de jeu. Lorsque vous créez un fichier exécutable pour le serveur, utilisez ce fichier comme cible de génération.

L'exemple de code inclut les éléments minimaux requis suivants, qui utilisent le SDK du serveur Amazon GameLift C# (version 5) :

  • Initialise un client d' GameLift API Amazon. L'appel initSDK () avec les paramètres du serveur est requis pour une flotte Amazon Anywhere. GameLift Ces paramètres sont automatiquement définis pour être utilisés dans le plugin.

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

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

Si vous souhaitez personnaliser l'exemple de code du serveur, consultez les ressources suivantes :

Intégrez votre code client

Pour les clients de jeux qui se connectent à des serveurs de jeu basés sur le cloud, il est recommandé d'utiliser un service principal côté client pour passer des appels vers le GameLift service Amazon, au lieu de passer les appels directement depuis le client du jeu.

Dans le flux de travail du plugin pour l'hébergement sur un parc EC2 géré, chaque scénario de déploiement inclut un service principal prédéfini qui inclut les composants suivants :

  • Ensemble de fonctions Lambda et de tables DynamoDB utilisées pour demander des sessions de jeu et récupérer les informations relatives aux sessions de jeu. Ces composants utilisent une passerelle d'API comme proxy.

  • Un groupe d'utilisateurs Amazon Cognito qui génère des identifiants de joueur uniques et authentifie les connexions des joueurs.

Pour utiliser ces composants, votre client de jeu a besoin de fonctionnalités lui permettant d'envoyer des demandes au service principal pour effectuer les opérations suivantes :

  • Créez un utilisateur joueur dans le AWS groupe d'utilisateurs de Cognito et authentifiez-le.

  • Participez à une session de jeu et recevez des informations de connexion.

  • Rejoignez une partie en utilisant le matchmaking.

Utilisez les ressources suivantes comme guide.

Sélectionnez le scénario de déploiement

Au cours de cette étape, vous choisissez la solution d'hébergement de jeux que vous souhaitez déployer à ce stade. Vous pouvez effectuer plusieurs déploiements de votre jeu, en utilisant n'importe quel scénario.

  • Flotte à région unique : déploie votre serveur de jeu sur une flotte unique de ressources d'hébergement dans la région par défaut AWS du profil actif. Ce scénario constitue un bon point de départ pour tester l'intégration de votre serveur AWS et la configuration de la version du serveur. Il déploie les ressources suivantes :

    • AWSflotte (à la demande) avec la version de votre serveur de jeu installée et en cours d'exécution.

    • Groupe d'utilisateurs et client Amazon Cognito pour permettre aux joueurs de s'authentifier et de démarrer une partie.

    • Autorisateur de passerelle d'API qui relie le groupe d'utilisateurs aux API.

    • WebACL pour limiter les appels excessifs des joueurs à la passerelle API.

    • Passerelle API + fonction Lambda permettant aux joueurs de demander une machine à sous. Cette fonction appelle CreateGameSession() si aucune fonction n'est disponible.

    • Passerelle API + fonction Lambda permettant aux joueurs d'obtenir des informations de connexion pour leur demande de jeu.

  • FlexMatch flotte : déploie votre serveur de jeu sur un ensemble de flottes et met en place un FlexMatch système de matchmaking avec des règles pour créer des parties entre joueurs. Ce scénario utilise un hébergement Spot à faible coût avec une structure multi-flottes et multi-sites pour une disponibilité durable. Cette approche est utile lorsque vous êtes prêt à commencer à concevoir un composant de matchmaking pour votre solution d'hébergement. Dans ce scénario, vous allez créer les ressources de base pour cette solution, que vous pourrez personnaliser ultérieurement selon vos besoins. Il déploie les ressources suivantes :

    • FlexMatch configuration du matchmaking et règles de matchmaking définies pour accepter les demandes des joueurs et former des matchs.

    • Trois AWS flottes équipées de votre version de serveur de jeu sont installées et fonctionnent à plusieurs endroits. Comprend deux flottes Spot et une flotte à la demande en tant que sauvegarde.

    • AWSfile d'attente de placement de sessions de jeu qui répond aux demandes de matchs proposés en trouvant la meilleure ressource d'hébergement possible (en fonction de la viabilité, du coût, de la latence des joueurs, etc.) et en démarrant une session de jeu.

    • Groupe d'utilisateurs et client Amazon Cognito pour permettre aux joueurs de s'authentifier et de démarrer une partie.

    • Autorisateur de passerelle d'API qui relie le groupe d'utilisateurs aux API.

    • WebACL pour limiter les appels excessifs des joueurs à la passerelle API.

    • Passerelle API + fonction Lambda permettant aux joueurs de demander une machine à sous. Cette fonction appelleStartMatchmaking().

    • Passerelle API + fonction Lambda permettant aux joueurs d'obtenir des informations de connexion pour leur demande de jeu.

    • Tables Amazon DynamoDB pour stocker les tickets de matchmaking pour les joueurs et les informations sur les sessions de jeu.

    • Rubrique SNS + Fonction Lambda pour GameSessionQueue gérer les événements.

Définissez les paramètres du jeu

Dans cette étape, vous décrivez le jeu vers lequel vous souhaitez le téléchargerAWS.

  • Nom du jeu : Donnez un nom significatif à votre projet de jeu. Ce nom est utilisé dans le plugin.

  • Nom du parc : donnez un nom significatif à votre parc EC2 géré. Amazon GameLift utilise ce nom (ainsi que l'ID de flotte) pour répertorier les ressources dans la AWS console.

  • Nom de la version : donnez un nom significatif à la version de votre serveur. AWSutilise ce nom pour faire référence à la copie de la version de votre serveur qui est téléchargée sur Amazon GameLift et utilisée pour les déploiements.

  • Paramètres de lancement : entrez les instructions facultatives à exécuter lors du lancement de l'exécutable du serveur sur une instance de flotte EC2 gérée. La longueur maximale est de 1024 caractères.

  • Dossier du serveur de jeu : indiquez le chemin d'accès à un dossier local contenant la version de votre serveur.

  • Fichier du serveur de jeu : Spécifiez le nom du fichier exécutable du serveur.

Scénario de déploiement

Au cours de cette étape, vous déployez votre jeu sur une solution d'hébergement cloud en fonction du scénario de déploiement que vous avez choisi. Ce processus peut prendre jusqu'à 40 minutes pour AWS valider la version de votre serveur, approvisionner les ressources d'hébergement, installer votre serveur de jeu, lancer les processus du serveur et les préparer à héberger des sessions de jeu.

Pour démarrer le déploiement, choisissez Deploy CloudFormation. Vous pouvez suivre l'état de votre hébergement de jeux ici. Pour obtenir des informations plus détaillées, vous pouvez vous connecter à la console AWS de gestion AWS et consulter les notifications d'événements. Assurez-vous de vous connecter en utilisant le même compte, le même utilisateur et AWS la même région que le profil utilisateur actif dans le plugin.

Lorsque le déploiement est terminé, votre serveur de jeu est installé sur une instance AWS EC2. Au moins un processus serveur est en cours d'exécution et prêt à démarrer une session de jeu.

Lancer le client du jeu

Lorsque votre flotte est déployée avec succès, des serveurs de jeu sont désormais opérationnels et disponibles pour héberger des sessions de jeu. Vous pouvez maintenant créer votre client, le lancer, vous connecter pour rejoindre la session de jeu.

  1. Configurez votre client de jeu. Au cours de cette étape, vous demandez au plugin de mettre à jour une GameLiftClientSettings ressource pour votre projet de jeu. Le plugin utilise cet actif pour stocker certaines informations dont votre client de jeu a besoin pour se connecter au GameLift service Amazon.

    1. Si vous n'avez pas importé et initialisé le jeu d'exemple, créez une nouvelle GameLiftClientSettings ressource. Dans le menu principal de l'éditeur Unity, choisissez Assets, Create GameLift, Client Settings. Si vous créez plusieurs copies de GameLiftClientSettings votre projet, le plugin le détecte automatiquement et vous indique quel actif le plugin va mettre à jour.

    2. Dans Launch Game, choisissez Configurer le client : appliquer les paramètres EC2 gérés. Cette action met à jour les paramètres de votre client de jeu afin d'utiliser le parc EC2 géré que vous venez de déployer.

  2. Créez votre client de jeu. Créez un exécutable client en utilisant le processus de construction standard de Unity. Dans Fichier, Paramètres de compilation, basculez la plateforme sur Windows, Mac, Linux. Si vous avez importé l'exemple de jeu et initialisé les paramètres, la liste des builds et la cible des builds sont automatiquement mis à jour.

  3. Lancez le nouveau fichier exécutable du client de jeu. Pour commencer à jouer, lancez deux à quatre instances clientes et utilisez l'interface utilisateur de chacune pour rejoindre une session de jeu.

Si vous utilisez l'exemple de client de jeu, il présente les caractéristiques suivantes :

  • Un composant de connexion des joueurs. Lorsque vous vous connectez à un serveur de jeu d'une flotte Anywhere, aucune validation n'est requise par le joueur. Vous pouvez saisir n'importe quelle valeur pour rejoindre la session de jeu.

  • Une interface utilisateur simple pour rejoindre le jeu. Lorsqu'un client tente de rejoindre une partie, il recherche automatiquement une session de jeu active avec un emplacement de joueur disponible. Si aucune session de jeu n'est disponible, le client demande une nouvelle session de jeu. Si une session de jeu est disponible, le client demande à rejoindre la session de jeu disponible. Lorsque vous testez votre jeu avec plusieurs clients simultanés, le premier client démarre la session de jeu et les autres clients rejoignent automatiquement la session de jeu existante.

  • Sessions de jeu avec des machines à sous pour quatre joueurs. Vous pouvez lancer jusqu'à quatre instances de client de jeu simultanément et elles rejoindront la même session de jeu.