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

Ajoutez Amazon GameLift à votre serveur de jeu

Votre serveur de jeu personnalisé doit communiquer avec Amazon GameLift, car chaque processus du serveur de jeu doit être capable de répondre aux événements lancés GameLift par Amazon. Votre serveur de jeu doit également tenir Amazon GameLift informé de l'état du processus du serveur et des connexions des joueurs. Pour plus d'informations sur la façon dont votre serveur de jeu, votre service principal, votre client de jeu et Amazon GameLift collaborent pour gérer l'hébergement de jeux, consultezInteractions entre Amazon GameLift et le serveur du jeu.

Pour préparer votre serveur de jeu à interagir avec Amazon GameLift, ajoutez-le SDK à votre projet de serveur de jeu et intégrez les fonctionnalités décrites dans cette rubrique. GameLift Le serveur SDK est disponible en plusieurs langues. Pour plus d'informations sur le GameLift serveur AmazonSDK, consultezAccédez aux outils GameLift de développement Amazon.

SDKAPIRéférences du serveur :

Initialiser le processus du serveur

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

  1. Initialisez le GameLift API client Amazon en appelantInitSdk(). Pour initialiser un processus de serveur de jeu qui s'exécute sur une EC2 instance GameLift gérée par Amazon, utilisez la valeur par défaut InitSDK() (C++) (C#) (Unreal) (Go) (C++) sans paramètres. Amazon se connecte GameLift automatiquement à Amazon GameLift pour vous. Pour initialiser un processus de serveur de jeu en cours d'exécution sur un Amazon GameLift Anywhere ressource de calcul, appelez InitSdk() avec ce qui suit ServerParameters :

    • Le URL 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 GameLift parc dans lequel se trouve votre Amazon GameLift Anywhere calculer.

    • Le jeton d'autorisation généré par l' GameLift opération AmazonGetComputeAuthToken.

  2. Informez Amazon GameLift qu'un processus serveur est prêt à héberger une session de jeu. Appelez ProcessReady() (C++) (C#) (Unreal) (Go) (C++) avec les informations suivantes. (Notez que vous ne devez appeler ProcessReady() qu'une seule fois par processus serveur).

    • Numéro de port utilisé par le processus serveur. Le service principal fournit le numéro de port et une adresse IP aux clients du jeu pour qu'ils se connectent au processus du serveur et rejoignent une session de jeu.

    • Emplacement des fichiers, tels que les journaux de session de jeu, que vous souhaitez qu'Amazon GameLift conserve. Le processus du serveur génère ces fichiers au cours d'une session de jeu. Ils sont temporairement stockés sur l'instance sur laquelle le processus serveur est en cours d'exécution, et ils sont perdus lorsque l'instance s'arrête. Tous les fichiers que vous mettez en vente sont chargés sur Amazon GameLift. Vous pouvez accéder à ces fichiers via la GameLift console Amazon ou en appelant l' GameLift APIopération Amazon GetGameSessionLogUrl().

    • Les noms des fonctions de rappel qu'Amazon GameLift peut appeler à votre processus serveur. Votre serveur de jeu doit implémenter ces fonctions. Pour plus d'informations, voir (C++) (C#) (Unreal) (Go) (C++)

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

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

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

      • (Facultatif) onUpdateGameSession — Amazon GameLift 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 FlexMatch remblayage nécessite ce rappel.

    Vous pouvez également configurer un serveur de jeu pour accéder en toute sécurité aux 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 invoque régulièrement 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. Si Amazon GameLift ne reçoit pas de réponse dans ce délai, il considère automatiquement que le processus du serveur est défaillant.

  • Renvoie une valeur booléenne : true pour un état sain, faux pour un état malsain.

Si vous n'implémentez pas de rappel de contrôle de santé, Amazon GameLift considère que le processus du serveur est sain, sauf si le serveur ne répond pas.

Amazon GameLift 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 tests de santé consécutifs, Amazon GameLift peut arrêter le processus et en démarrer un nouveau. Amazon GameLift collecte des statistiques sur l'état des processus des serveurs d'une flotte.

(Facultatif) Obtenez un TLS certificat

Si le processus serveur est exécuté sur une flotte sur laquelle la génération de TLS certificats est activée, vous pouvez récupérer le TLS certificat pour établir une connexion sécurisée avec un client de jeu et pour 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 permettant d'implémenter la fonction de rappel onStartGameSession. Amazon GameLift invoque ce rappel pour démarrer une session de jeu sur le 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.

  • Avertissez Amazon GameLift lorsqu'une nouvelle session de jeu est prête à accepter des joueurs. Appelez l'APIopération du serveur ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++) En réponse à un appel réussi, Amazon GameLift 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 suit les joueurs actuels et les créneaux de session de jeu disponibles.

Pour la validation, un client de jeu demandant l'accès à la session de jeu doit inclure un identifiant de session de joueur. Amazon génère GameLift automatiquement cet identifiant lorsqu'un joueur demande à rejoindre une partie en utilisant StartGameSessionPlacement() ou StartMatchmaking(). La session de joueur réserve ensuite une place libre dans une session de jeu.

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 vérifie que l'identifiant de session du joueur correspond à un emplacement libre réservé pendant la session de jeu. Une fois qu'Amazon a GameLift validé l'identifiant de session du joueur, le processus du serveur accepte la connexion. Le joueur peut ensuite rejoindre la session de jeu. Si Amazon GameLift ne valide pas l'identifiant de session du joueur, 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 lorsqu'un joueur quitte la session de jeu. Ce code doit s'exécuter chaque fois que le processus serveur détecte une connexion abandonnée. Amazon GameLift utilise cette notification pour suivre les joueurs actuels et les emplacements disponibles pendant la session de jeu.

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

Mettre fin à une session de jeu

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

Au début du code d'arrêt du processus serveur, appelez l'APIopération serveur ProcessEnding()(C++) (C#) (Unreal) (Go) g (C++) (C#) Cet appel indique à Amazon GameLift que le processus du serveur est en train de s'arrêter. Amazon GameLift change le statut 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 d'Amazon GameLift. Amazon GameLift envoie cette notification lorsque le processus du 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 peut 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.

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

  • Implémentez la fonction de rappel onProcessTerminate(). Cette fonction doit appeler le code qui arrête le processus du serveur. Lorsqu'Amazon GameLift invoque cette opération, les interruptions des instances Spot sont notifiées deux minutes à l'avance. Cet avis donne au serveur le temps nécessaire pour déconnecter les joueurs en douceur, préserver les données relatives à l'état du jeu et effectuer d'autres tâches de nettoyage.

  • Appelez le API fonctionnement du serveur GetTerminationTime() (C++) (C#) (Unreal) (Go) (C++) à partir du code d'arrêt de votre serveur de jeu. Si Amazon GameLift a lancé un appel pour arrêter le processus du serveur, GetTerminationTime() renvoie le délai de résiliation estimé.

  • Au début du code d'arrêt de votre serveur de jeu, appelez le service d'APIexploitation du serveur ProcessEnding()(C++) (C#) (Unreal) (Go) (C++) Cet appel indique à Amazon GameLift que le processus du serveur est en train de s'arrêter, GameLift puis Amazon change l'état du processus du serveur en. TERMINATED Après l'appelProcessEnding(), le processus peut être arrêté en toute sécurité.