roydejong / beatsaberserverbrowser Goto Github PK
View Code? Open in Web Editor NEWBeat Saber modification that adds a Server Browser to the Online menu, making it easy to share and join custom multiplayer games.
License: MIT License
Beat Saber modification that adds a Server Browser to the Online menu, making it easy to share and join custom multiplayer games.
License: MIT License
As mentioned in (#56 (comment)), IPv6 endpoints are not being communicated correctly.
This is a JSON serialization issue which splits on :
char.
Beat Saber 1.16.3 changed how multiplayer works fundamentally. Since then, we've also seen minor releases (1.16.3, 1.17.0 and 1.17.1).
This issue is here to track any outstanding issues to fully support the latest version of the game.
Sometimes when I join a match in a modded lobby it puts me into spectator mode and sometimes it says "I don't own the song"
Sometimes the host migration doesn't trigger, particularly if you join at an awkward moment; happened to me on scene transition between gameplay and lobby.
Low priority, rare issue.
Since installing multiplayer extensions 0.4.1, when I open server browser, it now says "multiplayer extensions not detected, hiding blablabla". I'm not really sure what's wrong, it doesn't show any errors in the log file, and I see MultiplayerExtension logs also that seem to indicate it's loading. Any ideas?
There are some mods in development currently that will make it possible to use unofficial Master Servers for Beat Saber multiplayer -- essentially private servers that enable things like cross-play and custom matchmaking.
Server Browser uses "Server Codes" to connect games, which won't work if the match was created on a different master server. Therefore, we need to be aware which master server was used by the host and:
Also, for the good news, we can disable platform filtering for master servers that support cross-play (presumably all unofficial servers).
When multiple master servers are out there, as well as the official servers, the risk is fragmenting the player base. I think Server Browser can help bridge the gap by allow you to discover and connect matches across different master servers.
Zingabopp has set up a central repository for future master servers (empty at the time of writing):
https://github.com/Zingabopp/BeatSaberMultiplayerServerRepo/blob/master/MasterServers.json
Some early things to research in preparation:
Host migrations are not properly supported right now.
If the party leader leaves a multiplayer lobby, and you become the new party leader, the UI does not acknowledge this. You are unable to announce the lobby, even if it previously was announced, or you try to flip the switch.
I took the latest dlls of both and getting this error? Any ideas?
Right now the mod is blissfully ignorant when it comes to the cross-play situation.
We need to log whether the user is a Steam or Oculus user, and only show matches relevant to them in the browser.
There's no reason to display modded lobbies to users who can't play in them, so let's hide them by default.
To add onto this when this does occurr the in game hud will be on the ceiling of the in song scene
Currently games fall off the server browser if there hasn't been any activity for over 10 minutes. This is to prevent games getting stuck on there when the game was improperly closed.
(Activity meaning any actual state changes like game start/stop, player connect/disconnect, etc.)
This is fine for the most part, but in cases where you're waiting in a lobby for a while or playing a really long song it could cause your server to disappear even though you're still active.
It would be good to periodically force an update to keep the game visible.
Beat Saber x Interscope update (v1.16.0) released today, and mods are not compatible.
This issue is to track any outstanding issues & changes that need to be made.
Hey man, good work on this plugin!!
I'm a Quest 2 user and just found that Beat together mod is available for everyone, but Quest users cannot browse the lobbies on the beat saber app itself. The code is easy to read and the JSON API could be useful for a CLI program to push the server code to the quest via ADB (still looking at how, and if beat saber app allows for custom launch intents or clipboard pasting). Is it OK if I use the https://bssb.app/api
API for my own scripts? Thanks!
Now that mods are live for 1.17 / 1.18, there seem to be some stability issues.
It's tricky to figure out in which mod or part the problem lies (ServerBrowser, MpEx/MqEx, BeatTogether?), but I just wanted to track things that I've noticed so far:
Beat Saber 1.19.0 released today, adding the Lady Gaga DLC, as well as various internal changes including to multiplayer.
The impact on this mod shouldn't be too big; but we need core mods to be updated first, and should carefully review the game code changes to multiplayer.
It would be nice to have some extra filter options:
I think it would be good to add these as toggle buttons in the keyboard modal, similar to how BeatSaverDownloader does this for filtering autogenerated songs.
This is low priority and becomes especially useful if the mod sees a lot of use, so we'll see how important this becomes down the line.
It seems to be unclear to users how master servers work or what master server they have selected.
When players click "Create server" in the Server Browser UI, they always expect it to go to BeatTogether, and get confused if it ends up creating a match on official servers.
This should be improved in the UI somewhat.
Possible solution:
I want to add a view controller to the left side of the Server Browser flow coordinator that lets you use social features, so you can easily join players' lobbies.
This would involve:
Interesting discussion on the BSMG Discord:
ECrusher:
Plus you have to stay in the room if you make it, so probably a lot of people don't want to wait for players.
But I just made a room that sounded inviting and chilled till people showed up
That's one thing about this mod that I'm not sure could be fixed. I think you can play songs while you wait, but there's no way to tell if people joined so you can quit and start playing with them.
Would be cool to get like an alert or something if someone leaves/joins a room
I think this is a solid idea worth looking into, as it would help a lot with the lobby experience (waiting for players).
Need to determine whether it's possible (UI wise), and if so, should be implemented with a toggle setting somewhere.
If you don't have BeatTogether or MultiplayerExtensions, the hint text ("creating game on X server, custom songs are/aren't available") doesn't show when you first activate the create server view.
What is says basically. I just get that whenever I try to join somebody in the browser.
There's an upcoming build of Beat Saber (v1.16.3) that fundamentally changes how multiplayer works, the mod needs to be updated to work. The impact for us is relatively low, but preparation is needed.
Beat Saber has released an update to all platforms today, including some changes to multiplayer (visual at least).
Testing and debugging needed to make sure everything is good.
ServerBrowser was rejected from BeatMods for now. This is for the latest release (v0.1.1).
Server Browser was denied on BeatMods- theres absolutely nothing stopping people from joining a custom lobby if they dont have the song or mpex, which soft locks the game if they do try
it makes it really easy for someone to just see something in the server browser, click a map expecting to join, and then the game just crashing
if approved there will be a lot of "i cant join half of the server browser games and my game crashes!" in pc-help
This is a totally valid point.
Issue #7 addressed this to an extent (prevent unmodded players from seeing modded lobbies), but this hasn't been shipped as a release yet.
BeatMods approval will take a while, and with cross-play mods on the horizon I think v0.2.0 should be the next version I try to submit as it will be relatively future-proof.
After joining a Quick Play game, and I think in particular if your quick play join failed, the game name gets set and locked automatically.
I think this behavior should just be removed from the mod; let the server deal with setting names automatically.
The server browser is functionally ready to release, and I'm satisfied things are stable for how multiplayer works since 1.16.3.
I'm waiting for BeatTogether and MultiplayerExtensions to be out of testing and publicly released first.
I'm on the 2020 Valve Index with Beat Saber and all required mods (mapping extensions, core mods, etc.) reinstalled today. I tried joining numerous steam modded servers and found that except for my Valve floor bounds, the screen was entirely black. Menu options seemed to exist since waving the controller around caused it to vibrate over invisible buttons. The system button on the controller works and causes the Valve menu to visibly pop up. Any ideas for a potential fix? Btw, I'm left-handed, if that helps. Also, making my own server worked, though no one joined. Computer: Dell Alienware M17 RTX 2070 Super 8GB)
The plugin should be updated to support runtime enabling/disabling, so it properly supports ModList when it releases.
basic updates are done.
official server architecture has changed quite a bit and will need to be looked at.
more testing and research needed
The game received an update to v1.13.4 today, which includes some multiplayer changes.
Need to check what changes, if any, need to be made to the mod.
WIP
The Server Browser UI should add an option to filter by server type, so that players choose what they want to see. In particular, this will be helpful to filter out official games or Quick Play games as they may not always be relevant.
This will require work on both the API and Mod side.
Ideally, this would be a number of checkmarks that can be added/removed freely to create your own filter set. Your selection would be stored in the mod's preferences.
The actual options depend on how MultiplayerExtensions and BeatTogether end up working in the future, but there will be several distinct server types:
If you, at any point, turn the share button off from the in-lobby modifiers panel, afterwards the Create Server dialog gets desynced. It will turn off the toggle when you open the menu (unless you do it from within the browser).
Beat Saber 1.18.0 was released.
It doesn't contain any multiplayer changes, and the mod seems to work fine at its core.
BSML broke due to a change in the level selection UI. Need to wait for BSML updates / general mod availability & update manifest.
When you create a modded server for multi on beat together and have server browser enabled when you create it the server code isn't shown in the multiplayer menu to share out.
If you create the server and don't share the server on server browser the code will show up... you then have to enable server browser within the multiplayer menu to get it to work
Beat Saber 1.13 released today, and contains some changes that interfere with mods.
Need to test, review, and make changes as neccessary.
Ideally I want to release v0.2.0 ASAP as it contains some other important updates as well.
This is due to how the UI is handled before going into a lobby; the game expects at least one view controller to be stacked on top of the mode selection. If that's not the case, the UI breaks.
[CRITICAL @ 20:30:47 | UnityEngine] ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
[CRITICAL @ 20:30:47 | UnityEngine] Parameter name: index
[CRITICAL @ 20:30:47 | UnityEngine] System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
[CRITICAL @ 20:30:47 | UnityEngine] System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <eae584ce26bc40229c1b1aa476bfa589>:0)
[CRITICAL @ 20:30:47 | UnityEngine] HMUI.FlowCoordinator.PresentFlowCoordinator (HMUI.FlowCoordinator flowCoordinator, System.Action finishedCallback, HMUI.ViewController+AnimationDirection animationDirection, System.Boolean immediately, System.Boolean replaceTopViewController) (at <4ed6ccd55f634459bd4b39b724b413c6>:0)
[CRITICAL @ 20:30:47 | UnityEngine] MultiplayerModeSelectionFlowCoordinator.<ResolveAndPresentNextFlowCoordinator>b__50_0 () (at <1307c473efb64193ac77f69250cf4916>:0)
[CRITICAL @ 20:30:47 | UnityEngine] FadeInOutController+<Fade>d__15.MoveNext () (at <09a448c281024307b38abd59cf7acfa0>:0)
[CRITICAL @ 20:30:47 | UnityEngine] UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <451019b49f1347529b43a32c5de769af>:0)
It could be interesting exploring more social features for multiplayer.
Some notes and thoughts I've had, partially based on some discussions I've seen on the topic:
When a server goes offline or people leave, you may never see those players again. There's no way to add them as friends in the lobby, and there's no way to see players you've recently encountered.
It could be interesting adding a friend system but that actually presents some technical challenges, not in the least because I'm not sure if multiplayer data even gives us their Steam ID etc right now. If not, that makes this way more complicated (we'd need to extend multiplayer or use the mod's API server) and less useful (only mod users would be able to connect to each other).
If we can integrate friends, it would be cool to see their status ingame, with an option to join their game if possible.
The "Server Browser" gameplay settings tab shows up in offline play, even though it doesn't work there.
BSML has functions for adding and removing gameplay tabs, but I haven't been able to conditionally hide the tab outside of multiplayer without causing issues.
This might be a current limitation of BSML, but it might be worth digging a bit deeper and trying to find a solution.
Note that MultiplayerExtensions has the same issue right now.
It's possible to add official Quick Play servers to the Server Browser.
I have a working prototype and am working on this under on the quickplay branch.
SongPackMask.All
during the matchmaking process which may break things(?)A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.