Interactions entre le client et le serveur du jeu avec Amazon GameLift - 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.

Interactions entre le client et le serveur du jeu avec Amazon GameLift

Les composants de votre solution GameLift d'hébergement Amazon interagissent les uns avec les autres de manière spécifique pour exécuter des sessions de jeu en réponse à la demande des joueurs. Cette rubrique décrit comment les composants communiquent entre eux lorsque votre serveur de jeu est hébergé sur des EC2 flottes GameLift gérées par Amazon, des flottes Amazon GameLift Anywhere autogérées ou une solution hybride.

Les composants de la solution d'hébergement incluent un serveur de jeu, le GameLift service Amazon, un service principal côté client et un client de jeu. Le serveur de jeu utilise le GameLift serveur Amazon SDK pour interagir avec le GameLift service Amazon. Le service principal utilise le GameLift service Amazon API (une partie du AWS SDK) pour interagir avec le service au nom du client du jeu. Lorsque vous rejoignez une session de jeu, le client de jeu se connecte directement à une session de jeu en utilisant l'adresse IP et le numéro de port uniques de la session de jeu.

Schéma des interactions

Le schéma suivant montre comment les composants de votre hébergement de jeux interagissent afin que le GameLift service Amazon puisse suivre l'état de disponibilité du serveur de jeu et démarrer des sessions de jeu en réponse aux demandes des joueurs.

Comportement du client/serveur du jeu pour les interactions clés, comme décrit dans cette rubrique.

Comportements d'interaction

Les sections suivantes décrivent la séquence des événements dans chacune des interactions clés.

Initialisation d'un processus de serveur de jeu

Au démarrage, un processus de serveur de jeu établit une communication avec le GameLift service Amazon et indique qu'il est prêt à héberger une session de jeu.

  1. Un nouveau processus de l'exécutable du serveur de jeu commence à s'exécuter sur une ressource d'hébergement.

  2. Le processus du serveur de jeu appelle les SDK opérations suivantes sur le serveur dans l'ordre :

    1. InitSDK()pour initialiser le serveurSDK, authentifier le processus du serveur et établir une communication avec le service Amazon GameLift .

    2. ProcessReady()pour indiquer si vous êtes prêt à organiser une session de jeu. Cet appel indique également les informations de connexion du processus, que les clients du jeu utilisent pour se connecter à la session de jeu, ainsi que d'autres informations.

    Le processus du serveur attend ensuite les instructions du service Amazon GameLift .

  3. Amazon GameLift met à jour l'état du processus du serveur ACTIVE et indique qu'il est disponible pour héberger une nouvelle session de jeu.

  4. Amazon GameLift commence à appeler régulièrement le onHealthCheck callback pour demander un état de santé aux processus du serveur. Ces appels se poursuivent tant que le processus du serveur reste actif. Le processus du serveur doit répondre correctement ou non dans un délai d'une minute. Si le processus du serveur ne répond pas correctement ou ne répond pas, le GameLift service Amazon modifie à un moment donné le statut actif du processus du serveur et arrête d'envoyer des demandes pour démarrer une session de jeu.

Création d'une session de jeu

Le GameLift service Amazon démarre une nouvelle session de jeu en réponse à une demande d'un joueur souhaitant jouer au jeu.

  1. Un joueur utilisant le client du jeu demande à rejoindre une session de jeu. En fonction de la façon dont votre jeu gère le processus d'adhésion des joueurs, le client du jeu envoie une demande au service principal.

  2. Si le processus d'inscription d'un joueur nécessite le démarrage d'une nouvelle session de jeu, le service principal envoie une demande de nouvelle session de jeu au GameLift service Amazon. Cette demande appelle l'APIopération de serviceStartGameSessionPlacement(). (Comme alternative, le service principal peut appelerStartMatchmaking(), ouCreateGameSession().)

  3. Le GameLift service Amazon répond en créant un nouveau GameSessionPlacement ticket avec statutPENDING. Il renvoie les informations des tickets au service principal, afin qu'il puisse suivre l'état du ticket de placement et déterminer quand la session de jeu est prête pour les joueurs. Pour de plus amples informations, veuillez consulter Configurer une notification d'événement pour le placement des sessions de jeu.

  4. Le GameLift service Amazon lance le processus de placement des sessions de jeu. Il identifie les flottes à examiner et recherche dans ces flottes un processus serveur actif qui n'héberge pas de session de jeu. Lorsqu'il localise un processus serveur disponible, le GameLift service Amazon effectue les opérations suivantes :

    1. Crée un GameSession objet avec les paramètres de session de jeu et les données du joueur provenant de la demande de placement, et définit le statut surACTIVATING.

    2. Invite le processus serveur à démarrer une session de jeu. Le service invoque le onStartGameSession rappel du processus serveur et transmet l'GameSessionobjet.

    3. Modifie le nombre de sessions de jeu du processus serveur en1.

  5. Le processus du serveur exécute sa fonction de onStartGameSession rappel. Lorsque le processus serveur est prêt à accepter les connexions des joueurs, il lance l'SDKopération du serveur ActivateGameSession() et attend les connexions des joueurs.

  6. Le GameLift service Amazon met à jour l'GameSessionobjet avec les informations de connexion pour le processus serveur (comme indiqué dans l'appel àProcessReady()) et définit le statut de la session de jeu surACTIVE. Il met également à jour le statut du GameSessionPlacement ticket enFULFILLED.

  7. Le service principal appelle DescribeGameSessionPlacement() pour vérifier l'état des tickets et obtenir des informations sur les sessions de jeu. Lorsque la session de jeu est active, le service principal avertit le client du jeu et transmet les informations de connexion à la session de jeu.

  8. Le client du jeu utilise les informations de connexion pour se connecter directement au processus du serveur de jeu et rejoindre la session de jeu.

