Files
Brogether/docs/setup.md
2026-05-23 10:22:23 +02:00

89 lines
4.3 KiB
Markdown

# Brogether Setup
Status: 2026-05-23
## Current State
- Brotato Steam was found locally at `C:\Program Files (x86)\Steam\steamapps\common\Brotato`.
- Recovered scripts report Brotato `1.1.15.3` and ModLoader `6.3.0`.
- GDRETools was downloaded to `.tools/gdretools`.
- Godot Mod Loader v6.3.0 was downloaded to `.tools/godot-mod-loader`.
- Brotato and DLC scripts were recovered to `recovered/`.
- The mod source lives in `src/mods-unpacked/Brogether-Brogether`.
## Install A Local Test Build
```powershell
.\scripts\install-local.ps1
```
This creates `dist/Brogether-Brogether-0.1.0.zip` and copies it into an already subscribed Brotato Workshop folder for local testing:
```text
C:\Program Files (x86)\Steam\steamapps\workshop\content\1942280\<workshop-id>
```
Brotato's Steam build only loads Workshop folders that Steam considers subscribed. That is why the local ZIP is placed next to an existing subscribed Workshop mod for the first tests. Later, this should be replaced by Brogether's own private or unlisted Workshop item.
Start Brotato through Steam afterwards. The mod should appear in the mod menu.
Brogether stays hidden until opened. The mod adds a `BROGETHER` button to the main menu. Alternatively, `F5` opens the same modal. The modal intentionally behaves like Brotato's F8 feedback window: it pauses the game, overlays the screen, and can be closed with `Escape`, `F5`, or `Close`.
The UI currently has a first lobby browser. You can search for lobbies, create a lobby with an optional password, and join a selected lobby. After hosting or joining, Brogether switches to a waiting room with Steam names and static initials avatars for lobby players.
Without a second client, press `Add Fake` in the waiting room. This adds a local test peer. Use `Ready` and `Fake Ready` to test both ready states. A dedicated Brogether start button will only come back once real run synchronization is implemented; until then, use Brotato's normal start flow.
## Debug Hotkeys
- `F5`: toggle Brogether modal
- `F6`: create public development Steam lobby
- `F7`: search and join Brogether lobby
- `F9`: leave lobby
- `F10`: send ping packet to the other player
- `F11`: run local loopback test without a second client
Output goes to the Godot/Brotato log. The first two-client goal is to see these messages:
- `Steam ready`
- `created lobby`
- `joined lobby`
- `packet from ... handshake`
- `packet from ... ping`
- `packet from ... pong`
Without a second Steam client, `F11` simulates packet flow locally. It does not replace a real Steam P2P test, but it checks whether handshake, ping, and pong handling work inside Brogether.
Brogether also writes its own debug log:
```text
C:\Users\tommi\AppData\Roaming\Brotato\brogether.log
```
## Next Technical Step
Once the P2P handshake works between two Steam clients, extend the mod with:
1. Hook into run creation. Done: `extensions/main_ext.gd` reports run start.
2. Host/client role model. Basic version exists through Steam lobby owner.
3. Minimal player snapshot sync. Basic version exists: position, health, dead state every 250 ms.
4. Enemy, wave, and shop sync after that.
## Current Multiplayer State
Brogether has a script extension for `res://main.gd`. At the start of a wave/run, it logs:
- `run scene ready`
- `players spawned`
- periodic `host_snapshot` / `client_snapshot` packets if a lobby with a peer exists
- `run scene exiting`
Snapshots currently contain only the safe minimum: player index, position, health, max health, and dead state. This is not a playable remote player yet, but the transport and hook structure is prepared.
There is an internal experimental function to prepare local 2-player co-op slots. It is intentionally not bound to a hotkey anymore because it activates Brotato's local co-op UI and can disturb normal menus. If a 2-player run exists, Brogether tries to apply incoming remote snapshots to the second local player.
## Editor Note
No Godot editor is required for the first in-game test: the mod is built as a ZIP and loaded directly by Brotato.
For later hook work, a GodotSteam editor can be useful. Current GodotSteam 3.x releases mostly provide templates; if an editor is needed, use or build a GodotSteam binary that matches Brotato's recovered engine version. Vanilla Godot is problematic for the recovered Brotato project because the `Steam` singleton is missing.