Testez votre intégration à l'aide de Amazon GameLift Servers Local - Amazon GameLift Servers

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.

Testez votre intégration à l'aide de Amazon GameLift Servers Local

Note

Cette rubrique traite des tests pour les jeux intégrés au SDK du serveur pour les Amazon GameLift Servers versions 3.x et 4.x uniquement. Le package SDK de votre serveur inclut une version compatible de Amazon GameLift Servers Local. Si vous utilisez le SDK de serveur version 5.x, consultez la section Tests locaux avec le SDK de GameLift serveur 5.x pour les tests locaux avec un parc Anywhere. Amazon GameLift Servers Pour obtenir des conseils sur la migration du SDK 4.x vers le SDK 5.x, voir Migrer vers GameLift le SDK du serveur 5.x.

Utilisez Amazon GameLift Servers Local pour exécuter une version limitée du service Amazon GameLift Servers géré sur un périphérique local et tester l'intégration de votre jeu par rapport à cette version. Cet outil est utile lors de l'exécution d'un développement itératif sur l'intégration de votre jeu. L'alternative, qui consiste à télécharger chaque nouvelle version Amazon GameLift Servers et à configurer une flotte pour héberger votre jeu, peut prendre plusieurs ou plus à chaque fois.

Avec Amazon GameLift Servers Local, vous pouvez vérifier les points suivants :

  • Votre serveur de jeux est correctement intégré au kit SDK Server et communique correctement avec le service Amazon GameLift Servers pour démarrer de nouvelles sessions de jeu, accepter de nouveaux joueurs, ainsi que rendre compte de l'intégrité et de l'état.

  • Votre client de jeu est correctement intégré au AWS SDK pour Amazon GameLift Servers et est capable de récupérer des informations sur les sessions de jeu existantes, de démarrer de nouvelles sessions de jeu, de rejoindre des joueurs et de se connecter à la session de jeu.

Amazon GameLift ServersLocal est un outil de ligne de commande qui démarre une version autonome du service géré. Amazon GameLift Servers Amazon GameLift Servers Local fournit également un journal des événements courants concernant l'initialisation des processus du serveur, les contrôles de santé, les appels d'API et les réponses. Amazon GameLift Servers Local reconnaît un sous-ensemble des actions du AWS SDK pour. Amazon GameLift Servers Vous pouvez passer des appels depuis AWS CLI ou depuis le client de votre jeu. Toutes les actions d'API s'exécutent localement de la même manière que dans le service web Amazon GameLift Servers.

Chaque processus serveur ne doit héberger qu'une seule session de jeu. La session de jeu est le fichier exécutable que vous utilisez pour vous connecter à Amazon GameLift Servers Local. Lorsque la session de jeu est terminée, vous devez appeler GameLiftServerSDK::ProcessEnding puis quitter le processus. Lorsque vous testez localement avec Amazon GameLift Servers Local, vous pouvez démarrer plusieurs processus de serveur. Chaque processus se connectera à Amazon GameLift Servers Local. Vous pouvez ensuite créer une session de jeu pour chaque processus du serveur. Lorsque votre session de jeu se termine, le processus de votre serveur de jeu devrait se terminer. Vous devez ensuite démarrer manuellement un autre processus serveur.

Amazon GameLift Serverslocal prend en charge les éléments suivants APIs :

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Configuration Amazon GameLift Servers locale

Amazon GameLift Servers Local est fourni sous la forme d'un fichier exécutable .jar accompagné du kit SDK Server. Il peut s'exécuter sous Windows ou Linux, et être utilisé avec tout langage pris en charge par Amazon GameLift Servers. Pour la version 4.0.2 du SDK, vous pouvez le télécharger depuis les versions officielles GitHub . Le fichier GameLiftLocal .jar est inclus dans l'artefact GameLift-CSharp-ServerSDK -4.0.2.zip.

Avant d'exécuter Local, les éléments suivants doivent avoir été installés.

  • Une version du SDK du serveur pour les Amazon GameLift Servers versions 3.1.5 à 4.x.

  • Java 8

