Résolution des problèmes liés à Amazon GameLift Streams - Amazon GameLift Streams

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.

Résolution des problèmes liés à Amazon GameLift Streams

Problèmes de connectivité

Lorsque vous configurez votre service principal Amazon GameLift Streams, vérifiez les points suivants :

  • Choisissez le plus proche Région AWS possible des utilisateurs finaux. La latence élevée entre vos clients et la région hébergeant votre diffusion peut avoir un impact sur la qualité de la diffusion. Vous pouvez envoyer un ping aux points de terminaison de AWS console de la région pour obtenir une mesure approximative de la latence.

  • Vérifiez que votre groupe de flux a la capacité d'accueillir de nouveaux flux.

  • Vérifiez qu'il ConnectionTimeoutSeconds est défini de manière raisonnable. Augmentez-le pour laisser plus de temps aux clients pour se connecter avant la fin du délai imparti.

Conseillez à vos clients de vérifier les points suivants :

  • Ouvrez les ports UDP 33435-33465 pour autoriser le streaming depuis Amazon Streams. GameLift Si Amazon GameLift Streams ne parvient pas à accéder à ces ports, cela peut entraîner des problèmes de streaming, tels qu'un écran noir ou gris.

  • Vérifiez que votre connexion Internet peut maintenir une vitesse de connexion d'au moins 10 Mbits/s pour un flux 1080p. Si vous détectez des problèmes de réseau alors que vous jouez sur Amazon GameLift Streams, il est possible que votre débit Internet fluctue et que vous n'obteniez peut-être pas au moins 10 Mbits/s de manière régulière. Effectuez un test de vitesse Internet et poursuivez les étapes de résolution des problèmes.

  • Utilisez un réseau filaire si possible. Lorsque vous utilisez le Wi-Fi, rapprochez votre appareil de votre routeur pour augmenter la puissance du signal.

  • Si vous utilisez un routeur Wi-Fi doté à la fois de GHz bandes 2,4 GHz et 5, essayez de vous connecter à une autre bande. Si vous ne savez pas comment faire passer votre routeur à une autre bande, consultez les pages d'assistance du fabricant ou du fournisseur de votre routeur Wi-Fi. Vous pouvez également contacter leur service client.

  • Identifiez si d'autres utilisateurs du même réseau (en particulier lorsqu'ils utilisent un réseau Wi-Fi domestique) exécutent des applications à bande passante élevée, telles que le streaming vidéo, le téléchargement, les jeux en ligne ou les sauvegardes.

  • Fermez les autres applications de votre appareil qui consomment de la bande passante.

  • N'utilisez pas de VPN ou de proxy pendant le streaming. Ils peuvent provoquer des temps de latence plus élevés et bloquer le jeu.

  • Vérifiez que vous utilisez le Wi-Fi plutôt que les réseaux cellulaires lorsque vous jouez sur un iPad ou un iPhone. L'utilisation d'un réseau cellulaire peut entraîner des problèmes de connectivité.

  • Les utilisateurs de macOS doivent désactiver les services de localisation, car cela provoquera une pause du Wi-Fi de temps en temps, ce qui nuira à l'expérience de streaming.

Problèmes de performance

Cette section identifie les causes potentielles des mauvaises performances de streaming de jeux et propose des suggestions pour optimiser vos streams avec Amazon GameLift Streams.

Les performances du jeu sont réduites lors du streaming sur Amazon GameLift Streams

Si votre jeu fonctionne correctement sur votre propre machine mais que vous rencontrez des problèmes de performances lorsque vous le diffusez sur Amazon GameLift Streams, prenez en compte les points suivants :

  • Votre machine est peut-être dotée d'un matériel plus puissant qu'Amazon GameLift Streams. Assurez-vous de tester l'application sur une machine dont les performances sont similaires à celles du matériel utilisé par Amazon GameLift Streams. Pour les classes de streaming gen4n, cela est comparable à un ordinateur équipé d'un processeur graphique NVIDIA RTX 2060. Pour les classes de streaming gen5n, cela est comparable à un ordinateur équipé d'un GPU NVIDIA RTX 3080.

  • Le problème peut être dû à votre connexion réseau ou aux paramètres d'Amazon GameLift Streams. Suivez les conseils de résolution des problèmes présentés dans la Problèmes de connectivité section.

