Testez votre intégration à l'aide d'Amazon GameLift Local - 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.

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

Note

Utilisez cette procédure de test si vous utilisez une version du SDK du GameLift serveur Amazon qui est la version 4.x ou une version antérieure. Le package SDK de votre serveur inclut une version compatible d'Amazon GameLift Local. Si vous utilisez la version 5.x du SDK Testez votre intégration à l'aide des GameLift Anywhere flottes Amazon pour serveurs, consultez les tests locaux avec une flotte Amazon GameLiftAnywhere.

Utilisez Amazon GameLift Local pour exécuter une version limitée du GameLift service Amazon géré sur un appareil local et tester l'intégration de votre jeu par rapport à celui-ci. 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 à charger chaque nouvelle version sur Amazon GameLift et à configurer une flotte pour héberger votre jeu, peut prendre 30 minutes ou plus à chaque fois.

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

  • Votre serveur de jeu est correctement intégré au SDK Server et communique correctement avec le GameLift service Amazon pour démarrer de nouvelles sessions de jeu, accepter de nouveaux joueurs et signaler son état de santé et son état.

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

Amazon GameLift Local est un outil de ligne de commande qui permet de démarrer une version autonome du service Amazon géré. GameLift Amazon GameLift Local fournit également un journal des événements en cours d'exécution concernant l'initialisation des processus du serveur, les contrôles de santé, ainsi que les appels et réponses d'API. Amazon GameLift Local reconnaît un sous-ensemble des actions du AWS SDK pour Amazon. GameLift Les appels peuvent être effectués à partir de l'AWS CLI ou de votre client de jeu. Toutes les actions de l'API s'exécutent localement comme elles le font dans le service GameLift Web Amazon.

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

Amazon GameLift local prend en charge les API suivantes :

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Configurer Amazon GameLift local

Amazon GameLift Local est fourni sous la forme d'un .jar fichier exécutable intégré au SDK du serveur. Il peut être exécuté sous Windows ou Linux et utilisé avec n'importe quelle langue GameLift prise en charge par Amazon.

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

  • Une version du SDK Amazon GameLift Server, versions 3.1.5 à 4.x.

  • Java 8

Tester un serveur de jeu

Si vous souhaitez uniquement tester votre serveur de jeu, vous pouvez utiliser le AWS CLI pour simuler les appels du client de jeu vers le service Amazon GameLift 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 Amazon GameLift Server.

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

  • Le serveur de jeu envoie l'état de santé à Amazon GameLift toutes les minutes pendant qu'il fonctionne.

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

  1. Démarrez Amazon GameLift 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 votre serveur GameLift de jeu intégré à Amazon localement. Il n'est pas nécessaire de modifier le point de terminaison du serveur de jeux.

    Dans la fenêtre d'invite de commande locale, les messages du journal indiquent que votre serveur de jeu s'est connecté au service Amazon GameLift Local. Cela signifie que votre serveur de jeu a correctement initialisé le SDK Amazon GameLift Server (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. Pendant que le serveur de jeu fonctionne, Amazon GameLift enregistre chaque rapport d'état de santé du serveur de jeu. 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 : « ProcessReady Impossible de trouver un processus avec PiD : <process ID>! InitSDK () a-t-il été invoqué ? »

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

  3. Démarrez l'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 CLIPar défaut, il utilise le point de terminaison du service GameLift Web Amazon. 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 AWS CLI fenêtre d'invite de AWS gamelift commandes, les commandes génèrent des réponses, comme indiqué dans la Référence des AWS CLI commandes.

  4. Créez une session de jeu.

    À l'aide duAWS CLI, soumettez une CreateGameSession() demande. 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 locale, les messages du journal indiquent qu'Amazon GameLift Local a envoyé un onStartGameSession rappel à votre serveur de jeu. 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 répond avec un objet de session de jeu incluant 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'appelle. ActivateGameSession Si vous souhaitez voir le statut modifié, utilisez l'AWS CLI pour appeler DescribeGameSessions().

    { "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 de jeu et un client

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. Cela vous permet de tester les appels programmatiques depuis votre client de jeu vers Amazon GameLift 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 Local, notamment pour créer des sessions de jeu, récupérer des informations sur des sessions de jeu existantes et créer des sessions pour les 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 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 votre serveur GameLift de jeu intégré à Amazon localement. 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 Local, vous devez apporter les modifications suivantes à la configuration de votre client de jeu, comme décrit dans Configurer Amazon GameLift sur un service de backend :

    • 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 informations d'identification AWS. 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 locale, une fois que vous avez démarré le client du jeu, les messages du journal doivent indiquer qu'il a initialisé le GameLift service Amazon GameLiftClient et qu'il a bien communiqué avec lui.

  4. Testez les appels du client du jeu vers le GameLift service Amazon.

    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 du journal s'affichent lorsqu'Amazon GameLift Local invite votre serveur de jeu à démarrer une session de jeu (onStartGameSessionrappel) et obtient un message de succès ActivateGameSession lorsque votre serveur de jeu 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 l'AWS CLI pour appeler DescribePlayerSessions(), l'état de la session de joueur doit passer d'Instances réservées à Actif.

  6. Vérifiez que votre serveur de jeu communique le statut du jeu et du joueur au GameLift service Amazon.

    Pour GameLift qu'Amazon puisse gérer la demande des joueurs et communiquer correctement les statistiques, votre serveur de jeu doit renvoyer différents statuts à AmazonGameLift. Vérifiez que Local enregistre les événements liés aux actions suivantes. Vous pouvez également utiliser l'AWS CLI pour suivre les changements d'état.

    • Un joueur se déconnecte d'une session de jeu : les messages du journal Amazon GameLift Local doivent 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 Local doivent indiquer que votre serveur de jeu appelleTerminateGameSession().

      Note

      Les directives précédentes étaient d'appeler à TerminateGameSession() la fin d'une session de jeu. Cette méthode est obsolète avec le SDK Amazon GameLift Server v4.0.1. Consultez Mettre fin à une session de jeu.

    • Le processus du serveur est terminé : les messages du journal Amazon GameLift Local doivent indiquer que votre serveur de jeu appelleProcessEnding(). Un appel de l'AWS CLI à DescribeGameSessions() doit refléter un changement d'état d'Active en Terminated (ou Terminating).

Variations avec le local

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

  • Contrairement au service GameLift Web Amazon, Local ne suit pas l'état de santé d'un serveur et ne lance pas le onProcessTerminate rappel. Local arrête simplement la journalisation des rapports d'état pour le serveur de jeux.

  • Pour les appels vers le kit SDK AWS, les ID de flotte ne sont pas validés et peuvent être n'importe quelle valeur de chaîne qui répond aux exigences du paramètre (^fleet-\S+).

  • Les ID de session de jeu créés 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