Files
Brogether/README.md
2026-05-23 10:41:34 +02:00

4.9 KiB

Brogether

Brogether is an experimental Brotato mod project that prepares real online multiplayer for 2 players first. Brotato already supports local co-op and Steam Remote Play; Brogether explores native Steam lobby and P2P networking instead.

This is a technical prototype, not a finished multiplayer mod. The current focus is mod loading, Steam lobby flow, debug logging, local packaging, lobby UI, and early hooks into Brotato runs.

What Works Right Now

  • The mod loads through Brotato's Godot Mod Loader.
  • Steam is accessed through the Steam singleton already available in the game.
  • Public development Steam lobbies can be created.
  • Basic handshake, ping, pong, and ready-state packets are implemented.
  • A local loopback test simulates packet flow without a second Steam client.
  • Brotato's run scene is observed through a script extension.
  • Run start, player spawn, and basic player snapshots are logged or prepared for P2P transfer.
  • The Brogether modal is hidden by default and opens from the main menu or with F5.
  • The UI includes a first lobby browser, lobby creation with optional password, and a waiting room with player cards.
  • The waiting room has ready states and a fake peer mode for local testing without a second client.

What Is Not Finished Yet

  • A real second Steam client has not been tested yet.
  • Remote players are not fully playable or synchronized yet.
  • Shop, item, enemy, wave, and RNG synchronization are missing.
  • Applying remote snapshots to a second local player is only experimentally prepared.

Project Structure

src/mods-unpacked/Brogether-Brogether/
  manifest.json               Godot Mod Loader metadata
  mod_main.gd                 Steam lobby, P2P packets, Brogether modal, logging
  extensions/main_ext.gd      Hook into Brotato's run scene
  extensions/main_menu_ext.gd Brogether main menu button

scripts/
  package.ps1                 Builds the mod ZIP
  package-release.bat         Asks for a version name and builds the ZIP
  install-local.ps1           Installs the ZIP for local Brotato tests

releases/
  Brogether-Brogether-0.1.0.zip  Latest committed mod ZIP for testers

docs/
  setup.md                    Setup and test notes
  brotato-multiplayer-modding-research.md
  workshop-upload.md          Step-by-step Steam Workshop upload guide

.tools/, recovered/, and dist/ are intentionally not committed. They contain local tools, recovered Brotato files, and local build output. The current shareable mod ZIP is committed under releases/.

Local Test

Brotato's Steam build only loads Workshop folders that Steam considers subscribed. The install script therefore places the built Brogether ZIP next to an already subscribed Brotato Workshop mod for local testing.

.\scripts\install-local.ps1

For a named release ZIP, run:

scripts\package-release.bat

The batch file asks for a version name and creates matching ZIPs in dist/ and releases/.

Then fully restart Brotato.

Brogether stays hidden until opened. The main menu gets a new BROGETHER button; F5 opens the same modal. The modal pauses the game like Brotato's own F8 feedback window and can be closed with Escape, F5, or the close button.

The modal currently has two main areas:

  • Lobby Browser: shows discovered Brogether lobbies with name, host, player count, and password status.
  • Waiting Room: shows players in the current lobby as cards with Steam name, static initials avatar, and ready state.

Debug Hotkeys

F5  Toggle Brogether modal
F6  Create Steam lobby
F7  Search / join lobby
F9  Leave lobby
F10 Send ping
F11 Run local loopback test

The Brogether modal contains buttons for Host, Join, Leave, and Ping. It is intended for the next two-client tests and replaces most hotkey actions. Password lobbies are currently a mod-side access check: the lobby stays visible, but Brogether checks the entered password before joining.

For testing without a second Steam client, use Add Fake in the waiting room. This adds a local fake peer whose ready state can be toggled with Fake Ready. There is intentionally no Brogether start button yet; until real run synchronization exists, start Brotato through the normal game flow.

Brogether writes its own log to:

C:\Users\tommi\AppData\Roaming\Brotato\brogether.log

Next Useful Test

Once a second Steam client is available:

  1. Start both clients with the exact same Brogether version.
  2. Host opens BROGETHER from the main menu or presses F5.
  3. Host clicks Host or presses F6.
  4. Client clicks Refresh, selects the lobby, then clicks Join.
  5. Test ping/pong with Ping or F10.
  6. Start a Brotato run normally and check whether run_started, players_spawned, and snapshot packets appear in both logs.

If that works reliably, the next development step is real remote player control based on snapshot and input packets.

Steam Workshop Upload

The simple upload guide is here:

docs/workshop-upload.md