#Multiplayer Decompilation Remarks
1 messages · Page 1 of 1 (latest)
I’ve purposefully avoided as much information about the update as I can. I’m hoping to either experience the game for myself or dive into the source code first.
The version numbering for the version YouTubers got is rather weird. Looking at this video by FoxPlay (https://youtu.be/rQQY-ttTOTY), it says the current version is 1.2.912. Mike has always used successive versioning for publicly released versions, so it’s really weird that there have been NINE HUNDRED AND TEN VERSIONS that he’s made. I’m assuming that the release on the 31st will be 1.3.0
🍕Join the FoxPlay's Army: https://youtube.com/@FoxPlayYT/join
Timecodes:
00:00 - Main Menu & Lobby
00:24 - 1st Round w/ Friends
08:12 - 2nd Round w/ Friends
19:58 - 3rd Round w/ Friends
30:40 - Ending
Game: https://store.steampowered.com/app/2835570/Buckshot_Roulette
#buckshotroulette #multiplayer #showcase
From what we know so far, there is a multiplayer server in use on Steam’s services. The people at CR aren’t willing to share the executable for it, so unless Mike steps in, I’ll be remaking the server from scratch.
This server will be hosted on buckshotroulette.net along with the original mod server, likely under the same port as the official one (unless it’s 2095, since that’s what the mod server uses).
There are currently 4 depots in Steam for Buckshot: public, beta, testing, and staging. Staging has been updated very recently, so there’s a good chance it’s the one that’ll be used for multiplayer. My guess is that tomorrow, the Discord server will have an announcement with the password for the staging depot and instructions on how to install.
There’s also another reason I created a topic in which I’m probably going to be the only one posting.
The staging depot is being updated by the minute at this point. Mike is working hard!
CR just confirmed that there’ll be a code released to access the beta. This means the changes from the staging depot are probably going to be moved over to the beta depot, which will then be accessible with the code.
Best case scenario is that all scripts for nodes in main.tscn remain untouched. That would do wonders for porting over current mods. I’m hoping a new file like “multiplayer.tscn” will have been made for the new scripts.
Back in May, a decomp of the latest version of Buckshot (1.2.2-3) revealed that Mike had added the following files:
- MP_LobbyController.gd
- MP_LobbyManager.gd
- MP_CursorManager.gd
- MP_PacketManager.gd
- global scripts/
- MP_ActiveUserProperties.gd
- MP_DescriptionManager.gd
- MP_InteractionBranch.gd
- MP_InteractionIntermediary.gd (class name shortened to MP_InteractionIntermed)
- MP_PickupIndicator.gd
- MP_UserInstanceHandler.gd
- user scripts/
- MP_CameraManager.gd
- MP_CameraSocket.gd
- MP_HoverPan.gd
- MP_InteractionManager.gd
- MP_MouseRaycast.gd
- MP_ShotgunInteraction.gd
- MP_UserInstanceProperties.gd
- MP_UserStateManager.gd
- debugging/
- MP_EditorDebug.gd
- MP_MemberChecker.gd
All of these were in a “scripts” folder, which was inside a “multiplayer” folder in the base directory (except the last file, which was just in the normal “scripts” folder). The previous file structure gives me hope that all changes will be relegated to the multiplayer folder.
Here we go.
Got the .exe. Took a little while and had restart Steam. .exe is copied into my archive.
What in the world?? The version number is 1.9.905.3??
The game is still running on Godot 4.1.1.
Turns out the beta was using the "testing" branch.
Thank goodness, there is still in fact a "multiplayer" folder in the base directory.
There are 3,212 changed files in this version, about half of which are generated by Godot.
Two new audio buses have been added.
There's a new instance called "player_info_segment" that has username, user type, profile picture, and a kick button.
Plenty of new models have been added.
And now we get to the HUGE multiplayer section. Fortunately, only the following files from the base game have been changed:
- scenes/
- heaven.tscn
- menu.tscn
- win.tscn
- scripts/
And it looks like those changes are minimal. BEST CASE SCENARIO!!
Wait a second... taking a look at MP_LobbyManager.gd... THIS ISN'T AUTHORITATIVE SERVERS! THIS IS P2P!
HOLY CRAP, THE LOBBY HOST HAS COMPLETE CONTROL OVER THE DATA SENT TO THE PEERS
I honestly don't know what to say. This pretty much kills any possibility of a clean reverse engineering of the official multiplayer servers... because THERE ARE NO SERVERS!
Fortunately, there are no extra autoloads. This means upgrading BRML to this version should be pretty straightforward.
Aaaaand we have an update already. Downloading now to check the version.
Looks like the game was downgraded for some reason. It's now v1.9.903-1
Looks like the differences from 1.2.2-3 are about the same, but there are differences between these two versions that I don't quite understand yet. One weird one is that the downgraded version uses "with hotfix" to denote hotfixes, while the higher version number just separates the hotfix with a period
heaven ig is the start scene
No, it's mp_lobby.tscn. MenuManager.gd has been updated to load that scene when the multiplayer option is pressed on the menu
Looks like I'll be studying the source code for a while. I'll check back in if there's anything interesting.
After looking through the code and giving it some thought, I have an idea. There might be a way to create a dedicated server by sending Steam requests through a Godot multiplayer connection instead. That way, BRML can still be Steam free but integrate seamlessly with multiplayer (as long as everyone has the mod).
I've been able to successfully decompile the game, run it from the GodotSteam editor, and connect to Steam and create a lobby. For some reason, the game is crashing in the normal Godot editor. That's okay - I'll just do my work in GodotSteam and export in normal Godo, which still works.
res://multiplayer/textures/lobby test customization2.png
hopefully this will be in release
oh that’s so cool
I did it!! I've successfully reverse engineered the Steam lobby API!! Now I'll be able to push out a server executable that can be used to host BRML matches!!
Nooooo he removed it 😦
is the new update using a custom version of GodotSteam?
getting errors in LeaderboardManager.gd:
Static function "setLeaderboardDetailsMax()" not found in base "GDScriptNativeClass".
It’s only using GodotSteam 4.1.1. Can you share a screenshot?
I had no trouble compiling it with GodotSteam. Just make sure that function has Steam. before it
4.1.1 or 4.11?
I think 4.1.1 is the godot version
yep you’re right, I forgot they were different. Getting the release page now
I used this and it worked fine