Intégrer une passerelle pour les joueurs dans un 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.

Intégrer une passerelle pour les joueurs dans un jeu

Après avoir créé une flotte compatible avec Player Gateway, vous devez mettre à jour votre client de jeu et votre backend de jeu pour les intégrer à Player Gateway. Votre backend de jeu récupère les points de terminaison du relais et les jetons de passerelle pour les joueurs, puis les fournit aux clients du jeu. Les clients du jeu envoient tout le trafic UDP vers ces points de terminaison relais.

L'intégration suit le chemin d'appel suivant :

  1. Le backend de votre jeu appelle l'GetPlayerConnectionDetailsAPI pour récupérer les points de terminaison du relais et les jetons de passerelle pour chaque joueur participant à une session de jeu.

  2. Votre backend de jeu envoie les points de terminaison du relais et les jetons de passerelle des joueurs au client du jeu.

  3. Votre client de jeu ajoute le jeton de passerelle du joueur à tous les paquets UDP sortants et envoie les paquets aux points de terminaison du relais.

  4. Le réseau de relais valide le jeton de passerelle du joueur et achemine le trafic vers votre serveur de jeu.

  5. Votre serveur de jeu renvoie le trafic vers votre client de jeu via les mêmes chemins de relais.

Intégration du backend

Votre backend de jeu doit appeler l'GetPlayerConnectionDetailsAPI pour récupérer les points de terminaison du relais et les jetons de passerelle pour les joueurs. Le backend fournit ensuite ces informations aux clients du jeu.

GetPlayerConnectionDetails API

L'GetPlayerConnectionDetailsAPI renvoie les informations de connexion pour les joueurs participant à une session de jeu :

Points de terminaison et jetons de relais

Lorsque la passerelle des joueurs est activée et prise en charge sur le site, renvoie :

  • Points de terminaison de relais : plusieurs points de terminaison de relais (adresse IP et port) qui varient selon les joueurs

  • Jeton de passerelle entre joueurs : jeton que le client doit ajouter à tous les paquets UDP (valide pendant au moins 3 minutes)

  • Expiration — Horodatage d'expiration du jeton Player Gateway

Connexion directe

Lorsque la passerelle des joueurs n'est pas activée ou n'est pas prise en charge sur le site, renvoie l'adresse IP et le port du serveur de jeu

Votre client de jeu doit être conçu pour gérer les deux types de connexion.

Exemple d'appel d'API :

// C++ example using AWS SDK Aws::GameLift::GameLiftClient client; Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request; request.SetGameSessionId(gameSessionId); request.SetPlayerIds(playerIds); // Vector of player IDs auto outcome = client.GetPlayerConnectionDetails(request); if (outcome.IsSuccess()) { auto result = outcome.GetResult(); auto connectionDetails = result.GetPlayerConnectionDetails(); // Process each player's connection details for (const auto& detail : connectionDetails) { std::string playerId = detail.GetPlayerId(); // Get relay endpoints (IP address and port) auto endpoints = detail.GetEndpoints(); for (const auto& endpoint : endpoints) { std::string ipAddress = endpoint.GetIpAddress(); int port = endpoint.GetPort(); } // Get player gateway token auto token = detail.GetPlayerGatewayToken(); // Get expiration time auto expiration = detail.GetExpiration(); // Send endpoints and token to game client } }

Voir GetPlayerConnectionDetailsla référence de Amazon GameLift Servers l'API.

Actualiser les points de terminaison du relais

Appelez GetPlayerConnectionDetails régulièrement pour fournir aux joueurs des points de terminaison mis à jour lorsque les points de terminaison du relais ne fonctionnent plus correctement. Nous recommandons d'appeler l'API toutes les 60 secondes pour tous les joueurs participant à une session de jeu. Pour optimiser l'utilisation de l'API, regroupez plusieurs joueurs IDs en un seul appel d'API.

Important

Les appels d'actualisation réguliers constituent le principal mécanisme permettant de fournir des points de terminaison mis à jour aux joueurs. Bien que les jetons d'accès aux joueurs restent valides pendant au moins 3 minutes, le rafraîchissement toutes les 60 secondes permet aux joueurs de recevoir régulièrement des points de terminaison mis à jour.

Intégration du client

Votre client de jeu doit ajouter les jetons de passerelle du joueur à tous les paquets UDP sortants et envoyer les paquets aux points de terminaison du relais fournis. Le SDK Amazon GameLift Servers client pour C++ et Unreal Engine fournit des utilitaires pour simplifier cette intégration.

Exigences du client

