Files
Brogether/docs/setup.md
2026-05-23 01:03:36 +02:00

87 lines
4.4 KiB
Markdown

# Brogether Setup
Stand: 2026-05-23
## Aktueller Zustand
- Brotato Steam wurde lokal gefunden unter `C:\Program Files (x86)\Steam\steamapps\common\Brotato`.
- Die recovered Scripts melden Brotato `1.1.15.3` und ModLoader `6.3.0`.
- GDRETools wurde nach `.tools/gdretools` geladen.
- Godot Mod Loader v6.3.0 wurde nach `.tools/godot-mod-loader` geladen.
- Brotato- und DLC-Scripts wurden nach `recovered/` recovered.
- Das erste Mod-Skeleton liegt unter `src/mods-unpacked/Brogether-Brogether`.
## Lokalen Test-Build installieren
```powershell
.\scripts\install-local.ps1
```
Das erzeugt `dist/Brogether-Brogether-0.1.0.zip` und kopiert es fuer lokale Tests in einen bereits abonnierten Brotato-Workshop-Ordner:
```text
C:\Program Files (x86)\Steam\steamapps\workshop\content\1942280\<workshop-id>
```
Brotato laedt in der Steam-Version nur Workshop-Ordner, deren ID Steam als abonniert meldet. Darum wird das lokale ZIP fuer den ersten Test neben eine vorhandene abonnierte Workshop-Mod gelegt. Spaeter ersetzen wir das durch einen eigenen privaten/unlisted Brogether-Workshop-Eintrag.
Danach Brotato ueber Steam starten. Die Mod sollte im Mod-Menue auftauchen.
Brogether selbst bleibt danach unsichtbar, bis es geoeffnet wird. Im Hauptmenue fuegt die Mod einen `BROGETHER`-Button hinzu. Alternativ oeffnet `F5` dasselbe Modal. Das Modal verhaelt sich bewusst wie Brotatos F8-Feedback-Fenster: es pausiert, legt sich ueber das Spiel und kann mit `Escape`, `F5` oder `Close` geschlossen werden.
Die UI hat jetzt einen ersten Lobby-Browser. Dort kann man Lobbys suchen, eine Lobby mit optionalem Passwort erstellen und einer ausgewaehlten Lobby beitreten. Nach Host/Join wechselt Brogether in einen Wartebereich mit Steam-Namen und statischen Initialen-Avataren fuer die Lobby-Spieler.
## Debug-Hotkeys im Spiel
- `F5`: Brogether-Modal ein-/ausblenden
- `F6`: oeffentliche Dev-Steam-Lobby erstellen
- `F7`: Brogether-Lobby suchen und beitreten
- `F9`: Lobby verlassen
- `F10`: Ping-Paket an den anderen Spieler senden
- `F11`: lokalen Loopback-Test ohne zweiten Client ausfuehren
Die Ausgabe landet im Godot/Brotato-Log. Das erste Ziel ist, auf zwei Steam-Clients folgende Meldungen zu sehen:
- `Steam ready`
- `created lobby`
- `joined lobby`
- `packet from ... handshake`
- `packet from ... ping`
- `packet from ... pong`
Ohne zweiten Steam-Client kann `F11` die Paketlogik lokal simulieren. Das ersetzt keinen echten Steam-P2P-Test, prueft aber, ob Handshake-, Ping- und Pong-Verarbeitung in Brogether funktionieren.
Zusaetzlich schreibt Brogether ein eigenes Debug-Log nach:
```text
C:\Users\tommi\AppData\Roaming\Brotato\brogether.log
```
## Naechster technischer Schritt
Wenn der P2P-Handshake zwischen zwei Steam-Clients funktioniert, erweitern wir die Mod um:
1. Hook in die Run-Erstellung. Erledigt: `extensions/main_ext.gd` meldet Run-Start.
2. Host/Client-Rollenmodell. Grundlegend vorhanden ueber Steam-Lobby-Owner.
3. Minimalen Player-Snapshot-Sync. Grundlegend vorhanden: Position, Leben, Dead-State alle 250 ms.
4. Erst danach Gegner-, Wave- und Shop-Sync.
## Aktueller Multiplayer-Stand
Brogether hat jetzt eine Script-Extension fuer `res://main.gd`. Beim Start einer Wave/Run schreibt sie:
- `run scene ready`
- `players spawned`
- periodische `host_snapshot`/`client_snapshot` Pakete, wenn eine Lobby mit Peer existiert
- `run scene exiting`
Die Snapshots enthalten derzeit nur das sichere Minimum: Spielerindex, Position, Leben, Max-Leben und Dead-State. Das ist noch kein spielbarer Remote-Player, aber die Transport- und Hook-Struktur ist damit vorbereitet.
Es gibt intern eine experimentelle Funktion zum Vorbereiten lokaler 2-Spieler-Coop-Slots. Sie ist bewusst nicht mehr an einen Hotkey gebunden, weil sie Brotatos lokale Coop-UI aktiviert und im normalen Menue stoeren kann. Wenn ein 2-Spieler-Run existiert, versucht Brogether eingehende Remote-Snapshots auf den zweiten lokalen Player anzuwenden.
## Editor-Hinweis
Fuer den ersten In-Game-Test ist noch kein Godot-Editor noetig: die Mod wird als ZIP gebaut und direkt von Brotato geladen.
Fuer spaetere Hook-Arbeit ist ein GodotSteam-Editor sinnvoll. Die aktuellen GodotSteam-3.x-Releases liefern auf GitHub/Codeberg vor allem Templates; wenn wir den Editor brauchen, sollten wir gezielt eine zu Brotatos recovered Engine-Version passende GodotSteam-Binary verwenden oder selbst bauen. Vanilla-Godot ist fuer das recovered Brotato-Projekt problematisch, weil der `Steam`-Singleton fehlt.