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

Change Taiko Classic NM, HD, HR and HDHR to better match stable #19604

Closed
wants to merge 19 commits into from

Conversation

vunyunt
Copy link
Contributor

@vunyunt vunyunt commented Aug 6, 2022

Changes include:

  • Classic + NM now fades the note in when gameplay aspect ratio is wider than 2:1
  • Classic + HD now locks the gameplay aspect ratio to 4:3 by trimming the playfield.
  • Classic + HR now limits the gameplay aspect ratio to a maximum of 2:1 by stretching the time range. This also overrides HD's playfield scaling in the case of HDHR.
  • Classic + HDHR now reduces the note visible time compared to HD.

I can't quite get HDHR to scale to different resolutions identically to stable, hence I went with close enough. The videos below is one commit behind and HDHR had been further scaled closer to stable since, but there isn't a big difference.

Videos showing gameplay vs. stable (ordered by NM -> HD -> HR -> HDHR):
1920x480
1280x720
800x600

Code wise this is achieved by defining IApplicableToTaikoClassic, which lets mods register themselves to TaikoModClassic. TaikoModClassic then handles the scalings accordingly. TaikoPlayfieldAdjustmentContainer has also been expanded to handle different type of visual scaling methods.

@bdach
Copy link
Collaborator

bdach commented Aug 6, 2022

I feel a deep urge to restate my concerns about having mods influence the way that other mods function. I have brought this up several times before, but in short, the argument goes that allowing this sets a bad precedent and invites exponential complexity both to mod logic and to evaluation of beatmap difficulty and player performance.

I know that stable did this, but I'm also saying that I think it was a bad idea and it should not be repeated again.

@peppy
Copy link
Sponsor Member

peppy commented Aug 6, 2022

@bdach I don't disagree, but are you suggesting that we need to break parity with stable to avoid this? The original goal of "classic" mod was to create an experience for players that are allergic to change.

@bdach
Copy link
Collaborator

bdach commented Aug 6, 2022

Honestly, in the worst case? Absolutely. But before that, I would explore options as to whether it is possible to change the logic of the mods affected by this change such that they always work like they did on stable, and examine what that means for the new lazer gameplay mechanics. As in, get the changes in, but remove the part that makes these changes conditional on classic being active, and see how broken the end result is when classic isn't active.

@bdach
Copy link
Collaborator

bdach commented Aug 6, 2022

Just to keep information parity between discord and here I guess: I could go along with this as long as whatever is implemented is constrained to classic mod and it is not allowed to have normal mods change the function of other mods outside of "classic" contexts. Ideally all of the classic interdependency brokenness would also be implemented in TaikoModClassic itself, but I'm not sure how feasible this is.

@vunyunt
Copy link
Contributor Author

vunyunt commented Aug 6, 2022

This PR does try to limit changes to TaikoModClassic (the change described here might help with that). It does have to expand TaikoPlayfieldAdjustmentContainer to support the kind of visual scaling that is required.

As for making mods always work like they do in stable, for HD and HR at least it might be possible, if there is a way to ensure HR changes to the playfield always override HD. HR might not even have to pass additional parameters to HD as it seems like that can be achieved by extending the playfield beyond the display, which I did try before opening this PR but couldn't get it to scale well.

@@ -28,7 +29,13 @@ public class TaikoModHidden : ModHidden, IApplicableToDrawableRuleset<TaikoHitOb
/// How long hitobjects take to fade out, in terms of the scrolling length.
/// Range: [0, 1]
/// </summary>
private const float fade_out_duration = 0.375f;
public readonly Bindable<float> FadeOutDuration = new Bindable<float>(0.375f);
Copy link
Sponsor Member

Choose a reason for hiding this comment

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

For safety you can use BindableFloat and then set MinValue and MaxValue to the intended range (for this and the bindable below).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Makes sense, applied in 8000ae6

As a side note, IBindable.cs in osu-framework seems to have a potential minor typo at line 18 and 91:
image

@peppy
Copy link
Sponsor Member

peppy commented Aug 8, 2022

I haven't done a detailed pass on this, but overall the code quality and structure is looking about how I'd expect it to be.

Copy link
Collaborator

@bdach bdach left a comment

Choose a reason for hiding this comment

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

Read through this again. I could live with the code, but some comments are weird and I have some doubts that some things work correctly.

osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs Outdated Show resolved Hide resolved
osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs Outdated Show resolved Hide resolved
osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs Outdated Show resolved Hide resolved
@bdach
Copy link
Collaborator

