Initial Brogether prototype
This commit is contained in:
81
docs/setup.md
Normal file
81
docs/setup.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Brogether Setup
|
||||
|
||||
Stand: 2026-05-22
|
||||
|
||||
## 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.
|
||||
|
||||
## Debug-Hotkeys im Spiel
|
||||
|
||||
- `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.
|
||||
Reference in New Issue
Block a user