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éfinitions
Le AWS Well-Architected cadre repose sur six piliers : excellence opérationnelle, sécurité, fiabilité, efficacité des performances, optimisation des coûts et durabilité. AWS fournit plusieurs composants de base qui vous permettent de concevoir des architectures de pointe pour vos charges de travail de jeu. Dans cette section, nous présenterons un aperçu des principales définitions.
Aux fins de cet article, une architecture de jeu englobe l'infrastructure technique principale requise pour créer et exploiter un jeu. Certains jeux peuvent ne pas proposer de fonctionnalités sociales, multijoueurs ou autres fonctionnalités en ligne et peuvent ne pas nécessiter l'utilisation de certains aspects de l'infrastructure technique principale décrits dans ce document. Pour une discussion détaillée des différents types de charges de travail fréquemment déployés pour prendre en charge une architecture de jeu, consultez la section Scénarios.
L' AWS Cloud infrastructure est construite autour des régions et des zones de disponibilité.
-
Une région est un emplacement physique dans le monde où nous disposons de plusieurs zones de disponibilité.
-
Les zones de disponibilité sont composées d'un ou de plusieurs centres de données distincts, chacun doté d'une alimentation, d'un réseau et d'une connectivité redondants, hébergés dans des installations distinctes.
En fonction des caractéristiques de votre jeu, vous souhaiterez peut-être déployer certains composants de votre architecture de jeu dans plusieurs régions, par exemple pour améliorer les performances des joueurs ou pour proposer des expériences personnalisées aux joueurs en fonction de leur localisation.
Il existe de nombreux types de jeux, et l'infrastructure technique principale requise pour prendre en charge un jeu varie en fonction du type de jeu en cours de développement. Par exemple, les types de jeux populaires peuvent inclure les jeux de tir à la première personne (FPS), les jeux de rôle (RPG), les jeux en ligne massivement multijoueurs (MMOG), les battle royales (BR), les jeux de sport, les jeux de puzzle, etc. Il existe également différents modes d'interaction qui influencent l'architecture du jeu, tels que le jeu au tour par tour et le jeu simultané, avec des caractéristiques de performance différentes.
Les jeux sont développés pour être joués sur un ou plusieurs systèmes de jeu, y compris les ordinateurs de bureau, le Web, les appareils mobiles, les consoles et les nouveaux modes d'interaction tels que la réalité augmentée (AR), la réalité virtuelle (VR) et les solutions de streaming de jeux. Les jeux prennent généralement en charge le gameplay multisystème, ce qui signifie que les joueurs peuvent enregistrer leur progression dans le jeu et reprendre le jeu sur d'autres systèmes, ainsi que lancer des sessions de jeu avec des joueurs sur d'autres systèmes.
La monétisation des jeux vidéo permet aux éditeurs de jeux de générer des revenus en utilisant différentes stratégies telles que la publicité, les achats de jeux numériques et au détail, les achats intégrés de contenu téléchargeable (DLC) connus sous le nom de microtransactions, et par le biais des abonnements payants requis pour jouer au jeu. Parmi les indicateurs clés de performance (KPI) les plus courants dans l'industrie des jeux vidéo, citons :
-
Daily active users (utilisateurs actifs quotidiens)
-
Monthly active users (utilisateurs actifs mensuels)
-
Utilisateurs simultanés (CCU)
-
Durée de la session
-
Coût par installation (CPI)
-
Valeur à vie du joueur (LTV)
-
Revenu moyen par utilisateur (ARPU)
Système de jeu
Les jeux vidéo sont développés pour être joués sur un système de jeu qui fournit des commandes de saisie, des graphismes, un logiciel client (appelé client de jeu) et du matériel, et dans certains cas des fonctionnalités exclusives au système pour faciliter le jeu.
Les systèmes de jeu sont généralement classés dans les catégories suivantes :
-
Consoles : systèmes de Purpose-built divertissement conçus pour jouer à des jeux, y compris des modèles populaires tels que la Sony PlayStation, la Microsoft Xbox et la Nintendo Switch. Les consoles permettent de jouer à des jeux en installant du contenu de jeu physique ou distribué numériquement sur le matériel de la console fabriqué par le fournisseur du système de jeu. Dans cette définition, une console peut être portable ou fixe et destinée à être utilisée dans un scénario de divertissement à domicile.
-
Ordinateur personnel (PC) : jeux auxquels on joue à l'aide d'un logiciel informatique installé sur un ordinateur client qui peut être personnalisé par le joueur. Pour cette raison, les jeux sur PC sont populaires auprès des joueurs en raison de la flexibilité et du contrôle qu'ils offrent.
-
Web : jeux conçus pour être joués à l'aide d'un navigateur Web et qui offrent généralement l'avantage de permettre à un joueur d'accéder au jeu quel que soit son système d'exploitation.
-
Mobile : jeux développés pour être joués sur un téléphone mobile, généralement un système d'exploitation pour smartphone. Les jeux mobiles sont généralement téléchargés depuis une boutique d'applications numériques et installés sur le téléphone.
Outre les systèmes mentionnés précédemment, il existe également des systèmes naissants qui sont encore relativement nouveaux et en croissance et dont la part de marché est bien inférieure à celle des systèmes les plus prédominants. Parmi les systèmes de jeu de cette catégorie, citons la réalité augmentée, la réalité virtuelle et le streaming de jeux, parfois appelé cloud gaming.
Le streaming de jeux implique le rendu du jeu dans le cloud et le streaming vers un client léger, généralement un navigateur. Le streaming de jeux permet à un joueur de jouer à un jeu entièrement hébergé à distance, généralement dans le cloud par un fournisseur de services de streaming de jeux. Dans le cadre du streaming de jeu, le joueur se connecte à un jeu basé sur le cloud via un navigateur ou un client léger fourni par le fournisseur de services de jeux en cloud (système de jeu).
Serveur de jeu
Les serveurs de jeu constituent l'un des aspects les plus importants de l'infrastructure informatique de votre jeu. Les serveurs de jeu, parfois appelés serveurs de jeu dédiés, sont utilisés lors du développement d'un jeu multijoueur ou lorsqu'un traitement autoritaire des événements de jeu est requis. Le serveur de jeu est au centre de l'architecture du jeu et sert d'emplacement où s'exécute la logique de base, qui comprend la gestion de l'état des joueurs et du jeu ainsi que la gestion des interactions entre les clients de jeu connectés et le serveur de jeu. Le serveur de jeu est généralement l'un des aspects les plus sensibles aux performances d'une architecture de jeu, car il est chargé de traiter les entrées du client de jeu d'un joueur et de les distribuer correctement aux autres joueurs connectés en temps réel. Un serveur de jeu peu performant a un impact sur les performances globales de l'expérience de jeu. Par conséquent, vous devez optimiser les performances du serveur de jeu et fournir une capacité suffisante, en particulier au lancement du jeu ou en période de pointe.
Aux fins de ce document, un serveur de jeu ou une instance de serveur de jeu fait référence à l'ordinateur, tel qu'une machine virtuelle, qui héberge un ou plusieurs processus de serveur de jeu. Un processus de serveur de jeu représente une instance unique de votre serveur de jeu hébergeant une session de jeu, qui est une instance de votre jeu en cours d'exécution à laquelle les joueurs peuvent se connecter via une session de jeu. Pour cette raison, nous faisons souvent référence à un processus de serveur de jeu ou à une session de jeu de manière interchangeable en raison de la relation individuelle implicite entre une session de jeu et le processus du serveur de jeu qui l'héberge. Dans AWS, il existe de nombreuses options de calcul pour héberger des serveurs de jeux, qui permettent d'accéder à une capacité évolutive basée sur le cloud grâce à un provisionnement élastique des ressources.
Amazon EC2 fournit des serveurs virtuels basés sur le cloud, appelés instances, prenant en charge plusieurs versions de Linux et Windows. Vous pouvez créer des instances et les gérer directement comme un autre serveur ou une autre machine virtuelle. Généralement, plusieurs processus de serveur de jeu sont déployés sur une instance afin d'améliorer l'efficacité et de réduire les coûts. Amazon EC2 est un bon choix pour les serveurs de jeux si vous souhaitez contrôler au maximum l'infrastructure informatique.
Amazon GameLift fournit une solution entièrement gérée pour l'hébergement de serveurs de jeux dédiés dans le cloud ainsi que des fonctionnalités supplémentaires telles que le matchmaking avec GameLift FlexMatch. GameLiftfournit une couche d'abstraction au-dessus d'Amazon EC2 pour simplifier la gestion des serveurs de jeu. Il est disponible dans la plupart des cas. Vous pouvez Régions AWS donc héberger des serveurs de jeu à proximité des joueurs afin de réduire la latence, d'atteindre une haute disponibilité et de réduire considérablement les coûts grâce aux instances Spot. Bien qu'il GameLift puisse être intégré aux backends de jeu existants, il est particulièrement utile pour les développeurs de jeux qui ne souhaitent pas développer leurs propres solutions de gestion de serveurs de jeu et de matchmaking et préfèrent une solution gérée par et pouvant évoluer au fur AWS et à mesure de l'évolution de leur jeu.
Amazon Elastic Container Service (Amazon ECS) est un service d'orchestration de conteneurs entièrement géré que vous pouvez utiliser pour exécuter Docker-based des conteneurs. Vous pouvez également utiliser Amazon Elastic Kubernetes Service (Amazon EKS) pour exécuter des Docker-based conteneurs créés à l'aide de Kubernetes. L'utilisation de technologies de conteneurs telles que celles proposées par Amazon ECS et Amazon EKS peut vous aider à améliorer l'utilisation de votre calcul en regroupant efficacement de nombreux processus de serveur de jeu ou d'autres instances d'applications de jeu dans une instance EC2.
L'utilisation de conteneurs peut également améliorer la productivité des développeurs en hébergeant des applications à l'aide du même environnement d'exécution d'exploitation d'image Docker que celui utilisé par les développeurs sur leurs machines locales pendant le développement. Vous pouvez encore réduire les frais opérationnels en utilisant AWS Fargate, qui est une solution de calcul sans serveur pour exécuter des conteneurs et qui est compatible avec Amazon EKS et Amazon ECS. Fargate convient parfaitement aux cas d'utilisation dans lesquels vous souhaitez exécuter des serveurs de jeu dans des conteneurs sans être responsable de l'exploitation des instances sous-jacentes sur lesquelles les conteneurs s'exécutent.
Vous pouvez utiliser AWS Outposts pour gérer AWS l'infrastructure et les services dans un centre de données ou une installation sur site, ce qui peut permettre aux jeux de fonctionner dans des environnements sur site et d' AWS utiliser la même infrastructure pour soutenir une stratégie d'adoption du cloud hybride. AWS Les zones locales sont des extensions Régions AWS qui permettent à vos serveurs de jeu et à d'autres charges de travail sensibles à la latence de fonctionner au plus près de vos joueurs ou de vos équipes de développement. En outre, pour réduire la latence du réseau mondial pour vos serveurs de jeu, vous pouvez utiliser AWS Global Accelerator pour améliorer les performances du trafic des joueurs vers vos serveurs de jeu.
AWS Lambda est un service informatique sans serveur qui exécute du code sans provisionner ni gérer de serveurs, ce qui le rend utile pour les cas d'utilisation de serveurs de jeu asynchrones tels que les jeux au tour par tour ou ceux qui nécessitent des exigences de calcul légères, une base de code réduite et où les fonctionnalités de jeu peuvent être conçues à l'aide d'une architecture de microservices sans état. Il est important de garder à l'esprit que les fonctions Lambda s'exécutent sur la base d'événements et par requête, plutôt que d'exécuter un long processus de serveur de jeu. Parmi les options présentées dans ce document, Lambda fournit la plus grande abstraction d'exécution, car les développeurs peuvent facilement choisir l'application sous-jacente parmi laquelle ils peuvent héberger leur code.
Lorsque vous choisissez votre approche pour l'hébergement de serveurs de jeux, tenez compte de diverses exigences, notamment les frais opérationnels, les bases de code existantes, les exigences de performances et l'évolutivité. Les instances et les conteneurs EC2 constituent de bonnes options pour les bases de code existantes, car ils nécessitent le moindre changement pour passer au cloud. Vous pouvez utiliser les instances EC2 pour dédier les ressources d'une instance de calcul, tandis que les conteneurs peuvent simplifier la gestion et l'utilisation élevée. Les fonctions sans serveur offrent le plus haut niveau d'abstraction, que vous pouvez utiliser pour définir du code qui s'exécute uniquement en réponse à des événements, ce qui peut réduire les coûts.
Client de jeu
Le client de jeu représente le logiciel et le périphérique matériel que le joueur utilise pour jouer à un jeu. Le client du jeu fournit le logiciel permettant de traduire les entrées du joueur en messages envoyés à un serveur pour traitement, et il est chargé de gérer les réponses entrantes du serveur et de rendre les sorties telles que les graphiques au joueur. Dans les jeux multijoueurs en réseau en temps réel, le client du jeu maintient généralement une connexion réseau permanente à un serveur de jeu pendant la durée d'une session de jeu afin de réduire la latence du réseau et de minimiser le temps de traitement. Cependant, le client du jeu peut également interagir via REST avec un serveur de jeu ou des services principaux.
Messagerie
Il existe généralement trois catégories principales de messages dans les jeux :
-
Messages d'engagement des joueurs ciblés sur un utilisateur spécifique ou une cohorte d'utilisateurs, tels que des invitations à des jeux ou des notifications push
-
Messages de groupe entre joueurs, tels que le chat en jeu
-
Service-to-servicemessagerie, telle que les messages JSON utilisés pour intégrer deux applications ou plus
Une stratégie courante pour envoyer et recevoir ces types de messages consiste à utiliser des modèles d'architecture de traitement éditeur-abonné et asynchrone. AWS propose plusieurs services qui peuvent vous aider à implémenter la messagerie dans votre jeu.
-
Amazon Simple Notification Service (SNS) : service géré permettant de transmettre des messages entre les éditeurs et les abonnés à l'aide d'un modèle d' pub/sub architecture. Les éditeurs envoient des messages à l'aide d'une API à Amazon SNS, qui transmet les messages de manière asynchrone aux applications abonnées et peut envoyer des notifications push directement aux clients mobiles ou aux ordinateurs de bureau avec la prise en charge de certains des services de notification push les plus utilisés. Amazon SNS peut être utilisé pour les notifications push destinées aux clients ainsi que pour les cas d'utilisation de la messagerie service à service.
-
Amazon Simple Queue Service (SQS) : un service de file d'attente entièrement géré qui facilite l'intégration des serveurs de jeu à votre jeu, quel que soit le langage de programmation utilisé dans chacun d'eux. De nombreuses tâches de jeu peuvent être découplées et gérées en arrière-plan, comme la mise à jour d'un classement ou des valeurs de temps de jeu dans une base de données. Cette approche est un moyen efficace de découpler les différentes parties de votre jeu et de redimensionner indépendamment les fonctionnalités destinées aux joueurs et le traitement du backend.
-
Amazon Managed Streaming for Apache Kafka (MSK) : un service entièrement géré qui simplifie la création d'applications de streaming de données et de production ou grand public à l'aide d'Apache Kafka, une solution open source populaire. Kafka est généralement utilisé pour ingérer et traiter des données de streaming en temps réel et peut être utilisé pour la messagerie service à service.
-
Amazon ElastiCache (Redis OSS) : fournit un magasin de données en mémoire entièrement géré qui inclut la prise en charge de la pub/sub fonctionnalité populaire de Redis, couramment utilisée pour développer des applications de salon de discussion et une messagerie service à service hautes performances. Redis prend également en charge des types de données riches tels que des listes et des ensembles, afin que les développeurs puissent utiliser Redis pour une mise en file d'attente performante.
-
Amazon Pinpoint : fournit des messages d'engagement des utilisateurs par e-mail, SMS, voix et notifications push. Par exemple, Amazon Pinpoint peut être utilisé pour envoyer des messages d'engagement aux joueurs afin de les inviter à revenir au jeu et peut être utilisé pour des cas d'utilisation transactionnels tels que la prise en charge des jetons d'authentification multifacteurs, les confirmations de commande et les e-mails de réinitialisation de mot de passe.
Opérations de jeu en direct (Live Ops)
Les opérations de jeu en direct (Live Ops) sont un style de gestion et d'opérations de jeu qui traite un jeu comme un service en direct et propose en permanence de nouvelles fonctionnalités, des mises à jour, des promotions, des événements en jeu et des améliorations au jeu lancé afin d'améliorer l'expérience de la communauté des joueurs.
Traditionnellement, les jeux étaient proposés sous forme de produits plutôt que de services, et de nouveaux contenus et fonctionnalités étaient fréquemment intégrés dans les versions ou suites ultérieures plutôt que dans le produit lancé. Grâce à une approche Live Ops en matière de gestion de jeu, une équipe chargée des opérations de jeu peut lancer un jeu et maintenir une communauté de joueurs engagée par le biais d'expérimentations, de promotions, d'événements en jeu et d'innovations pour divertir les joueurs.
Bien que cette approche présente l'avantage de débloquer de nouvelles stratégies d'engagement des joueurs et de générer des flux de revenus récurrents, elle nécessite une expertise opérationnelle accrue. Par exemple, pour mettre en œuvre une stratégie Live Ops réussie, un développeur peut avoir besoin d'intégrer des services cloud ou d'exploiter sa propre infrastructure technique principale. Ils ont également besoin d'un moyen efficace d'identifier et de résoudre les problèmes qui surviennent dans le jeu ou au sein de la communauté des joueurs et qui peuvent avoir un impact négatif sur l'expérience des joueurs.