View a markdown version of this page

Addition GameLift Serveurs Amazon sur votre serveur de jeu à l'aide du SDK du serveur - GameLift Serveurs Amazon

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.

Addition GameLift Serveurs Amazon sur votre serveur de jeu à l'aide du SDK du serveur

Cette rubrique fournit des conseils généraux sur les fonctionnalités du SDK de serveur que vous devez ajouter au code de votre serveur de jeu/ Cette fonctionnalité permet aux processus du serveur de jeu de communiquer avec le Amazon GameLift Servers service. Suivez ces instructions pour les serveurs de jeu que vous envisagez de déployer sur des flottes EC2 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 de santé des processus du serveur et l'état de la session de jeu. Pour des informations détaillées sur les interactions entre les composants de votre solution d'hébergement de jeux (serveur de jeu, service backend, client de jeu etAmazon GameLift Servers), consultezclient/server Interactions dans le jeu avec GameLift Serveurs Amazon.

Téléchargez le SDK du serveur

Pour préparer l'hébergement de votre jeu, ajoutez le SDK du serveur Amazon GameLift Servers à votre projet de serveur de jeu. Le SDK Server 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, consultezGet GameLift Serveurs Amazon outils de développement.

Téléchargez le SDK du serveur pour votre langage de développement depuis github. com/amazon-gamelift. Vous pouvez trouver des dépôts pour les versions du SDK du serveur, les plugins et d'autres outils de développement.

Note

Si vous développez avec Unreal Engine ou Unity, téléchargez le Amazon GameLift Servers plugin pour ces moteurs de jeu. Le SDK du serveur est intégré et prêt à être utilisé. Pour plus d'informations, consultez les liens suivants :

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 signaler quand 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 Amazon GameLift Servers API en appelantInitSdk(). Si vous préparez votre serveur de jeu pour qu'il fonctionne sur des flottes EC2 Amazon GameLift Servers gérées, utilisez la valeur par défaut InitSDK() (C++) (C#) (Unreal) (Go) (C++) Le client API gère la connexion au Amazon GameLift Servers service pour vous.

    Si vous préparez votre serveur de jeu pour l'utiliser sur un GameLift Serveurs Amazon Flotte Anywhere :

    Initialisez le client Amazon GameLift Servers API en effectuant InitSdk() un appel comme suit : ServerParameters

    • URL du Websocket utilisé pour vous connecter à votre serveur de jeu.

    • L'identifiant du processus utilisé pour héberger votre serveur de jeu.

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

    • L'ID de la flotte contenant votre calcul 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 appeler ProcessReady() qu'une seule fois.

    • Le 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.

    • L'emplacement 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 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'à la fermeture de l'instance. Vous pouvez accéder aux fichiers stockés via la Amazon GameLift Servers console ou en appelant l'opération Amazon GameLift Servers API GetGameSessionLogUrl ().

      Si vous préparez votre serveur de jeu pour l'utiliser sur un GameLift Serveurs Amazon flotte de conteneurs gérée :

      Vous n'avez pas besoin de spécifier de paramètres de journal pour 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 des conteneurs sous forme de flux log.

    • 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, consultez ProcessParameters (C++) (C#) (Unreal) (Go) (C++)

      • (Facultatif) onHealthCheck : Amazon GameLift Servers appelle régulièrement cette fonction pour demander un rapport sur l'état de santé du 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 du statut d'une demande de remplacement de match. La FlexMatch fonction de remplissage 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 Connectez votre GameLift Serveurs Amazon serveur de jeu hébergé vers un autre AWS resources.

(Facultatif) Signaler 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 mesures 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 une santé saine, false pour une mauvaise santé.

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

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

(Facultatif) Obtenir un certificat TLS

Si le processus serveur s'exécute sur une flotte sur laquelle 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 crypter 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 serveur.

La onStartGameSession fonction prend un GameSession objet comme paramètre d'entrée. Cet objet inclut des informations clés sur les sessions de jeu, telles que le nombre maximum de joueurs. Il peut également inclure des données de jeu et des données sur les joueurs. 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'ID de session de jeu, auquel les clients du jeu font référence lorsqu'ils se connectent au processus du serveur.

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

  • Avertissez le Amazon GameLift Servers service lorsqu'une nouvelle session de jeu est prête à accepter des joueurs. Appelez l'opération d'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 l'état 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 essaie 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'ID de session du joueur. En réponse, Amazon GameLift Servers vérifie que l'identifiant de session du joueur correspond à un créneau libre réservé pendant la session de jeu. Après avoir Amazon GameLift Servers validé l'ID de session du joueur, le processus serveur accepte la connexion. Le joueur peut ensuite rejoindre la session de jeu. S'il Amazon GameLift Servers ne valide pas l'ID de session du joueur, le processus serveur refuse la connexion.

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

Si vous suivez l'état 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 machines à sous disponibles pendant la session de jeu.

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

Mettre fin à une session de jeu

Ajoutez du code à la séquence d'arrêt du processus du serveur pour Amazon GameLift Servers signaler 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 d'API du serveur ProcessEnding() (C++) (C#) (Unreal) (Go) (C++) Cet appel indique Amazon GameLift Servers que le processus serveur est en train de s'arrêter. Amazon GameLift Serverschange l'état de la session de jeu et l'état 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 d'un processus 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 des problèmes de fonctionnement ou si l'instance sur laquelle le processus serveur est en cours d'exécution est en cours d'arrêt. 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 de l'instance Spot. Une interruption d'une instance Spot donne lieu à un préavis de deux minutes, ce qui donne au serveur le temps de déconnecter correctement les joueurs, 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 :

  • Implémentez la fonction de rappel onProcessTerminate() (C++) (C#) (Unreal) (Go) (C++) Cette fonction doit appeler un code qui arrête le processus du serveur.

  • Appelez l'opération d'API du serveur GetTerminationTime() (C++) (C#) (Unreal) (Go) (C++) partir du code d'arrêt de votre serveur de jeu. Si Amazon GameLift Servers a émis un appel pour arrêter le processus du serveur, GetTerminationTime() renvoie l'heure de fin estimée.

  • Au début du code d'arrêt de votre serveur de jeu, appelez l'opération d'API du serveur ProcessEnding() (C++) (C#) (Unreal) (Go) (C++) Cet appel informe le service Amazon GameLift Servers que le processus serveur est en cours d'arrêt. Le service change ensuite l'état du processus du serveur enTERMINATED. Après l'appelProcessEnding(), le processus peut être arrêté en toute sécurité.