Si votre jeu est lent même en local, vous devez optimiser ses performances. Les meilleures méthodes d'optimisation dépendent du moteur ou du framework spécifique que vous utilisez.

Les applications Windows présentent des temps de chargement lents ou des problèmes de bégaiement

Si le temps de chargement de votre jeu est long ou qu'il bégaie, nous vous recommandons de suivre la procédure suivante :

  1. Assurez-vous que votre application est empaquetée et optimisée pour les performances de chargement en suivant les conseils du fournisseur de votre moteur concernant l'optimisation du contenu et des performances des shaders.

  2. Assurez-vous que votre application est définie comme l'application par défaut dans un groupe de flux.

  3. Optimisez le premier lancement de l'application sur le service en mettant en cache les shaders dans le cadre du package de votre application.

Il existe deux approches pour activer la mise en cache des shaders :

  • Mise en cache basée sur le pilote : cette approche est spécifique à la version du GPU et du pilote de l'environnement d'exécution. Cette option peut être appliquée à toutes les applications et constitue donc l'approche recommandée par défaut. Les étapes de cette approche devront être reproduites pour chaque GPU/driver combinaison.

  • Mise en cache basée sur le moteur : cette approche permet la mise en cache des shaders via le moteur de jeu, si disponible. Cela impose au développeur la charge de créer un cache d'objets d'état de pipeline (PSO) préconfiguré. Cela suppose également que le moteur est capable de gérer la prise en charge du cache pour différents pilotes sur le même matériel GPU.

À titre de bonne pratique, nous recommandons d'implémenter d'abord la mise en cache basée sur les pilotes, car elle ne nécessite pas une compréhension approfondie de la manière dont la mise en cache PSO est implémentée pour le moteur donné.

Avec ces implémentations, les fichiers de shader peuvent être exportés et empaquetés avec votre application afin qu'ils n'aient pas à être générés à chaque nouveau démarrage de flux.

Pour implémenter un correctif de mise en cache basé sur un pilote pour une application d'exécution Windows
  1. Commencez à diffuser votre application par défaut et écoutez-la de manière intensive pour générer des shaders pour l'application.

    Important

    Assurez-vous de visiter toutes les zones ou tous les niveaux de l'environnement pour générer autant de shaders que possible.

  2. Avant de fermer le flux, activez la fonctionnalité d'exportation dans votre session de diffusion active. Pour en savoir plus, consultez Exporter les fichiers de session de streaming.

  3. Téléchargez le fichier .zip d'exportation de session de streaming depuis le compartiment Amazon S3 que vous avez spécifié à l'étape précédente. Vous trouverez un lien de téléchargement sur la console Amazon GameLift Streams sur la page Sessions.

  4. Localisez le dossier des shaders dans l'export de la session de streaming. Il est généralement enregistré à cet emplacement :AppData\Local\NVIDIA\DXCache. Téléchargez les fichiers de shader générés (*.nvph) dans le compartiment Amazon S3 de votre application.

  5. Créez un .bat fichier qui copiera les fichiers du shader dans le dossier de mise en cache NVIDIA lors de l'exécution. Ce dossier se trouve généralement à l'emplacement suivant :C:\Users\Administrator\AppData\Local\NVIDIA\DXCache. Téléchargez le .bat fichier dans le compartiment d'applications Amazon S3.

  6. Créez une nouvelle application Amazon GameLift Streams avec le .bat fichier comme chemin exécutable.

Lorsque votre application démarre le streaming, votre .bat fichier copie les shaders prégénérés dans le cache des shaders avant de lancer l'application, ce qui améliore les performances de chargement des flux.

Note

Vous devrez peut-être répéter ces étapes chaque fois que vous mettez à jour votre application ou que vous associez l'application Amazon GameLift Streams à un nouveau groupe de flux. Les nouveaux groupes de flux peuvent contenir des pilotes GPU mis à jour depuis le service.

