ppy / osu-web

the browser-facing portion of osu!
https://osu.ppy.sh
GNU Affero General Public License v3.0
955 stars 380 forks source link

Rare discrepancy between stable in-game and stable web ranks/grades #11293

Open Wrongwayscout opened 1 week ago

Wrongwayscout commented 1 week ago

When the 300 count of a score is exactly equal to the threshold to achieve a grade, in game it displays the higher grade, but on web it displays the lower grade.

Example: https://osu.ppy.sh/scores/3047847833 image image

stable C rank on web, stable B rank in game.

The score has a 300 count of 1644, and the object count of the map is 2055, which when multiplied by 0.8 (B rank threshold) comes to exactly 1644 as well.

Not sure if the in-game or the web grade is the incorrect one but a discrepancy here is super confusing in the rare times it occurs.

cl8n commented 1 week ago

every reference I can find makes it seem like C (as displayed on web) is "correct". not sure how stable got a B rank for this

WindowsMeosu commented 6 days ago

every reference I can find makes it seem like C (as displayed on web) is "correct". not sure how stable got a B rank for this

For B, wiki states that: "Over 70% 300s and no misses OR over 80% 300s". It seems stable accounts for not just over but also equal to 80% whereas web does not.

Stable: 1644/2055*100 ≥ 80% = B
Web: 1644/2055*100 ≤ 80% = C

Same seems to be true for classic scoring: forgot lazer currently uses a mania-based method of scoring & grading

Wrongwayscout commented 6 days ago

Classic scoring on Lazer uses Lazer’s grade thresholds. Which is just accuracy over 70, 80, and 90% for C, B, and A.

On Mon, Jun 24, 2024 at 10:50 Milo @.***> wrote:

every reference I can find makes it seem like C (as displayed on web) is "correct". not sure how stable got a B rank for this

For B, wiki states that: "Over 70% 300s and no misses OR over 80% 300s". It seems stable accounts for not just over but also equal to 80% whereas web does not.

Stable: 1644/2055 100 ≥ 80% = B Web: 1644/2055100 ≤ 80% = C

Same seems to be true for classic scoring: image.png (view on web) https://github.com/ppy/osu-web/assets/104236864/369f5f77-f940-4c0f-93af-9dc3945ac5a8

— Reply to this email directly, view it on GitHub https://github.com/ppy/osu-web/issues/11293#issuecomment-2187101607, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUHJC5IH3FZJ3V6IN6KX4OTZJBL5HAVCNFSM6AAAAABJYYGTECVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBXGEYDCNRQG4 . You are receiving this because you authored the thread.Message ID: @.***>

nanaya commented 6 days ago

it's a "bug" in stable due to 0.8 (float) being larger than 0.8 (double).

for my own reference [grades](https://github.com/ppy/osu/issues/4184#issuecomment-1724954327) relevant code: [`0.8f > 0.8`](https://sharplab.io/#v2:EYLgHgbALANALiATgVwHYB8ACAmAjAWACgjNcBOACgAYA6ADgDMACAPidroEoBuIA===) (also 0.6)