Rori Vidi Veni wrote:
Also, your link shows just how overcomplicated the scoring is. "HitValue", "HitBonusValue", HitBonus", "HitPunishment", "ModMultiplier" and "ModDivider". Why do you need so many variables?
Because names are better than single letters the way math formulas work.
Since there's a lot of confusion here, let me try to explain the exact way this math formula works. There are 2 numbers that are added together to figure out how many points a note is worth when you hit it. The first one is based entirely on your accuracy, the second one is a combination of your accuracy
and how consistent you are.
Let's start with the simpler one, the one based completely on your accuracy.
wiki wrote:
BaseScore = (MaxScore * ModMultiplier * 0.5 / TotalNotes) * (HitValue / 320)
What does this actually mean? Well, looking at the formula I can tell that this number is calculated every time you hit a note.
Let's break it down. The first term of this equation calculates the maximum number of points that a note is worth. The simple way to do this would be to simply divide the maximum score a song is worth (1 000 000) by the total number of notes in a song.
But wait, some mods (like easy/halftime/nofail) actually affect the maximum score you can get, and that needs to be added into the calculation. So if you need to reduce the maximum score to 500 000 (50% of 1 million), what you get is
MaxScore * ModMultiplier / TotalNotes
. But wait, before we forget, this is actually only half the score calculation, so we need to make sure to always multiply this by 0.5 (50%), so that's how we get the first half of the calculation:
wiki wrote:
BaseScore = (MaxScore * ModMultiplier * 0.5 / TotalNotes)
So far, we've only calculated the maximum score that a note is worth. This is only useful if a player gets a 1 000 000. the second term of this equation solves just how many points a judgement worse than MAX is actually worth. If you calculate it out it works out to this:
MAX = 320/320 = 100%
300 = 300/320 = 93.75%
200 = 200/320 = 62.5%
100 = 100/320 = 31.25%
50 =50/320 = 15.625%
Let's actually do a calculation here. Suppose you decide to play a song with 500 notes, and no mods, and the first note you hit is a 200.
The calculation becomes:
BaseScore = (1 000 000 * 1.0 * 0.5 / 500) * (200/320)
BaseScore = (500 000 / 500) * (200/320)
BaseScore = (1 000) * (200/320)
BaseScore = 1 000 * 0.625 (remember, 62.5% = 0.625)
BaseScore = 625 points for this note.
If the note was instead a 300, you would end up with 1000 * 93.75% or 937.5 points.
If the song had 750 notes instead of 500, the calculation would look like this:
BaseScore = (1 000 000 * 1.0 * 0.5 / 750) * (200/320)
BaseScore = (500 000 / 750) * (200/320)
BaseScore = (666) * (200/320)
BaseScore = (666) * 0.625 (remember, 62.5% = 0.625)
BaseScore = 416.66
But wait, like we said earlier, this is only half the actual score calculation!
The second half is a bit more complicated, but not nearly as complicated as it sounds at first.
wiki wrote:
BonusScore = (MaxScore * ModMultiplier * 0.5 / TotalNotes) * (HitBonusValue * Sqrt(Bonus) / 320)
Bonus = Bonus before this hit + HitBonus - HitPunishment / ModDivider
Bonus is limited to [0, 100], initially 100.
The first part should look pretty familiar. The first term of the formula is identical to the formula we used just above. Just like above, if you use easy/nofail/halftime, your maximum score is cut in half. The second term here is a bit more complicated. This part is the reason that people are arguing about whether combo is used in your score or not. The ingame combo number is not actually used here. A0nother thing people have been arguing about is how other mods, such as hardrock, doubletime, etc. affect your score in mania. This part of the score calculation is where they are calculated.
The game tracks how consistently you can hit 300's or MAXs with this "Bonus" variable. You start the song with 100 bonus. As long as you hit 300 or MAX, you never lose any bonus, but as soon as you hit a 200 or lower, your bonus will be reduced. If you miss, your bonus is set to 0.
This "Bonus" variable is where mods such as HardRock will affect your score. These mods reduce the amount of bonus that is subtracted when you hit a note and get a 200 or less. For example, if you hit a 200, you will lose 8 out of your bonus. If you hit a 200 while using DoubleTime, you will lose 8/1.1 or 7.27 instead.
So let's explain the second term here now that we know what bonus actually means.
wiki wrote:
(HitBonusValue * Sqrt(Bonus) / 320)
This ALMOST looks like the first equation. And it does the same thing, it calculates the actual percentage of maximum score that whatever note you just hit is worth. If you look up the value of HitBonusValue for each judgement, you'll notice that the maximum number is 32. This is because sqrt(100) (the maximum value Bonus can be worth) is 10. This means that if you've hit all MAX or 300's, and then you hit a 200, that 200 is going to be worth (16 * 10 / 320) = (160/320) = 50% of maximum score in for this half of your total score.
So let's combine everything together. Earlier we calculated how many points a 200 is worth for the first half of your score, and I just explained how the second half works, so let's say that the first note you hit on a song is a 200, and let's actually calculate exactly what it's worth:
BaseScore = (1 000 000 * 1.0 * 0.5 / 500) * (200/320)
BaseScore = (500 000 / 500) * (200/320)
BaseScore = (1 000) * (200/320)
BaseScore = 1 000 * 0.625 (remember, 62.5% = 0.625)
BaseScore = 625 points
BonusScore = (1 000 000 * 1.0 * 0.5 / 500) * (16 * sqrt(100) / 320)
BonusScore = (500 000 / 500) * (16 * sqrt(100) / 320)
BonusScore = (1 000) * (16 * sqrt(100) / 320)
BonusScore = (1 000) * (16 * 10 / 320)
BonusScore = (1 000) * (160 / 320)
BonusScore = (1 000) * 0.50
BonusScore = 500
625+500 = 1125 points for hitting a 200 on the first note of a song with exactly 500 notes in it.
Now let's see what happens if you hit a 300 after that 200:
BaseScore = (1 000 000 * 1.0 * 0.5 / 500) * (300/320)
BaseScore = (500 000 / 500) * (300/320)
BaseScore = (1 000) * (300/320)
BaseScore = 1 000 * 0.9375
BaseScore = 937.5 points
BonusScore = (1 000 000 * 1.0 * 0.5 / 500) * (32 * sqrt(92) / 320)
BonusScore = (500 000 / 500) * (32 * sqrt(92) / 320)
BonusScore = (1 000) * (32 * sqrt(92) / 320)
BonusScore = (1 000) * (32 * 9.59 / 320)
BonusScore = (1 000) * (306.93 / 320)
BonusScore = (1 000) * 95.91
BonusScore = 959.1
937.5 + 959.1 = 1896.6 points
If instead of a 200, your first note was a 300, it would be worth 1937.5 points instead. That means that the first 200 cost you 40.9 points off your score for that 300.