Déboguer les problèmes liés à GameLift la flotte Amazon - 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éboguer les problèmes liés à GameLift la flotte Amazon

Cette rubrique fournit des conseils sur la manière de résoudre les problèmes liés à vos EC2 flottes GameLift gérées par Amazon.

Problèmes de création de flotte

Lorsque vous créez une EC2 flotte gérée, le GameLift service Amazon lance un flux de travail qui crée la flotte, déploie les EC2 instances avec la version de votre serveur de jeu installée et lance les processus du serveur de jeu sur chaque instance. Pour une description détaillée, voirComment fonctionne la création GameLift de flottes Amazon. Une flotte ne peut pas héberger de sessions de jeu ni de joueurs tant qu'elle n'a pas atteint le statut Actif.

Vous pouvez résoudre les problèmes qui empêchent les flottes de devenir actives en identifiant la phase de création de flotte au cours de laquelle le problème s'est produit et en consultant les événements et les journaux de création de flotte. Si les journaux ne fournissent pas d'informations utiles, il est possible que le problème soit dû à une erreur de service interne. Dans ce cas, essayez de créer à nouveau la flotte. Si le problème persiste, essayez de télécharger à nouveau le build du jeu pour corriger une éventuelle corruption du fichier). Vous pouvez également contacter le GameLift support Amazon ou poser une question sur le forum.

Téléchargement et validation du build

Au cours de cette phase, Amazon GameLift récupère le build de votre serveur de jeu téléchargé, extrait les fichiers et exécute tous les scripts d'installation. Si la création d'une flotte échoue au cours de ces phases, examinez les événements de la flotte et les journaux pour identifier le problème. Les causes possibles incluent :

  • Amazon ne GameLift parvient pas à obtenir le fichier de compilation compressé (événementFLEET_BINARY_DOWNLOAD_FAILED). Vérifiez que l'emplacement de stockage du build est accessible, que vous créez une flotte Région AWS identique au build et qu'Amazon GameLift dispose des autorisations appropriées pour y accéder.

  • Amazon ne GameLift peut pas extraire les fichiers de compilation (événementFLEET_CREATION_EXTRACTING_BUILD).

  • Un script d'installation contenu dans les fichiers de compilation n'a pas pu s'exécuter correctement (événementFLEET_CREATION_FAILED_INSTALLER).

Développement des ressources de flotte

Les problèmes rencontrés au cours de cette phase concernent généralement l'allocation et le déploiement des ressources de la flotte. Les causes possibles incluent :

  • Le type d'instance demandé n'est pas disponible.

  • Le type de flotte demandé (Spot ou On-Demand) n'est pas disponible.

Activation des processus du serveur de jeu

Au cours de cette phase, Amazon GameLift tente un certain nombre de tâches et teste des éléments clés, notamment la viabilité du serveur de jeu, les paramètres de configuration d'exécution et la capacité du serveur de jeu à se connecter au GameLift service Amazon via le serveurSDK.

Note

Au cours de cette phase, vous pouvez accéder à distance à une instance de flotte pour étudier les problèmes de manière plus approfondie. Consultez Connectez-vous à distance aux instances GameLift de flotte Amazon.

Les problèmes possibles incluent :

  • Les processus du serveur ne démarrent pas. Cela suggère un problème lié aux paramètres de configuration d'exécution de la flotte (événements FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND ouFLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE. Vérifiez que vous avez correctement défini le chemin de lancement et les paramètres de lancement facultatifs.

  • Les processus du serveur commencent à s'exécuter, mais le parc ne s'active pas. Si les processus du serveur démarrent et s'exécutent correctement, mais que le parc ne passe pas au statut Actif, cela est probablement dû au fait que le processus du serveur ne parvient pas à communiquer avec le GameLift service Amazon. Vérifiez que votre serveur de jeu effectue les bons SDK appels au serveur (voirInitialiser le processus du serveur) :

    • Le processus du serveur ne parvient pas à s'initialiser (événementSERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT). Le processus du serveur n'est pas correctement appeléInitSdk().

    • Le processus du serveur ne parvient pas à avertir Amazon GameLift lorsqu'il est prêt à héberger une session de jeu (événementSERVER_PROCESS_PROCESS_READY_TIMEOUT). Le processus du serveur s'est initialisé mais n'a pas été appelé ProcessReady() à temps.

  • Une demande de connexion par VPC peering a échoué. Pour les flottes créées avec une connexion d'VPCappairage (voirPour configurer l'appairage de VPC avec une nouvelle flotte), le VPC peering est effectué pendant ces phases d'activation. Si un VPC peering échoue pour une raison quelconque, la nouvelle flotte ne passera pas au statut Active. Vous pouvez suivre le succès ou l'échec de la demande de peering en appelant describe-vpc-peering-connections. Assurez-vous de vérifier qu'il existe une autorisation de VPC peering valide (describe-vpc-peering-authorizations, car les autorisations ne sont valides que pendant 24 heures).

Problèmes liés aux processus serveur

Les processus serveur démarrent mais échouent rapidement ou indiquent une intégrité médiocre.

