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

Multiplayer song selection does not save state and is slow with a lot of maps loaded #21952

Open
IceDynamix opened this issue Dec 30, 2022 · 2 comments

Comments

@IceDynamix
Copy link

Type

Game behaviour

Bug description

Issue:

  • I have about 16000 mapsets / 62000 maps loaded into lazer and loading the song select in multiplayer takes multiple seconds on every load
  • Search filters or selected collections are not saved across multiple selections

Expect:

  • Song select to load instantly like when starting the game and playing singleplayer
  • Search filters and selected collection to be kept when selecting another map in multiplayer

Reproduce slow load:

  1. Load a large number of maps
  2. Open a multiplayer room
  3. Select a map and wait for the maps to load

Reproduce unsaved search/collection:

  1. Open a multiplayer room
  2. Select a map with a search filter or a selected collection
  3. Select another map, observe cleared search filter or

Extra:
I think both issues can be solved in the same fix, hence putting both into a single issue.

Screenshots or videos

Slow load

osu._2022-12-30_18-08-35.mp4

Search filter or selected collection not saved across map selections

osu._2022-12-30_18-09-06_.mp4

Version

2022.1228.0-lazer

Logs

database.log
input.log
legacy-ipc.log
network.log
performance.log
performance-audio.log
performance-draw.log
performance-input.log
performance-update.log

@bdach
Copy link
Collaborator

bdach commented Dec 30, 2022

This is happening because in single-player a single song select instance is preloaded at main menu, while online gameplay flows push new screen instances every time.

I guess a similar preload solution could be applied to multiplayer, although I'm not sure if it's going to be smooth sailing.

@peppy
Copy link
Member

peppy commented Dec 30, 2022

@bdach for some context on how i originally saw this working: screens like song select would only be instantiated once by the game, ie. we would have the ability to "suspend on exit" and then resume from this state.

If that's not feasible or seen as a good direction, then it will make sense to create a higher level component that manages the realm subscriptions so we don't have to re-query / reconstruct each time song select is loaded.

bdach added a commit to bdach/osu that referenced this issue Aug 21, 2024
Off the back of some very old feedback:
https://www.reddit.com/r/osugame/comments/1dga6m5/comment/l8ot8qy/

Maybe resolves some of ppy#21952, too
(definitely not all of it, state is still lost even with this).

Mirrors the setup `MainMenu` does. It's not really possible to just keep
one instance around since `ScreenStack` protests when trying to push an
already-loaded screen.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants