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 Framework 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 state-of-the-art architectures adaptées à vos charges de travail de jeu. Dans cette section, nous allons présenter un aperçu des principales définitions.
Pour les besoins de ce paper, une architecture de jeu englobe l'infrastructure technique principale requise pour créer et exploiter un jeu. Certains jeux peuvent ne pas avoir 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 du backend décrits dans ce paper. Pour une description détaillée des différents types de charges de travail fréquemment déployées pour prendre en charge une architecture de jeu, consultez la section Scénarios.
L' AWS Cloud infrastructure est construite autour de régions et de zones de disponibilité.
-
Une région est un emplacement physique dans le monde où nous avons plusieurs zones de disponibilité.
-
Les zones de disponibilité se composent 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.
Selon les caractéristiques de votre jeu, vous souhaiterez peut-être déployer certains composants de votre architecture de jeu dans plusieurs régions pour des raisons telles que l'amélioration des performances pour les joueurs ou pour proposer des expériences personnalisées aux joueurs en fonction de leur situation géographique.
Il existe de nombreux types de jeux différents, et l'infrastructure technique requise pour prendre en charge un jeu varie en fonction du type de jeu développé. 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, notamment les ordinateurs de bureau, le Web, les 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 proposent généralement un 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 de vente au détail, les achats intégrés de contenu téléchargeable (DLC) appelés microtransactions, et par le biais d'abonnements payants obligatoires pour jouer au jeu. Parmi les indicateurs de performance clés (KPIs) les plus courants dans l'industrie du jeu 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 de durée de 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 client, des graphismes, un logiciel client (connu sous le nom de client du 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 répartis dans les catégories suivantes :
-
Consoles : systèmes de divertissement spécialement conçus pour jouer à des jeux, y compris des modèles populaires tels que Sony, PlayStation Microsoft Xbox et 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 console fabriqué par le fournisseur du système de jeu. Dans cette définition, une console peut être portative ou fixe et destinée à être utilisée dans un scénario de divertissement à domicile.
-
Ordinateur personnel (PC) : jeux joués à l'aide d'un logiciel informatique installé sur une machine cliente 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 un magasin d'applications numérique 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 pleine croissance et dont la part de marché est bien inférieure à celle des systèmes les plus prédominants. Les exemples de systèmes de jeu de cette catégorie incluent la réalité augmentée, la réalité virtuelle et le streaming de jeux, parfois appelés cloud gaming.
Le streaming de jeux consiste à rendre le gameplay dans le cloud et à le diffuser sur 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 jeux, 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 jeu cloud (système de jeu).
Serveur de jeu
Les serveurs de jeu représentent 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 lorsque le traitement des événements de jeu faisant autorité par le serveur est requis. Le serveur de jeu est au centre de l'architecture du jeu, où s'exécute la logique de base, qui inclut la gestion du joueur et de l'état 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 lors du lancement du jeu ou pendant les périodes de pointe.
Aux fins du présent 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 la version de votre serveur de jeu hébergeant une session de jeu, qui est une instance de votre jeu en cours à laquelle les joueurs peuvent se connecter via une session de joueur. Pour cette raison, nous parlons souvent de processus de serveur de jeu ou de 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. Il existe plusieurs options de calcul pour héberger des serveurs de jeu, qui donnent accès à une capacité évolutive basée sur le cloud grâce à un provisionnement élastique des ressources. AWS
Amazon EC2 fournit des serveurs virtuels basés sur le cloud, appelés instances, compatibles avec 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 avoir le plus de contrôle sur 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 jeux et est disponible dans la plupart des cas. Vous pouvez Régions AWS donc héberger des serveurs de jeux à proximité des joueurs afin de réduire la latence, d'atteindre une haute disponibilité et de réduire considérablement les coûts en utilisant des instances Spot. Bien qu'il GameLift puisse être intégré dans les 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 qui préfèrent une solution gérée AWS et évolutive au fur et à mesure que leur jeu grandit.
Amazon Elastic Container Service (Amazon ECS) est un service d'orchestration de conteneurs entièrement géré que vous pouvez utiliser pour exécuter des conteneurs basés sur Docker. Vous pouvez également utiliser Amazon Elastic Kubernetes Service (Amazon EKS) pour exécuter des conteneurs basés sur Docker créés à l'aide de Kubernetes. L'utilisation de technologies de conteneur telles que celles fournies par Amazon ECS et Amazon EKS peut vous aider à améliorer votre utilisation du calcul en regroupant efficacement de nombreux processus de serveur de jeu ou d'autres instances d'applications de jeu dans une EC2 instance.
L'utilisation de conteneurs peut également améliorer la productivité des développeurs en hébergeant des applications utilisant le même environnement d'exécution d'images Docker que celui utilisé par les développeurs sur leurs machines locales pendant le développement. Vous pouvez réduire davantage les frais d'exploitation en utilisant AWS Fargate une solution de calcul sans serveur pour l'exécution de conteneurs compatible avec Amazon EKS et Amazon ECS. Fargate convient parfaitement aux cas d'utilisation dans lesquels vous souhaitez exécuter des serveurs de jeux dans des conteneurs sans être responsable de l'exploitation des instances sous-jacentes sur lesquelles les conteneurs s'exécutent.
Vous pouvez l'utiliser AWS Outposts pour exécuter 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 locaux 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 de calcul 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 jeux 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 restreinte 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 processus de serveur de jeu de longue durée. Lambda fournit le plus d'abstraction d'exécution des options présentées dans ce paper, car les développeurs peuvent facilement choisir l'application sous-jacente pour héberger leur code.
Lorsque vous choisissez votre approche pour l'hébergement de serveurs de jeux, tenez compte de diverses exigences, notamment la surcharge opérationnelle, les bases de code existantes, les exigences de performance et l'évolutivité. EC2les instances et les conteneurs constituent de bonnes options pour les bases de code existantes, car ils nécessitent la moindre modification pour passer au cloud, et vous pouvez utiliser des EC2 instances pour dédier les ressources d'une instance de calcul, tandis que les conteneurs peuvent simplifier la gestion et le taux d'utilisation élevé. Les fonctions sans serveur offrent le plus haut niveau d'abstraction, que vous pouvez utiliser pour définir du code qui ne s'exécute qu'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 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 résultats tels 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 toute 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 destinés à un utilisateur ou à une cohorte d'utilisateurs spécifiques, tels que des invitations à des jeux ou des notifications push
-
Messagerie de groupe entre joueurs, comme le chat en jeu
-
ervice-to-serviceMessagerie S, telle que les messages JSON utilisés pour intégrer deux applications ou plus
Une stratégie courante pour envoyer et recevoir ce type de messages consiste à utiliser des modèles d'architecture de traitement asynchrone et éditeur-abonné. AWS fournit plusieurs services qui peuvent vous aider à implémenter la messagerie dans votre jeu.
-
Amazon Simple Notification Service (SNS) : service géré permettant de distribuer des messages entre éditeurs et abonnés à l'aide d'un modèle d'architecture. pub/sub Les éditeurs envoient des messages via une API à Amazon SNS, qui les transmet de manière asynchrone aux applications abonnées et peut envoyer des notifications push directement aux clients mobiles ou aux ordinateurs de bureau grâce à 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 service-to-service la messagerie.
-
Amazon Simple Queue Service (SQS) : 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'entre 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 dissocier les différentes parties de votre jeu et de faire évoluer indépendamment les fonctionnalités destinées aux joueurs par rapport au traitement principal.
-
Amazon Managed Streaming for Apache Kafka (MSK) : service entièrement géré qui simplifie la création de flux de données et d'applications destinées aux producteurs ou aux consommateurs à 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 service-to-service la messagerie.
-
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 le développement d'applications de salon de discussion et de messagerie haute performance. service-to-service Redis prend également en charge les types de données riches tels que les listes et les ensembles afin que les développeurs puissent utiliser Redis pour des files d'attente de haute performance.
-
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 des utilisateurs 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 de jetons d'authentification multifactoriels, de confirmations de commande et d'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 fournis 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 les suites ultérieures plutôt que dans le produit lancé. Grâce à l'approche Live Ops de la gestion du jeu, une équipe chargée des opérations de jeu peut lancer un jeu et maintenir l'engagement de la communauté de joueurs par le biais d'expérimentations, de promotions, d'événements intégrés au jeu et d'innovations visant à 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.