Skip to main content
Este tema describe cómo usar SmartMatch para emparejar jugadores en un juego multijugador. Diagrama de flujo: el proceso de emparejamiento de SmartMatch Creación de una sesión de vale de emparejamiento y de un vale de emparejamiento Establecimiento de atributos de emparejamiento en la sesión y en los jugadores Realización del emparejamiento Mantenimiento del vale de emparejamiento Reutilización de la sesión de juego como sesión de vale de emparejamiento Eliminación del vale de emparejamiento Realización del emparejamiento para juegos mediante XBOX Compute Consulte también

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ámetro ticketAttributesJson 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 de matchAttrs. 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/status se establece en found
  • El campo /servers/matchmaking/properties/system/targetSessionRef se establece en la sesión de destino
  • El campo /members/{index}/properties/custom/matchAttrs de 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 ticketAttributes del vale de emparejamiento al campo /members/{index}/constants/custom/matchmakingResult/ticketAttrs
Volver al principio de este tema.

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.
Un título puede reutilizar una sesión de juego existente como sesión de vale de emparejamiento para encontrar más jugadores que se unan a una partida que ya está en curso. Para habilitarlo, el título debe crear el vale de emparejamiento llamando a XblMatchmakingCreateMatchTicketAsync con el parámetro 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:
  1. Detiene el emparejamiento para los jugadores de la sesión de vale.
  2. Actualiza el campo /servers/matchmaking/properties/system/status de la sesión de vale a canceled.
Volver al principio de este tema.

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.
  1. 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 valores gsiSetId, gameVariantId y maxAllowedPlayers en el objeto targetSessionConstants/custom/gameServerPlatform.
  2. Todos los demás jugadores del grupo se unen a la sesión de vale.
  3. Todos los miembros del grupo descargan los valores de measurementServerAddresses del objeto /constants/system de 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 measurementServerAddresses de la sesión mediante el método XblMultiplayerSessionConstantsSetMeasurementServerAddressesJson y XblMultiplayerSessionConstants::MeasurementServerAddressesJson.
  4. 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 MUST al hopper, para impedir el emparejamiento con jugadores que tengan constantes que no coincidan.
    Si XblMatchTicketDetailsResponse::PreserveSession está establecido en Never, 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 atributo special del vale. Si XblMatchTicketDetailsResponse::PreserveSession está establecido en Always, las mediciones de servidor no se usan. En su lugar, el servicio de emparejamiento copia el valor de /properties/system/matchmaking/serverConnectionString de la sesión en la representación interna del vale como una colección serverMeasurements de tamaño 1 con latencia cero.
  5. 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.
  6. 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.
  7. 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.
  8. Todos los jugadores juegan.
Volver al principio de este tema.

Consulte también

Información general del emparejamiento
Última modificación el 28 de agosto de 2026