u/Mesden084

MPI Dashboard: https://mpi.atyzi.com, captured from a fresh Level 90 Guardian Druid.

For a while, MPI was a score of its own thing, sitting in a parallel dimension. We had a curve tuned by hand to turn "you ran 5 dungeons" into a 0 to 100 number. It worked, but it had nothing to do with Blizzard's M+ Rating, which meant two players with the same 2400 Rating could end up with wildly different scores depending on which dungeons they ran and how our hand-tuned curve happened to land. Some people felt the score was made up.

So we rebuilt it. Now every player's score sits on top of Blizzard's actual rating math instead of next to it.

The Blizzard Formula
In default World of Warcraft, every M+ run scores a base value based on the key level, plus a small bonus or penalty for how close to par time you finished. The base values:

+2 = 155, +3 = 170, +4 = 200, +5 = 215, +6 = 230, +7 = 260, +8 = 275, +9 = 290, +10 = 320, +11 = 335, +12 = 365, then +15 per level all the way up to +30 = 635.

The time piece is a bonus or penalty of up to 15 points. Beating par time hands you up to a +15 bonus, depending on how far under par you finished. Just barely timing the key gives you almost nothing. Missing the timer entirely subtracts another 15. Finish slower than 140% of par and the run scores zero. Your overall rating is the sum of your best run per dungeon across all 8 seasonal dungeons.

If you don't trust the math, you can pull this exact data from any addon yourself via C_PlayerInfo.GetPlayerMythicPlusRatingSummary("player"). That's the function the in-game scorecard reads from. We sanity checked our implementation against live scoring before shipping anything.

Mapping the Rating to a 0 to 100 Base

Blizzard's Rating is unbounded, but caps around 4,500 for top of the ladder. The MPI Score is 0 to 100, so we map the Blizzard rating through a sliding scale:

1240 raw (eight dungeons all timed at +2) lands at 30

1720 (eight at +5) lands at 50

2560 (eight at +10) lands at 70

3280 (eight at +15) lands at 85

3880 (eight at +20) lands at 95

4500+ lands at 100

Scores between those points scale smoothly between them. Coverage is built into this, no separate coverage discount needed. If you've only timed three dungeons your raw total is small, your base is small.

The Execution Multiplier

For each run, MPI scores you across 5 dimensions, compared against other players in your role at your key bracket: avoidable damage taken, deaths and survival, output relative to role, utility (kicks, dispels, externals, defensive uptime), and run to run consistency. You get a 0 to 100 score per dimension, and the weighted average is your run's execution score.

Across all your runs, the average is weighted so your higher keys count for more than your lower keys. The quality multiplier is then your average execution divided by 70 (the cohort median), with a hard ceiling of 1.10x and a floor of 0.50x.

Cohort median play (execution around 70) gives you a 1.00x multiplier

Top decile play (execution around 95) hits the 1.10x ceiling

Bottom (execution around 35) hits the 0.50x floor

Final score = Blizzard base x quality multiplier, capped at 100.

Why Layer a Multiplier?

A 2400 IO from clean play and a 2400 IO from boost grouping look identical on a leaderboard. MPI scores them differently because the boosted player's average run quality drags the multiplier down. The gap between the two is the entire reason this exists. If that distinction doesn't matter to you, IO is fine and you don't need MPI.

An Example

Player A is clean. Deaths and avoidable damage in line with cohort medians, output near the top of their role bracket. Blizzard base 2400 maps to about 71. Multiplier around 1.05x. Final lands around 75.

Player B is the carried one. Same 2400 IO, but output 30% below cohort, double the cohort death count, near zero kicks. Same Blizzard base 71. Multiplier drops to about 0.62x. Final lands around 44.

Same number on the leaderboard, 30+ points apart on MPI. That gap is the multiplier doing its job.

Pre-Answered Questions

Can the multiplier inflate scores?
No, hard-capped at 1.10x. The most execution can ever lift you above your IO equivalent is 10%.

Can it artificially nuke someone?
Floor at 0.50x. Worst case is half your IO equivalent. One bad pug doesn't sink you because your higher keys carry more weight in the average than your low keys.

What about role differences?
Every dimension is compared against other players in your role at your key bracket. Tank output isn't compared to DPS output. Aug Evoker is its own role bucket separate from regular DPS.

What if Blizzard retunes the table mid-season?
We reverify against the live API and update the constants. Took about 5 minutes last time.

Is this gatekeeping?
It's a lens. If a guild wants to invite a 2400 IO regardless of how they got there, they still can. If they want to filter for cleanliness on top of IO, they have the data. Adding a measurement to the ecosystem isn't gatekeeping. Refusing to share data is.

Getting Started
You just need the MPI Companion at https://mpi.atyzi.com and either MidnightUI (https://www.curseforge.com/wow/addons/midnightui-midnight-ready) or the much more minimal MPI Companion Helper (https://legacy.curseforge.com/wow/addons/mpi-companion-helper)

reddit.com
u/Mesden084 — 11 days ago
▲ 0 r/WowUI

