74 lines
4.4 KiB
Markdown
74 lines
4.4 KiB
Markdown
# ScopedVR Map Editor
|
||
|
||
Standalone-PC-App zum Bauen von ScopedVR-Maps. Technisches Fundament: Godot 4.x
|
||
(MIT-Lizenz, lizenzfrei, keine Fremd-Abhängigkeit). Creator sehen/brauchen
|
||
Godot NIE — die App ist das Produkt (PLAN.md, Entscheidung 14).
|
||
|
||
## ⭐ Chef-Grundsatz (Sly, 15.10.): MAXIMALE NUTZERFREUNDLICHKEIT
|
||
> „Der soll auf jeden Fall so nutzerfreundlich sein, wie es nur geht, damit
|
||
> echt richtig easy ist Maps zu bauen und es auch Spaß macht!"
|
||
|
||
Konkret heißt das für JEDE Editor-Karte:
|
||
- Deutsch, große Buttons, Klartext-Beschriftungen — kein Fachchinesisch.
|
||
- Klick statt Konsole: gewünschte Aktion per Maus erreichbar (ziehen, drehen,
|
||
klicken), ohne Tastenkürzel auswendig zu lernen (Kürzel dürfen optional sein).
|
||
- Sofortiges visuelles Feedback (Objekt leuchtet beim Anfassen, Vorschau
|
||
vor dem Platzieren, Undo mit STRG+Z).
|
||
- Die App hilft: ungültige Aktionen erklären WARUM („Spawn-Zone fehlt noch
|
||
für Team Rot — klicke auf den Boden, um sie zu setzen").
|
||
- Test-Benchmark: Sly baut ohne Anleitung in < 10 Minuten eine kleine Map.
|
||
|
||
## Philosophie (Entscheidung 20 — GESCHLOSSENER Baukasten)
|
||
- Objekte kommen ausschließlich aus der Spiel-Asset-Bibliothek (geprüfte Poly-Budgets).
|
||
- KEINE freien Mesh-Imports. Konsistenz + Performance statt unbegrenzter Freiheit.
|
||
- Performance-Prüfung ist eingebaut (Objekt-Count-/Poly-Limits), nicht optional.
|
||
|
||
## MVP-Werkzeuge (Reihenfolge = Karten-Kette)
|
||
1. **Terrain** — Höhenfeld bearbeiten (heben/senken/glätten), Sniper-Distanzen 100–800 m (Entscheidung 7).
|
||
2. **Objekt-Platzierung** — Bibliothek-Browser, platzieren/drehen/verschieben.
|
||
3. **Spawn-Zonen** — pro Team (TDM), Validierung gegen Regeln.
|
||
4. **Map-Metadaten** — Name, Autor, Version, Wetter-Preset (mittag/abend/regen/nacht, siehe Weather-System 9ebe8ef/a296986).
|
||
5. **Performance-Check** — Objekt-Count/Poly-Budget gegen die FPS-Baseline.
|
||
6. **Export** — `.svmap`-Paket (Format: docs/map_format.md im scopedvr-match-server Repo, Karte t_74976e9f).
|
||
|
||
## Architektur (MVP)
|
||
- Godot 4.x Desktop-App (die Editor-UI IST Godot-Control-UI — pragmatisches MVP).
|
||
- Map-Datenmodell = 1:1 das svmap-Format (kein internes Zwischenformat → kein Konverter).
|
||
- Speichern/Laden direkt auf .svmap; Export = Kopie + Validierung.
|
||
|
||
## Milestone-Zuordnung
|
||
M2 (siehe PLAN.md §6): Map-Paket-Format → Editor-MVP → erste offizielle Map
|
||
(offenes Gelände) → Map-Repo/Release-Workflow über Forgejo (M3).
|
||
|
||
## Status (M2, Karte t_5badf371 — App-Skelett FERTIG)
|
||
|
||
- **Godot-4.x-Desktop-App:** startet als eigenständiges Fenster (Hauptfenster mit
|
||
Menüleiste „Datei“, 3D-Viewport mit Orbit-Kamera, Objekt-Baum links,
|
||
Map-Eigenschaften rechts, Statusleiste unten). Kein Spiel-Code-Import.
|
||
- **Map-Datenmodell:** 1:1 das svmap-Format v1 (`docs/map_format.md` im
|
||
scopedvr-match-server-Repo) — Terrain-Parameter (Heightmap R16/LE/Base64),
|
||
Objekt-Liste, Spawn-Zonen (Team 0/1), Metadaten + Wetter-Preset.
|
||
Implementierung: `src/svmap/svmap_io.gd` (Validierung V1–V14 wie der
|
||
Server-Loader, identische Kanonisierung/Prüfsumme — interop-getestet in
|
||
beide Richtungen), `src/svmap/map_document.gd` (Neue-Map-Defaults).
|
||
- **Laden/Speichern:** `.svmap` über Datei-Dialog; speichern validiert VOR dem
|
||
Schreiben und signiert (sha256 über kanonisierte Payload). Speichern →
|
||
Laden → Speichern ist byte-identisch. Ungültige Maps werden mit klaren,
|
||
deutschsprachigen Meldungen abgelehnt.
|
||
- **Viewport-Grundgerüst:** Orbit/Zoom/Pan per Maus (kein Tastenkürzel nötig),
|
||
Maßstabsgitter + Boden-Referenz in Terrain-Größe, Platzhalter-Meshes für
|
||
Bibliotheks-Objekte, Spawn-Marker teamfarbig mit Beschriftung,
|
||
Wetter-Preset färbt Licht/Himmel.
|
||
- **Neue-Map-Dialog:** Name, Größe (512/1024/2048 m), Wetter-Preset. Neue Maps
|
||
sind sofort speicherbar (4 Default-Spawn-Punkte pro Team, V11 erfüllt).
|
||
- **Tests:** `tests/test_editor_svmap.gd` (31 Checks: Roundtrip byte-identisch,
|
||
V2–V13-Negativfälle, Poly-Budget, Server-Kompatibilität der Prüfsumme).
|
||
Lauf: `godot --headless --path . --script res://tests/test_editor_svmap.gd`
|
||
|
||
**Bibliothek:** `library/objects.json` ist die Editor-Kopie der offiziellen
|
||
Registry aus dem Match-Server-Repo — neue Objekte DORT registrieren und hier
|
||
synchron ziehen (IDs sind der Vertrag, Entscheidung 20).
|
||
|
||
**Noch offen (folgende Karten der MVP-Kette):** Terrain-Werkzeuge
|
||
(heben/senken/glätten), Objekt-Platzierung (Bibliothek-Browser),
|
||
Spawn-Zonen-Editor, Performance-Check-UI, Export-Workflow.
|