# Proposed class-based MMR system

**Community discussion draft — not implemented or live.**

The aim is to make personal performance matter more while keeping winning, opponent strength and fair treatment of incomplete teams central to MMR. A player who performs exceptionally in a loss should lose substantially less than someone who contributed little.

The proposal evaluates players against **what their class is expected to contribute**, rather than treating every hero as if they had the same job.

## 1. Start with the match result

Keep an outcome-based rating calculation that accounts for both teams' strength and rating uncertainty. Beating stronger opponents should be worth more than beating weaker opponents.

Personal performance then adjusts that base result. The examples below assume a normal **+25 MMR win or -25 MMR loss** purely to make the arithmetic easy to follow. Actual base changes would vary.

## 2. Measure six kinds of contribution

| Stat | Class expected to contribute more |
| --- | --- |
| Kills | Skill |
| Objective / cube damage | Brawn |
| Healing | Brains |
| Assists | Equal expectations across classes |
| Blocks destroyed | Equal expectations across classes |
| Damage dealt | Equal expectations across classes |

“Higher expectation” does **not** mean giving the specialist more points for doing the same thing. It means the specialist has a higher target to meet.

For example, a Skill player is expected to get more kills. If a Brains player matches or exceeds those kills, the Brains player has exceeded their class expectation by more and should receive more credit in that category.

The same principle applies to a non-Brains player outperforming Brains in healing, or a non-Brawn player outperforming Brawn in cube damage.

Raw blocks built, bricks earned and low deaths do not independently award MMR in this proposal. They can reflect useful play, but can also reward unnecessary building, resource farming or avoiding fights.

## 3. Calculate class-adjusted expectations

An initial value to test is **2x expectation for the specialist class** and **1x for other classes** in the three class-specific categories. All classes have a weight of 1 in assists, blocks destroyed and damage dealt.

```text
Expected contribution =
    team total for the stat
    × your expectation weight
    ÷ sum of the team's expectation weights
```

### Example: kills

A team has one Skill player, one Brawn and two Brains. Together they get 45 kills. Their kill expectation weights are 2, 1, 1 and 1.

| Class | Expected kills | Actual kills | Relative to expectation |
| --- | ---: | ---: | --- |
| Skill | 18 | 20 | 11% above |
| Brawn | 9 | 12 | **33% above** |
| Brains | 9 | 8 | 11% below |
| Brains | 9 | 5 | 44% below |

The Skill player has more kills, but the Brawn exceeds their expected contribution by more. The Brawn therefore receives the stronger kill-performance adjustment.

**The 2x value is a starting proposal, not a proven balance value.** Hero capabilities, loadouts and time played must be accounted for before this can become a live formula. Team totals and expectations must use the same eligible participants and time window; a short appearance must not be compared with a full match as if participation were equal.

## 4. Build one personal-performance score

For each usable category, compare actual contribution with expected contribution:

- Meeting expectation produces a neutral score.
- Exceeding expectation produces a positive score.
- Falling below expectation produces a negative score.
- No meaningful opportunity, missing data or no team activity in that category means it is excluded, not treated as poor performance.

Combine those comparisons into a bounded performance score from **-1 to +1**, where 0 means meeting expectations.

The starting idea is equal importance across the six categories, with class specialization handled through the expectation weights. However, kills, assists and damage overlap. Their combined influence needs a limit so the same combat contribution is not rewarded excessively through three different counters.

The exact conversion from a contribution ratio into a category score, minimum activity thresholds, category caps and treatment of overlapping combat stats remain to be tested. The payout examples below assume a performance score has already been calculated; they do not claim those calibration choices are settled.

## 5. Make personal performance matter substantially

One candidate adjustment is:

```text
Winning change = positive base × (1 + 0.50 × performance)
Losing change  = negative base × (1 - 0.75 × performance)
```

For a base result of +25 / -25:

| Performance | Score | Win | Loss |
| --- | ---: | ---: | ---: |
| Exceptional | +1.0 | **+37.50** | **-6.25** |
| Above expectations | +0.5 | +31.25 | -15.63 |
| Meets expectations | 0.0 | +25.00 | -25.00 |
| Below expectations | -0.5 | +18.75 | -34.38 |
| Very poor | -1.0 | +12.50 | -43.75 |

This makes a strong performance valuable even when teammates lose the match. A player who meaningfully exceeds expectations across the measured categories should receive strong loss protection.

Winning still gives a positive change and losing still gives a negative change for an eligible original player. An original player who abandons the match follows the separate quitter policy.

