#Multiplayer Decompilation Remarks

1 messages · Page 1 of 1 (latest)

calm quest
#

This is a topic to keep track of my findings during the decompilation process of the new update for Buckshot Roulette. Whenever I find something worthy of note, I’ll post it here.

#

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

▶ Play video
#

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).

calm quest
#

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.

calm quest
#

There’s also another reason I created a topic in which I’m probably going to be the only one posting.

calm quest
#

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.

calm quest
#

Here we go.

calm quest
#

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.

#

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

haughty star
calm quest
#

Looks like I'll be studying the source code for a while. I'll check back in if there's anything interesting.

calm quest
#

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).

calm quest
#

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.

stoic jackal
#

res://multiplayer/textures/lobby test customization2.png
hopefully this will be in release

calm quest
#

oh that’s so cool

calm quest
#

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!!

calm quest
#

Nooooo he removed it 😦

safe thunder
#

is the new update using a custom version of GodotSteam?

#

getting errors in LeaderboardManager.gd:
Static function "setLeaderboardDetailsMax()" not found in base "GDScriptNativeClass".

calm quest
#

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

calm quest
#

oh sorry wait

safe thunder
#

I think 4.1.1 is the godot version

calm quest
#

yep you’re right, I forgot they were different. Getting the release page now

safe thunder
#

oh it requires a custom build of godot too?

#

thought it was just an addon