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

Sliders gives combo for slider end when player misses slider end in Classic mod #11769

Open
AtakanErmis opened this issue Feb 12, 2021 · 19 comments
Assignees
Labels
area:mods area:scoring compatibility change Changes to be considered in the future which break compatibility with osu!stable scores. priority:1 Very important. Feels bad without fix. Affects the majority of users. ruleset/osu!

Comments

@AtakanErmis
Copy link

AtakanErmis commented Feb 12, 2021

Describe the bug:

Sliders gives combo for slider end when player misses slider end in Classic mod.

Screenshots or videos showing encountered issue: https://youtu.be/jBcC_DVjDJk

osu!lazer version: 2021.212.0

Logs:

performance.log
runtime.log
updater.log
database.log

@vernonlim
Copy link

vernonlim commented Feb 12, 2021

that's the point of the classic mod - it makes behaviour the same as stable (where missed slider ends don't break combo). I do notice though that the sliderend still gives a combo (slider with missed sliderend gives 2 combo instead of 1), which doesn't happen in stable.

@AtakanErmis AtakanErmis reopened this Feb 12, 2021
@AtakanErmis AtakanErmis changed the title Sliders won't break the combo when player misses slider end in Classic mod. Sliders gives combo for slider end when player misses slider end in Classic mod. Feb 12, 2021
@peppy peppy changed the title Sliders gives combo for slider end when player misses slider end in Classic mod. Sliders gives combo for slider end when player misses slider end in Classic mod Feb 15, 2021
@smoogipoo smoogipoo added this to the March 2021 milestone Feb 18, 2021
@smoogipoo
Copy link
Contributor

I'm going to close this as intended for now. I think giving combo isn't something players are going to complain about.

@facespkz
Copy link

It's probably worth noting that this affects older replays as well, which don't give combo for dropped slider ends.

@ghost
Copy link

ghost commented Jul 30, 2023

I think giving combo isn't something players are going to complain about.

The people who benefit from it won't complain, but it gives an unfair advantage over osu!stable players, even just previous scores set in osu!stable.

It should not break combo, but it definitely shouldn't give combo with the classic mod either.

@smoogipoo smoogipoo added the compatibility change Changes to be considered in the future which break compatibility with osu!stable scores. label Jul 31, 2023
@smoogipoo
Copy link
Contributor

I'll tentatively reopen this as a compatibility change, however note that this is quite complicated to fix.

@smoogipoo smoogipoo reopened this Jul 31, 2023
@smoogipoo smoogipoo modified the milestones: March 2021, Game balance Jul 31, 2023
@peppy peppy moved this to Needs implementation in Path to osu!(lazer) ranked play Aug 20, 2023
@peppy peppy removed this from the Game balance milestone Aug 20, 2023
@peppy
Copy link
Member

peppy commented Sep 4, 2023

I don't understand the title of this issue.

@developomp
Copy link

"Missed slider ends gives combo with Classic mod enabled" might be better

@smoogipoo
Copy link
Contributor

smoogipoo commented Sep 4, 2023

I think now might be a good time to discuss how to do these "special" judgements. Here's how these work in osu-stable:

Mania

Ref: #24618

This applies to ScoreV2 only.

  • Does not gain combo while holding an LN.
  • Breaks combo if releasing a hold. Does not affect accuracy. Can only happen once per LN.

The hit case can be handled by IgnoreHit. The miss case can't be handled by any current judgement (Miss would affect accuracy).

Osu

Ref: #11769

This applies to the classic mod only.

  • When completing a slider, the slider judgement, that is a basic judgement (300/100/50/miss), does NOT give combo.
  • The slider tail judgement either gives a LargeTickHit on hit or "ignores" combo (does not break) on miss.

For as long as basic judgements also give combo, this can't be fully handled. The miss case could be handled by an IgnoreMiss.


I'm not entirely sure of the path forward here. I have a few preliminary questions:

  1. Do we want to exactly reproduce osu-stable's behaviour for osu? Or is there a more amicable way we can handle this without jumping through hoops.
  2. If replicating, how do we make basic judgements not give combo?
  3. And regardless, do we add a special "combo break" judgement to handle the mania miss case?

@bdach
Copy link
Collaborator

bdach commented Sep 4, 2023

Do we want to exactly reproduce osu-stable's behaviour for osu? Or is there a more amicable way we can handle this without jumping through hoops.

I think that's a player question, so I don't feel informed enough to even try approaching a judgement call on this... (@Bubbleman532 hi) Would also need exploring the possible solution space because I basically don't see any options to paper over this particular crack.

If replicating, how do we make basic judgements not give combo?

Basically the only feasible "by the book" way I can think about off the top of my head is lifting the AffectsCombo() mapping to a flag on Judgement rather than have it map 1-1 from ResultType... It's bound to be a rather large amount of work for this one thing (the part where we need to check that we haven't accidentally broken anything when moving across in particular).

Edit: This is more complicated than I thought due to server-side concerns. Relevant discord convo: https://discord.com/channels/188630481301012481/542532524388384784/1148158717641097259. Or just see comment below.

And regardless, do we add a special "combo break" judgement to handle the mania miss case?

