Ajouter Amazon GameLift Servers à votre serveur de jeu - 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.

Ajouter Amazon GameLift Servers à votre serveur de jeu

Cette rubrique explique comment modifier le code de votre serveur de jeu afin que les processus du serveur de jeu puissent communiquer avec le Amazon GameLift Servers service. Utilisez ces instructions pour les serveurs de jeu que vous prévoyez de déployer sur des EC2 flottes Amazon GameLift Servers gérées, des flottes de conteneurs gérées ou des flottes Anywhere.

Les processus du serveur de jeu communiquent avec le Amazon GameLift Servers service pour recevoir des instructions du service et pour signaler l'état des processus du serveur et l'état de la session de jeu. Pour obtenir des informations détaillées sur les interactions entre les composants de votre solution d'hébergement de jeux (serveur de jeu, service principal, client de jeu etAmazon GameLift Servers), consultezInteractions entre le client et le serveur du jeu avec Amazon GameLift Servers.

Pour préparer votre jeu à l'hébergement, ajoutez le SDK du serveur Amazon GameLift Servers à votre projet de serveur de jeu. Si vous utilisez le Amazon GameLift Servers plugin pour Unreal Engine ou Unity, le SDK du serveur est intégré et prêt à être utilisé. Le SDK du serveur est disponible en plusieurs langues. Pour plus d'informations sur la prise en charge des outils pour les serveurs de jeux, y compris le SDK du serveur, consultezObtenez des outils Amazon GameLift Servers de développement.

Références de l'API du SDK du serveur :

Initialiser le processus du serveur

