GithubHelp home page GithubHelp logo

multiplayercore's Introduction

Hey!

I am a full-stack developer with a variety of experience. Most of my projects are based around mods for Beat Saber, a popular VR rhythm game. I have a passion for networking and backend development.

Overview:


multiplayercore's People

Contributors

erisapps avatar goobwabber avatar kevman95 avatar michael-r-elp avatar rcelyte avatar redbrumbler avatar rithik-b avatar roydejong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multiplayercore's Issues

[BUG] Chroma suggested maps not blocked when quest users don't have chroma installed

MultiplayerCore Version and Download Source
Newest test version on discord

Your Platform
PC mp extensions (i was using quest and so were 2 other people, the lobby manager was a pc player who chose the chroma suggested map)

Describe the bug
MpExtensions is not blocking chroma suggested maps (possibly noodle and ME too) when a quest player does not have those mods. Causes all quest clients without the required mod to instantly crash/freeze on song load. On quest side, maps get blocked properly from playing if a player does not have the mods if they select it.

To Reproduce
Select and play a chroma suggested map on pc when a quest player is in the lobby, they crash
Was found on my test server but i suppose it is also the case on the current test server.

Expected behavior
Should block the map from playing unless everyone has the required mods to play it

[BUG] Beat Saber 1.28.0 stalls after CustomSongColorsPatch

