Files
Brogether/Brain.md
2026-05-23 10:37:01 +02:00

9.6 KiB

Brogether Brain

Stand: 2026-05-23

Diese Datei ist das Projektgedaechtnis fuer Brogether. Sie fasst zusammen, was bisher recherchiert, gebaut, getestet und entschieden wurde.

Projektidentitaet

  • Projektname: Brogether
  • Ziel: Eine Steam-Workshop-Mod fuer Brotato, die echten Online-Multiplayer fuer zuerst 2 Spieler vorbereitet.
  • Langfristige Idee: 2-4 Freunde sollen Brotato online spielen koennen, ohne Steam Remote Play.
  • Aktueller Status: Prototyp, noch keine fertige spielbare Online-Multiplayer-Mod.
  • Git-Remote: https://git.mischlabs.de/MrDiderot/Brogether.git
  • Aktueller Hauptbranch: master

Lokale Umgebung

  • Workspace: C:\Users\tommi\Documents\PotatoConnect
  • Brotato Steam Pfad: C:\Program Files (x86)\Steam\steamapps\common\Brotato
  • Brotato Version aus recovered scripts: 1.1.15.3
  • Godot Mod Loader Version: 6.3.0
  • Brotato bringt GodotWorkshopUtility.exe mit.
  • Lokale Tools liegen absichtlich untracked unter .tools/.
  • Recovered Brotato-Scripts liegen absichtlich untracked unter recovered/.
  • Lokale Build-ZIPs liegen absichtlich untracked unter dist/.
  • Der aktuelle teilbare Mod-ZIP wird zusaetzlich unter releases/ committed.

Relevante Projektstruktur

src/mods-unpacked/Brogether-Brogether/
  manifest.json
  mod_main.gd
  extensions/main_ext.gd
  extensions/main_menu_ext.gd

scripts/
  package.ps1
  install-local.ps1

docs/
  setup.md
  brotato-multiplayer-modding-research.md
  workshop-upload.md

releases/
  Brogether-Brogether-0.1.0.zip

Packaging Und Lokale Installation

  • scripts/package.ps1 baut dist\Brogether-Brogether-0.1.0.zip.
  • Danach kopiert scripts/package.ps1 denselben ZIP nach releases\Brogether-Brogether-0.1.0.zip.
  • dist/ bleibt ignoriert; releases/ wird committed, damit Tester den neuesten ZIP direkt aus dem Repo laden koennen.
  • Das Skript nutzt .NET ZipArchive, weil PowerShell Compress-Archive Backslash-Pfade erzeugt hatte, die Godot/Brotato nicht sauber akzeptierte.
  • ZIP-Struktur im Archiv:
mods-unpacked/Brogether-Brogether/manifest.json
mods-unpacked/Brogether-Brogether/mod_main.gd
mods-unpacked/Brogether-Brogether/extensions/main_ext.gd
mods-unpacked/Brogether-Brogether/extensions/main_menu_ext.gd
  • scripts/install-local.ps1 baut den ZIP und kopiert ihn in einen vorhandenen abonnierten Brotato-Workshop-Ordner.
  • Der lokale Testordner war bisher:
C:\Program Files (x86)\Steam\steamapps\workshop\content\1942280\3681043754
  • Grund fuer diese Testmethode: Die Steam-Version von Brotato scannt Workshop-Ordner abonnierter Items; ein eigener Brogether-Workshop-Eintrag ersetzt diesen Workaround spaeter.

Workshop Upload

  • Einfachster Upload-Weg: Brotatos GodotWorkshopUtility.exe.
  • Pfad:
C:\Program Files (x86)\Steam\steamapps\common\Brotato\GodotWorkshopUtility.exe
  • Fuer Erstupload:
    • Steam muss laufen und online sein.
    • ZIP mit .\scripts\package.ps1 bauen.
    • Im Uploader den ZIP aus dist\ auswaehlen.
    • Optional Preview-Icon verwenden, empfohlen 512x512 PNG unter 1 MB.
    • Workshop Item ID leer lassen.
    • Nach Upload Workshop Legal Agreement akzeptieren, falls Steam danach fragt.
    • Item ist initial private bzw. muss in Steam sichtbar geschaltet werden.
  • Fuer Updates:
    • Bestehende Workshop-ID im Uploader eintragen.
    • Nach Upload Titel/Beschreibung pruefen, da der Uploader Titel ueberschreiben kann.
  • Details stehen in docs/workshop-upload.md.

