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

Failed scores in multiplayer still submit to leaderboards #26369

Closed
peppy opened this issue Jan 3, 2024 Discussed in #26367 · 12 comments
Closed

Failed scores in multiplayer still submit to leaderboards #26369

peppy opened this issue Jan 3, 2024 Discussed in #26367 · 12 comments
Assignees
Labels
priority:0 Showstopper. Critical to the next release. type:online

Comments

@peppy
Copy link
Sponsor Member

peppy commented Jan 3, 2024

p0 until investigated

Discussed in #26367

Originally posted by Flamiii January 4, 2024
Map: https://lazer.ppy.sh/beatmapsets/881620#osu/1895402

I played this map in a multiplayer lobby and failed in the map, and my score still submitted to the leaderboard of the map when it shouldn't have. This has the potential to be game-breaking, since you can just play in a multiplayer lobby instead of using No Fail and completely bypass the 0.5x score multiplier you're supposed to have.

osu_2024-01-03_09-40-29

@peppy peppy added priority:0 Showstopper. Critical to the next release. type:online labels Jan 3, 2024
@poettig
Copy link

poettig commented Jan 3, 2024

I also noticed a while ago that you can't tell if you are still alive in multiplayer. I can confirm the described behaviour, see the below video. Before the run I don't have any scores on the friends leaderboards, afterwards I do. I fail in the singleplayer attempt, but it seems you somehow can't fail in multiplayer.

If you do not play at all (0 points), the score is not submitted.

test.mp4

@peppy peppy self-assigned this Jan 4, 2024
@peppy
Copy link
Sponsor Member Author

peppy commented Jan 4, 2024

So there's a few things at play here.

First is that, as you say, all scores are being submitted as "passing". This happened when we merged multiplayer and solo scores into the same table storage a while back, overlooking that the multiplayer fail system is underbaked.

The second is that... the multiplayer fail system is underbaked. On stable, you can fail, then "recover" by reaching full HP again. This is not implemented at all. Basically multiplayer never fails and never recovers.

I'm not sure how to fix this yet.

@bdach
Copy link
Collaborator

bdach commented Jan 4, 2024

I would say that the bare minimum is to mark the failed scores as failed so that they don't get processed and give pp. Everything can continue to work as it did as long as we at least know that the failed scores are failed.

I will note that I would also like some refactoring to take place in Player on that occasion because the fact that player implementations are abusing CheckAllowModFailure() or whatever that method is called to suppress fail is like 80% of the cause of this issue (the other 20% is us forgetting about this).

@peppy
Copy link
Sponsor Member Author

peppy commented Jan 4, 2024

Yeah it's a very weird setup right now. I'll start with marking as failed and see where that leads to (not sure how server handles scores marked as failed currently, ie. if they will still show at multiplayer results correctly).

@bdach
Copy link
Collaborator

bdach commented Jan 4, 2024

ppy/osu-web#10524 is semi-relevant in that respect, but I would say that the key thing is to set the passed flag on the score correctly at least.

@hachuyenden

This comment was marked as duplicate.

@bdach
Copy link
Collaborator

bdach commented Jan 4, 2024

Fixed by #26384

@respektive
Copy link

This issue seems to be back, see this map leaderboard: https://osu.ppy.sh/beatmapsets/2041071#osu/4258136
I've checked the players multi history and the scores seem to have been set in this multi room: https://osu.ppy.sh/multiplayer/rooms/626191

image

@bdach bdach reopened this Apr 1, 2024
@bdach
Copy link
Collaborator

bdach commented Apr 1, 2024

Might have regressed with ppy/osu-web#11118. Probably want to set ranked = 0 on those.

@peppy
Copy link
Sponsor Member Author

peppy commented Apr 2, 2024

For multiplayer scores that haven't got the passed flag set, setting ranked=0 sounds correct (although this sounds frustratingly complicated mentally for flag-logic).

cc @ppy/team-web

@nanaya
Copy link

nanaya commented Apr 2, 2024

that flag is currently set based on beatmap state (approved > 0). Should that be added? (for everything, not just multiplayer)

https://github.com/ppy/osu-web/blob/4c60d398eaba3a5787b253ab4993eed292a643ad/app/Models/Solo/Score.php#L123

@bdach
Copy link
Collaborator

bdach commented Apr 2, 2024

I'd say that enforcing passed state for the ranked flag universally would make sense because right now I think we may have scores wherein passed=0, preserve=0, ranked=1 which feels pathological and seems to risk the same thing happening in solo.

Speaking of which, I don't even understand why this is specific to multiplayer at this point, I'd expect solo plays to also do this. But it's probably not as visible because you can't get far up on a leaderboard on an actual solo failure?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority:0 Showstopper. Critical to the next release. type:online
Projects
Development

No branches or pull requests

6 participants