L'exemple de .bat fichier suivant suppose que les fichiers de shader sont stockés sous le préfixe Shaders\ du compartiment Amazon S3. Vous pouvez utiliser une structure de dossiers différente.

@echo off set CURRENT_PATH=%cd% set DXCACHE_DIR=%CURRENT_PATH%\Shaders set NVIDIA_DXCACHE_DIR=C:\Users\Administrator\AppData\Local\NVIDIA\DXCache if not exist "%NVIDIA_DXCACHE_DIR%" ( mkdir "%NVIDIA_DXCACHE_DIR%" ) xcopy /s /f "%DXCACHE_DIR%" "%NVIDIA_DXCACHE_DIR%" start %CURRENT_PATH%\app.exe
Pour implémenter un correctif de mise en cache basé sur le moteur pour une application utilisant Unreal Engine

Pour cette approche, vous pouvez utiliser les fonctionnalités d'Unreal Engine pour créer un cache d'objets d'état de pipeline (PSO) pour votre application Amazon GameLift Streams. Un cache PSO vous permet de fournir des états de pipeline graphique précompilés avec des temps de compilation réduits, ce qui peut réduire les problèmes lors du chargement et du rendu. Cela nécessite une connaissance approfondie d'Unreal Engine, c'est pourquoi nous n'aborderons pas tous les détails spécifiques au moteur ici. Pour obtenir des instructions supplémentaires, reportez-vous aux instructions d'Unreal Engine dans la section « Flux de collecte » consacrée à la création d'un cache PSO groupé.

  1. Générez des shaders pour votre application sur laquelle la journalisation PSO est activée.

    1. Créez une nouvelle application Amazon GameLift Streams à l'aide de la version packagée avec l'application compatible PSO.

    2. Démarrez un stream avec une -logPSO commande dans votre application de journalisation PSO. Vous pouvez utiliser l'option d'arguments de ligne de commande sur la page de configuration du flux de test de la console Amazon GameLift Streams.

      Important

      Assurez-vous de visiter toutes les zones ou tous les niveaux de l'environnement pour générer autant de shaders que possible.

    3. Avant de fermer le flux, activez la fonctionnalité d'exportation dans votre session de diffusion active. Pour en savoir plus, consultez Exporter les fichiers de session de streaming.

    4. Quittez l'application depuis le menu ou en utilisant les commandes d'arrêt Unreal. Si vous fermez le stream directement, le fichier de pipeline Unreal Shaders ne sera pas généré.

    5. Téléchargez le fichier .zip d'exportation de session de streaming depuis le compartiment Amazon S3 que vous avez spécifié lors de l'étape d'exportation. Vous trouverez un lien de téléchargement sur la console Amazon GameLift Streams sur la page Sessions.

  2. Package le fichier de pipeline Unreal shaders dans votre application Amazon GameLift Streams.

    1. Localisez les fichiers PSO enregistrés (rec.pipelinecache) dans l'export de session de streaming sousSaved/CollectedPSOs. Décompressez les fichiers PSO à l'aide des commandes Unreal.

    2. Package une nouvelle version d'Unreal avec le résultat généré lors du déballage. Suivez les instructions d'Unreal, sections Conversion des caches PSO et Intégration des caches PSO dans votre application.

      Important

      Lorsque vous exécutez la commande Unreal dans la section « Conversion des caches PSO », assurez-vous d'utiliser les mêmes fichiers d'entrée de version du pilote. Par exemple : pour DX12, utilisez uniquement les SM6 fichiers comme entrées. Sinon, vous recevrez un message d'erreur lors de l'empaquetage de la nouvelle application.

    3. Créez une nouvelle application Amazon GameLift Streams pour la nouvelle version empaquetée avec les fichiers PSO.

    4. Lorsque vous démarrez et testez des flux, vérifiez que le cache PSO est en cours de chargement. Consultez les journaux de jeu pour la ligne suivante :

      Opened FPipelineCacheFile: ../../...
Note