That's also probably something for the players. I'd wanna say that this is probably lower priority than the osu! case, since in mania combo is so heavily de-emphasised in score and basically everywhere else too.

@smoogipoo
Copy link
Contributor

smoogipoo commented Sep 4, 2023

The mania case (combo breaking on a miss) is required. Technically it can be handled by a singular LargeTickHit judgement, but you'd have to make the concession that it'd affect both accuracy and combo regardless of a hit or miss.

I suppose that part is a consideration for players - if they'd be fine with that.

The consideration for us is, if it needs to be just a "combo break" and not affect score in any other way, then how to we represent this in code. For example the structure:

Judgement
{
    AffectsCombo: bool = Result.AffectsCombo(),
    Result: HitResult
}

Is possible, where AffectsCombo is overridable in some way. But we would need to consider the implications of this - what happens if a component wants to know the max achievable combo of a score?

@peppy
Copy link
Member

peppy commented Sep 6, 2023

Do we want to exactly reproduce osu-stable's behaviour for osu? Or is there a more amicable way we can handle this without jumping through hoops.

To elaborate on this since we discussed IRL yesterday, do we really want the super-weird "slider end can reduce combo but not break combo" to continue to exist into the future? It's a huge source of confusion for players, so if there's no good gameplay reason to keep this around then I think we should push to remove that behaviour (even with the potential of backporting the change to stable).

cc @Bubbleman532 in case this helps with passing on the question in better detail to whoever you're discussing with.

@bdach
Copy link
Collaborator

bdach commented Sep 11, 2023

Going back to the dev-side consequences of this - I presume the mania case is not under discussion, i.e. it is a must-have. If so, then given the server-side implications, I don't see how we address this easily without eating a new HitResult. Something like a ComboMiss maybe.

I'm not sure anything else is worth the absolutely stupid time investment (and added overheads) it would take to move the combo flag to judgements, for instance. That would mean that you have to instantiate the full beatmap any time you want to calculate max combo which, as has been demonstrated by now, is pretty crucial for server components.

@peppy
Copy link
Member

peppy commented Sep 11, 2023

Adding new HitResults are fine by me.

The main discussion point is what to do about the stupidness that is "slider breaks". I think this is the only chance in osu! history to fix this eyesore.

@peppy
Copy link
Member

peppy commented Sep 11, 2023

I've posted https://twitter.com/ppy/status/1701139387248169019 to explain a direction we're considering, hopefully to get more discussion happening in the community.

@bdach
Copy link
Collaborator

bdach commented Sep 19, 2023

Did anything sensible come out of the twiitter postings? I no longer have an account so I can't check, as that website is terminally broken without one.

@peppy
Copy link
Member

peppy commented Sep 19, 2023

There were two strong opinions / directions which can be explored:

Adding a lenience around slider end releases.

Safari 2023-09-19 at 06 05 44

The most sensible reasoning against this was that it could create new edge cases and could be considered a "hacky" thing to have, similar to the final slider tick having an arbitrary offset. Arguable. Also some responses like this:

Safari 2023-09-19 at 06 09 32

Count slider ends as their own judgement which is shown at the results screen

This is the voice from people that don't want anything to change, and are trying to appease the user experience alone. It doesn't really fix the weirdness that they don't break combo but do reduce combo, but at least it would be shown in some way at the results screen?

Safari 2023-09-19 at 06 07 52

Safari 2023-09-19 at 06 08 04


I'm not sure which direction makes more sense here, but I'd want to explore how/if the latter is able to be implemented, and whether it works better or worse with the judgement systems we have in place.

@peppy peppy self-assigned this Oct 24, 2023
@peppy
Copy link
Member

peppy commented Oct 24, 2023

I'm going to look into implementing things in the latter way, aka. matching stable.

@peppy peppy moved this from Needs implementation to In Progress in Path to osu!(lazer) ranked play Oct 24, 2023
@peppy
Copy link
Member

peppy commented Nov 2, 2023

After a lot of experimentation and thought, it doesn't look like this will be simple.

Our best bet may be to refactor hit results to allow specifying AffectsCombo local to their (ruleset) implementation, or creating GreatNoCombo OkNoCombo MehNoCombo. The latter is likely going to be a whole lot easier to make happen, but it still leaves slider logic in a very convoluted state.

In addition, we currently don't have a way of exposing "slider end misses" as proposed by users. Our best bet right now (which we've used elsewhere) is relying on only one thing using a certain judgement, but for instance IgnoreMiss is already used by spinners so would not work here.

@smoogipoo
Copy link
Contributor

Moving out of the project and putting this on the backburner for now. Classic mod will initially be unranked because of this, but resolving it needs more consideration for storage/etc.

@smoogipoo smoogipoo added the priority:2 Moderately important. Relied on by some users or impeding the usability of the game label Dec 13, 2023
@peppy peppy added priority:1 Very important. Feels bad without fix. Affects the majority of users. and removed priority:2 Moderately important. Relied on by some users or impeding the usability of the game labels Jan 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:mods area:scoring compatibility change Changes to be considered in the future which break compatibility with osu!stable scores. priority:1 Very important. Feels bad without fix. Affects the majority of users. ruleset/osu!
Projects
None yet
8 participants