Ajouter FlexMatch à un client 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.

Ajouter FlexMatch à un client de jeu

Cette rubrique explique comment ajouter la prise en charge du FlexMatch matchmaking à vos services de jeu côté client. Le processus est essentiellement le même, que vous l'utilisiez FlexMatch avec l'hébergement GameLift géré par Amazon ou avec une autre solution d'hébergement. Pour en savoir plus sur FlexMatch et sur la marche à suivre pour configurer un matchmaker personnalisé pour vos jeux, consultez les rubriques suivantes :

Pour activer le FlexMatch matchmaking dans votre jeu, ajoutez les fonctionnalités suivantes :

  • Préparez-vous à demander le matchmaking pour un ou plusieurs joueurs (obligatoire).

  • Suivez l'état des demandes de matchmaking (obligatoire).

  • Demander l'acceptation d'un joueur pour un match proposé (facultatif).

  • Une fois qu'une session de jeu est créée pour le nouveau match, récupérez les informations de connexion du joueur et rejoignez la partie.

Préparez-vous à demander le matchmaking pour les joueurs

Nous recommandons vivement à votre client de jeu de faire des demandes de matchmaking via un service de jeu côté client. En utilisant une source de confiance, vous pouvez plus facilement vous protéger contre les tentatives de piratage et les données factices des joueurs. Si votre jeu utilise un service d’annuaire des sessions, il s'agit d'une bonne option pour traiter les demandes de mise en relation.

Pour préparer le service client, effectuez les tâches suivantes :

  • Ajoutez l'GameLiftAPI Amazon. Votre service client utilise les fonctionnalités de l'GameLiftAPI Amazon, qui fait partie du AWS SDK. Consultez les GameLiftkits SDK Amazon pour les services clients pour en savoir plus sur le AWS SDK et télécharger la dernière version. Ajoutez ce kit SDK au projet de service de votre client de jeu.

  • Configurez un système de tickets de matchmaking. Toutes les demandes de mise en relation doivent avoir un ID de ticket unique. Vous devez disposer d’un mécanisme permettant de générer des ID uniques et de les attribuer aux nouvelles demandes de mise en relation. Un ID de ticket peut utiliser utiliser n'importe quel format de chaîne, jusqu'à un maximum de 128 caractères.

  • Procurez-vous les informations relatives au matchmaker. Obtenez le nom de la configuration de mise en relation que vous prévoyez d’utiliser. Vous avez également besoin de la liste des attributs de joueur requis du matchmaker, qui sont définis dans l'ensemble de règles du matchmaker.

  • Obtenir les données des joueurs. Configurez un moyen d'obtenir les données pertinentes pour chaque joueur. Cela inclut l'ID de joueur, les valeurs d'attribut de joueur et les données de latence mises à jour pour chaque région où le joueur est susceptible d'être impliqué dans un jeu.

  • Activez le remplissage des parties (facultatif). Déterminez la façon dont vous souhaitez remplir les jeux existants. Si le remplissage manuel est configuré pour vos matchmakers, il peut être utile d’ajouter à votre jeu la prise en charge du remplissage. Si le mode de remplissage est automatique, il se peut que vous deviez inclure un moyen de le désactiver pour les sessions de jeu individuelles. Pour en savoir plus sur la gestion du remplissage des parties, voire Remplir les jeux existants avec FlexMatch.

Demande de matchmaking pour les joueurs

Ajoutez du code à votre service client pour créer et gérer les demandes de mise en relation à un matchmaker FlexMatch. Le processus de demande de FlexMatch matchmaking est identique pour les jeux utilisés FlexMatch avec l'GameLiftmanagedhébergement Amazon et pour les jeux utilisés FlexMatch comme solution autonome.