MultiplayerCore Version and Download Source
MultiplayerCore v1.1.2 from GitHub releases (the version built from source crashes with infinite NullReferenceException errors, so I haven't been able to narrow down any issues myself)

Your Platform
Steam on PC, version 1.28.0 (using a self-compiled build of SongCore commit 7a7bb3e)

Describe the bug
When attempting to play a song on official Beat Saber servers with MultiplayerCore installed, the game stalls after the 5 second countdown when starting a song. Uninstalling MultiplayerCore works as intended.

To Reproduce

  1. Launch the game and go on multiplayer
  2. Click on any song
  3. Start the song
  4. See error in the logs, the game will keep you stalled in the purple environment (still able to exit the UI, so not a softlock or a crash)

Expected behavior
The song should be playing normally.

Log

[CRITICAL @ 21:56:06 | UnityEngine] NullReferenceException: Object reference not set to an instance of an object
[CRITICAL @ 21:56:06 | UnityEngine] MultiplayerCore.Patches.CustomSongColorsPatch.Prefix (IDifficultyBeatmap& difficultyBeatmap, ColorScheme& overrideColorScheme) (at <2af17fc095ca4d6aa38c7d9ef553c66c>:0)
[CRITICAL @ 21:56:06 | UnityEngine] (wrapper dynamic-method) MultiplayerLevelScenesTransitionSetupDataSO.DMD<MultiplayerLevelScenesTransitionSetupDataSO::Init>(MultiplayerLevelScenesTransitionSetupDataSO,string,IPreviewBeatmapLevel,BeatmapDifficulty,BeatmapCharacteristicSO,IDifficultyBeatmap,ColorScheme,GameplayModifiers,PlayerSpecificSettings,PracticeSettings,bool)
[CRITICAL @ 21:56:06 | UnityEngine] MenuTransitionsHelper.StartMultiplayerLevel (System.String gameMode, IPreviewBeatmapLevel previewBeatmapLevel, BeatmapDifficulty beatmapDifficulty, BeatmapCharacteristicSO beatmapCharacteristic, IDifficultyBeatmap difficultyBeatmap, ColorScheme overrideColorScheme, GameplayModifiers gameplayModifiers, PlayerSpecificSettings playerSpecificSettings, PracticeSettings practiceSettings, System.String backButtonText, System.Boolean useTestNoteCutSoundEffects, System.Action beforeSceneSwitchCallback, System.Action`1[T] afterSceneSwitchCallback, System.Action`2[T1,T2] levelFinishedCallback, System.Action`1[T] didDisconnectCallback) (at <c539348cd3264f5491de978be0c3642c>:0)
[CRITICAL @ 21:56:06 | UnityEngine] MenuTransitionsHelper.StartMultiplayerLevel (System.String gameMode, IPreviewBeatmapLevel previewBeatmapLevel, BeatmapDifficulty beatmapDifficulty, BeatmapCharacteristicSO beatmapCharacteristic, IDifficultyBeatmap difficultyBeatmap, ColorScheme overrideColorScheme, GameplayModifiers gameplayModifiers, PlayerSpecificSettings playerSpecificSettings, PracticeSettings practiceSettings, System.String backButtonText, System.Boolean useTestNoteCutSoundEffects, System.Action beforeSceneSwitchCallback, System.Action`2[T1,T2] levelFinishedCallback, System.Action`1[T] didDisconnectCallback) (at <c539348cd3264f5491de978be0c3642c>:0)
[CRITICAL @ 21:56:06 | UnityEngine] (wrapper dynamic-method) LobbyGameStateController.DMD<LobbyGameStateController::StartMultiplayerLevel>(LobbyGameStateController,ILevelGameplaySetupData,IDifficultyBeatmap,System.Action)
[CRITICAL @ 21:56:06 | UnityEngine] LobbyGameStateController.HandleMultiplayerLevelLoaderCountdownFinished (ILevelGameplaySetupData gameplaySetupData, IDifficultyBeatmap difficultyBeatmap) (at <c539348cd3264f5491de978be0c3642c>:0)
[CRITICAL @ 21:56:06 | UnityEngine] (wrapper dynamic-method) MultiplayerLevelLoader.DMD<MultiplayerLevelLoader::Tick>(MultiplayerLevelLoader)
[CRITICAL @ 21:56:06 | UnityEngine] MultiplayerCore.Objects.MpLevelLoader.Tick () (at <2af17fc095ca4d6aa38c7d9ef553c66c>:0)
[CRITICAL @ 21:56:06 | UnityEngine] Zenject.TickablesTaskUpdater.UpdateItem (Zenject.ITickable task) (at <ed5758d978ce4539b312e960e20e9230>:0)
[CRITICAL @ 21:56:06 | UnityEngine] Zenject.TaskUpdater`1[TTask].UpdateRange (System.Int32 minPriority, System.Int32 maxPriority) (at <ed5758d978ce4539b312e960e20e9230>:0)
[CRITICAL @ 21:56:06 | UnityEngine] Zenject.TaskUpdater`1[TTask].UpdateAll () (at <ed5758d978ce4539b312e960e20e9230>:0)
[CRITICAL @ 21:56:06 | UnityEngine] Zenject.TickableManager.Update () (at <ed5758d978ce4539b312e960e20e9230>:0)
[CRITICAL @ 21:56:06 | UnityEngine] Zenject.MonoKernel.Update () (at <ed5758d978ce4539b312e960e20e9230>:0)

Additional context
I haven't been able to properly test this extensively with more than just a single player in the lobby. Patching out the CustomSongColorsPatch manually in dnSpy was able to resolve the issue as well.

[BUG] Gameplay track lights turn off with > 5 players

MultiplayerCore Version and Download Source
MultiplayerCore 1.1.0 build from Github

Your Platform
PC/Steam

Describe the bug
When you have more than the default of 5 players in a lobby, some players will not have track lights during gameplay. They'll turn on and look normal during the countdown, but then turn off when the level begins.

Most notably, the local player's lights can also turn off.

To Reproduce

  1. Play on a 3rd party server like BeatTogether with > 5 slots
  2. Start gameplay with > 5 active players
  3. Wait for countdown to complete

Expected behavior
Gameplay track lights don't turn off for anyone.

Log
The game does throw a (possibly unrelated) exception when this happens, although this happens before the lights actually turn off:

[INFO @ 23:54:59 | ServerBrowser/BssbDataCollector] Multiplayer song started (sessionGameId=519546b0-0c2e-497d-9908-dc8bde767c8f, localPlayerSyncState=InSync)
[WARNING @ 23:55:00 | UnityEngine] Didn't find distance for 10 number of players, using default
[INFO @ 23:55:00 | MultiplayerMirror/HologramMirror] Multiplayer layout was determined (MultiplayerPlayerLayout=Circle)
[CRITICAL @ 23:55:01 | UnityEngine] IndexOutOfRangeException: Index was outside the bounds of the array.
[CRITICAL @ 23:55:01 | UnityEngine] MultiplayerLocalActiveCenterRingLightsController.Resize () (at <72bbc78157f343f28eb32d37b9e6fc26>:0)
[CRITICAL @ 23:55:01 | UnityEngine] MultiplayerLocalActiveCenterRingLightsController.TryResize () (at <72bbc78157f343f28eb32d37b9e6fc26>:0)
[CRITICAL @ 23:55:01 | UnityEngine] MultiplayerLocalActiveCenterRingLightsController.HandleSpawnCenterDistanceWasFound (System.Single spawnCenterDistance) (at <72bbc78157f343f28eb32d37b9e6fc26>:0)
[CRITICAL @ 23:55:01 | UnityEngine] MultiplayerLocalActiveCenterRingLightsController.Start () (at <72bbc78157f343f28eb32d37b9e6fc26>:0)

Screenshots/Video
Gameplay scene with 10 active players (bots). Lights are on during countdown (Ready/Set/Go):
20220718000156_1

When the level begins properly and notes start spawning the lights turn off on some of the tracks, including the local player's:
20220717235614_1

Additional context

  • Tested without MultiplayerExtensions installed.
  • Observed on both BeatTogether live + BeatDedi dev.

Being in menu during map start soft locks UI[BUG]

MultiplayerCore Version and Download Source

Multiple, happens on patreon 1.1.2, but has happened as far back as game version 1.16

Your Platform

PC/Steam, -vrmode oculus, cv1

Describe the bug

If any kind of menu is open that replaces the default multi menus, BetterSongSearch, the new MultiplayerExtensions, BSPlus stuff, when the game switches from lobby to map, you will be stuck in that menu and no buttons will work when you return to lobby

To Reproduce

  1. Open multi
  2. Open BetterSongSearch
  3. Wait for host to start map
  4. Wait until you return to lobby
  5. Try to press any button, they won't work

Expected behavior
Either menu automatically closes on map start or you can still use it on map end

Log
_latest.log

[BUG] MultiplayerCore breaks Official Quick Play

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.

[BUG] Beat saber crashes on map loading

MultiplayerCore Version and Download Source
1.0.0 Github

Your Platform
PC, Valve Index

Describe the bug
I dont know if its this mod or Beattogether.

When i play a Map in Multiplayer that i dont have installed alreedy the game locks up and i have to restart the game. The weird thing is that the map downloads in the custommultiplayerlevels folderand works when i restarted the game.
when i already have the map installed it works.
these are the only mods i have installed right now
grafik

To Reproduce

  1. Go in a Lobby in online mode with a friend
  2. let him choose a map you dont have installed
  3. click ready
  4. enjoy a freezed game

Expected behavior
the map downloads and i can play

Log
log file is attached. 2022.06.10.13.19.53.log
In the session where the log file is from i first played a map i alredy had end then one that i dont had installed.

Screenshots/Video

Additional context
i have made a clean install of beat saber and even windows (not because of the multiplayer bug) and deleted the hyperbolic magnetism folder in appdata but that didnt help.

[TODO] Mod entitlement system

Allow mods to check if other players have specified mods
NOTE: could be a security issue theoretically? but probably fine.

new update causing game not to launch with MultiplayerCore installed[BUG]

latest version just downloaded it from github today

Pc, Steam I'm using steam link through the oculus to launch the game but regardless even launching through steam on my computer it won't launch

if you go through the normal steps of trying to play and have MultiplayerCore in your plugins folder with whatever other mods you have along with beat together Beatsaber gets stuck on the launch screen and doesn't proceed any further.

To Reproduce

  1. have the mods in your plugins folder
  2. try to launch through steam
  3. game gets stuck on launch screen

Expected behavior
I expected the game to launch so i could play it with my friends with custom songs

Log

_latest.log

[TODO] Capabilities / Server info

Add an api serverside that servers can use to tell clients what they are capable of doing (for features that do go beyond the BeatGames server standard. Add an api to the mod for other mods to get this info. Also go ahead and include a description and images in there as well :D

The start to crazy stuff happening in multiplayer

No downloadable releases available

I am trying to set up BeatTogether for a Beat Saber 1.18.3 install.
The README says "Download the MultiplayerCore file listed under Assets Here.", and "Here" links to the Releases page, which is currently empty.

Potential Release Date?

Do you have a potential idea as to when this will be made available. If you are unsure it is ok I've just been really wanting to play the multiplayer on the recent update.

Request 1.18

I understand that you are working on the 1.19 update and I thank you for that.
But to hold us over do you have the release for 1.18 or can I just compile the current build for 1.18?

[BUG] Can't play in 1.27.0 anymore.

MultiplayerCore Version and Download Source
1.1.2

Your Platform
PC, Beat Saber 1.27.0 (downgraded on purpose)

Describe the bug
When trying to play in multiplayer, a message that says to upgrade to 1.2.0 displays.
If I upgrade to 1.2.0, a message to upgrade beat saber to 1.28.0 appears.

Additional context
Used to work just fine about a few weeks ago. This bug happens to both me and a friend.

[BUG] Uncaught exception in MpEntitlementChecker when requesting old versions of BeatSaver maps

MultiplayerCore Version
1.0.0

Your Platform
PC

Describe the bug
MpEntitlementChecker runs Enumerable.First() on the response received from BeatSaver, which throws instead of being handled gracefully if the requested hash isn't found. Such is the case with levels that have been revised after upload.

To Reproduce

  1. Request attached beatmap
  2. Observe other clients who don't have the song failing to respond to the entitlement check

Log

InvalidOperationException: Sequence contains no matching element
System.Linq.Enumerable.First[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] predicate) (at <351e49e2a5bf4fd6beabb458ce2255f3>:0)
MultiplayerCore.Objects.MpEntitlementChecker+<>c__DisplayClass13_0.<GetEntitlementStatus>b__0 (System.Threading.Tasks.Task`1[TResult] r) (at <ca5fd0a0d2364fa38cb3ebaefaa816a1>:0)
System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[TAntecedentResult,TResult].InnerInvoke () (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Threading.Tasks.Task.Execute () (at <eae584ce26bc40229c1b1aa476bfa589>:0)
...

[TODO] Context refactor

Mod got a little bit bigger than I was expecting and now it's a lot more logical to group everything by context rather than by their type. Working on the mod is frustrating for me now because of this. Still probably gonna be backlogged anyways

Unable to see custom songs

whenever I go in a multiplayer lobby with my friends I cannot choose and or play custom songs
if any contributors see this pleas comment on how to fix thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.