Vous devrez peut-être répéter ces étapes chaque fois que vous mettez à jour votre application ou que vous associez l'application Amazon GameLift Streams à un nouveau groupe de flux. Les nouveaux groupes de flux peuvent contenir des pilotes GPU mis à jour depuis le service.

Problèmes liés à l'application

Contrôles préliminaires

  • Exécutez votre application sur un autre ordinateur pour vérifier qu'elle est correctement empaquetée. Cela confirme que le contenu de votre application ne contient aucun chemin codé en dur, aucun élément manquant, aucune bibliothèque ou aucun fichier binaire susceptible de ne pas fonctionner sur d'autres appareils.

  • (Facultatif) Exécutez votre application sur une machine dotée d'un processeur graphique comparable à votre classe de GameLift flux Amazon Streams. Cela permet de vérifier que les paramètres de rendu de votre application sont compatibles avec le GPU et que les performances répondent à vos attentes.

  • Ouvrez les ports UDP 33435-33465 pour autoriser le streaming depuis Amazon Streams. GameLift Si Amazon GameLift Streams ne parvient pas à accéder à ces ports, cela peut entraîner des problèmes de streaming, tels qu'un écran noir ou gris.

L'application ne fonctionne pas avec Amazon GameLift Streams on Proton

Problèmes d'application dus à la résolution de l'écran

Les applications risquent de se bloquer, de se bloquer ou de s'afficher de manière incorrecte si vous essayez d'utiliser une résolution plein écran autre que 1920 x 1080. Nous vous recommandons d'utiliser une fenêtre plein écran sans bordure pour exécuter votre application et de ne pas essayer de modifier la résolution.

La saisie des touches semble bloquée sur le client macOS

Sur les clients macOS, les touches peuvent apparaître soudainement bloquées lorsque vous appuyez simultanément sur la touche de modification de commande et sur une autre touche, répétant ainsi l'événement clé. Par exemple, la touche fléchée peut rester bloquée lorsque la touche Commande est également enfoncée. Dans un jeu, si les touches fléchées sont utilisées pour faire tourner la caméra, cela la fera pivoter à l'infini.

  • Problème : La touche Commande de macOS correspond à l'événement Meta key, qui correspond à la touche Windows de Microsoft Windows. Le problème provient d'un bogue affectant les navigateurs macOS lorsque l'on appuie simultanément sur Commande et sur une autre touche. La touche méta est réinitialisée lorsqu'elle est relâchée, mais la touche flèche n'est pas réinitialisée car le navigateur n'a pas capturé d'événement de saisie pour la touche flèche. Le client du SDK Web n'envoie donc pas d'événement de retouche au serveur et l'application de streaming pensera toujours que la touche est enfoncée.

  • Solution : Si vous n'utilisez pas la touche Commande, vous pouvez la filtrer à l'aide du mécanisme de filtrage du clavier du SDK Web (keyboardFilter) disponible dans l'interface du InputConfiguration SDK Web.

Les mouvements de la souris se comportent différemment sur Amazon Streams GameLift

Si le mouvement de la souris se comporte différemment lors du streaming avec Amazon GameLift Streams, par exemple si vous vous déplacez plus rapidement que prévu, vous devrez peut-être ajuster la logique de manipulation de la souris et de gestion du curseur dans votre application.

  • Problème : Amazon GameLift Streams utilise une heuristique pour déterminer s'il convient de transmettre les événements relatifs à la souris en mode « relatif » ou « absolu ». En mode relatif, les nouvelles mises à jour de la souris sont fournies sous forme de petites différences incrémentielles par rapport à la mise à jour précédente. En mode absolu, le curseur de la souris est continuellement amené à une position d'écran synchronisée avec le client. Lorsque le curseur du système d'exploitation est visible au-dessus du contenu diffusé, l'heuristique sélectionne toujours les coordonnées absolues. Cela peut entraîner des deltas de mouvement étonnamment importants si votre application attend de petites mises à jour relatives.

  • Solution : si votre application prévoit un mouvement relatif de la souris (par exemple, des commandes de caméra de type FPS ou des interactions basées sur le glisser-déplacer), masquez le curseur du système d'exploitation lors des interactions avec la souris. Par exemple, masquez le curseur lorsque vous passez la souris vers le bas et affichez-le à nouveau en haut de la souris. Cela garantit que les mouvements de déplacement utilisent des coordonnées relatives, la position absolue étant synchronisée uniquement lorsque le bouton est relâché.

