Diagrama de flujo: el proceso de emparejamiento de SmartMatch
El diagrama de flujo siguiente ilustra el proceso de emparejamiento de SmartMatch. Volver al principio de este tema.Creación de una sesión de vale de emparejamiento y de un vale de emparejamiento
Antes de que comience el proceso de emparejamiento, un “explorador” de emparejamiento configura una sesión de vale de emparejamiento para representar al grupo de personas que quieren entrar juntas en el emparejamiento. Todos los jugadores de este grupo se unen a la sesión mediante XblMultiplayerSessionJoin. Una vez creada la sesión de vale y rellenada con jugadores, el título envía la sesión al servicio de emparejamiento mediante XblMatchmakingCreateMatchTicketAsync. Este método crea un vale de emparejamiento que representa la sesión de vale y, a continuación, actualiza el campo/servers/matchmaking/properties/system/status de la sesión de vale a searching.
Para obtener más información, consulte la sección Crear un vale de emparejamiento del tema de tareas de multijugador.
La respuesta del método de creación del vale de emparejamiento es un objeto XblCreateMatchTicketResponse.
La respuesta contiene el identificador del vale de emparejamiento. Se trata de un GUID que se puede usar para cancelar el emparejamiento eliminando el vale.
La respuesta también contiene un tiempo de espera medio para el hopper, que se puede usar para establecer las expectativas de los jugadores.
Volver al principio de este tema.
Establecimiento de atributos de emparejamiento en la sesión y en los jugadores
Al enviar una sesión al emparejamiento, el título puede establecer atributos que el servicio de emparejamiento usa para agrupar la sesión con otras sesiones. El título puede especificar atributos en el nivel del vale o en el nivel de cada miembro.Establecimiento de atributos de emparejamiento en el nivel del vale de emparejamiento
El título envía los atributos en el nivel del vale de emparejamiento en el parámetroticketAttributesJson del método XblMatchmakingCreateMatchTicketAsync.
Los atributos que se especifican en el nivel del vale invalidan los mismos atributos que se especifican en el nivel de cada miembro.
Establecimiento de atributos de emparejamiento en el nivel de cada miembro
El título especifica los atributos por miembro en cada miembro dentro de la sesión de vale de emparejamiento. Estos atributos se establecen llamando a XblMultiplayerSessionCurrentUserSetCustomPropertyJson con un nombre de propiedad dematchAttrs.
Esta llamada coloca los atributos en el campo /members/{index}/properties/custom/matchAttrs de cada jugador dentro de la sesión de vale.
El proceso de emparejamiento “aplana” los atributos por miembro, cada uno en un único atributo en el nivel del vale, según el método flatten que se haya especificado para ese atributo en la configuración de los servicios de XBOX para el hopper.
Esto se configura en Partner Center.
Volver al principio de este tema.
Realización del emparejamiento
Con la sesión de vale y el vale de emparejamiento configurados, el servicio de emparejamiento empareja la sesión de vale representada con otras sesiones de vale que representan otros grupos y, a continuación, crea o identifica una sesión de destino del emparejamiento. El servicio también crea reservas para los jugadores emparejados en la sesión de destino y, a continuación, marca las sesiones de vale como emparejadas. El Multiplayer Session Directory (MPSD) notifica al título este cambio en la sesión de vale. A continuación, el título debe tomar medidas para inicializar la sesión de destino a fin de confirmar que hay suficientes jugadores presentes. El título realiza comprobaciones de calidad de servicio (QoS) para garantizar que los jugadores puedan conectarse correctamente entre sí. Si la inicialización o la QoS fallan, el título marca la sesión de vale para reenviarla al emparejamiento de modo que se pueda encontrar otro grupo. Para obtener más información, consulte Inicialización de la sesión de destino y QoS. Durante la actividad de emparejamiento, se realizan los cambios siguientes en los objetos JSON de la sesión.-
El campo
/servers/matchmaking/properties/system/statusse establece enfound -
El campo
/servers/matchmaking/properties/system/targetSessionRefse establece en la sesión de destino -
El campo
/members/{index}/properties/custom/matchAttrsde cada sesión de vale se copia en el campo/members/{index}/constants/custom/matchmakingResult/playerAttrs -
Para cada jugador, los atributos del vale se copian del campo
ticketAttributesdel vale de emparejamiento al campo/members/{index}/constants/custom/matchmakingResult/ticketAttrs
Mantenimiento del vale de emparejamiento
El servicio de emparejamiento usa una instantánea de la sesión de vale tomada en el momento en que se crea el vale de emparejamiento para la sesión. Como resultado, si algún jugador se une a la sesión de vale o la abandona, el título debe usar el servicio de emparejamiento para eliminar el vale de emparejamiento y volver a crearlo. Volver al principio de este tema.Reutilización de la sesión de juego como sesión de vale de emparejamiento
Dos sesiones con
preserveSession establecido en Always no pueden emparejarse entre sí porque no se pueden combinar. El flujo de emparejamiento que use el título debe tenerlo en cuenta.preserveSession establecido en XblPreserveSessionMode::Always.
El servicio de emparejamiento garantiza entonces que la sesión existente que se usa para el vale se conserve durante todo el proceso de emparejamiento y se convierta en la sesión de destino resultante.
Volver al principio de este tema.
Eliminación del vale de emparejamiento
Para eliminar el vale de emparejamiento, el título llama a XblMatchmakingDeleteMatchTicketAsync. La eliminación del vale:- Detiene el emparejamiento para los jugadores de la sesión de vale.
-
Actualiza el campo
/servers/matchmaking/properties/system/statusde la sesión de vale acanceled.
Realización del emparejamiento para juegos mediante XBOX Compute
A continuación se indican los pasos de alto nivel que se llevan a cabo para que un jugador sea emparejado en una partida basada en XBOX Compute. Un flujo similar debería aplicarse a los juegos hospedados por terceros.-
El explorador crea una sesión de vale para representar al grupo. Esta sesión contiene una lista de centros de datos potenciales que se encuentran en la configuración de la sesión en
/constants/system/measurementServerAddresses. Procede de la plantilla de sesión, si la lista de centros de datos es estática, o del cliente, que la escribe al crear la sesión después de obtenerla primero de XBOX Compute. Esta sesión también contiene los valoresgsiSetId,gameVariantIdymaxAllowedPlayersen el objetotargetSessionConstants/custom/gameServerPlatform. - Todos los demás jugadores del grupo se unen a la sesión de vale.
-
Todos los miembros del grupo descargan los valores de
measurementServerAddressesdel objeto/constants/systemde la sesión de vale, les hacen ping mediante la API de la plataforma y, a continuación, cargan en la sesión una lista ordenada de centros de datos preferidos tal como se define en/members/{index}/properties/system/serverMeasurements.[!NOTE] El título puede establecer y recuperar los valores de
measurementServerAddressesde la sesión mediante el método XblMultiplayerSessionConstantsSetMeasurementServerAddressesJson y XblMultiplayerSessionConstants::MeasurementServerAddressesJson. -
El explorador llama a XblMatchmakingCreateMatchTicketAsync, pasando una referencia a la sesión de vale.
[!NOTE] Si los objetos de la sesión de vale tienen constantes que no coinciden, es posible que el método de creación del vale no se realice correctamente. Esto puede evitarse agregando una regla
Si XblMatchTicketDetailsResponseMUSTal hopper, para impedir el emparejamiento con jugadores que tengan constantes que no coincidan.::PreserveSessionestá establecido enNever, el servicio de emparejamiento copia las mediciones de servidor de cada miembro en la representación interna del vale. Aplana las mediciones de servidor de los miembros del vale en una única colección de mediciones de servidor para el vale que se almacena en la representación interna del vale como un atributospecialdel vale. Si XblMatchTicketDetailsResponse::PreserveSessionestá establecido enAlways, las mediciones de servidor no se usan. En su lugar, el servicio de emparejamiento copia el valor de/properties/system/matchmaking/serverConnectionStringde la sesión en la representación interna del vale como una colecciónserverMeasurementsde tamaño 1 con latencia cero. - El servicio de emparejamiento empareja la sesión de vale con otras, que representan otros grupos, teniendo en cuenta las colecciones de mediciones de servidor. El servicio intenta emparejar el grupo con otros grupos que tienen los mismos centros de datos muy preferidos.
-
Una vez encontrado un grupo emparejado, el servicio de emparejamiento crea o identifica una sesión de destino y agrega a todos los jugadores de las sesiones de vale que se emparejan juntas. El servicio escribe las mediciones de servidor aplanadas finales del grupo emparejado en
/properties/system/serverConnectionStringCandidates. Escribe las mediciones de servidor enviadas originalmente para cada miembro recién agregado en la sesión de destino en/members/{index}/constants/system/matchmakingResult/serverMeasurements. - Todos los jugadores realizan la inicialización en la sesión de destino como se ha mencionado anteriormente. Sin embargo, dado que los jugadores se conectarán a XBOX Compute, no realizan QoS entre sí para confirmar la conectividad.
- Todos los jugadores juegan.
