> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Descripción del peso de las reglas en el emparejamiento

> Comprenda cómo la propiedad Weight de las reglas de emparejamiento de PlayFab controla la clasificación de candidatos, la calidad de las partidas y cómo se ordenan los tickets durante el emparejamiento.

## Información general

Al configurar una cola de emparejamiento, puede asignar a cada regla un valor de **Weight** (peso). El peso es un multiplicador numérico que controla cuánta influencia tiene una regla concreta cuando el sistema de emparejamiento clasifica y ordena los tickets aptos. No cambia si un ticket cumple o no una regla; solo afecta a **la importancia relativa de esa regla frente a las demás** al determinar qué tickets son los mejores candidatos para una partida.

Comprender el peso es esencial para ajustar la calidad de las partidas. Al ajustar los pesos de las reglas, puede priorizar lo que más importa para su juego, ya sea el equilibrio de habilidad, la proximidad geográfica o el contenido compartido.

## Cómo funciona el peso

Cada regla que admite peso calcula un valor de **distancia** para cada par de tickets que se evalúa. Esta distancia representa cuán similares o diferentes son dos tickets según esa regla:

* Una distancia de **0** significa que los tickets son un emparejamiento perfecto para esa regla.
* Una distancia cercana a **1** significa que los tickets están en el límite de lo que permite la regla.
* Una distancia **infinita** (rechazo rígido) significa que los tickets no pueden emparejarse según esa regla, independientemente del peso.

El sistema de emparejamiento calcula una **distancia total** entre todas las reglas ponderadas mediante la siguiente fórmula:

```
totalDistance = Σ (rule.Weight × rule.Distance)
```

Los tickets con una distancia total menor se consideran mejores candidatos y se prueban primero al construir una partida. El peso actúa como un multiplicador escalar sobre la contribución de cada regla a este total.

<Info>
  El peso **no** anula las restricciones rígidas. Si una regla determina que dos tickets son incompatibles, los tickets se excluyen por completo. Por ejemplo, esto ocurre con una regla de diferencia en la que los valores superan la diferencia máxima permitida. El peso solo influye en el **orden de prioridad** entre los tickets que ya son aptos.
</Info>

## Cómo calcula cada regla la distancia

Antes de ver los ejemplos de peso, resulta útil comprender cómo calcula cada regla ponderada su valor de distancia. La distancia es siempre un número entre 0 y 1, donde los valores más bajos indican un emparejamiento más cercano.

| Tipo de regla             | Fórmula de distancia                                                         | Distancia = 0                                     | Distancia = 1                                          |
| ------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------ |
| Diferencia                | `absoluteDifference / maxDifference`                                         | Los valores de los jugadores son idénticos        | Los jugadores difieren en la cantidad máxima permitida |
| Igualdad de cadenas       | 0 si las cadenas coinciden; 1 si la regla es opcional y las cadenas difieren | Las cadenas son idénticas                         | La regla es opcional y las cadenas difieren            |
| Intersección de conjuntos | `1 / (1 + sharedItemCount)`                                                  | N/D (el mínimo es 0,5 con un elemento compartido) | Ningún elemento compartido (`1 / (1 + 0) = 1`)         |
| Total de la partida       | `(maxTotal - (groupTotal + ticketValue)) / maxTotal`                         | El grupo está en la capacidad objetivo            | El grupo está lejos del total objetivo                 |
| Selección de región       | `1 / (1 + Σ qualityTerms)`                                                   | Muchas regiones comunes de baja latencia          | Pocas regiones comunes o de mala calidad               |

## Qué reglas admiten peso

El peso se aplica a los **tipos de regla estándar** que participan en la ordenación basada en distancia. Las siguientes reglas admiten la propiedad Weight:

| Tipo de regla             | Admite Weight |
| ------------------------- | :-----------: |
| Igualdad de cadenas       |       ✔       |
| Diferencia                |       ✔       |
| Intersección de conjuntos |       ✔       |
| Total de la partida       |       ✔       |
| Selección de región       |       ✔       |

Los siguientes **tipos de regla de equipo** **no** admiten peso. Estas reglas actúan como validadores: aprueban o rechazan una partida y no participan en la ordenación basada en distancia:

| Tipo de regla                             | Admite Weight | Comportamiento                                                                   |
| ----------------------------------------- | :-----------: | -------------------------------------------------------------------------------- |
| Diferencia entre equipos                  |       ✘       | Valida que los promedios de los equipos estén dentro de una diferencia permitida |
| Equilibrio de tamaño de equipos           |       ✘       | Valida que los recuentos de jugadores de los equipos estén equilibrados          |
| Similitud de tamaño de tickets por equipo |       ✘       | Valida que los equipos tengan composiciones de grupos similares                  |

## Valores de peso válidos