Création d'une demande de mise en relation :
  • Appelez l'GameLiftAPI Amazon StartMatchmaking. Chaque demande doit contenir les informations suivantes.

    Matchmaker

    Le nom de la configuration de matchmaking à utiliser pour la demande. FlexMatchplace chaque demande dans le pool pour le matchmaker spécifié, et la demande est traitée en fonction de la façon dont le matchmaker est configuré. Il s'agit notamment d'appliquer une limite de temps, que ce soit pour demander l'acceptation du joueur pour une partie, la file d'attente à utiliser lorsque vous placez une session de jeu qui en résulte, etc. Pour en savoir plus sur les matchmakers et les ensembles de règles, voir Concevez un FlexMatch entremetteur.

    ID ticket

    ID de ticket unique attribué à la demande. Tout élément lié à la demande, y compris les événements et les notifications, utilise l’ID de ticket comme référence.

    Données du joueur

    Liste des joueurs pour lesquels vous voulez créer une mise en relation. Si un des joueurs de la demande ne répond pas aux exigences de mise en relation (selon les règles de mise en relation et les minimums de latence), la demande de mise en relation n'aboutit jamais. Vous pouvez inclure jusqu'à dix joueurs dans une demande de mise en relation. Lorsqu'une demande contient plusieurs joueurs, FlexMatch tente de créer une mise en relation unique et d'affecter tous les joueurs à la même équipe (sélectionnée de façon aléatoire). Si une demande contient trop de joueurs pour constituer une équipe de mise en relation, la demande échoue. Par exemple, si vous avez configuré votre matchmaker pour créer des rencontres 2 contre 2 (deux équipes de deux joueurs), vous ne pouvez pas envoyer de demande de mise en relation contenant plus de deux joueurs.

    Note

    Un joueur (identifié par son ID de joueur) ne peut être inclus que dans une seule demande de mise en relation à la fois. Si vous créez une autre demande pour un joueur, tous les tickets de mise en relation actifs ayant le même ID de joueur sont automatiquement annulés.

    Pour chaque joueur répertorié, incluez les données suivantes :

    • ID de joueur — Chaque joueur doit avoir un identifiant de joueur unique, que vous générez. Consultez la section Générer des identifiants de joueurs.

    • Attributs du joueur : si le système de matchmaking utilisé demande des attributs de joueur, la demande doit fournir ces attributs pour chaque joueur. Les attributs de joueur nécessaires sont définis dans l'ensemble de règles du matchmaker, qui spécifie également le type de données des attributs. Un attribut de joueur est facultatif uniquement lorsque l'ensemble de règles spécifie une valeur par défaut pour cet attribut. Si la demande de mise en relation ne fournit pas les attributs de joueur nécessaires pour tous les joueurs, elle n’aboutit pas. Pour en savoir plus sur les ensembles de règles du matchmaker et les attributs de joueur, consultez Création d'un ensemble de FlexMatch règles et FlexMatch exemples d'ensembles de règles.

    • Latences des joueurs : si le système de matchmaking utilisé dispose d'une règle de latence pour les joueurs, la demande doit indiquer la latence pour chaque joueur. Les données de latence des joueurs correspondent à une liste d'une ou de plusieurs valeurs par joueur. Elles représente la latence que subit le joueur pour chaque région dans la file d'attente du matchmaker. Si aucune valeur de latence des joueurs n’est incluse dans la demande, le joueur ne peut pas être mis en relation, et la demande échoue.

Récupération des informations relatives à la demande de mise en relation :
  • Une fois qu'une demande de correspondance est envoyée, vous pouvez consulter les détails de la demande en appelant DescribeMatchmakingavec le numéro de ticket associé à la demande. Cet appel renvoie les informations relatives à la demande, y compris le statut actuel. Une fois qu'une demande se termine avec succès, le ticket contient également les informations nécessaires à la connexion d'un joueur à la partie.

Annulation d’une demande de mise en relation :
  • Vous pouvez annuler une demande de matchmaking à tout moment en appelant StopMatchmakingavec le numéro de ticket de la demande.

Suivez les événements de matchmaking

Configurez des notifications pour suivre les événements qu'Amazon GameLift émet pour les processus de matchmaking. Vous pouvez configurer les notifications directement, en créant une rubrique SNS ou en utilisant AmazonEventBridge. Pour plus d'informations sur la configuration des notifications, consultez Configurer les notifications FlexMatch d'événements. Une fois que vous avez configuré les notifications, vous devez ajouter un écouteur au niveau de votre service client pour détecter les événements et y répondre si nécessaire.

C'est également une bonne idée de sauvegarder les notifications en interrogeant périodiquement les mises à jour de statut lorsqu'une période importante passe sans notification. Pour minimiser l'impact sur les performances de mise en relation, assurez-vous d'interroger seulement après avoir attendu au moins 30 secondes après l'envoi du ticket de mise en relation ou après la dernière notification reçue.

Récupérez un ticket de demande de matchmaking, y compris son statut actuel, en appelant DescribeMatchmakingavec l'identifiant du ticket de la demande. Nous recommandons une interrogation toutes les 10 secondes au plus. Cette approche est destinée uniquement aux scénarios de développement à faible volume.

Note

Vous devez configurer votre jeu avec des notifications d'événements avant d'avoir un volume élevé d'utilisation de la mise en relation, par exemple avec les tests de charge de pré-production. Tous les jeux en version publique doivent utiliser des notifications quel que soit le volume. L'approche de sondage continu n'est appropriée que pour les jeux en développement avec une faible utilisation de la mise en relation.

Demander l'acceptation du joueur

Si vous utilisez un matchmaker pour lequel l'acceptation des joueurs est activée, ajoutez le code à votre service client pour gérer ce processus d'acceptation. Le processus de gestion des acceptations des joueurs est identique pour les jeux utilisant FlexMatch l'hébergement GameLift géré par Amazon et pour les jeux utilisés FlexMatch comme solution autonome.

