ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
15.45k stars 2.3k forks source link

Calculated classic style score is lower than standarised score. #23847

Closed Akarinnnnn closed 1 year ago

Akarinnnnn commented 1 year ago

Type

Game behaviour

Bug description

Reproduce steps:

  1. Set "Gameplay/General/Score display mode" to "Classic".
  2. Play a map.
  3. Standardized score will show on score indicator and result page.

If you switch score display mode to "Standardised" and back now, the scores will display correctly again.

Screenshots or videos

osu_2023-06-09_20-44-48

Version

2023.605.0

Logs

runtime.log might be useful.

bdach commented 1 year ago

I cannot reproduce this. Can you upload a video showing this?

Akarinnnnn commented 1 year ago

My score display mode is already "Classic" before startup. If you change it after startup, it will behave correct. Here is reproduction video:

https://github.com/ppy/osu/assets/43724908/c548f9e7-2c5b-496f-b110-64f0b727e3b1

bdach commented 1 year ago

What the video above shows is https://github.com/ppy/osu/issues/23782. As in, you played back a replay set using old score algorithm, which is incomparable to the new score algorithm (and old scores will not be recalculated).

If you can show this happening on a brand new score then I'll reopen and investigate again, but so far this looks like a duplicate/wontfix.

Akarinnnnn commented 1 year ago

In previous video I selected an old score for convince. But same issue occurs to new score and gameplay. Here is the video shows a gameplay:

https://github.com/ppy/osu/assets/43724908/c9be6b8a-dadc-411d-ab71-2dbd93548d34

~In my investigation the most possible reason I think is that bindable from config.GetBindable<ScoreMode>(OsuSetting.ScoreDisplayMode) provided an default value, which is Standarised instead of Classic provided from config file. Corrupted configuration database might also be the reason.~

bdach commented 1 year ago

The video above does not appear incorrect to me.

I assure you that I have attempted to reproduce this several times on short maps by playing them to completion (one example is https://osu.ppy.sh/beatmapsets/398977#osu/872885) and I have not managed to yet produce one instance wherein the score would have standardised score when classic mode is active.

Akarinnnnn commented 1 year ago

In that video, if classic score display applied, score should absolutely above than 2000 after that amount of objects hit according to my experience. Therefore, the only reason that low score displayed is standardized score displayed. Anyway, thank you for testing. I will try reset all settings to see if it can solved.

bdach commented 1 year ago

Note that "classic scoring" is not, and never was, Score V1. It was only supposed to be a crude approximation of it, ultimately based on standardised score, the goal of which was to have a similar scaling progression and magnitude of total score as Score V1 did.

Akarinnnnn commented 1 year ago

Sure. But it seems HUD displayed value is different from ScoreInfoExtensions.getDisplayScore. Is it excepted?

bdach commented 1 year ago

If the HUD was wrong due to being in the wrong scoring mode, then I'd expect the results screen to show a different figure than the HUD does at the end of gameplay. I have not been able to reproduce that yet either.

Given that you seem to make various assertions about the code, then maybe you could try debugging it yourself, because I really see nothing wrong here.

Akarinnnnn commented 1 year ago

The real reason which confuses me is the conversion algorithm gave a score which lower than standardized score. The t/d/m in screenshot stands for total standardized score, display score and mode. image

bdach commented 1 year ago

I don't understand what I'm looking at there sorry. What is "total standardised score"? What is "display score"?

Akarinnnnn commented 1 year ago

"Total standarised score" stands for real score which is standardised, and "display score" is the converted "classic" score which used by score indicator etc. Let's take a look at first line for example, you can see standarised score is 25906, which even larger than the score 23441 displayed on screen. This makes me wrongly think standarised score is displayed.

bdach commented 1 year ago

Can you just post the code you used to produce the output above please.

Akarinnnnn commented 1 year ago

I added an action breakpoint prints message above at osu\osu.Game\Screens\Play\HUD\GameplayScoreCounter.cs Line 51 (void updateDisplayScore() => Current.Value = scoreProcessor.GetDisplayScore(scoreDisplayMode.Value);), mapset is 六兆年と一夜物語- Rolniczy's Insane. I think print standarised score and calculated score in updateDisplayScore() is equalvent.

bdach commented 1 year ago

"Classic" scoring is not a linear rescale of standardised. It starting with a lower value is expected. Once a certain performance threshold is crossed, the total score should increase above 1 million, however.

https://github.com/ppy/osu/issues/23763 may be relevant here, though.

Akarinnnnn commented 1 year ago

Yes, that is my problem facing.