**These ranges are discussion values.** In particular, the larger penalties for weak performance need careful review. We could choose a less punishing lower end while retaining strong protection for exceptional players.

This stronger personal adjustment replaces the earlier proposal's small, balanced +/-5-point redistribution. It is not an additional bonus stacked on top of that old modifier, and it is not guaranteed to preserve the total MMR in circulation.

## 6. Solo healers and different hero capabilities

A player should not receive an automatic maximum bonus merely for being the team's only healer. They should also not be penalized for having no comparable teammate.

If there is genuinely no comparable healing contributor, treat the relative healing comparison as neutral: preserve the normal outcome award rather than grant a free bonus. If two comparable Brains players have similar opportunities and participation, higher effective healing should produce a better healing-category score.

Being the only Brains player is not necessarily the same as being the only player capable of healing. Hero and loadout capabilities must determine whether a comparison is meaningful. The general weighted-team formula needs this capability check; applying it blindly to a sole healer would incorrectly treat all healing as exceptional.

Hero switches and missing or unreliable counters need explicit handling. A conservative fallback is outcome-only MMR when personal performance cannot be compared fairly.

## 7. Backfillers and reconnects

**Genuine backfillers gain and lose no MMR.** Their rating uncertainty also stays unchanged, regardless of the match result.

They still count as present when evaluating team strength and whether a team is short-handed. Filling an empty slot stops that slot's shortage timer.

An original player reconnecting remains an original player. Reconnecting must not grant the backfill exemption. Use server-recorded joins, departures and reconnects; never infer backfill from bricks earned or low stats.

Any penalty for a backfiller abandoning a match must be separate from MMR, such as a queue restriction.

## 8. Matches affected by quitters

The agreed directions are:

| Situation | Treatment |
| --- | --- |
| Short-handed team wins | Increased win reward |
| Short-handed team loses | Reduced loss |
| Full team wins | Reduced win reward |
| Full team loses | **Normal loss: no extra shortage penalty or discount** |
| Genuine backfiller | Always zero MMR |

Measure actual time spent short-handed, not simply whether someone ever left. A late quit should have little effect; playing most of a match a player down should have much more effect. Replacements and reconnects stop the relevant shortage interval. Players waiting to respawn still count as present. Equal shortages on both sides cancel.

The earlier candidate uses shortage exposure h from 0 to 1, based on net missing-player time divided by match duration:

| Situation | Candidate shortage multiplier |
| --- | --- |
| Short-handed team wins | 1 + 0.50h |
| Short-handed team loses | 1 - 0.75h |
| Full team wins | 1 - 0.75h |
| Full team loses | 1.00 |

For example, one missing player for half the match gives h = 0.5. With a +/-25 base, the shortage-only values are +31.25 or -15.625 for the disadvantaged team, and +15.625 or -25 for the full team.

Those shortage values do **not** yet include the stronger personal-performance adjustment. Their combined limits need to be decided and tested: multiplying both protections without a final limit could make some losses almost zero or produce very large win rewards. The unchanged full-team loss rule means no extra **shortage** penalty; ordinary personal-performance adjustments still apply.

The proposed original-quitter policy is one full-loss result without personal-performance or shortage protection, even if their team later wins. Do not award a separate quitting loss and another loss at match end. Disconnects require reconnect handling and server-failure exceptions; a post-match “left match” label alone is not proof of abandonment during play.

## 9. What needs testing before release

- **Class and hero fairness:** do these expectations reflect what each hero can reasonably contribute?
- **Useful contribution:** do objective damage, healing and destruction represent helpful actions rather than farmable numbers?
- **Support and defense:** does the system undervalue work that these six stats cannot measure?
- **Matchmaking accuracy:** does the resulting rating predict future results better than the current outcome-based system?
- **Rating inflation:** stronger personal adjustments and protected matches may add or remove MMR overall.
- **Abuse:** can parties exploit sacrificial quitting, repeated opponents, healing loops or unnecessary destruction?
- **Combined limits:** how much can personal performance and shortage protection change one result together?

Replay historical matches and calculate candidate results alongside the current system before changing live ratings. All awards need authoritative server data and exactly one settlement per player per match.

## Questions for community feedback

1. Are Skill/kills, Brawn/cube damage and Brains/healing the right class expectations?
2. Is 2x specialist expectation a reasonable starting point?
3. How much should exceptional performance protect a losing player?
4. Should weak performance increase a loss substantially, or should we cap that more gently?
5. Which important contributions are missing from these six stats?

The goal is to reward helping the team win, recognize exceptional individual effort in a loss, and avoid judging every class by the same raw scoreboard totals.