bdach commented Aug 18, 2022

Code-wise I'm fine with this diff now. I loosely visually checked the end result against stable, and it seems indistinguishable to me (being a taiko layperson), but I haven't gone to confirm all of the numerical detail against stable source. Let's just say I'm personally willing to let players playtest and see how it goes.

bdach
bdach previously approved these changes Aug 18, 2022
@bdach bdach requested a review from peppy August 18, 2022 17:07
@bdach
Copy link
Collaborator

bdach commented Aug 23, 2022

Have pushed a trivial merge conflict resolution (was in the using statement block). Feel free to double check the merge though.

@peppy
Copy link
Sponsor Member

peppy commented Sep 8, 2022

@smoogipoo can you take a quick look at this and make sure you don't have any strong feelings against the way the cross-mod mutation is done here? I'm not 100% about it, but we should probably address this PR before it gets too far behind.

@peppy
Copy link
Sponsor Member

peppy commented Jan 18, 2024

@vunyunt sorry that your PR got stuck in a really bad state, pending on review from out end that got forgotten. i just want to ping you and see if you're still around and/or willing to contribute.

I'm finally getting a chance to revisit this (based on further reports of things being wrong, like #25919) and working through your changes here, which do still look like what we want. Unfortunately a lot has changed since this PR got forgotten about and bringing them across via a merge resolution is... quite high effort.

If you're still around and wiling, I am happy to delegate a reimplementation of this to you, else I'll see what I can do.

@vunyunt
Copy link
Contributor Author

vunyunt commented Jan 18, 2024

@vunyunt sorry that your PR got stuck in a really bad state, pending on review from out end that got forgotten. i just want to ping you and see if you're still around and/or willing to contribute.

I'm finally getting a chance to revisit this (based on further reports of things being wrong, like #25919) and working through your changes here, which do still look like what we want. Unfortunately a lot has changed since this PR got forgotten about and bringing them across via a merge resolution is... quite high effort.

If you're still around and wiling, I am happy to delegate a reimplementation of this to you, else I'll see what I can do.

Hi, yes I am available for this. I assume this means it would probably be easier to reimplement this on the latest codebase instead of trying to bring the current implementation up to date?

@peppy
Copy link
Sponsor Member

peppy commented Jan 18, 2024

Hi, yes I am available for this. I assume this means it would probably be easier to reimplement this on the latest codebase instead of trying to bring the current implementation up to date?

Either is fine! But we'd be looking to get the changes in ASAP as we are looking to bring the next stage of scoring online soon.

Also of note, we may want to match the display resolution in non-classic mod too, but we can address that after things are brought up-to-date as required.

@vunyunt
Copy link
Contributor Author

vunyunt commented Jan 20, 2024

Hi, yes I am available for this. I assume this means it would probably be easier to reimplement this on the latest codebase instead of trying to bring the current implementation up to date?

Either is fine! But we'd be looking to get the changes in ASAP as we are looking to bring the next stage of scoring online soon.

Also of note, we may want to match the display resolution in non-classic mod too, but we can address that after things are brought up-to-date as required.

Alright, I'll take a look at the up to date repo first, most likely I'll be reimplementing it using this branch as a reference.

By matching display resolution do you mean matching stable's SV? (in reference to #25919)

@vunyunt vunyunt closed this Jan 22, 2024
@vunyunt vunyunt deleted the taiko-classic-fix branch January 22, 2024 00:01
@vunyunt vunyunt restored the taiko-classic-fix branch January 22, 2024 00:07
@peppy
Copy link
Sponsor Member

peppy commented Jan 22, 2024

By matching display resolution do you mean matching stable's SV? (in reference to #25919)

Yep.

@vunyunt also of note, there's a few PRs open to fix some taiko metrics which i'll be hopefully merging today, you may want to be aware of those / wait for merge to avoid further conflicts.

@vunyunt
Copy link
Contributor Author

vunyunt commented Jan 22, 2024

By matching display resolution do you mean matching stable's SV? (in reference to #25919)

Yep.

@vunyunt also of note, there's a few PRs open to fix some taiko metrics which i'll be hopefully merging today, you may want to be aware of those / wait for merge to avoid further conflicts.

Alright, I have started working on it earlier today but haven't had too much changes yet, so it shouldn't be too much of an issue. I'll avoid making too much change before those then, and will try to come up with something functional within this week

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

Successfully merging this pull request may close these issues.

4 participants