ScopedVR Map Editor (Standalone-PC-App, Godot-Fundament) — M2, Platzhalter
Find a file
2026-10-15 11:34:32 +02:00
library M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
scenes M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
src M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
tests M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
.gitignore M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
icon.svg M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
icon.svg.import M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
project.godot M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00
README.md M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00

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.