Ce guide aide les développeurs à tester, visualiser et optimiser leurs jeux multijoueurs à l'aide de la gamme de tests Amazon GameLift. Grâce à celle-ci, les développeurs peuvent dépanner, déboguer et régler leur infrastructure Amazon GameLift. Le présent guide propose une fonctionnalité optionnelle permettant d'utiliser des joueurs virtuels qui exécutent le même code que les joueurs réels. Les développeurs peuvent ainsi tester l'efficacité de leur jeu avant son lancement en production.
Diagramme d'architecture
Étape 1
Amazon CloudFront permet d'accéder à la console Web de boîte à outils, qui est stockée sur Amazon Simple Storage Service (Amazon S3). Les utilisateurs de la console de boîte à outils s'authentifient auprès des groupes d'utilisateurs Amazon Cognito.
Étape 2
La console Web se connecte à une API WebSocket Amazon API Gateway, qui appelle une fonction AWS Lambda pour traiter les demandes et stocker des données dans Amazon DynamoDB.
Étape 3
La fonction Lambda peut interroger et mettre à jour l'infrastructure Amazon GameLift directement.
Étape 4
L'écouteur de jeu reçoit des événements GameLift à partir d'Amazon EventBridge et utilise AWS Step Functions pour interroger et récupérer les mises à jour d'infrastructure de GameLift et d'Amazon CloudWatch.
Étape 5
L'écouteur de jeu distribue des données d'événements agrégées à partir d'un bus d'événements EventBridge personnalisé. Les événements sont reçus par une fonction Lambda qui stocke les données dans DynamoDB et appelle API Gateway pour les envoyer aux utilisateurs connectés à la console Web afin qu'ils puissent les visualiser.
Étape 6
L'utilisateur de la console Web peut également lancer des tâches de joueur virtuel sur AWS Fargate pour simuler des clients de jeux réels.
Étape 7
Chaque tâche de joueur virtuel demande une identité d'invité Amazon Cognito et se connecte à API Gateway des services clients du jeu pour demander la mise en relation.
Étape 8
Les fonctions Lambda appellent GameLift FlexMatch pour lancer le processus de mise en relation et placer les relations obtenues sur une flotte à l'aide de files d'attente de sessions de jeu.
Étape 9
Les tâches des joueurs virtuels se connectent aux instances de la flotte GameLift pour démarrer leurs sessions de jeu.
Piliers AWS Well-Architected
Le cadre AWS Well-Architected vous permet de comprendre les avantages et les inconvénients des décisions que vous prenez lors de la création de systèmes dans le cloud. Les six piliers du cadre vous permettent d'apprendre les bonnes pratiques architecturales pour concevoir et exploiter des systèmes fiables, sécurisés, efficaces, rentables et durables. Grâce à l'outil AWS Well-Architected Tool, disponible gratuitement dans la console de gestion AWS, vous pouvez examiner vos charges de travail par rapport à ces bonnes pratiques en répondant à une série de questions pour chaque pilier.
Le diagramme d'architecture ci-dessus est un exemple de solution créée en tenant compte des bonnes pratiques Well-Architected. Pour être totalement conforme à Well-Architected, vous devez suivre autant de bonnes pratiques Well-Architected que possible.
-
Excellence opérationnelle
La boîte à outils et l'exemple de jeu sont tous deux entièrement déployés grâce à l'infrastructure en tant que code. Ainsi, les erreurs causées par les processus manuels et l'effort nécessaire pour déployer des modifications sont réduits.
-
Sécurité
L'API de console Web sans serveur d'API Gateway est protégée par une authentification basée sur la gestion des identités et des accès AWS (AWS IAM) contre un groupe d'utilisateurs Amazon Cognito.
L'exemple de backend de jeu sans serveur d'API Gateway est protégé par une authentification basée sur IAM pour une validation sécurisée de l'identité d'invité du joueur.
Les serveurs de jeu de GameLift autorisent uniquement l'accès aux ports utilisés pour la communication client-serveur. Les fonctions Lambda du backend n'ont accès qu'aux services dont elles ont besoin.
-
Fiabilité
Les données sont stockées dans des tables DynamoDB, utilisant l'allocation de capacité à la demande pour se mettre à l'échelle automatiquement en fonction de l'évolution de la demande.
Les services backend de la solution utilisent Lambda, qui met automatiquement les instances à l'échelle.
L'exemple de backend de jeu prend en charge la mise à l'échelle automatique GameLift basée sur la cible pour gérer l'évolution de la demande.
-
Efficacité des performances
En tirant parti de technologies gérées et sans serveur comme API Gateway, Lambda, DynamoDB et Fargate, vous ne payez que pour les ressources que vous utilisez et réduisez ainsi les efforts opérationnels nécessaires à la maintenance de votre solution.
La solution peut être déployée dans la région de votre choix et utilise CloudFront pour réduire la latence pour l'utilisateur final de la console Web.
-
Optimisation des coûts
Les tâches de joueur virtuel peuvent être lancées avec Fargate Spot pour réduire le coût des tests.
La console Web et les exemples de backends de jeux utilisent des technologies sans serveur afin que vous ne payiez que pour les ressources que vous utilisez.
Le backend de la console Web utilise les fonctionnalités de mise à l'échelle natives de Lambda et d’API Gateway, les tables DynamoDB utilisant l'allocation de capacité à la demande pour garantir que les ressources correspondent à la demande.
L'exemple de backend de jeu prend en charge la mise à l'échelle automatique GameLift basée sur la cible afin de limiter les ressources nécessaires.
-
Développement durable
Le guide fait largement appel aux services gérés, ce qui confère à AWS la responsabilité de maintenir un taux d'utilisation moyen élevé.
L'exemple de backend de jeu prend en charge la mise à l'échelle automatique GameLift basée sur la cible afin de limiter les ressources nécessaires. En regroupant les sessions de jeu sur un nombre minimal d'instances de serveur, l'utilisation des ressources est maintenue à un niveau constamment élevé.
En utilisant largement les services gérés, le guide réduit votre impact individuel sur l'environnement.
Vous pouvez réduire davantage l'impact sur la durabilité des ressources inutilisées en lançant des serveurs de jeu sur les parcs d'instance Spot et en lançant des tâches de joueur virtuel sur Fargate Spot.
Ressources d'implémentation
L'exemple de code est un point de départ. Il s'agit d'un document validé par l'industrie, prescriptif mais non définitif, et d'un aperçu pour vous aider à commencer.
Contenu connexe
Titre
Titre
Clause de non-responsabilité
Les exemples de code, les bibliothèques de logiciels, les outils de ligne de commande, les preuves de concept, les modèles ou toute autre technologie connexe (y compris tout ce qui précède qui est fourni par notre personnel) vous sont fournis en tant que contenu AWS en vertu du contrat client AWS ou de l'accord écrit pertinent entre vous et AWS (selon le cas). Vous ne devez pas utiliser ce contenu AWS dans vos comptes de production, ni sur des données de production ou autres données critiques. Vous êtes responsable des tests, de la sécurisation et de l'optimisation du contenu AWS, tel que les exemples de code, comme il convient pour une utilisation en production, en fonction de vos pratiques et normes de contrôle de qualité spécifiques. Le déploiement de contenu AWS peut entraîner des frais AWS pour la création ou l'utilisation de ressources payantes AWS, telles que l'exécution d'instances Amazon EC2 ou l'utilisation du stockage Amazon S3.