MPI Dashboard: https://mpi.atyzi.com, captured from a fresh Level 90 Guardian Druid.

For a while, MPI was a score of its own thing, sitting in a parallel dimension. We had a curve tuned by hand to turn "you ran 5 dungeons" into a 0 to 100 number. It worked, but it had nothing to do with Blizzard's M+ Rating, which meant two players with the same 2400 Rating could end up with wildly different scores depending on which dungeons they ran and how our hand-tuned curve happened to land. Some people felt the score was made up.

So we rebuilt it. Now every player's score sits on top of Blizzard's actual rating math instead of next to it.

The Blizzard Formula
In default World of Warcraft, every M+ run scores a base value based on the key level, plus a small bonus or penalty for how close to par time you finished. The base values:

+2 = 155, +3 = 170, +4 = 200, +5 = 215, +6 = 230, +7 = 260, +8 = 275, +9 = 290, +10 = 320, +11 = 335, +12 = 365, then +15 per level all the way up to +30 = 635.

The time piece is a bonus or penalty of up to 15 points. Beating par time hands you up to a +15 bonus, depending on how far under par you finished. Just barely timing the key gives you almost nothing. Missing the timer entirely subtracts another 15. Finish slower than 140% of par and the run scores zero. Your overall rating is the sum of your best run per dungeon across all 8 seasonal dungeons.

If you don't trust the math, you can pull this exact data from any addon yourself via C_PlayerInfo.GetPlayerMythicPlusRatingSummary("player"). That's the function the in-game scorecard reads from. We sanity checked our implementation against live scoring before shipping anything.

Mapping the Rating to a 0 to 100 Base

Blizzard's Rating is unbounded, but caps around 4,500 for top of the ladder. The MPI Score is 0 to 100, so we map the Blizzard rating through a sliding scale:

1240 raw (eight dungeons all timed at +2) lands at 30

1720 (eight at +5) lands at 50

2560 (eight at +10) lands at 70

3280 (eight at +15) lands at 85

3880 (eight at +20) lands at 95

4500+ lands at 100

Scores between those points scale smoothly between them. Coverage is built into this, no separate coverage discount needed. If you've only timed three dungeons your raw total is small, your base is small.

The Execution Multiplier

For each run, MPI scores you across 5 dimensions, compared against other players in your role at your key bracket: avoidable damage taken, deaths and survival, output relative to role, utility (kicks, dispels, externals, defensive uptime), and run to run consistency. You get a 0 to 100 score per dimension, and the weighted average is your run's execution score.

Across all your runs, the average is weighted so your higher keys count for more than your lower keys. The quality multiplier is then your average execution divided by 70 (the cohort median), with a hard ceiling of 1.10x and a floor of 0.50x.

Cohort median play (execution around 70) gives you a 1.00x multiplier

Top decile play (execution around 95) hits the 1.10x ceiling

Bottom (execution around 35) hits the 0.50x floor

Final score = Blizzard base x quality multiplier, capped at 100.

Why Layer a Multiplier?

A 2400 IO from clean play and a 2400 IO from boost grouping look identical on a leaderboard. MPI scores them differently because the boosted player's average run quality drags the multiplier down. The gap between the two is the entire reason this exists. If that distinction doesn't matter to you, IO is fine and you don't need MPI.

An Example

Player A is clean. Deaths and avoidable damage in line with cohort medians, output near the top of their role bracket. Blizzard base 2400 maps to about 71. Multiplier around 1.05x. Final lands around 75.

Player B is the carried one. Same 2400 IO, but output 30% below cohort, double the cohort death count, near zero kicks. Same Blizzard base 71. Multiplier drops to about 0.62x. Final lands around 44.

Same number on the leaderboard, 30+ points apart on MPI. That gap is the multiplier doing its job.

Pre-Answered Questions

Can the multiplier inflate scores?
No, hard-capped at 1.10x. The most execution can ever lift you above your IO equivalent is 10%.

Can it artificially nuke someone?
Floor at 0.50x. Worst case is half your IO equivalent. One bad pug doesn't sink you because your higher keys carry more weight in the average than your low keys.

What about role differences?
Every dimension is compared against other players in your role at your key bracket. Tank output isn't compared to DPS output. Aug Evoker is its own role bucket separate from regular DPS.

What if Blizzard retunes the table mid-season?
We reverify against the live API and update the constants. Took about 5 minutes last time.

Is this gatekeeping?
It's a lens. If a guild wants to invite a 2400 IO regardless of how they got there, they still can. If they want to filter for cleanliness on top of IO, they have the data. Adding a measurement to the ecosystem isn't gatekeeping. Refusing to share data is.

Getting Started
You just need the MPI Companion at https://mpi.atyzi.com and either MidnightUI (https://www.curseforge.com/wow/addons/midnightui-midnight-ready) or the much more minimal MPI Companion Helper (https://legacy.curseforge.com/wow/addons/mpi-companion-helper)

reddit.com
u/Mesden084 — 11 days ago