Manifest

Aktuelle Mod-Metadaten:

  • Name: Brogether
  • Namespace: Brogether
  • Version: 0.1.0
  • Beschreibung: Experimental 2-player online multiplayer foundation for Brotato using Steam lobbies and P2P packets.
  • Website: https://git.mischlabs.de/MrDiderot/Brogether
  • Kompatible Mod Loader Version: 6.3.0
  • Kompatible Brotato Version: 1.1.15.3
  • Tags: Utilities, New Mechanics

Aktuelle In-Game Features

  • Mod wird von Brotatos Godot Mod Loader geladen.
  • main_ext.gd erweitert res://main.gd.
  • main_menu_ext.gd erweitert res://ui/menus/pages/main_menu.gd.
  • Im Hauptmenue wird ein BROGETHER-Button hinzugefuegt.
  • F5 oeffnet/schliesst das Brogether-Modal.
  • Das Modal ist standardmaessig versteckt.
  • Das Modal pausiert wie Brotatos F8-Feedback-Fenster und stellt Fokus nach dem Schliessen wieder her.
  • Escape, F5 und Close schliessen das Modal.

Lobby UI

  • Lobby-Browser mit Refresh.
  • Lobby-Erstellung mit optionalem Passwort.
  • Lobby-Auswahl und Join.
  • Wartebereich nach Host/Join.
  • Spielerkacheln zeigen Steam-Namen und statische Initialen-Avatare.
  • Ready-Status pro Spieler.
  • Fake-Peer-Modus fuer Tests ohne zweiten Client:
    • Add Fake fuegt lokalen Test-Peer hinzu.
    • Fake Ready toggelt dessen Ready-State.
    • Ready toggelt den lokalen Spieler.
  • Der fruehere sichtbare Brogether-Startbutton wurde entfernt, weil er nur ein Testereignis geloggt hatte und dadurch missverstaendlich war.
  • Bis echte Run-Synchronisation existiert, startet man Brotato ueber den normalen Spielablauf.

Hotkeys

F5  Brogether-Modal ein-/ausblenden
F6  Steam-Lobby erstellen
F7  Lobby suchen / joinen
F9  Lobby verlassen
F10 Ping senden
F11 Lokalen Loopback-Test starten

Hinweis: Fruehere Ctrl/Shift/C-Kombinationen wurden vermieden, weil sie Brotatos lokale Coop-UI/Overlay stoeren konnten.

Steam Und P2P

  • Steam wird ueber den vorhandenen Steam-Singleton des Spiels angesprochen.
  • Bei Start wird getSteamID gelesen.
  • Verbundene Steam-Signale:
    • lobby_created
    • lobby_joined
    • lobby_match_list
    • lobby_chat_update
    • p2p_session_request
    • p2p_session_connect_fail
  • P2P Relay wird aktiviert, falls verfuegbar.
  • Pakettypen:
    • handshake
    • handshake_ack
    • ping
    • pong
    • ready_state
    • run_started
    • players_spawned
    • host_snapshot
    • client_snapshot

Run Hooks Und Snapshot-Prototyp

  • main_ext.gd meldet:
    • Run-Szene bereit
    • Spieler gespawnt
    • periodische Snapshot-Ticks alle ca. 250 ms
    • Run-Szene verlassen
  • Snapshots enthalten aktuell:
    • Spielerindex
    • Position
    • Leben
    • Max-Leben
    • Dead-State
  • Eingehende Remote-Snapshots koennen experimentell auf einen zweiten lokalen Player angewendet werden, falls ein lokaler 2-Spieler-Coop-Run existiert.
  • Die lokale Coop-Vorbereitung ist bewusst nicht an einen Hotkey gebunden, weil sie Brotatos lokale Coop-UI stoeren kann.