Ajoutez du code pour établir la communication avec le Amazon GameLift Servers service et signalez lorsque le processus du serveur de jeu est prêt à héberger une session de jeu. Ce code doit être exécuté avant tout Amazon GameLift Servers code.

  1. Initialisez un client d'Amazon GameLift ServersAPI en appelantInitSdk(). Si vous préparez votre serveur de jeu à fonctionner sur des EC2 flottes Amazon GameLift Servers gérées, utilisez la valeur par défaut InitSDK() (C++) (C#) (Unreal) (Go) (C++) sans paramètres. Le client API gère la connexion au Amazon GameLift Servers service pour vous.

    Si vous préparez votre serveur de jeu pour une utilisation sur une flotte Amazon GameLift Servers Anywhere :

    Initialisez le client Amazon GameLift Servers API en l'appelant InitSdk() avec ce qui suit : ServerParameters

    • URL du websocket utilisé pour se connecter à votre serveur de jeu.

    • ID du processus utilisé pour héberger votre serveur de jeu.

    • L'ID de l'ordinateur hébergeant les processus de votre serveur de jeu.

    • L'ID du parc contenant votre ordinateur Amazon GameLift Servers Anywhere.

    • Le jeton d'autorisation généré par l'Amazon GameLift ServersopérationGetComputeAuthToken.

  2. Avertissez le service que le processus du serveur de jeu est prêt à héberger une session de jeu. Appelez ProcessReady() (C++) (C#) (Unreal) (Go) (C++) avec ce qui suit. ProcessParameters Chaque processus du serveur de jeu ne doit être appelé ProcessReady() qu'une seule fois.

    • Numéro de port du processus serveur. Lorsque le processus serveur démarre une session de jeu, il fournit le port au Amazon GameLift Servers service, qui met à jour les informations de session de jeu. Votre jeu peut récupérer ces informations et les fournir aux clients du jeu, qui les utilisent pour se connecter au processus du serveur et rejoindre la session de jeu.

    • Les emplacements des fichiers que vous Amazon GameLift Servers souhaitez stocker pour vous. Il peut s'agir de journaux de session de jeu et d'autres fichiers générés par le processus du serveur au cours d'une session de jeu. Bien que Amazon GameLift Servers ces fichiers soient enregistrés temporairement sur l'ordinateur sur lequel le processus serveur est en cours d'exécution, ils ne sont disponibles que jusqu'à l'arrêt de l'instance. Vous pouvez accéder aux fichiers stockés via la Amazon GameLift Serversconsole ou en appelant l'opération Amazon GameLift Servers API GetGameSessionLogUrl().

      Si vous préparez votre serveur de jeu pour une utilisation sur un parc de conteneurs Amazon GameLift Servers géré :

      Il n'est pas nécessaire de spécifier les paramètres de journalisation d'une flotte de conteneurs. Envoyez plutôt les données de session de jeu et les autres données du journal vers la sortie standard. Les flottes de conteneurs capturent automatiquement toutes les sorties standard de conteneurs sous forme de flux journal.

    • Les fonctions de rappel suivantes permettent d'Amazon GameLift Serversenvoyer des messages ou des invites à un processus de serveur de jeu. Vous devez implémenter chacune de ces fonctions dans le code de votre serveur de jeu. Pour plus d'informations, voir ProcessParameters(C++) (C#) (Unreal) (Go) (C++)

      • (Facultatif) onHealthCheck — Amazon GameLift Servers appelle régulièrement cette fonction pour demander un rapport d'état de santé au serveur.

      • onStartGameSession— Amazon GameLift Servers appelle cette fonction en réponse à la demande du client CreateGameSession().

      • onProcessTerminate— Amazon GameLift Servers force le processus du serveur à s'arrêter, le laissant s'arrêter correctement.

      • (Facultatif) onUpdateGameSession : Amazon GameLift Servers fournit un objet de session de jeu mis à jour au serveur de jeu ou fournit une mise à jour de statut suite à une demande de remplacement de match. La fonction de FlexMatchremblayage nécessite ce rappel.

    Vous pouvez également configurer un serveur de jeu afin qu'il puisse accéder en toute sécurité à d'autres AWS ressources que vous possédez ou contrôlez. Pour de plus amples informations, veuillez consulter Communiquez avec les autres AWS ressources de vos flottes.

(Facultatif) Rapport sur l'état des processus du serveur

Ajoutez du code à votre serveur de jeu pour implémenter la fonction de rappel. onHealthCheck() Amazon GameLift Serversinvoque périodiquement cette méthode de rappel pour collecter des indicateurs de santé. Pour implémenter cette fonction de rappel, procédez comme suit :

  • Évaluez l'état de santé du processus du serveur. Par exemple, vous pouvez signaler que le processus du serveur est défectueux si des dépendances externes ont échoué.

  • Terminez l'évaluation du statut et répondez au rappel dans les 60 secondes. S'il Amazon GameLift Servers ne reçoit pas de réponse dans ce délai, il considère automatiquement que le processus du serveur est défectueux.

  • Renvoie une valeur booléenne : true pour sain, false pour malsain.

Si vous n'implémentez pas de rappel de contrôle de santé, Amazon GameLift Servers considérez que le processus du serveur est sain à moins que le serveur ne réponde pas.

Le Amazon GameLift Servers service utilise l'état des processus du serveur pour mettre fin aux processus défaillants et libérer les ressources. Si un processus serveur continue d'être signalé comme défaillant ou ne répond pas à trois vérifications de santé consécutives, le service peut arrêter le processus et en démarrer un nouveau. Le service collecte des mesures sur l'état des processus des serveurs d'une flotte.

(Facultatif) Obtenez un certificat TLS

Si le processus serveur est exécuté sur un parc sur lequel la génération de certificats TLS est activée, vous pouvez récupérer le certificat TLS pour établir une connexion sécurisée avec un client de jeu et chiffrer les communications client-serveur. Une copie du certificat est stockée sur l'instance. Pour obtenir l'emplacement du fichier, appelez GetComputeCertificate()(C++) (C#) (Unreal) (Go) (C++)

Démarrer une session de jeu

Ajoutez du code pour implémenter la fonction de rappel. onStartGameSession Amazon GameLift Serversinvoque ce rappel pour démarrer une session de jeu sur le processus du serveur.

La onStartGameSession fonction prend un GameSessionobjet comme paramètre d'entrée. Cet objet inclut des informations clés de session de jeu, telles que le nombre maximum de joueurs. Il peut également inclure des données de jeu et des données de joueur. L'implémentation de la fonction doit effectuer les tâches suivantes :

  • Lancez des actions pour créer une nouvelle session de jeu en fonction des GameSession propriétés. Au minimum, le serveur de jeu doit associer l'identifiant de session de jeu, auquel les clients du jeu font référence lorsqu'ils se connectent au processus serveur.

  • Traitez les données du jeu et les données des joueurs selon vos besoins. Ces données se trouvent dans l'GameSessionobjet.

  • Prévenez le Amazon GameLift Servers service lorsqu'une nouvelle session de jeu est prête à accepter des joueurs. Appelez l'opération API du serveur ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++) En réponse à un appel réussi, le service change le statut de la session de jeu enACTIVE.

(Facultatif) Valider un nouveau joueur

Si vous suivez le statut des sessions des joueurs, ajoutez un code pour valider un nouveau joueur lorsqu'il se connecte à un serveur de jeu. Amazon GameLift Serverssuit les joueurs actuels et les créneaux de session de jeu disponibles.

À des fins de validation, un client de jeu qui tente de rejoindre une session de jeu doit inclure un identifiant de session de joueur. Amazon GameLift Serversgénère cet identifiant lorsque votre jeu démarre de nouvelles sessions de jeu en appelant StartGameSessionPlacement() ou StartMatchmaking(). Sur ces demandes, un créneau libre dans une session de jeu est réservé à la session du joueur.

Lorsque le processus du serveur de jeu reçoit une demande de connexion d'un client de jeu, il appelle AcceptPlayerSession() (C++) (C#) (Unreal) (Go) (C++) avec l'identifiant de session du joueur. En réponse, Amazon GameLift Servers vérifie que l'identifiant de session du joueur correspond à un emplacement libre réservé pendant la session de jeu. Après avoir Amazon GameLift Servers validé l'identifiant de session du joueur, le processus serveur accepte la connexion. Le joueur peut ensuite rejoindre la session de jeu. Si l'identifiant de session du joueur Amazon GameLift Servers n'est pas validé, le processus du serveur refuse la connexion.

(Facultatif) Signaler la fin d'une session de joueur

Si vous suivez le statut des sessions des joueurs, ajoutez un code pour avertir Amazon GameLift Servers lorsqu'un joueur quitte la session de jeu. Ce code doit être exécuté chaque fois que le processus serveur détecte une interruption de connexion. Amazon GameLift Serversutilise cette notification pour suivre les joueurs actuels et les emplacements disponibles pendant la session de jeu.

Pour gérer les connexions supprimées dans votre code, ajoutez un appel à l'opération d'API du serveur RemovePlayerSession() (C++) (C#) (Unreal) (Go) (C++) avec l'ID de session de joueur correspondant.

Mettre fin à une session de jeu

Ajoutez un code à la séquence d'arrêt du processus du serveur pour Amazon GameLift Servers avertir de la fin d'une session de jeu. Pour recycler et actualiser les ressources d'hébergement, arrêtez chaque processus du serveur une fois la session de jeu terminée.

Au début du code d'arrêt du processus serveur, appelez l'opération API du serveur ProcessEnding()(C++) (C#) (Unreal) (Go) g (C++) Cet appel indique Amazon GameLift Servers que le processus du serveur est en train de s'arrêter. Amazon GameLift Serverschange l'état de la session de jeu et le statut du processus du serveur enTERMINATED. Après l'appelProcessEnding(), le processus peut être arrêté en toute sécurité.

Répondre à une notification d'arrêt du processus du serveur

Ajoutez du code pour arrêter le processus du serveur en réponse à une notification du Amazon GameLift Servers service. Le service envoie cette notification lorsque le processus serveur signale régulièrement un dysfonctionnement ou si l'instance sur laquelle le processus serveur est en cours d'exécution est arrêtée. Amazon GameLift Serverspeut arrêter une instance dans le cadre d'un événement de réduction de capacité ou en réponse à une interruption d'une instance Spot. Une interruption d'une instance Spot donne un préavis de deux minutes, ce qui donne au serveur le temps de déconnecter les joueurs en douceur, de préserver les données relatives à l'état du jeu et d'effectuer d'autres tâches de nettoyage.

Pour gérer une notification d'arrêt, apportez les modifications suivantes au code de votre serveur de jeu :