ppy / osu-tools

command line tools to get stuff done
MIT License
105 stars 78 forks source link

Incorrect accuracy calculation for lazer #226

Closed MaxOhn closed 2 weeks ago

MaxOhn commented 3 weeks ago

Haven't checked for other modes but at least for osu!standard the accuracy calculation is no longer correct for lazer since it does not account for slider tick and slider end hits.

https://github.com/ppy/osu-tools/blob/156867cba3fa57bbc0f7532f1c2d186063c83fde/PerformanceCalculator/Simulate/OsuSimulateCommand.cs#L135-L144

This is important because after generating the hitresults it calculates the accuracy based on those and then passes the calculated accuracy to the performance calculation.

https://github.com/ppy/osu-tools/blob/156867cba3fa57bbc0f7532f1c2d186063c83fde/PerformanceCalculator/Simulate/SimulateCommand.cs#L69-L76

The performance calculation then may or may not make use of that accuracy. In case of osu!standard, it does make use of it.

I imagine this will be slightly awkward to fix. Perhaps a new boolean flag --lazer that will be passed to accuracy calculation to decide whether new or old accuracy calculation should be used?

MaxOhn commented 3 weeks ago

On a somewhat related note:

https://github.com/ppy/osu-tools/blob/156867cba3fa57bbc0f7532f1c2d186063c83fde/PerformanceCalculator/Simulate/ManiaSimulateCommand.cs#L42-L43

Adding the hold note count here should only be done for lazer but not stable. A new --lazer flag could be used here too.

minisbett commented 3 weeks ago

On a somewhat related note:

https://github.com/ppy/osu-tools/blob/156867cba3fa57bbc0f7532f1c2d186063c83fde/PerformanceCalculator/Simulate/ManiaSimulateCommand.cs#L42-L43

Adding the hold note count here should only be done for lazer but not stable. A new --lazer flag could be used here too.

Is this a difference between CL and non-CL or stable vs. lazer? It'd be ideal if flags specific to Lazer can be avoided and rather specified through mods.

Update: Didn't know there is no CL in Mania.

Aside, this is a known issue and I've wanted to fix it, but sort-of gave up for now because the calculations involve having to pass around beatmap objects for maximum statistics, so at least for me it was not a quick thing to do in a pleasing way.

The performance calculation then may or may not make use of that accuracy. In case of osu!standard, it does make use of it.

There is a desire for this to be fixed, as the PP calculator should calculate the accuracy based on hit statistics itself.