Pour plus d'informations sur le mouvement de la souris dans Amazon GameLift Streams, consultezGestion des mouvements de la souris.

L'application Unreal Engine se bloque ou nécessite des dépendances supplémentaires

Si votre application Unreal Engine se bloque, se bloque ou vous oblige à installer des dépendances supplémentaires, telles que Microsoft Visual C++ Runtime, essayez ce qui suit.

  • Utilisez le bon exécutable. Pour que votre application fonctionne correctement avec Amazon GameLift Streams, définissez le chemin de l'application vers le fichier exécutable complet situé dans le Binaries/Win64/ sous-dossier, ou un fichier similaire. Unreal Engine produit deux exécutables : un petit exécutable (un raccourci) à la racine du dossier et un exécutable complet dans le sous-dossier. Binaries/Win64/ Si le fichier exécutable complet est absent, l'application n'a peut-être pas été créée correctement. Par exemple, consultez la structure de dossiers suivante pour un exemple d'application Unreal :

    BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
  • Désactivez Unreal Engine Asserts. Désactivez les macros Check, Verify et Ensure. Cela peut empêcher l'application de créer des crash dumps, ce qui provoquerait le blocage de l'application sur Amazon GameLift Streams. Si les assertions sont activées, vous devez vous attendre à un délai. Pour plus d'informations, consultez la documentation Asserts in Unreal Engine.

    • Configurez USE_CHECKS_IN_SHIPPING=0 pour désactiver les macros Check and Verify.

    • Configurez handleensurepercent=0 pour désactiver les macros Ensure.

L'application Windows s'arrête au lancement

Si votre application Windows s'arrête au lancement, il se peut que votre application soit manquante. DLLs Si votre application est une version de débogage, elle nécessite spécifiquement la version de débogage de la bibliothèque Visual C++. DLLs

Pour résoudre ce problème, nous vous recommandons d'empaqueter votre build et DLLs side-by-side. Pour obtenir des instructions, reportez-vous à la section Préparation d'une machine de test pour exécuter un exécutable de débogage de Microsoft.

Avec la version packagée DLLs, testez votre application sur une machine propre, telle qu'une EC2 instance Amazon. Lorsque vous serez prêt à l'essayer sur Amazon GameLift Streams, créez une nouvelle application à l'aide de ce package. Assurez-vous de choisir le bon exécutable qui exécutera la compilation avec le fichier inclus DLLs.

En général, nous vous recommandons de tester d'abord votre build sur une machine propre, avant d'essayer Amazon GameLift Streams. Pour obtenir des instructions sur les tests sur une EC2 instance Amazon, reportez-vous àConfiguration d'une machine distante.

Accès refusé lors d'une demande au service Amazon GameLift Streams

Si vous rencontrez une exception de « refus d'accès » lorsque vous tentez d'effectuer une action Amazon GameLift Streams ou d'utiliser des ressources, les autorisations de votre rôle AWS Identity and Access Management (IAM) sont peut-être insuffisantes. Cela est dû au fait que vous envoyez des demandes au service Amazon GameLift Streams, par exemple un appel à StartStreamSession.

Assurez-vous que la politique du rôle IAM concerné dispose des autorisations appropriées pour Amazon GameLift Streams. Vérifiez les éléments suivants :

  • Si le rôle IAM dispose d'une politique explicite de « refus de tout », vous devez explicitement répertorier Amazon GameLift Streams comme exception à cette politique en ajoutant "gameliftstreams:*" à l'élément. NotAction Par exemple :

    { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken", "gameliftstreams:*" // Add this ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } }
  • Pour un dépannage supplémentaire, consultez les messages d'erreur relatifs à la résolution des problèmes d'accès refusé dans le guide de l'utilisateur IAM.