9.6 KiB
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.exemit. - 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.ps1bautdist\Brogether-Brogether-0.1.0.zip.- Danach kopiert
scripts/package.ps1denselben ZIP nachreleases\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 PowerShellCompress-ArchiveBackslash-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.ps1baut 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.ps1bauen. - Im Uploader den ZIP aus
dist\auswaehlen. - Optional Preview-Icon verwenden, empfohlen
512x512 PNGunter1 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.gderweitertres://main.gd.main_menu_ext.gderweitertres://ui/menus/pages/main_menu.gd.- Im Hauptmenue wird ein
BROGETHER-Button hinzugefuegt. F5oeffnet/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,F5und 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 Fakefuegt lokalen Test-Peer hinzu.Fake Readytoggelt dessen Ready-State.Readytoggelt 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
getSteamIDgelesen. - Verbundene Steam-Signale:
lobby_createdlobby_joinedlobby_match_listlobby_chat_updatep2p_session_requestp2p_session_connect_fail
- P2P Relay wird aktiviert, falls verfuegbar.
- Pakettypen:
handshakehandshake_ackpingpongready_staterun_startedplayers_spawnedhost_snapshotclient_snapshot
Run Hooks Und Snapshot-Prototyp
main_ext.gdmeldet:- 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 loadedInstalling script extension: res://main.gd <- ...main_ext.gdInstalling script extension: res://ui/menus/pages/main_menu.gd <- ...main_menu_ext.gdSteam ready as ...created lobby ...joined lobby ... as hostfake peer joined the lobbyready state from ...: Readylocal ready state: Ready
Bisherige Tests
- Mod wird erkannt und geladen.
- Mod-Beschreibung erscheint.
- Hauptmenue-Button
BROGETHERerscheint. - 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 exitResources still in use at exitMemoryPool 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
- Beide Clients brauchen exakt dieselbe Brogether-Version.
- Beide abonnieren spaeter denselben Workshop-Eintrag oder nutzen denselben ZIP.
- Beide starten Brotato ueber Steam.
- Beide aktivieren Brogether im Mod-Menue, falls noetig.
- Host oeffnet
BROGETHER. - Host erstellt Lobby.
- Client oeffnet
BROGETHER, druecktRefresh, waehlt Lobby, joint. - Beide setzen
Ready. - Ping testen.
- Normalen Brotato-Run starten und Logs fuer Run-Hooks/Snapshots vergleichen.
Naechste Sinnvolle Entwicklungsschritte
- Workshop-Eintrag privat/unlisted erstellen.
- Zweiten Client ueber Workshop installieren lassen.
- Echten Lobby-Join testen.
- Ready-State ueber echten P2P testen.
- Steam-Profilbild-Funktionen im Brotato-GodotSteam-Build pruefen.
- Exit-Warnungen isolieren.
- Run-Start-Synchronisation planen.
- Danach erst Remote-Spielersteuerung, Gegner/Wave/Shop/RNG.
Git-Verlauf Wichtige Commits
536cbffInitial Brogether prototypede73f4aAdd Brogether debug panel7451be0Add Brogether menu modald36fa97Build first lobby browser UIa706caeClean up Brogether UI on shutdown01cb2e8Add lobby ready fake peer test mode4becfc0Remove premature lobby start button
Quellen Fuer Workshop/Modloader
- Godot Mod Loader Wiki: https://wiki.godotmodding.com/guides/modding/distributing_mods/
- Godot Mod Loader Workshop Uploader: https://wiki.godotmodding.com/guides/modding/tools/workshop_uploader/
- Steamworks Workshop Implementation Guide: https://partner.steamgames.com/doc/features/workshop/implementation