Logs

Brogether-eigenes Log:

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

Brotato/Godot Logs:

C:\Users\tommi\AppData\Roaming\Brotato\logs\godot.log
C:\Users\tommi\AppData\Roaming\Brotato\logs\modloader.log

Wichtige beobachtete Log-Zeilen:

  • Brogether-Brogether-0.1.0.zip loaded
  • Installing script extension: res://main.gd <- ...main_ext.gd
  • Installing script extension: res://ui/menus/pages/main_menu.gd <- ...main_menu_ext.gd
  • Steam ready as ...
  • created lobby ...
  • joined lobby ... as host
  • fake peer joined the lobby
  • ready state from ...: Ready
  • local ready state: Ready

Bisherige Tests

  • Mod wird erkannt und geladen.
  • Mod-Beschreibung erscheint.
  • Hauptmenue-Button BROGETHER erscheint.
  • Modal oeffnet/schliesst.
  • Lobby-Erstellung funktioniert.
  • Host wird als Lobby-Mitglied erkannt.
  • Leave funktioniert.
  • Refresh funktioniert und findet erwartbar 0 Lobbys, wenn keine zweite Brogether-Lobby offen ist.
  • Fake-Peer-Test funktioniert.
  • Ready/Fake Ready funktioniert.
  • Loopback-Test fuer Handshake/Ping/Pong funktionierte frueher.
  • Zweiter echter Steam-Client wurde noch nicht getestet.

Bekannte Probleme Und Risiken

  • Beim Spielende erscheinen weiterhin Godot-Exit-Warnungen:
    • ObjectDB instances leaked at exit
    • Resources still in use at exit
    • MemoryPool allocs in use
  • Diese Warnungen blockieren aktuell nicht das Laden oder die UI, sollten aber spaeter isoliert untersucht werden.
  • Passwortschutz ist aktuell nur Mod-seitige Zugangskontrolle, keine echte Security.
  • Steam-Profilbilder sind noch nicht angebunden; aktuell gibt es Initialen-Avatare.
  • Echter Gameplay-Sync fehlt noch.
  • Run-, Shop-, Gegner-, Wave-, Item- und RNG-Sync fehlen noch.
  • Zwei-Client-Handshake/Ping/Pong muss mit echtem zweiten Steam-Client verifiziert werden.

Naechster Zwei-Client-Test

  1. Beide Clients brauchen exakt dieselbe Brogether-Version.
  2. Beide abonnieren spaeter denselben Workshop-Eintrag oder nutzen denselben ZIP.
  3. Beide starten Brotato ueber Steam.
  4. Beide aktivieren Brogether im Mod-Menue, falls noetig.
  5. Host oeffnet BROGETHER.
  6. Host erstellt Lobby.
  7. Client oeffnet BROGETHER, drueckt Refresh, waehlt Lobby, joint.
  8. Beide setzen Ready.
  9. Ping testen.
  10. Normalen Brotato-Run starten und Logs fuer Run-Hooks/Snapshots vergleichen.

Naechste Sinnvolle Entwicklungsschritte

  1. Workshop-Eintrag privat/unlisted erstellen.
  2. Zweiten Client ueber Workshop installieren lassen.
  3. Echten Lobby-Join testen.
  4. Ready-State ueber echten P2P testen.
  5. Steam-Profilbild-Funktionen im Brotato-GodotSteam-Build pruefen.
  6. Exit-Warnungen isolieren.
  7. Run-Start-Synchronisation planen.
  8. Danach erst Remote-Spielersteuerung, Gegner/Wave/Shop/RNG.

Git-Verlauf Wichtige Commits

  • 536cbff Initial Brogether prototype
  • de73f4a Add Brogether debug panel
  • 7451be0 Add Brogether menu modal
  • d36fa97 Build first lobby browser UI
  • a706cae Clean up Brogether UI on shutdown
  • 01cb2e8 Add lobby ready fake peer test mode
  • 4becfc0 Remove premature lobby start button

Quellen Fuer Workshop/Modloader