Pour acheminer le trafic via la passerelle des joueurs, votre client de jeu doit :

  • Ajouter les jetons de passerelle de lecteur — Ajoutez le jeton de passerelle de joueur à tous les paquets UDP sortants. Les jetons de passerelle des joueurs ne doivent pas être chiffrés et doivent apparaître au début de chaque paquet. Les paquets sans jeton de passerelle de joueur valide seront supprimés.

  • Envoyer aux points de terminaison du relais : envoie tous les paquets UDP aux points de terminaison du relais fournis.

  • Maintenir l'activité de connexion : assurez-vous que le client du jeu envoie un paquet au serveur de jeu ou que le serveur de jeu envoie un paquet au joueur, au moins une fois toutes les 30 secondes. Cette activité permet de maintenir la connexion via le réseau relais.

  • Gérez les mises à jour des terminaux : acceptez les points de terminaison relais et les jetons de passerelle de joueur mis à jour depuis votre backend (recommandé toutes les 60 secondes) et passez à de nouveaux points de terminaison sans interrompre la connexion.

SDK du client

Le SDK Amazon GameLift Servers client pour C++ et Unreal Engine fournit des utilitaires destinés à simplifier l'intégration de la passerelle des joueurs :

  • Gestion des jetons : ajoute les jetons de passerelle du joueur à tous les paquets UDP sortants.

  • Sélection du point de terminaison : achemine le trafic vers les points de terminaison du relais à l'aide d'un algorithme configurable.

  • Actualisation des points de terminaison : planifie des rappels périodiques pour récupérer les points de terminaison de relais et les jetons de passerelle des joueurs mis à jour depuis votre backend.

algorithmes de sélection des terminaux

Le SDK client fournit deux algorithmes intégrés permettant de sélectionner le point de terminaison du relais à utiliser :

Algorithme de repli

Utilise un point de terminaison jusqu'à ce qu'il devienne défectueux, puis passe à un autre point de terminaison. Idéal pour les menus, les lobbies et les jeux au tour par tour où de brèves interruptions sont acceptables. Lors du basculement d'un terminal, des paquets peuvent être perdus pendant le délai d'expiration configuré (par défaut : 2 secondes).

Algorithme de rotation prédictif

Effectue une rotation continue entre tous les points de terminaison disponibles et prédit les défaillances avant qu'elles ne se produisent. Idéal pour les jeux en temps réel tels que les jeux de tir à la première personne et les jeux de course où la distribution régulière des paquets est essentielle. Nécessite que le serveur de jeu envoie des messages à une fréquence constante.

Vous pouvez également implémenter des algorithmes personnalisés en étendant la classe d'algorithme de base du SDK.

Ressources du SDK client

Pour obtenir des instructions d'intégration complètes et un exemple de code, consultez les ressources suivantes :

C++

Un SDK client pour C++ est disponible sur Amazon GameLift Servers le SDK client pour C++.

Unreal Engine

Un plugin pour Unreal Engine est disponible sur le SDK Amazon GameLift Servers client pour Unreal Engine. L'accès nécessite l'adhésion à l'organisation Epic Games le GitHub. Consultez Unreal Engine GitHub pour plus de détails.

Testez votre intégration

Avant le déploiement dans une flotte, testez l'intégration de votre passerelle joueur localement à l'aide de l'outil de test de passerelle joueur. Cet outil simule l'infrastructure du proxy UDP de la passerelle des joueurs et vous aide à vérifier que votre client de jeu ajoute correctement les jetons de passerelle des joueurs, achemine le trafic via plusieurs points de terminaison et gère la dégradation du réseau.

Pour les instructions de configuration et d'utilisation, consultez l'application de test Player Gateway sur GitHub.

Bonnes pratiques

Suivez ces bonnes pratiques lors de l'intégration de Player Gateway :

  • Actualisez les points de terminaison toutes les 60 secondes : appelez GetPlayerConnectionDetails toutes les 60 secondes pour vous assurer que les joueurs reçoivent régulièrement des points de terminaison mis à jour.

  • Appels d'API par lots : lorsque vous appelez GetPlayerConnectionDetails plusieurs joueurs au cours d'une même session de jeu, regroupez les appels afin de réduire la charge d'API.

  • Maintenir l'activité de connexion : assurez-vous que le trafic circule entre le client du jeu et le serveur de jeu au moins une fois toutes les 30 secondes. Il peut s'agir de l'un ou de l'autre client-to-server ou server-to-client du trafic.

  • Gérez les mises à jour des points de terminaison avec élégance : lorsque votre client de jeu reçoit des points de terminaison mis à jour depuis le backend, passez aux nouveaux points de terminaison sans interrompre la connexion du joueur.

  • Choisissez le bon algorithme : sélectionnez l'algorithme de sélection du point de terminaison qui correspond le mieux aux exigences de votre jeu. Utilisez l'algorithme de repli pour les jeux au tour par tour et l'algorithme de rotation prédictive pour les jeux en temps réel.