Files
Brogether/README.md
2026-05-23 10:43:17 +02:00

118 lines
5.0 KiB
Markdown

# 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
```text
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.
```powershell
.\scripts\install-local.ps1
```
For a named release ZIP, run:
```text
scripts\package-release.bat
```
The batch file asks for a version name and creates matching ZIPs in `dist/` and `releases/`. It contains the project path, so you can also copy it to your Desktop and run it from there.
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
```text
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:
```text
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:
```text
docs/workshop-upload.md
```