Hormis les problèmes liés à votre version de génération de jeu, cela peut se produire lorsque vous essayez d'exécuter trop de processus serveur simultanément sur l'instance. Le nombre optimal de processus simultanés dépend des exigences relatives au type d'instance et aux ressources de votre serveur de jeux. Essayez de réduire le nombre de processus simultanés, lequel est défini dans la configuration d'exécution de la flotte, pour voir si les performances s'améliorent. Vous pouvez modifier la configuration d'exécution d'une flotte à l'aide de la GameLift console Amazon (modifiez les paramètres d'allocation de capacité de la flotte) ou en appelant la AWS CLI commande update-runtime-configuration.

Problèmes de suppression de flotte

Une flotte ne peut pas être résiliée en raison d'un nombre d'instances maximum.

Le message d'erreur indique que la flotte en cours de suppression dispose encore d'instances actives, ce qui n'est pas autorisé. Vous devez d'abord mettre à l'échelle une flotte en la réduisant à zéro instance active. Cela s'effectue en définissant manuellement le nombre d'instances souhaitées de la flotte à « 0 », puis en attendant que la réduction prenne effet. Veillez à désactiver la scalabilité automatique, qui contrecarrera les paramètres manuels.

VPCles actions ne sont pas autorisées.

Ce problème ne concerne que les flottes pour lesquelles vous avez spécifiquement créé des connexions VPC d'appairage (voir. Peering VPC pour Amazon GameLift Ce scénario se produit car le processus de suppression d'une flotte inclut également la suppression de la flotte VPC et de toutes les connexions VPC d'appairage. Vous devez d'abord obtenir une autorisation en appelant le GameLift service Amazon API CreateVpcPeeringAuthorization() ou en utilisant la AWS CLI commandecreate-vpc-peering-authorization. Une fois que vous avez l'autorisation, vous pouvez supprimer la flotte.

Problèmes liés au parc de serveurs en temps réel

Sessions de jeu zombie : elles commencent à exécuter un jeu, mais ne se terminent jamais.

Vous pouvez observer ces problèmes dans les scénarios suivants :

  • Les mises à jour des scripts ne sont pas détectées par les serveurs en temps réel de la flotte.

  • La flotte atteint rapidement sa capacité maximale et n'est pas réduite lorsque l'activité des joueurs (telle que les nouvelles demandes de session de jeu) diminue.

Cela est presque certainement dû à l'échec de l'appel réussi de votre script processEnding en temps réel. La flotte est activée et les sessions de jeu démarrées, mais il n'y a pas de méthode pour les arrêter. Par conséquent, le serveur en temps réel qui exécute la session de jeu n'est jamais libéré pour en démarrer une nouvelle, et les nouvelles sessions de jeu ne peuvent démarrer que lorsque de nouveaux serveurs en temps réel sont créés. De plus, les mises à jour du script Realtime n'ont aucun impact sur les sessions de jeu déjà en cours, mais uniquement sur les sessions de jeu en cours.

Pour éviter que cela se produise, les scripts doivent fournir un mécanisme pour déclencher un appel processEnding. Comme illustré dans Exemple de script de serveurs en temps réel, une solution consiste à programmer un délai d'expiration de session inactive, tel que si aucun joueur n'est connecté pendant un certain temps, le script met un terme à la session de jeu actuelle.

Toutefois, si vous tombez dans ce scénario, il existe quelques solutions pour débloquer vos serveurs en temps réel. L'astuce consiste à déclencher le redémarrage des processus du serveur en temps réel (ou des instances de flotte sous-jacentes). Dans ce cas, ferme GameLift automatiquement les sessions de jeu pour vous. Une fois les serveurs en temps réel libérés, ils peuvent démarrer de nouvelles sessions de jeu à l'aide de la dernière version du script en temps réel.

Il existe deux méthodes pour y parvenir, en fonction de l'ampleur du problème :

  • Mettre à l'échelle la totalité de la flotte en la réduisant. Cette méthode est la plus simple à mettre en œuvre mais a un effet étendu. Mettez à l'échelle la flotte en la réduisant à zéro instance, attendez la réduction complète de la flotte, puis remettez-la à l'échelle en l'augmentant. Cela supprimera toutes les sessions de jeu existantes et vous permettra de repartir à zéro avec le script en temps réel le plus récemment mis à jour.

  • Accéder à distance à l'instance et redémarrer le processus. Il s'agit d'une bonne option si vous n'avez que quelques processus à corriger. Si vous êtes déjà connecté à l'instance, par exemple aux journaux de processus ou de débogage, cette méthode peut être la plus rapide. Consultez Connectez-vous à distance aux instances GameLift de flotte Amazon.

Si vous choisissez de ne pas inclure le mode d'appel processEnding dans votre script en temps réel, certaines situations délicates peuvent se produire même lorsque la flotte est active et que des sessions de jeu démarrent. Tout d'abord, une session de jeu en cours d'exécution ne se termine pas. Par conséquent, le processus serveur qui exécute cette session de jeu n'est jamais libre de démarrer une nouvelle session de jeu. Deuxièmement, le serveur Realtime ne détecte aucune mise à jour des scripts.