Adjust HP drain and recoveries to closer match osu-stable #18340
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I've gone through the osu-stable implementation once again and found a few areas of improvement.
My testing was mostly done on https://osu.ppy.sh/beatmapsets/268431#osu/611157. I don't have comparisons because they're kinda hard to make and there's still differences (see my conclusions).
Minimum health targets were incorrect
The original values weren't taken from stable, but rather "what feels ok". As it turns out, all of osu+catch+mania use the same HP targets, albeit mania doesn't have HP drain.
Of particular importance, stable has 3 target values:
These values are checked at different points in the calculation to make sure the HP doesn't fall below it. Since lazer doesn't have geki/katsu, the second row wasn't considered, and I've decided to go with the
hp-end
values from above purely because they feel a little bit better in actual gameplay.Adjusted HP increases to line up better
From the very start of implementation of HP drain, lazer's
Meh
judgements decreased HP. I can't find any reason for this, so I take it as my misunderstanding at the time that 50s decrease HP in stable, but this is not the case.Additionally, misses are also quite harsh on stable and quite lenient on lazer. I've tried to make misses a little bit more harsh while hopefully not impacting lower-HP values too much.
The following is a table of stable vs lazer HP increases as percentages of total HP for each hit result. A linear interpolation of the HP difficulty value is indicated in cells containing multiple values within brackets.
* repeats give 2% HP but lazer doesn't differentiate
Note: The above are the base values pre-hp-multiplier (determined as part of osu-stable's HP drain algorithm). I don't think this multiplier makes much of a difference in practice.
Conclusion
It's still not perfect and definitely doesn't match osu-stable, but feels better at higher HP values. I'm still interested in trying to keep it simple before resorting to outright porting osu-stable's implementation across; interpolation, multipliers, and all.