Skip to content

Fix incorrect score conversion in taiko due to not porting stable quirk#37313

Open
bdach wants to merge 1 commit intoppy:masterfrom
bdach:stable-is-AWESOME
Open

Fix incorrect score conversion in taiko due to not porting stable quirk#37313
bdach wants to merge 1 commit intoppy:masterfrom
bdach:stable-is-AWESOME

Conversation

@bdach
Copy link
Copy Markdown
Collaborator

@bdach bdach commented Apr 16, 2026

  • Pending sheet generation & verification

Reported in discord.

Warning

The deployment of this fix, if accepted, will consist of:

  • recomputation of legacy scoring attributes for all taiko beatmaps (including converts),
  • reverification of all taiko legacy scores.

For whatever reason, stable taiko decides to set circle size to 2 uniformly in its maze-like virtual methods. This factors into difficultyPeppyStars, which makes TaikoLegacyScoreSimulator overestimate the maximum achievable score, which in turn ends up being an effective stable nerf on top of the 0.96x classic multiplier on the unified leaderboards of selected beatmaps.

Using an old data dump I once got to check #26471, this may affect in the ballpark of 25% of all beatmaps (converts included).

Stable is a [REDACTED]ing [REDACTED] lorem ipsum [REDACTED] hippopotamus [REDACTED] with a bucket of [REDACTED] soup [REDACTED] with a bucket of [REDACTED] and a stick of dynamite [REDACTED] magical [REDACTED], alakazam.

Reported in
[discord](https://discord.com/channels/188630481301012481/1097318920991559880/1493976971766403203).

> [!WARNING]
> The deployment of this fix, if accepted, will consist of:
>
> - recomputation of legacy scoring attributes for **all** taiko beatmaps,
> - reverification of **all** taiko legacy scores.

For *whatever* reason, stable [decides to set circle size to 2
uniformly](https://github.com/peppy/osu-stable-reference/blob/c34a74fb61c17c5667486a12548485d1f03baa2e/osu!/GameplayElements/HitObjectManagerTaiko.cs#L78)
in its maze-like virtual methods. This factors into
`difficultyPeppyStars`, which makes `TaikoLegacyScoreSimulator`
overestimate the maximum achievable score, which in turn is an effective
stable nerf on the unified beatmap leaderboards.

Using an old data dump I once got to check
ppy#26471, this may affect in the ballpark
of 25% of all beatmaps (converts included).

Stable is a [REDACTED]ing [REDACTED] lorem ipsum [REDACTED] hippopotamus
[REDACTED] with a bucket of [REDACTED] soup [REDACTED] with a bucket of
[REDACTED] and a stick of dynamite [REDACTED] magical [REDACTED],
alakazam.
@bdach
Copy link
Copy Markdown
Collaborator Author

bdach commented Apr 16, 2026

!diffcalc
RULESET=taiko
GENERATORS=score

@bdach bdach moved this from Inbox to In Progress in osu! team task tracker Apr 16, 2026
@peppy
Copy link
Copy Markdown
Member

peppy commented Apr 16, 2026

Blamed back to try and give some rationale here, but yeah, I have no idea. This was back in an era where proper review of code didn't really happen so my sign-off here doesn't say much.

Safari 2026-04-16 at 09 02 33 Safari 2026-04-16 at 09 03 38

@github-actions
Copy link
Copy Markdown

@bdach
Copy link
Copy Markdown
Collaborator Author

bdach commented Apr 16, 2026

I've looked through the sheets and I don't see any blockers for this change. I've generally only inspected the NM sheets because they're easier to check visually.

Most of the changes here are expected in that SS scores move from weird totals to ~960k. Notably, apparently some beatmaps were buffed when played on stable in the unified leaderboards, because mappers (probably manually) edited the CS in the .osu to below 2.

In checking scores I've flagged some cases that I didn't like the look of, but upon closer inspection I don't see any evidence to indicate that they got worse by this PR specifically - which is to say, the failings lie elsewhere as far as I can tell. In no case of the 5 I checked was the apparent discrepancy caused by difficultyPeppyStars mismatching between stable and lazer.

Details, if someone wants them

https://osu.ppy.sh/scores/1876870235 -> b/3707679

  • cause for concern: significantly exceeds theoretical cap of 960k score in a way that does not seem to be explainable via bonus
  • difficultyPeppyStars does not diverge (3 = 3)
  • stable autoplay gets 34584
  • lazer estimates 31884 for perfect play
  • difference: -2700
  • conversion mapping test fails
  • conclusion: definitely not caused by this change. diverging potentially due to differing hitobjects. would need further investigation, potentially a lost cause (conversion is probably not possible to improve due to floating point issues).

https://osu.ppy.sh/scores/1854673180 -> b/2134593

  • cause for concern: significantly exceeds theoretical cap of 960k score in a way that does not seem to be explainable via bonus
  • difficultyPeppyStars does not diverge (3 = 3)
  • stable autoplay gets 56352
  • lazer estimates 51552 for perfect play
  • difference: -4800
  • conversion mapping test passes
  • conclusion: definitely not caused by this change. cause unclear, potentially further bugs in TaikoLegacyScoreSimulator around bonus treatment. would need further investigation.

https://osu.ppy.sh/scores/1876742075 -> b/95989

  • cause for concern: significantly exceeds theoretical cap of 960k score in a way that does not seem to be explainable via bonus
  • difficultyPeppyStars does not diverge (1 = 1)
  • stable autoplay gets 228961
  • lazer estimates 158281 for perfect play
  • difference: -70680
  • conversion mapping test passes
  • conclusion: definitely not caused by this change. cause unclear, potentially further bugs in TaikoLegacyScoreSimulator around bonus treatment. would need further investigation.

https://osu.ppy.sh/scores/3912848143 -> b/4690636

  • cause for concern: is below 960k despite being SS
  • difficultyPeppyStars does not diverge (4 = 4)
  • stable autoplay gets 742880
  • lazer estimates 745280 for perfect play
  • difference: +2400
  • definitely not caused by this change. cause unclear, potentially further bugs in TaikoLegacyScoreSimulator. would need further investigation.

https://osu.ppy.sh/scores/1846979374 -> b/1191292

  • cause for concern: seemingly loses too much score (replay when played back in lazer gets score closer to old than new)
  • difficultyPeppyStars does not diverge (5 = 5)
  • stable autoplay gets 930490
  • lazer estimates 930490 for perfect play
  • difference: 0
  • definitely not caused by this change. cause unclear, potentially caused by imperfect conversion due to presence of bonus. would need further investigation.

All this to say: undrafting, since I don't see anything that I'd consider worrying in the sheet. That said, it may be a good idea to investigate the above cases a bit more before expending the effort to fix things up server-side. I may have a brief look tomorrow and see if I can see anything that can be done to improve these.

@bdach bdach marked this pull request as ready for review April 16, 2026 12:54
@bdach bdach moved this from In Progress to Pending Review in osu! team task tracker Apr 16, 2026
@bdach
Copy link
Copy Markdown
Collaborator Author

bdach commented Apr 17, 2026

Further investigation reveals yet more holes to dwell into. One of them is demonstrated by this branch but it's not the end of it because some maps are still off.

Leaving this be for now. Up to reviewers' discretion as to whether to go with this for now or whether I should pursue further fixes to the score estimation (likely as separate PRs?). On one side this is faffery work, on another this could be seen as part of the work to fix score multipliers because stable scores can be harmed by these inaccuracies on the combined beatmap leaderboards.

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

Projects

Status: Pending Review

Development

Successfully merging this pull request may close these issues.

2 participants