Tester un serveur de jeu

Si vous souhaitez tester votre serveur de jeu uniquement, vous pouvez l'utiliser AWS CLI pour simuler les appels des clients du jeu au service Amazon GameLift Servers local. Vous pouvez ainsi vérifier que votre serveur de jeux se comporte comme prévu dans les circonstances suivantes :

  • Le serveur de jeu démarre correctement et initialise le SDK du serveur pour. Amazon GameLift Servers

  • Dans le cadre du processus de lancement, le serveur de jeux informe Amazon GameLift Servers que le serveur est prêt à héberger des sessions de jeu.

  • Le serveur de jeux envoie le l'état d'intégrité à Amazon GameLift Servers toutes les minutes pendant l'exécution.

  • Le serveur de jeux répond aux demandes de démarrage d'une nouvelle session de jeu.

  1. Démarrez Amazon GameLift Servers Local.

    Ouvrez une fenêtre d'invite de commande, accédez au répertoire contenant le fichier GameLiftLocal.jar et exécutez-le. Par défaut, Local écoute les demandes des clients de jeu sur le port 8080. Pour spécifier un autre numéro de port, utilisez le paramètre -p, comme indiqué dans l'exemple suivant:

    java -jar GameLiftLocal.jar -p 9080

    Une fois que Local a démarré, les journaux indiquent que deux serveurs locaux ont été lancés, l'un qui écoute votre serveur de jeux et l'autre qui écoute votre client de jeu ou l' AWS CLI. Les journaux continuent de signaler l'activité sur les deux serveurs locaux, y compris la communication vers et depuis les composants de votre jeu.

  2. Démarrez votre serveur de jeux.

    Démarrez localement votre serveur de jeux intégré à Amazon GameLift Servers. Il n'est pas nécessaire de modifier le point de terminaison du serveur de jeux.

    Dans la fenêtre d'invite de commande Local, les messages des journaux indiquent que votre serveur de jeux s'est connecté au service Amazon GameLift Servers Local. Cela signifie que votre serveur de jeu a correctement initialisé le SDK du serveur pour Amazon GameLift Servers (avecInitSDK()). Il a appelé ProcessReady() avec les chemins d'accès aux journaux affichés et, en cas de succès, est prêt à héberger une session de jeu. Tandis que le serveur de jeux s'exécute, Amazon GameLift Servers enregistre chaque rapport d'état d'intégrité du serveur de jeux. L'exemple de message de journal suivant illustre l'intégration réussie d'un serveur de jeux :

    16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp 16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal! 16:50:53,451 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true 16:50:53,543 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs" logPathsToUpload: "C:\\game\\error" port: 1935 16:50:53,544 INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true, 16:50:53,558 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy

    Les messages éventuels d'erreur ou d'avertissement sont les suivants :

    • Erreur : « Impossible ProcessReady de trouver un processus avec le PiD : <process ID> ! InitSDK () a-t-il été invoqué ? »

    • Avertissement : « L'état du processus existe déjà pour le processus dont le PID est : <process ID> ! Est-ce que ProcessReady (...) est invoqué plusieurs fois ? »

  3. Démarrez le AWS CLI.

    Une fois que votre serveur de jeux a appelé ProcessReady() avec succès, vous pouvez démarrer les appels clients. Ouvrez une autre fenêtre d'invite de commande et démarrez l' AWS CLI . AWS CLI Par défaut, utilise le point de terminaison du service Amazon GameLift Servers Web. Vous devez remplacer celui-ci par le point de terminaison Local dans toutes les demandes à l'aide du paramètre --endpoint-url, comme indiqué dans l'exemple de demande suivant.

    AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080 --fleet-id fleet-123

    Dans la fenêtre d'invite de AWS CLI commande, AWS gamelift les commandes donnent lieu à des réponses, comme indiqué dans le manuel de référence des AWS CLI commandes.

  4. Créez une session de jeu.

    Avec le AWS CLI, soumettez une demande CreateGameSession(). La demande doit respecter la syntaxe attendue. Pour Local, le paramètre FleetId peut être défini avec toute chaîne valide (^fleet-\S+).

    AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d

    Dans la fenêtre d'invite de commande Local, les messages du journal indiquent que Amazon GameLift Servers Local a envoyé à votre serveur de jeux un rappel onStartGameSession. Si une session de jeu a été créée avec succès, votre serveur de jeux répond en appelant ActivateGameSession.

    13:57:36,129 INFO || - [SDKInvokerImpl] Thread-2 - Finished sending event to game server to start a game session: arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6. Waiting for ack response.13:57:36,143 INFO || - [SDKInvokerImpl] Thread-2 - Received ack response: true13:57:36,144 INFO || - [CreateGameSessionDispatcher] Thread-2 - GameSession with id: arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6 created13:57:36,227 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest requested? true13:57:36,230 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId: "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"

    Dans la AWS CLI fenêtre, Amazon GameLift Servers répond avec un objet de session de jeu comprenant un identifiant de session de jeu. Notez que le statut de la nouvelle session de jeu est Activating. Le statut passe à Actif une fois que votre serveur de jeu l'invoque ActivateGameSession. Si vous souhaitez voir le statut modifié, utilisez le AWS CLI to callDescribeGameSessions().

    { "GameSession": { "Status": "ACTIVATING", "MaximumPlayerSessionCount": 2, "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890", "IpAddress": "127.0.0.1", "Port": 1935 } }