El peso debe ser un número **mayor que 0** y **hasta 1000** (inclusive). No se permite un peso de 0. Si no se especifica ningún peso, el valor predeterminado es **1**.

## Ejemplos

Los siguientes ejemplos usan una cola con una **regla de diferencia** para la habilidad y una **regla de intersección de conjuntos** para los mapas de juego preferidos. Tres jugadores —Alice, Bob y Charlie— están en la cola. El sistema de emparejamiento debe decidir cuál de los dos candidatos (Bob o Charlie) es el mejor emparejamiento para Alice.

### Configuración de la cola

```json theme={null}
"Rules": [
    {
        "Type": "DifferenceRule",
        "Name": "SkillRule",
        "Attribute": { "Path": "skill", "Source": "User" },
        "MaxDifference": 10,
        "MergeFunction": "Average",
        "Weight": 1
    },
    {
        "Type": "SetIntersectionRule",
        "Name": "MapRule",
        "Attribute": { "Path": "preferredMaps", "Source": "User" },
        "MinIntersectionSize": 1,
        "Weight": 1
    }
]
```

### Atributos de los jugadores

| Jugador | Habilidad | Mapas preferidos                 |
| ------- | --------- | -------------------------------- |
| Alice   | 20        | "Dustbowl", "Summit", "Lakeside" |
| Bob     | 24        | "Dustbowl", "Summit"             |
| Charlie | 17        | "Lakeside"                       |

### Paso 1: Calcular las distancias por regla

**SkillRule** (regla de diferencia) usa la fórmula `absoluteDifference / maxDifference`:

* Alice frente a Bob: `|20 - 24| / 10 = 4 / 10 = 0.4`
* Alice frente a Charlie: `|20 - 17| / 10 = 3 / 10 = 0.3`

**MapRule** (regla de intersección de conjuntos) usa la fórmula `1 / (1 + sharedItemCount)`:

* Alice frente a Bob: comparten "Dustbowl" y "Summit" (dos elementos) → `1 / (1 + 2) = 0.33`
* Alice frente a Charlie: comparten "Lakeside" (un elemento) → `1 / (1 + 1) = 0.5`

### Ejemplo 1: Pesos iguales

Con ambas reglas en Weight = 1, la distancia total es:

```
Bob:     totalDistance = (1 × 0.4)  + (1 × 0.33) = 0.73
Charlie: totalDistance = (1 × 0.3)  + (1 × 0.5)  = 0.80
```

**Resultado:** Bob (0,73) es un mejor emparejamiento que Charlie (0,80). Aunque Charlie está más cerca en habilidad, Bob comparte más mapas con Alice, y ambas reglas contribuyen por igual. Bob se prueba primero.

### Ejemplo 2: Priorizar la habilidad (Weight = 10 en SkillRule)

Si su juego es competitivo y el equilibrio de habilidad es lo más importante, aumente el peso de SkillRule:

```json theme={null}
{
    "Type": "DifferenceRule",
    "Name": "SkillRule",
    ...
    "Weight": 10
},
{
    "Type": "SetIntersectionRule",
    "Name": "MapRule",
    ...
    "Weight": 1
}
```

Ahora las distancias totales cambian:

```
Bob:     totalDistance = (10 × 0.4)  + (1 × 0.33) = 4.33
Charlie: totalDistance = (10 × 0.3)  + (1 × 0.5)  = 3.50
```

**Resultado:** Charlie (3,50) es ahora el mejor emparejamiento. El mayor peso sobre la habilidad hace que el nivel de habilidad más cercano de Charlie (una diferencia de tres frente a 4) supere el hecho de que Bob comparte más mapas. La habilidad domina el orden de clasificación.

### Ejemplo 3: Priorizar los mapas compartidos (Weight = 10 en MapRule)

Si su juego es informal y a los jugadores les importa sobre todo jugar en sus mapas favoritos, aumente en su lugar el peso de MapRule:

```json theme={null}
{
    "Type": "DifferenceRule",
    "Name": "SkillRule",
    ...
    "Weight": 1
},
{
    "Type": "SetIntersectionRule",
    "Name": "MapRule",
    ...
    "Weight": 10
}
```

Ahora las distancias totales pasan a ser:

```
Bob:     totalDistance = (1 × 0.4)  + (10 × 0.33) = 3.70
Charlie: totalDistance = (1 × 0.3)  + (10 × 0.5)  = 5.30
```

**Resultado:** se prefiere a Bob (3,70). Compartir dos mapas con Alice da a Bob una ventaja significativa, y la pequeña brecha de habilidad con Charlie apenas importa. La preferencia de mapas domina el orden de clasificación.

### Ejemplo 4: Cuando los jugadores no pueden emparejarse (rechazo rígido)

Ahora agregue un cuarto jugador, **Dave**, cuya habilidad está lejos de la de Alice y que no comparte ningún mapa preferido:

