GameLift est une plate-forme conçue par AWS spécialement créée pour exécuter des serveurs de jeux vidéo. Il est conçu pour réduire les coûts en mettant automatiquement à l'échelle le nombre d'instances en fonction de la demande fluctuante, et il peut également gérer le matchmaking pour vous.
Qu'est-ce que GameLift?
Chaque match joué en ligne doit avoir un serveur en cours d'exécution pour l'héberger, ce qui peut devenir coûteux très rapidement. Pour aggraver les choses, la demande de serveurs de jeux évolue généralement de manière drastique tout au long de la journée, ce qui rend la demande des heures de pointe beaucoup plus importante que ce qui est nécessaire pendant la nuit.
GameLift gère automatiquement la mise à l'échelle de l'architecture de votre serveur, un peu comme l'autoscaling EC2. Il peut gérer le matchmaking de base et trier vos joueurs en lobbies en fonction de la latence. GameLift prend également en charge règles de matchmaking personnalisées, qui peut trier les joueurs par niveau de compétence et se débarrasser de la nécessité de créer et d'exécuter un système de matchmaking séparé.
GameLift a un SDKet des plugins pour Unity et Unreal. Vous pouvez l'utiliser pour communiquer directement avec GameLift et placer les joueurs dans des files d'attente ou demander de nouvelles sessions depuis votre jeu.
GameLift dispose de deux types de serveurs: les serveurs «temps réel» et les serveurs de jeux «personnalisés». Les serveurs en temps réel sont destinés aux jeux qui n’ont pas besoin de serveurs personnalisés complexes exécutant une copie sans tête du moteur de jeu. Pensez aux jeux mobiles qui n'ont vraiment besoin que d'une base de données et d'une logique de base. Vous programmez ces derniers en utilisant Script en temps réel, basé en C #.
Bien que ceux-ci soient intéressants, ils semblent également être assez fastidieux et vous obligent vraiment à construire tout votre jeu autour de lui, mais cela peut être beaucoup moins cher si votre jeu peut être équipé pour fonctionner sur la plate-forme. L'option de serveur «Personnalisé» vous permet de télécharger votre propre binaire de serveur, ce qui vous donne beaucoup plus de flexibilité. Avec ce type de serveur, GameLift agit comme une version sophistiquée de l'autoscaling EC2, c'est ce que cet article couvre et ce que la plupart des gens utiliseront probablement de toute façon.
Alternatives à GameLift
Si vous ne souhaitez pas utiliser GameLift, vous avez quelques options. Tout d'abord, vous pouvez exécuter vos serveurs simplement sur EC2 et utiliser à la place l'autoscaling EC2 standard. Si vous n'utilisez pas les règles de mise à l'échelle personnalisées de GameLift, l'utilisation de l'autoscaling EC2 standard n'est pas très différente de GameLift. Cependant, il y a un inconvénient majeur ici: lors du scaling automatique EC2 régulier, vous souhaitez utiliser des instances ponctuelles pour minimiser les coûts, car elles sont souvent plusieurs fois moins chères que la location de capacité à la demande.
GameLift utilise également des instances Spot, mais sur GameLift, il existe des précautions supplémentaires pour vous assurer que votre serveur ne sera pas arrêté s'il est actuellement utilisé pour héberger un jeu. Et, s'il doit être arrêté, GameLift peut signaler à votre serveur d'exécuter le processus d'arrêt en douceur. Statistiquement parlant, les interruptions d'instances Spot sont assez rares, mais elles seront mieux gérées sur GameLift.
Même quand même, EC2 Auto-Scaling est probablement votre meilleure alternative à GameLift sur la plate-forme AWS. Si vous connaissez le nombre de base de joueurs que vous allez devoir prendre en charge, vous pouvez acheter des instances réservées à un prix beaucoup moins cher que les instances à la demande, puis utiliser des instances à la demande pour une mise à l'échelle pendant les heures de pointe.
Une autre option consiste simplement à laisser le client héberger le serveur. Certains types de jeux, en particulier les jeux au tour par tour ou les jeux occasionnels non classés, peuvent avoir l'un des clients du match comme serveur d'écoute, tout le monde se connectant à ce client. Cependant, ce n'est pas une bonne idée pour exécuter des jeux classés, car si le serveur d'écoute se ferme, il peut couper la connexion avec tout le monde. Cela ouvre également la possibilité de tricherie lourde, car le client a le contrôle total du serveur (s'il est sélectionné pour héberger le serveur d'écoute). Tout bien considéré, ce type de réseau peut être utilisé pour des matchs entre amis ou pour de petits jeux indépendants sans possibilité d'héberger des serveurs dédiés pour tout le monde.
Créer et télécharger une construction
La première étape de l'utilisation de GameLift est la construction. Vous devez regrouper votre serveur en une seule version qui peut être téléchargée sur AWS et exécutée sur une flotte de serveurs. La version comprend vos binaires, vos dépendances et votre script d'installation. Il peut fonctionner sous Windows ou Linux; Linux sera généralement moins cher, car il y a moins de frais de mémoire et pas de frais de licence. Cependant, de nombreux jeux ne sont pas conçus pour Linux, vous pouvez donc être coincé avec Windows. Le script d'installation sera un fichier dans le répertoire racine de la version de votre serveur de jeu appelé install.bat
ou install.sh
, selon la plate-forme. Le serveur lui-même s'installera sur C: jeu
ou / local / jeu /
.
Vous ne pouvez télécharger des builds qu'à partir de l'AWS CLI. Pour ce faire, utilisez le mise en ligne / création de gamelift
commander:
aws gamelift upload-build --name--build-version --build-root --operating-system WINDOWS_2012 --region us-east-1
Le processus de création et d’exécution d’une compilation dépend de la configuration de votre jeu. Ainsi, si vous souhaitez simplement tester les fonctionnalités de GameLift sans passer par ce processus, AWS fournit un exemple de serveur de jeu que vous pouvez télécharger à l'aide du Console GameLift.
Donnez un nom à votre échantillon et cliquez sur Télécharger. Pour l'utiliser, vous devrez créer une «flotte» qui utilise cette version. Les flottes sont comme des groupes à autoscaling: elles sont configurées pour exécuter votre serveur de jeu et héberger des sessions sur des instances distinctes. Vous pouvez créer une nouvelle flotte en cliquant sur la construction et en sélectionnant «Créer une flotte à partir de la construction», ou vous pouvez créer l'exemple de flotte à partir de la procédure pas à pas en cliquant sur «Créer une flotte». La flotte et la construction apparaîtront maintenant dans votre console, bien que la flotte prendra probablement environ une demi-heure pour créer et valider.
Si vous cliquez sur la flotte, vous pouvez afficher des informations à ce sujet, telles que le nombre actuel de sessions et de joueurs actifs et tous les événements du cycle de vie de la flotte.
Vous pouvez également modifier les paramètres de la flotte. Vous trouverez des options pour utiliser les instances Spot, modifier le type d'instance et spécifier l'exécutable qui est lancé (et les paramètres avec lesquels il se lance).
À partir de ce panneau de paramètres, vous pouvez également configurer votre flotte pour exécuter plusieurs sessions de jeu sur un seul serveur. Si vous savez combien de sessions un serveur donné peut prendre en charge, vous pouvez le définir ici.
Une fois la validation de l'exemple de flotte terminée, vous pouvez télécharger l'exemple de client de jeu (construit avec le moteur de jeu AWS Lumberyard, un fork de CryEngine) et vous y connecter à l'aide du jeton qui vous a été donné dans le didacticiel.
En ce qui concerne l'utilisation réelle de votre flotte, vous souhaiterez créer une "file d'attente", qui triera les joueurs en matchs en fonction de la latence. Vous pouvez spécifier des règles pour essayer de trouver des correspondances à faible latence avant d'essayer des correspondances à latence plus élevée, et sélectionner la flotte vers laquelle vous souhaitez diriger les utilisateurs.
Afin de fournir une bonne correspondance à tout le monde, vous souhaiterez disposer de serveurs dans le monde entier. Les prix AWS dans d'autres régions peuvent devenir chers, mais si vous vous en tenez à quelques prix bon marché, vous pouvez réduire vos coûts.