Tester un serveur et un client de jeu

Pour vérifier l'intégration complète de votre jeu, y compris la connexion de joueurs à des parties, vous pouvez exécuter votre serveur de jeux et votre client de jeu localement. Vous pouvez ainsi tester les appels par programmation de votre client de jeu vers Amazon GameLift Servers Local. Vous pouvez vérifier les actions suivantes :

  • Le client du jeu envoie avec succès des demandes de AWS SDK au service Amazon GameLift Servers local, notamment pour créer des sessions de jeu, récupérer des informations sur les sessions de jeu existantes et créer des sessions de joueurs.

  • Le serveur de jeux valide correctement les joueurs lorsqu'ils tentent de rejoindre une session de jeu. Pour les joueurs validés, le serveur de jeux peut récupérer les données des joueurs (si la fonction a été mise en œuvre).

  • Le serveur de jeux signale l'abandon d'une connexion quand un joueur quitte le jeu.

  • Le serveur de jeux rapporte la fin d'une session de jeu.

  1. Démarrez Amazon GameLift Servers Local.

    Ouvrez une fenêtre d'invite de commande, accédez au répertoire contenant le fichier GameLiftLocal.jar et exécutez-le. Par défaut, Local écoute les demandes des clients de jeu sur le port 8080. Pour spécifier un autre numéro de port, utilisez le paramètre -p, comme indiqué dans l'exemple suivant.

    ./gamelift-local -p 9080

    Une fois que Local a démarré, vous voyez que les journaux affichent le lancement de deux serveurs locaux, l'un qui écoute votre serveur de jeux et l'autre qui écoute votre client de jeu ou l' AWS CLI.

  2. Démarrez votre serveur de jeux.

    Démarrez localement votre serveur de jeux intégré à Amazon GameLift Servers. Pour plus d'informations sur les journaux de messages, consultez Tester un serveur de jeu.

  3. Configurez votre client de jeu pour Local et démarrez-le.

    Pour utiliser votre client de jeu avec le service Amazon GameLift Servers Local, vous devez apporter les modifications suivantes à la configuration de votre client de jeu, comme décrit dans Configuration Amazon GameLift Servers sur un service principal :

    • Modifiez l'objet ClientConfiguration afin de pointer vers votre point de terminaison Local, tel que http://localhost:9080.

    • Définissez une valeur d'ID de flotte cible. Pour Local, vous n'avez pas besoin d'un ID de flotte réel ; définissez la flotte cible avec une chaîne valide de votre choix (^fleet-\S+), comme fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d.

    • Définissez les AWS informations d'identification. Pour Local, vous n'avez pas besoin d'informations d'identification AWS réelles ; vous pouvez définir la clé d'accès et la clé secrète avec toute chaîne de votre choix.

    Dans la fenêtre d'invite de commande Local, une fois que vous avez démarré le client de jeu, les messages de journal doivent indiquer qu'il a initialisé le client GameLiftClient et qu'il communique correctement avec le service Amazon GameLift Servers.

  4. Testez les appels de clients de jeu adressés au service Amazon GameLift Servers.

    Vérifiez que votre client de jeu effectue correctement tout ou partie des appels d'API suivants :

    Dans la fenêtre d'invite de commande Local, seuls les appels à CreateGameSession() se traduisent par des messages de journaux. Les messages de journal s'affichent quand Amazon GameLift Servers Local invite votre serveur de jeux à démarrer une session de jeu (rappel onStartGameSession) et obtient avec succès un message ActivateGameSession lorsque votre serveur de jeux l'appelle. Dans la fenêtre de l' AWS CLI , tous les appels d'API entraînent des réponses ou des messages d'erreur tels que documentés.

  5. Vérifiez que votre serveur de jeux valide les nouvelles connexions de joueur.

    Après avoir créé une session de jeu et une session joueur, établissez une connexion directe à la session de jeu.

    Dans la fenêtre d'invite de commande Local, les messages de journaux doivent indiquer que le serveur de jeux a envoyé une demande AcceptPlayerSession() pour valider la nouvelle connexion de joueur. Si vous utilisez le AWS CLI pour appelerDescribePlayerSessions(), le statut de la session du joueur devrait passer de Réservée à Actif.

  6. Vérifiez que votre serveur de jeux signale l'état du jeu et celui du joueur au service Amazon GameLift Servers.

    Pour que Amazon GameLift Servers puisse gérer la demande des joueurs et rapporter correctement les métriques, votre serveur de jeux doit signaler différents états à Amazon GameLift Servers. Vérifiez que Local enregistre les événements liés aux actions suivantes. Vous pouvez également utiliser le pour AWS CLI suivre les changements de statut.

    • Le joueur se déconnecte d'une session de jeu — Les messages du journal Amazon GameLift Servers local devraient indiquer que votre serveur de jeu appelleRemovePlayerSession(). Un appel de l' AWS CLI à DescribePlayerSessions() doit refléter un changement d'état d'Active en Completed. Vous pouvez également appeler DescribeGameSessions() pour vérifier que le nombre de joueurs en cours de la session a diminué d'une unité.

    • Fin de la session de jeu : les messages du journal Amazon GameLift Servers local devraient indiquer que votre serveur de jeu appelleTerminateGameSession().

      Note

      Le conseil précédent était d'appeler à TerminateGameSession() la fin d'une session de jeu. Cette méthode est obsolète avec le SDK de Amazon GameLift Servers serveur v4.0.1. Consultez Mettre fin à une session de jeu.

    • Le processus du serveur est terminé — Les messages du journal Amazon GameLift Servers local devraient indiquer que votre serveur de jeu appelleProcessEnding(). Un AWS CLI appel à DescribeGameSessions() doit refléter un changement de statut de Active à Terminated (ouTerminating).

Variations avec les produits locaux

Lorsque vous utilisez Amazon GameLift Servers Local, gardez à l'esprit les points suivants :

  • Contrairement au service web, Amazon GameLift Servers Local ne permet pas de suivre l'état d'intégrité d'un serveur et d'initier le rappel onProcessTerminate. Local arrête simplement la journalisation des rapports d'état pour le serveur de jeux.

  • Pour les appels au AWS SDK, le parc IDs n'est pas validé et peut être n'importe quelle valeur de chaîne répondant aux exigences des paramètres (^fleet-\S+).

  • Les sessions de jeu IDs créées avec Local ont une structure différente. Ils incluent la chaîne local, comme illustré ici :

    arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6