Ajouter un joueur à une partie

Un jeu peut éventuellement utiliser les sessions des joueurs pour suivre les connexions des joueurs aux sessions de jeu. Les sessions des joueurs peuvent être créées individuellement ou dans le cadre d'une demande de placement de session de jeu.

  1. Le service principal appelle le API service à l'aide CreatePlayerSession() d'un identifiant de session de jeu.

  2. Le GameLift service Amazon vérifie le statut de la session de jeu (ce doit être le casACTIVE) et recherche un emplacement de joueur ouvert pendant la session de jeu. Si un emplacement est disponible, le service effectue les opérations suivantes :

    1. Crée un nouvel PlayerSession objet et définit son statut surRESERVED.

    2. Répond à la demande de service principal en fournissant les informations de session du joueur.

  3. Le service principal transmet les informations de session du joueur au client du jeu ainsi que les informations de connexion à la session de jeu.

  4. Le client du jeu utilise les informations de connexion et l'identifiant de session du joueur pour se connecter directement au processus du serveur de jeu et demander à rejoindre la session de jeu.

  5. En réponse à une tentative de connexion d'un client de jeu, le processus du serveur de jeu appelle le API service AcceptPlayerSession() pour valider l'identifiant de session du joueur. Le processus serveur accepte ou refuse la connexion.

  6. Le GameLift service Amazon effectue l'une des opérations suivantes :

    1. Si la connexion est acceptée, Amazon GameLift définit le PlayerSession statut ACTIVE et transmet le processus PlayerSession au serveur de jeu.

    2. Si le processus du serveur de jeu ne AcceptPlayerSession() demande pas l'identifiant de session du joueur dans un certain délai après la CreatePlayerSession() demande initiale, le GameLift service Amazon change le PlayerSession statut TIMEDOUT et rouvre l'emplacement du joueur dans la session de jeu.

Supprimer un joueur

Pour les jeux qui utilisent des sessions de jeu, le processus du serveur de jeu avertit le GameLift service Amazon lorsqu'un joueur se déconnecte. Le service utilise ces informations pour suivre l'état des machines à sous des joueurs au cours d'une session de jeu et peut permettre aux nouveaux joueurs d'utiliser les machines à sous ouvertes.

  1. Un joueur se déconnecte de la session de jeu.

  2. Le processus du serveur de jeu détecte la perte de connexion et appelle le serveur à SDK fonctionnerRemovePlayerSession().

  3. Le GameLift service Amazon change le statut de la session du joueur COMPLETED et rouvre l'emplacement du joueur pendant la session de jeu.

Fermeture de la session de jeu

À la fin d'une session de jeu ou lors de la fermeture de la session de jeu, le processus du serveur informe le GameLift service Amazon de l'état de la session de jeu.

  1. Le processus du serveur de jeu met fin à la session de jeu et initie l'arrêt du processus en appelant l'SDKopération ProcessEnding() du serveur.

  2. Le GameLift service Amazon effectue les opérations suivantes :

    1. Télécharge les journaux des sessions de jeu sur Amazon Simple Storage Service (Amazon S3).

    2. Modifie le statut de la session de jeu enTERMINATED.

    3. Modifie l'état du processus du serveur enTERMINATED.

    4. En fonction de la conception de la solution d'hébergement, les nouvelles ressources d'hébergement disponibles sont allouées pour exécuter un nouveau processus de serveur de jeu.