Organigramme : le processus de matchmaking SmartMatch
L’organigramme suivant illustre le processus de matchmaking SmartMatch.
Création d’une session de ticket de match et d’un ticket de match
Avant le début du processus de matchmaking, un « éclaireur » de matchmaking configure une session de ticket de match pour représenter le groupe de personnes qui souhaitent lancer ensemble un matchmaking. Tous les joueurs de ce groupe rejoignent la session à l’aide de XblMultiplayerSessionJoin. Une fois la session de ticket créée et remplie de joueurs, le titre soumet la session au service de matchmaking à l’aide de XblMatchmakingCreateMatchTicketAsync. Cette méthode crée un ticket de match qui représente la session de ticket, puis définit le champ/servers/matchmaking/properties/system/status de la session de ticket sur searching.
Pour plus d’informations, consultez la section Créer un ticket de match de la rubrique Tâches multijoueurs.
La réponse de la méthode de création de ticket de match est un objet XblCreateMatchTicketResponse.
La réponse contient l’ID du ticket de match. Il s’agit d’un GUID qui peut être utilisé pour annuler le matchmaking en supprimant le ticket.
La réponse contient également un temps d’attente moyen pour le hopper, qui peut servir à indiquer aux joueurs à quoi s’attendre.
Revenir au début de cette rubrique.
Définition des attributs de matchmaking sur la session et les joueurs
Lors de la soumission d’une session au matchmaking, le titre peut définir des attributs que le service de matchmaking utilise pour regrouper la session avec d’autres sessions. Le titre peut spécifier des attributs au niveau du ticket ou au niveau de chaque membre.Définition des attributs de matchmaking au niveau du ticket de match
Le titre soumet les attributs au niveau du ticket de match dans le paramètreticketAttributesJson de la méthode XblMatchmakingCreateMatchTicketAsync.
Les attributs spécifiés au niveau du ticket remplacent les mêmes attributs spécifiés au niveau de chaque membre.
Définition des attributs de matchmaking au niveau de chaque membre
Le titre spécifie des attributs par membre sur chaque membre de la session de ticket de match. Ces attributs sont définis en appelant XblMultiplayerSessionCurrentUserSetCustomPropertyJson avec le nom de propriétématchAttrs.
Cet appel place les attributs dans le champ /members/{index}/properties/custom/matchAttrs de chaque joueur de la session de ticket.
Le processus de matchmaking « aplatit » les attributs par membre, chacun en un seul attribut au niveau du ticket, en fonction de la méthode flatten spécifiée pour cet attribut dans la configuration des services XBOX du hopper.
Cela se configure dans Partner Center.
Revenir au début de cette rubrique.
Mise en relation
Une fois la session de ticket et le ticket de match configurés, le service de matchmaking met en relation la session de ticket représentée avec d’autres sessions de ticket représentant d’autres groupes, puis crée ou identifie une session cible de match. Le service crée également des réservations pour les joueurs mis en relation dans la session cible, puis marque les sessions de ticket comme mises en relation. Le Multiplayer Session Directory (MPSD) informe le titre de cette modification de la session de ticket. Le titre doit ensuite prendre des mesures pour initialiser la session cible afin de confirmer qu’un nombre suffisant de joueurs sont présents. Le titre effectue des vérifications de qualité de service (QoS) pour s’assurer que les joueurs peuvent se connecter les uns aux autres. Si l’initialisation ou la QoS échoue, le titre marque la session de ticket pour qu’elle soit soumise de nouveau au matchmaking afin de trouver un autre groupe. Pour plus d’informations, consultez Initialisation de la session cible et QoS. Pendant l’activité de mise en relation, les modifications suivantes sont apportées aux objets JSON de la session.-
Le champ
/servers/matchmaking/properties/system/statusest défini surfound -
Le champ
/servers/matchmaking/properties/system/targetSessionRefest défini sur la session cible -
Le champ
/members/{index}/properties/custom/matchAttrsde chaque session de ticket est copié dans le champ/members/{index}/constants/custom/matchmakingResult/playerAttrs -
Pour chaque joueur, les attributs du ticket sont copiés du champ
ticketAttributesdu ticket de match vers le champ/members/{index}/constants/custom/matchmakingResult/ticketAttrs
Maintenance du ticket de match
Le service de matchmaking utilise un instantané de la session de ticket pris au moment où le ticket de match est créé pour la session. Par conséquent, si des joueurs rejoignent ou quittent la session de ticket, le titre doit utiliser le service de matchmaking pour supprimer puis recréer le ticket de match. Revenir au début de cette rubrique.Réutilisation de la session de jeu comme session de ticket de match
Deux sessions dont
preserveSession est défini sur Always ne peuvent pas être mises en relation, car elles ne peuvent pas être combinées. Le flux de matchmaking utilisé par le titre doit en tenir compte.preserveSession défini sur XblPreserveSessionMode::Always.
Le service de matchmaking garantit alors que la session existante utilisée pour le ticket est conservée tout au long du processus de matchmaking et devient la session cible résultante.
Revenir au début de cette rubrique.
Suppression du ticket de match
Pour supprimer le ticket de match, le titre appelle XblMatchmakingDeleteMatchTicketAsync. La suppression du ticket :- Arrête le matchmaking pour les joueurs de la session de ticket.
-
Définit le champ
/servers/matchmaking/properties/system/statusde la session de ticket surcanceled.
Matchmaking pour les jeux utilisant XBOX Compute
Voici les principales étapes permettant de placer un joueur, par matchmaking, dans un jeu basé sur XBOX Compute. Un flux similaire doit s’appliquer aux jeux hébergés par des tiers.-
L’éclaireur crée une session de ticket pour représenter le groupe. Cette session contient une liste de centres de données potentiels, située dans la configuration de la session dans
/constants/system/measurementServerAddresses. Cette liste provient soit du modèle de session si la liste des centres de données est statique, soit du client qui l’écrit lors de la création de la session après l’avoir obtenue auprès de XBOX Compute. Cette session contient également les valeursgsiSetId,gameVariantIdetmaxAllowedPlayersdans l’objettargetSessionConstants/custom/gameServerPlatform. - Tous les autres joueurs du groupe rejoignent la session de ticket.
-
Tous les membres du groupe téléchargent les valeurs
measurementServerAddressesà partir de l’objet/constants/systemde la session de ticket, les sondent par ping à l’aide de l’API de la plateforme, puis chargent dans la session une liste ordonnée de centres de données préférés, telle que définie dans/members/{index}/properties/system/serverMeasurements.[!NOTE] Le titre peut définir et récupérer les valeurs
measurementServerAddressesde la session à l’aide de la méthode XblMultiplayerSessionConstantsSetMeasurementServerAddressesJson et de XblMultiplayerSessionConstants::MeasurementServerAddressesJson. -
L’éclaireur appelle XblMatchmakingCreateMatchTicketAsync en lui transmettant une référence à la session de ticket.
[!NOTE] Si les objets de session de ticket présentent des constantes incompatibles, la méthode de création de ticket risque d’échouer. Vous pouvez éviter cela en ajoutant une règle
Si XblMatchTicketDetailsResponseMUSTau hopper afin d’empêcher la mise en relation avec des joueurs dont les constantes sont incompatibles.::PreserveSessionest défini surNever, le service de matchmaking copie les mesures de serveur de chaque membre dans la représentation interne du ticket. Il aplatit les mesures de serveur des membres du ticket en une seule collection de mesures de serveur pour le ticket, stockée dans la représentation interne du ticket en tant qu’attribut de ticketspecial. Si XblMatchTicketDetailsResponse::PreserveSessionest défini surAlways, les mesures de serveur ne sont pas utilisées. Le service de matchmaking copie plutôt la valeur/properties/system/matchmaking/serverConnectionStringde la session dans la représentation interne du ticket, sous la forme d’une collectionserverMeasurementsde taille 1 avec une latence nulle. - Le service de matchmaking met en relation la session de ticket avec d’autres sessions représentant d’autres groupes, en tenant compte des collections de mesures de serveur. Le service tente de mettre le groupe en relation avec d’autres groupes ayant les mêmes centres de données fortement préférés.
-
Une fois qu’un groupe correspondant a été trouvé, le service de matchmaking crée ou identifie une session cible et y ajoute tous les joueurs des sessions de ticket mises en relation. Le service écrit les mesures de serveur aplaties finales du groupe mis en relation dans
/properties/system/serverConnectionStringCandidates. Il écrit les mesures de serveur soumises à l’origine pour chaque membre nouvellement ajouté à la session cible dans/members/{index}/constants/system/matchmakingResult/serverMeasurements. - Tous les joueurs effectuent l’initialisation de la session cible comme indiqué précédemment. Toutefois, comme les joueurs se connecteront à XBOX Compute, ils n’effectuent pas de QoS entre eux pour confirmer la connectivité.
- Tous les joueurs jouent.