| Jugador | Habilidad | Mapas preferidos                 |
| ------- | --------- | -------------------------------- |
| Alice   | 20        | "Dustbowl", "Summit", "Lakeside" |
| Dave    | 35        | "Fortress"                       |

**SkillRule:** `|20 - 35| / 10 = 15 / 10 = 1.5`; pero la diferencia de 15 supera `MaxDifference` (10), por lo que la regla devuelve **distancia infinita** (rechazo rígido).

**MapRule:** Alice y Dave comparten 0 mapas, y `MinIntersectionSize` es 1, por lo que esta regla también devuelve **distancia infinita**.

```
Dave: totalDistance = infinite  (skill difference 15 > MaxDifference 10 → hard rejection)
```

Independientemente de cómo se configuren los pesos, Dave no puede emparejarse con Alice. Aunque solo una regla devuelva distancia infinita, la distancia total completa se vuelve infinita y el ticket se excluye de la lista de candidatos. El peso no puede anular un rechazo rígido; solo puede influir en la prioridad entre los tickets que ya son aptos. Para permitir que jugadores como Dave se emparejen finalmente, use [expansiones de reglas](/services/playfab/multiplayer/matchmaking/config-queues#expansions-and-becoming-optional) para relajar las restricciones con el tiempo.

### Resumen de los ejemplos

La siguiente tabla muestra cómo el peso cambia qué candidato es el preferido, usando los mismos atributos de jugador y las mismas reglas; solo difieren los pesos.

| Configuración de pesos                             | Distancia total de Bob | Distancia total de Charlie | Distancia total de Dave | Mejor emparejamiento para Alice |
| -------------------------------------------------- | :--------------------: | :------------------------: | :---------------------: | ------------------------------- |
| Habilidad = 1, Mapas = 1 (iguales)                 |          0.73          |            0.80            |      ∞ (rechazado)      | Bob                             |
| Habilidad = 10, Mapas = 1 (prioridad de habilidad) |          4.33          |            3.50            |      ∞ (rechazado)      | Charlie                         |
| Habilidad = 1, Mapas = 10 (prioridad de mapas)     |          3.70          |            5.30            |      ∞ (rechazado)      | Bob                             |

Las distancias subyacentes nunca cambian; solo cambia la importancia relativa asignada a cada regla. Dave siempre es rechazado porque los atributos del jugador superan los límites rígidos, independientemente del peso. Este enfoque es el poder del ajuste de pesos.

## Peso y expansiones de reglas

Cuando una regla se vuelve opcional (mediante [Seconds until optional](/services/playfab/multiplayer/matchmaking/config-queues#expansions-and-becoming-optional) o una expansión), deja de rechazar tickets de forma rígida. Sin embargo, los tickets que se rechazarían siguen recibiendo un valor de distancia distinto de cero. El peso sigue escalando esta distancia, lo que significa que las reglas opcionales siguen influyendo en el orden de clasificación: empujan los tickets que las "infringen" a una prioridad más baja en lugar de excluirlos por completo.

Este comportamiento es útil para garantizar que, incluso cuando las reglas se relajan con el tiempo, se sigan prefiriendo los mejores emparejamientos.

## Procedimientos recomendados

* **Comience con pesos iguales** y ajústelos en función de los comentarios de sus jugadores sobre la calidad de las partidas.
* **Use pesos más altos** en las reglas más importantes para la experiencia de su juego (como la habilidad en los títulos competitivos o el contenido compartido en los juegos informales).
* **Recuerde que el peso solo afecta a la ordenación**: no puede hacer que ocurra un emparejamiento imposible. Use [expansiones](/services/playfab/multiplayer/matchmaking/config-queues#expansions-and-becoming-optional) para relajar las restricciones rígidas con el tiempo.
* **Evite proporciones de peso extremas** (como 1000:1) a menos que quiera intencionadamente que una regla eclipse por completo a todas las demás.

## Consulte también

* [Configuración de colas de emparejamiento](/services/playfab/multiplayer/matchmaking/config-queues)
* [Escenarios de emparejamiento y ejemplos de configuración](/services/playfab/multiplayer/matchmaking/config-examples)
* [Especificación de atributos con los tickets](/services/playfab/multiplayer/matchmaking/ticket-attributes)


## Related topics

- [Escalado del emparejamiento](/es/services/playfab/multiplayer/matchmaking/matchmaking-partition.md)
- [Cómo funciona el emparejamiento](/es/services/playfab/multiplayer/matchmaking/how-matchmaking-works.md)
- [Configuración de colas de emparejamiento](/es/services/playfab/multiplayer/matchmaking/config-queues.md)
- [Configuración del emparejamiento en Partner Center](/es/services/xbox-services/multiplayer/matchmaking/config/live-matchmaking-config.md)
- [Análisis del uso de las colas de emparejamiento](/es/services/playfab/multiplayer/matchmaking/usage.md)
