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

Add support for "freestyle" in multiplayer #31260

Open
wants to merge 27 commits into
base: master
Choose a base branch
from

Conversation

smoogipoo
Copy link
Contributor

@smoogipoo smoogipoo commented Dec 24, 2024

Old Server New Server
Old Client 🟢 🔴
New Client 🔴 🟢

Preamble

I was told to effectively hack this in, and was not given an opportunity to refactor multiplayer to properly support it or even to be able to write tests without pulling my hair out. So here goes.

Have I done some basic testing to see things work? Yes.
Will things break? Definitely.
Do I know what will break? Nope.

Description

2024-12-24.19-46-05.mp4

I've named this "freestyle", because I see a future where this is more than just beatmap/ruleset but also mods and thus include "freemods" in it. Perhaps something like a menu where you can choose what is free.

For the time being, when it's enabled, it will disable mods/freemods. I'm not sure what the intended UX is, but it will definitely be a lot more complicated due to mod types not matching between rulesets, i.e. this will fail a ton of validation everywhere. So I'm keeping it simple.

There's no display in the room for what/how other users have chosen to play, I'm not even sure where I'd add that in because the room design is a whole bunch of mess. There's already no display of other users' freemods either, so /shrug?

@peppy
Copy link
Member

peppy commented Dec 24, 2024

There's already no display of other users' freemods either, so /shrug?

2024-12-24 21 08 35@2x

It's shown here. I think adding the ruleset icon in the same flow area at minimum would be good to have.

@peppy
Copy link
Member

peppy commented Dec 24, 2024

@ppy/team-design able to provide some basic design direction for how ruleset and difficulty selection could be shown per-user here?

@smoogipoo
Copy link
Contributor Author

Had to pretty much rewrite the entire screen and add server-side support to do the above ¯\(ツ)/¯. Added it as a ruleset icon displayed on the panel:

2024-12-25.23-36-05.mp4

@smoogipoo smoogipoo added the notable feature Attach to pull requests which should be highlighted on the changelog. Things users want to read. label Jan 16, 2025
@peppy peppy self-requested a review January 17, 2025 03:52
peppy added 3 commits January 21, 2025 17:49
…have valid online IDs

This is local to playlists, since in multiplayer the validation is
already provided by `osu-server-spectator`.
@peppy
Copy link
Member

peppy commented Jan 21, 2025

I've done an initial pass and fixed a few things up. Overall, the code is bearable (there are changes I'd propose for code quality reasons, but it's isolated and at this point it wouldn't be achieving too much – as you know the whole multiplayer screens / drawable structuring isn't great).

Remaining requirements to push this live in my eyes are:

  • Showing freestyle status on lobby listings (filtering to rooms with it enabled?)
    • We might want to contact a designer with spare time (icon designer chan maybe) to get something for this
    • Bonus: also showing freemod when it's enabled
  • Forcing freemod to enabled when freestyle is on, and adding ability to choose base mods
    • In IRL discussion, the proposal is to do this in a follow-up PR to reduce complexity. I'm okay with that as we have a couple of weeks before the next release cycle.

I'll do a second pass tomorrow with the goal of getting this merged, unless there are any blockers.

Copy link
Member

@peppy peppy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As above

@peppy peppy self-requested a review January 21, 2025 10:57
@smoogipoo
Copy link
Contributor Author

Showing freestyle status on lobby listings (filtering to rooms with it enabled?)

I believe this will need additional osu-web support because we only receive the current playlist item in the lounge, not the full playlist. Unless that's what you mean - for the badge to be shown only when the current item is freestyle?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:multiplayer area:playlists notable feature Attach to pull requests which should be highlighted on the changelog. Things users want to read. size/XXL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ability to use any difficulty in multiplayer
2 participants