Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove relevant legacy mods masking #216

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

minisbett
Copy link

@minisbett minisbett commented Sep 25, 2024

Currently, the legacy mods are masked to only include "relevant" mods. By the current code, "relevant" is defined as in having an affect on the star rating. This causes trouble because some mods, whilst not changing the star rating, affect PP. Mods like hidden, who are crucial to include, are simply ignored.

This currently causes trouble with usage in combination with the website https://pp.huismetbenen.nl/ that is a key element in PP development. The maintainer currently runs a "fixed" version locally, although managing it is troublesome. Helix has tried PRing this before in #209 but I decided to pick it up in a separate PR to address it properly.

Instead, I decided to remove it completely since there's no hurt in inputting mods that don't affect PP into the calculator. It'd also mean that if changes happen, eg. HD affecting star rating through the introduction of a proper reading skill, there's no extra effort in having to keep osu-tools up with it.


Here's a simple example to see the change (example score is mrekk's save me, which is 1665pp):

Before

dotnet run -- simulate osu 1256809 -m HD -m DT -c 4292 -G 85 -M 1 → 1,577pp
dotnet run -- simulate osu 1256809 -m DT -c 4292 -G 85 -M 1 → 1,577pp

After

dotnet run -- simulate osu 1256809 -m HD -m DT -c 4292 -G 85 -M 1 → 1,644pp
dotnet run -- simulate osu 1256809 -m DT -c 4292 -G 85 -M 1 → 1,577pp

You can safely ignore the 1pp difference, that's normal due to the 1665pp being calculated through osu-performance and having tiny decimal differences on some scores.

@minisbett
Copy link
Author

minisbett commented Sep 25, 2024

If there's any actual reason for the masking I'm overseeing (everything works, so I'm not sure what I could oversee) we can of course re-evaluate how this could be implemented. I saw smoogi suggesting some extra parameter, but I'm not sure how methodically correct it is to filter out mods like HD in the first place if they affect PP, as that value is much rather a focus than the SR is.

@smoogipoo
Copy link
Contributor

We should instead filter mods by Mod.Ranked.

Implementation should be exactly the same as https://github.com/ppy/osu-queue-score-statistics/blob/02e1373442c394c9ca42c4c0a3520bfe3bdb18ce/osu.Server.Queues.ScoreStatisticsProcessor/Processors/ScorePerformanceProcessor.cs#L171-L183

Also, the mapping from DC -> HT should be able to be removed.

@minisbett
Copy link
Author

minisbett commented Oct 8, 2024

I think it might be more handy to not filter the mods instead of only including ranked mods / mod combinations.

osu-tools is by far most used for PP development, and whenever a new mod(-configuration) is considered for development it'd mean you need to explicitly add exceptions for that.

I still think it's methodically more correct to just throw all mods into it and have it handle whatever mods the PP code already considers for, instead of constraining it to only include ranked mod combinations/configurations.

@smoogipoo
Copy link
Contributor

Hmmm... I'm a little bit skeptical because this is also used when you're batching data, like via profile, where scores may be coming in that are totally irrelevant to the mods you're developing for. I'll step aside for now and assume that, because the scores are unranked and thus 0pp, they are unlikely to appear near the top of a user's leaderboard to affect the actual development process.

Just to hint at my thought process, I was initially going to respond with:

If you're developing PP for mods, then wouldn't you also be able to set Ranked = true at the same time? Because you'd be working with a local checkout of osu! anyway.
Otherwise, maybe we can have a --assume-ranked option for the CLI that bypasses it?

@smoogipoo
Copy link
Contributor

The other part of my comment still needs to be addressed though. This isn't enough to support lazer-first scores for as long as they're being remapped through LegacyMods.

Likely what you should do is restore the deleted method and keep the mapping only for what looks to be the single path using online attributes (and thus can be implemented locally)::

LegacyMods legacyMods = LegacyHelper.ConvertToLegacyDifficultyAdjustmentMods(workingBeatmap.BeatmapInfo, ruleset, score.Mods);
attributes = queryApiAttributes(apiScore.BeatmapID, apiScore.RulesetID, legacyMods);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants