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

Add progressive coverage for mania's Hidden and FadeIn mods #27068

Merged
merged 10 commits into from Feb 15, 2024

Conversation

smoogipoo
Copy link
Contributor

@smoogipoo smoogipoo commented Feb 6, 2024

Resolves #22355
Supersedes / closes #22591

This restores progressive coverage that HD and FI had in osu!stable, and adds a new mod ManiaModCover / CO which allows setting a custom cover.

I've tested that importing an old score that previously had Coverage set to a custom value works.

Not sure whether we want/need to do a score reset at this point.

@smoogipoo smoogipoo changed the title Add back "progression" for mania's Hidden and FadeIn mods Add progressive coverage for mania's Hidden and FadeIn mods Feb 6, 2024
@bdach
Copy link
Collaborator

bdach commented Feb 6, 2024

There was a PR for this already: #22591

Am I to understand that this one is to supersede it?

@smoogipoo
Copy link
Contributor Author

smoogipoo commented Feb 6, 2024

I didn't see that PR... I think this PR should be treated independently and supersede if possible. I think min/max coverage can probably be left to a later date.

{
}

public ScoreRank AdjustRank(ScoreRank rank, double accuracy)
public virtual ScoreRank AdjustRank(ScoreRank rank, double accuracy)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unnecessary virtual?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The distinction between what should and shouldn't be virtual with mods isn't yet clear to me, especially those in the base osu.Game project.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I was getting at is that it does not appear to be required for this diff at present. So wondering if there was anything in particular that this was angling at.

@bdach
Copy link
Collaborator

bdach commented Feb 7, 2024

Was this visually tested against stable or was this written just by plugging the stable numbers in? Because as far as I can see, visually, stable seems to hide more of the playfield even if the numbers match up.

combo
0 0-combo
120 120-combo
480 (max) 480-combo

Red line marks where the cutoff is.

Also in stable the cover goes away during break and is faded back in on break end: https://github.com/peppy/osu-stable-reference/blob/013c3010a9d495e3471a9c59518de17006f9ad89/osu!/GameModes/Play/Rulesets/Mania/Stage/StageMania_Calculations.cs#L286-L316. I'm not seeing that happen in this implementation, so not sure if that is an executive decision to not bother, or an omission.

@smoogipoo
Copy link
Contributor Author

smoogipoo commented Feb 7, 2024

I mostly transferred things across and eyeballed it. The issue is that the cover is applied from the hit position, so for example to get a cover that's covers everything but 10px you have to do something like VectorScale.Y = 768 - (480 - HitPosition) * 1.6 - 10.

Here are my results after the changes (left = lazer, top = fade-in):

Untitled

if (DrawHeight == 0)
return base.GetHeight(coverage);

return base.GetHeight(coverage) * reference_playfield_height / DrawHeight;
Copy link
Collaborator

@bdach bdach Feb 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At "normal" resolutions this is fine, but I'm not sure using DrawHeight here is the best idea because it appears to break down on very narrow screens, giving them unfair advantage. See the following screenshots:

osu_2024-02-12_13-51-48 osu_2024-02-12_13-51-54

This is the same instant on the same map, same scroll speed, just different aspect ratios. For better comparison here's them next to each other, lined up to the hit position:

image

The time range is the same, all objects line up to each other, but the effective coverage on the narrow window is considerably less.

@bdach
Copy link
Collaborator

bdach commented Feb 12, 2024

In addition to the above:

Also in stable the cover goes away during break and is faded back in on break end

I don't see a response to this anywhere.

I've tested that importing an old score that previously had Coverage set to a custom value works.

What does this mean? In my testing the old setting value appears to be effectively ignored? Is that what's deemed "working" there?

@smoogipoo
Copy link
Contributor Author

In my testing the old setting value appears to be effectively ignored?

Yeah sorry, that's what I meant. The concern was for if it crashes/throws some sort of exception.

@peppy
Copy link
Sponsor Member

peppy commented Feb 15, 2024

We probably want to get this in the next release. Seems like some feedback still needs to be applied?

@smoogipoo
Copy link
Contributor Author

smoogipoo commented Feb 15, 2024

Yeah I'll try to find a solution for the feedback.

@smoogipoo
Copy link
Contributor Author

All should be fixed now...

@bdach bdach added the next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! label Feb 15, 2024
@bdach bdach self-requested a review February 15, 2024 13:36
@bdach
Copy link
Collaborator

bdach commented Feb 15, 2024

Aside from one UI nit (4b21970), I think this is good enough to go with now.

I'm gonna admit that I mostly did visual comparisons but the coverage seems to check out. The fade in after break is a bit different:

Untitled.mp4

but I don't think that's significant enough to run this through the wringer any longer (if anything lazer is harsher which seems fine to do).

@peppy not sure if you wanted to give this one a once-over?

@peppy peppy merged commit c1d9f53 into ppy:master Feb 15, 2024
15 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:mods next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! ruleset/osu!mania size/L type:behavioural
Projects
Development

Successfully merging this pull request may close these issues.

osu!mania hidden mod does not factor in current combo
3 participants