Goobwabber / MultiplayerCore

A Beat Saber mod that implements core custom multiplayer functionality.
MIT License
66 stars 36 forks source link

[BUG] MultiplayerCore breaks Official Quick Play #8

Closed roydejong closed 2 years ago

roydejong commented 2 years ago

MultiplayerCore Version and Download Source MultiplayerCore 1.0.0 Unofficial-dev-86d5c5b Built from source (dev @ 86d5c5b)

Your Platform PC Steam, Beat Saber 1.20.0

Describe the bug When MultiplayerCore is installed, Official Quick Play lobbies will not work. Specifically, when a level starts and the other players transition to the gameplay scene, the local player will be stuck in the lobby instead.

To Reproduce

  1. Join Quick Play lobby
  2. Wait for countdown to finish for level start
  3. You will be stuck in lobby in the red "level is starting" fog

Log/context I'm testing multiplayer mods on 1.20.0 and ran into this, but this is not a recent issue. I've seen this happen on previous dev builds of MultiplayerCore including on older game versions.

Logging around game start:

[INFO @ 00:44:52 | ServerBrowser/BssbMenuDataCollector] Lobby state changed to: GameStarting
[DEBUG @ 00:44:52 | MultiplayerCore/MpLevelLoader] Loading level TurnMeOn
[DEBUG @ 00:44:52 | MultiplayerCore/MpLevelDownloader] Starting download: TurnMeOn
[ERROR @ 00:44:52 | MultiplayerCore/MpLevelDownloader] Could not parse hash from id TurnMeOn
[DEBUG @ 00:44:52 | MultiplayerCore/MpLevelLoader] Loaded level TurnMeOn

The lobby never transitions to the GameRunning lobby state, which implies HandleMultiplayerLevelLoaderCountdownFinished is never invoked.

Goobwabber commented 2 years ago

this could be due to not receiving an entitlement from other players on official i'll look into it soon

Goobwabber commented 2 years ago

this issue appears to be fixed now? not sure what happened

roydejong commented 2 years ago

I think this issue still exists to an extent, but under very particular circumstances:

When a player goes idle, i.e. takes their headset off but doesn't get kicked from the lobby (this happens somewhat regularly on public quick play), they seem to break the entitlement checks and the lobby gets "stuck" for MpCore players as described in this issue, or at least until that offending player leaves.