Demande d'acceptation du joueur pour une mise en relation proposée :
  1. Identifier quand une partie proposée nécessite l'acceptation du joueur. Surveillez le ticket de mise en relation pour détecter lorsque l'état passe à REQUIRES_ACCEPTANCE. La modification de ce statut déclenche l'FlexMatchévénementMatchmakingRequiresAcceptance.

  2. Obtenir les acceptations de tous les joueurs. Créez un mécanisme pour présenter les détails de la partie proposée à chaque joueur associé au ticket de mise en relation. Les joueurs doivent être en mesure d'indiquer qu'ils acceptent ou refusent la partie proposée. Vous pouvez récupérer les détails du match en appelant DescribeMatchmaking. Les joueurs ont un temps limité pour répondre avant que le matchmaker supprime la partie proposée.

  3. Signaler les réponses des joueurs à FlexMatch. Signalez les réponses des joueurs en appelant AcceptMatchavec « Accepter » ou « Refuser ». Tous les joueurs d'une demande doivent accepter la mise en relation pour que celle-ci se poursuive.

  4. Gérer les tickets avec les acceptations ayant échoué. Une demande échoue lorsqu'un joueur refuse la partie proposée ou ne parvient pas à répondre dans les limites imparties. Les billets des joueurs qui ont accepté le match sont automatiquement renvoyés à la billetterie. Les tickets pour les joueurs qui n'ont pas accepté le match passent au statut ÉCHEC et ne sont plus traités. Pour les tickets avec plusieurs joueurs, si l'un des joueurs figurant sur le ticket n'a pas accepté le match, le ticket sera annulé dans son intégralité.

Se connecter à un match

Ajoutez du code à votre service client pour gérer une correspondance correctement formée (statut COMPLETED ou événementMatchmakingSucceeded). Ce processus inclut la notification des joueurs concernés et l’envoi des informations de connexion à leurs clients de jeu.

Pour les jeux qui utilisent l'hébergement GameLift géré par Amazon, lorsqu'une demande de matchmaking est traitée avec succès, les informations de connexion à la session de jeu sont ajoutées au ticket de matchmaking. Récupérez un ticket de matchmaking terminé en appelant DescribeMatchmaking. Les informations de connexion incluent l'adresse IP et le port de la session de jeu, ainsi qu'un ID de session pour chaque joueur. Pour en savoir plus, voir GameSessionConnectionInfo. Votre client de jeu peut utiliser ces informations pour se connecter directement à la session de jeu pendant le match. La demande de connexion doit inclure un identifiant de session du joueur et un identifiant de joueur. Ces données associent le joueur connecté aux données de match de la session de jeu, y compris les attributions des équipes (voir GameSession).

Pour les jeux qui utilisent d'autres solutions d'hébergement, notamment Amazon GameLift FleetIQ, vous devez intégrer un mécanisme permettant aux joueurs du match de se connecter à la session de jeu appropriée.

Exemples de demandes de matchmaking

Les extraits de code suivants créent des demandes de matchmaking pour plusieurs entremetteurs différents. Comme décrit, une demande doit fournir les attributs de joueur qui sont requis par le matchmaker utilisé, tel que défini dans l'ensemble de règles de ce dernier. L'attribut fourni doit utiliser le même type de données, le même numéro (N) ou la même chaîne (S) que dans l'ensemble de règles.

# Uses matchmaker for two-team game mode based on player skill level def start_matchmaking_for_cowboys_vs_aliens(config_name, ticket_id, player_id, skill, team): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill} }, "PlayerId": player_id, "Team": team }], TicketId=ticket_id) # Uses matchmaker for monster hunter game mode based on player skill level def start_matchmaking_for_players_vs_monster(config_name, ticket_id, player_id, skill, is_monster): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "desiredSkillOfMonster": {"N": skill}, "wantsToBeMonster": {"N": int(is_monster)} }, "PlayerId": player_id }], TicketId=ticket_id) # Uses matchmaker for brawler game mode with latency def start_matchmaking_for_three_team_brawler(config_name, ticket_id, player_id, skill, role): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "skill": {"N": skill}, "character": {"S": [role]}, }, "PlayerId": player_id, "LatencyInMs": { "us-west-2": 20} }], TicketId=ticket_id) # Uses matchmaker for multiple game modes and maps based on player experience def start_matchmaking_for_multi_map(config_name, ticket_id, player_id, skill, maps, modes): response = gamelift.start_matchmaking( ConfigurationName=config_name, Players=[{ "PlayerAttributes": { "experience": {"N": skill}, "gameMode": {"SL": modes}, "mapPreference": {"SL": maps} }, "PlayerId": player_id }], TicketId=ticket_id)