Personally, I do think that ScoreV1 focuses too much on combo to the point where I think that with big enough combo accuracy becomes somewhat irrelevant. This also means that penalty for miss is way too high.
But I also really don't like capped scores. If ScoreV2 is going to be capped at 1 000 000 then it might as well be just a percentage since getting maximum is always the same value.
The problem with ScoreV1 is that it's exponential:
Score = Hit Value + (Hit Value * ((Combo multiplier * Difficulty multiplier * Mod multiplier) / 25))
It's exponential because summing values in which each one is bigger that the previous one results in exponential growth. So the rate of growth increases with each new hit and resets to 0 on miss. And because this rate of growth is unbounded, even a 50 with big enough combo has bigger score gain than 300 with no combo.
Naïve solution would be to not scale hit values with combo, but that would leave combo out of the equation and make combo have no effect on the score.
My suggestion would be to scale hit values with combo, but not linearly. Instead, a function that gradually decreases its rate of growth would be used. This would result in hits achieved with high combo to have bigger impact on the score, but with a limit. This would solve the problem of ScoreV1 that resulted from unbounded combo multiplier.
Some functions that would the satisfy the property of gradually decreasing rate of growth:
Score = Hit Value + (Hit Value * (((Combo multiplier / (Combo multiplier + 10)) * Difficulty multiplier * Mod multiplier) / 25))
But I also really don't like capped scores. If ScoreV2 is going to be capped at 1 000 000 then it might as well be just a percentage since getting maximum is always the same value.
The problem with ScoreV1 is that it's exponential:
Score = Hit Value + (Hit Value * ((Combo multiplier * Difficulty multiplier * Mod multiplier) / 25))
It's exponential because summing values in which each one is bigger that the previous one results in exponential growth. So the rate of growth increases with each new hit and resets to 0 on miss. And because this rate of growth is unbounded, even a 50 with big enough combo has bigger score gain than 300 with no combo.
Naïve solution would be to not scale hit values with combo, but that would leave combo out of the equation and make combo have no effect on the score.
My suggestion would be to scale hit values with combo, but not linearly. Instead, a function that gradually decreases its rate of growth would be used. This would result in hits achieved with high combo to have bigger impact on the score, but with a limit. This would solve the problem of ScoreV1 that resulted from unbounded combo multiplier.
Some functions that would the satisfy the property of gradually decreasing rate of growth:
- combo / (combo + a); where a is from open interval (0, ∞)
- combo^a; where a is from open interval (0, 1) [basically a root function]
Score = Hit Value + (Hit Value * (((Combo multiplier / (Combo multiplier + 10)) * Difficulty multiplier * Mod multiplier) / 25))