# 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\ ``` 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. ## 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.