- BauKatalog: 12 Teile (Fundament, Boden, Wände mit Tür/Fenster/Scharte, Brüstung, Pfeiler, Giebel, Dächer, Treppe) auf Basis der CC0-Geometrie des Modular Builder 0.2.0, Wandhöhe 3 m - BuildSnap: Wände auf Zellkanten, Böden in Zellmitte, Höhe aus Ebenen statt Klickhöhe, Ersetzen (Tür in Wand) - Gebäude kopieren/auswählen/löschen im Bauen-Tab, Kopien bekommen eigene Gruppe - Kollision serverkonsistent über Trimesh-Dateien (Türen/Fenster echte Löcher), tools/gen_bauteile.gd erzeugt GLB, Kollision, Registry-Fragment - Alte gebaeude-Sektion wird beim Laden migriert, altes Bauen-Werkzeug entfernt, Resize behält Gruppennamen - Tests: test_bauen (258 Checks), Playtest läuft Treppe/Tür Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
211 lines
14 KiB
Markdown
211 lines
14 KiB
Markdown
# Tastatur & Maus — Map-Editor
|
||
|
||
Deutsche Tastenbelegung des ScopedVR Map-Editors. **Diese Datei ist die Source
|
||
of truth** für alle Shortcut-Karten — FINALE Version nach allen drei Karten:
|
||
Karte 1/3 (t_c46d31c2): Navigation, Auswahl, Löschen · Karte 2/3 (t_55257792):
|
||
Objektmanipulation + Terrain · Karte 3/3 (t_11b5c25b): Datei & Undo,
|
||
Werkzeugwechsel, Hilfe, Test. Das Kurzhilfe-Overlay im Editor (Taste **H**)
|
||
zeigt dieselbe Tabelle (Quelle: `src/ui/help_text.gd`).
|
||
|
||
Konventionen (alle Karten):
|
||
|
||
- Tastaturcode-basiert: InputMap-Actions mit physischen `KEY_*`-Konstanten
|
||
(`src/editor/shortcut_keys.gd`). Die physische Taste liegt unabhängig vom
|
||
Tastaturlayout gleich — deutsches (QWERTZ) und Windows-Layout verhalten sich
|
||
identisch, keine OS-Hardcodes (PLAN.md Plattform-Regel).
|
||
- Jede Objekt-Operation = **EIN** ActionHistory-Eintrag (Strg+Z nimmt die
|
||
ganze Operation zurück). Ausnahme: reine Kamera-Aktionen (Orbit/Flug/Zoom)
|
||
betreffen die Map nicht und sind nicht in der Historie.
|
||
- **Strg halten = temporärer Snap-Zwang** (Karte 2/3): egal was der
|
||
Raster-Snap-Schalter sagt — solange Strg unten ist, rastet Bewegen
|
||
(Ziehen/Greifen) und Platzieren auf ganze Meter.
|
||
|
||
## Navigation (Kamera)
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| Mittlere Maustaste ziehen | Orbit: Um die Karte drehen |
|
||
| Mittlere Maustaste + Umschalt ziehen | Pan: Karte verschieben |
|
||
| Mausrad | Zoom (aus, wenn Mausrad gerade ein Objekt dreht) |
|
||
| **Rechte Maustaste GEDACHT halten** | **Freelook-Flug:** Umsehen + W vor / S zurück / A links / D rechts; **Leertaste hoch / Umschalt runter** (Shooter-Konvention wie Half-Life/Counter-Strike — Sly-Wunsch 17.10.). **Funktioniert in JEDEM Werkzeug** (Terrain, Bauen, Spawn-Zonen, Platzieren) — die rechte Maustaste hat ABSOLUTEN Vorrang, kein Werkzeug belegt sie (Karte t_2470de89) |
|
||
| Strg halten (im Flug) | schneller fliegen (×3) — temporär, Godot-üblich |
|
||
| Alt halten (im Flug) | langsamer fliegen (×0,3) |
|
||
| Mausrad (im Flug) | Grundgeschwindigkeit dauerhaft ändern (2–300 m/s) |
|
||
| **Umschalt+F** | Freelook-Flug dauerhaft an/aus (Flug bleibt ohne gedrückte rechte Maustaste aktiv) |
|
||
| **F** | Auswahl ins Bild zentrieren (Focus Selection) |
|
||
|
||
Der Orbit-Modus ist der Default: Beim Verlassen des Flugs springt die Kamera
|
||
nicht — Ziel/Winkel/Abstand werden aus der Flugposition zurückgerechnet.
|
||
|
||
## Auswahl
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| Linksklick | Objekt auswählen (ersetzt die Auswahl) |
|
||
| **Strg+Klick** (Viewport **und** Objektbaum) | Objekt zur Auswahl hinzufügen/entfernen (Mehrfachauswahl) |
|
||
| Umschalt+Klick | wie Strg+Klick (Mehrfachauswahl umschalten) |
|
||
| Ziehen über leeren Boden | Rahmen-Aufziehen: alle Objekte im Rahmen wählen |
|
||
| Umschalt + Rahmen | Rahmen-Auswahl zur bestehenden Auswahl hinzufügen |
|
||
| Esc | Werkzeug abbrechen → **Greifen zurückrollen** → Ghost-Preview abbrechen → Auswahl aufheben (Prioritätskette) |
|
||
|
||
Alle Bestandsaktionen wirken auf die GANZE Mehrfachauswahl: Entf löscht alle,
|
||
Strg+D dupliziert alle, Ziehen verschiebt gemeinsam, Anheben/Absenken hebt
|
||
alle, Strg+G gruppieren / Strg+Umschalt+G lösen.
|
||
|
||
## Objekt-Manipulation (Karte 2/3)
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| **R** | Auswahl 90° drehen (Vierteldrehung; Umschalt+R = −90°). Objekte (auch Bauteile) drehen um den Auswahl-Mittelpunkt. Ein Objekt aus einer Gruppe dreht die GANZE Gruppe. Dauerhaft (kein Vorschau-Zustand) |
|
||
| **Strg+R / Strg+Umschalt+R** | Auswahl um X **kippen** (+15° / −15°) — auch im Platzier-Modus (Ghost kippt mit). Karte t_e166e656 |
|
||
| **Alt+R / Alt+Umschalt+R** | Auswahl um Z **kippen** (+15° / −15°) — auch im Platzier-Modus. Karte t_e166e656 |
|
||
| Mausrad (mit Auswahl) | Feindrehen im 15°-Raster (bleibt wie bisher) |
|
||
| **Pfeiltasten** | Auswahl im **2-m-Raster** verschieben — EINE Zelle pro Tastendruck, Richtung = Kamera-Ausrichtung nächste Weltachse (Godot-Editor-Konvention: ↑ = von der Kamera weg). Fußpunkt bleibt am Raster, Höhe wandert mit |
|
||
| **Bild↑ / Bild↓** | Auswahl +0,25 m / −0,25 m anheben/absenken (Mehrfachdruck = EIN Undo-Schritt). Absenken UNTER die Terrain-Höhe ist erlaubt (Versenken — z. B. Steine im Boden); Untergrenze ist die Match-Grenze |
|
||
| **Strg+Bild↑** | Auswahl direkt auf das Terrain/Boden absetzen (Godot „Snap Object to Floor“-Äquivalent fürs Fußpunkt-Modell) |
|
||
| **G** | Auswahl **greifen** (Blender-Semantik): sie hängt an der Maus, Linksklick setzt die neue Position (mit Raster-Snap bzw. Strg-Zwang), **Esc** bricht ab und setzt die exakten alten Positionen zurück. Greifen der ganzen Gruppe/mehreren Objekte wandert gemeinsam |
|
||
| **Entf (DELETE)** | Auswahl SOFORT löschen, ohne Rückfrage — Strg+Z holt alles zurück. Wirkt auf Szene-Auswahl UND Objektbaum-Markierung |
|
||
| **Strg+D** | Auswahl duplizieren: Kopie +2 m in X versetzt (Rasterversatz), Füßpunkt unverändert; bei Mehrfachauswahl ALLE Objekte mit EINEM Undo-Schritt |
|
||
| Strg+G / Strg+Umschalt+G | Auswahl gruppieren / Gruppe lösen |
|
||
|
||
## Datei & Undo (Karte 3/3)
|
||
|
||
Vor „Neue Map“ und „Öffnen“ fragt der Editor NACH, wenn die Map noch
|
||
ungespeicherte Änderungen hat (deutscher Dialog „Verwerfen / Abbrechen“) —
|
||
nichts geht versehentlich verloren.
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| **Strg+Z** | Rückgängig (EIN Eintrag pro Operation) |
|
||
| **Strg+Y** UND **Strg+Umschalt+Z** | Wiederherstellen (Redo) — beide Wege sind belegt |
|
||
| **Strg+S** | Map speichern (.svmap, bekannter Pfad; noch nie gespeichert → „Speichern unter“) |
|
||
| **Strg+Umschalt+S** | Map speichern unter … |
|
||
| **Strg+O** | Map öffnen |
|
||
| **Strg+N** | Neue Map |
|
||
|
||
## Updates (Datei-Menü)
|
||
|
||
Der Editor aktualisiert sich selbst aus seinem Git-Klon (Karte t_d95f087a) —
|
||
kein Programmdownload, nur „Versionsstände holen“:
|
||
|
||
| Weg | Wirkung |
|
||
| --- | --- |
|
||
| **Beim Start** | Still prüfen. Gibt es eine neuere Version, erscheint eine Bernstei-Leiste unter der Menüleiste: **„🔄 Update verfügbar: `<alt>` → `<neu>`“** |
|
||
| **Banner → „🔄 Jetzt updaten“** | Installiert das Update: neue Version laden (git pull), Import-Lauf, dann startet der Editor von selbst neu. Ungespeicherte Änderungen werden vorher abgefragt (derselbe Dialog wie bei „Neue Map“/„Öffnen“ — **Abbrechen** bricht das Update ab) |
|
||
| **Datei → „🔄 Updates prüfen“** | Gleicher Check auf Wunsch, mit Ergebnis-Meldung in der Statuszeile: „Update verfügbar“ / „Du bist auf dem neusten Stand (`<sha>`)“ / „Nicht erreichbar“ |
|
||
|
||
- **Offline / Tunnel weg:** kein Banner, keine Meldung — der Editor bleibt
|
||
einfach so, wie er ist. Prüfen kann man trotzdem: die Meldung sagt es dann
|
||
in der Statuszeile.
|
||
- **Zugangsdaten fehlen** (Karte t_1457e935): die Update-Prüfung läuft
|
||
bewusst NIE interaktiv — es öffnet sich **niemals** ein Login-Fenster im
|
||
Editor. Stattdessen kommt in der Statuszeile „Updates nicht prüfbar —
|
||
Zugangsdaten fehlen“. Die Zugangsdaten liegen im Git-Credential-Store
|
||
(`~/.git-credentials`, Host `127.0.0.1:13020`); wenn sie fehlen, füllt sie
|
||
ein Eintrag der Form `http://<user>:<token>@127.0.0.1:13020` nach.
|
||
- **Fehlgeschlagener Import:** bricht das Update mit Klartext-Meldung ab —
|
||
der Editor läuft UNVERÄNDERT weiter (kein Neustart in einen kaputten Stand,
|
||
Lektion 17.10. class_name-Cache).
|
||
- **Neustart:** Der Editor startet sich selbst neu (dasselbe Godot-Programm,
|
||
derselbe Projektordner, wieder im Editor-Modus). Wer den Editor als
|
||
systemd-User-Unit betreibt, setzt in `scopedvr_editor.cfg` (Godot-App-Daten)
|
||
Abschnitt `[update]` einen `restart_command` — z. B.
|
||
`restart_command="systemd-run --user --on-active=3s systemctl --user restart map-editor"`.
|
||
Ohne Eintrag wird unter Linux automatisch erkannt, ob die Unit
|
||
`map-editor.service` existiert; sonst Selbst-Restart.
|
||
- **Konfiguration** (alle optional, `user://scopedvr_editor.cfg`, Abschnitt
|
||
`[update]`): `restart_command` (eigener Neustart-Befehl), `git_command`
|
||
(eigener git-Pfad). Der Import-Lauf nutzt dieselbe Godot-Binary wie der
|
||
Editor selbst (bzw. `[test] godot_path`).
|
||
|
||
## Kartengröße ändern (Datei-Menü)
|
||
|
||
„Kartengröße ändern…“ (Datei-Menü) öffnet einen Dialog mit Live-Vorschau:
|
||
|
||
- **Aktuelle Größe** steht oben, darunter die **neue Breite (X) und Tiefe (Z)
|
||
in Metern** — Freifelder plus Preset-Buttons 256 / 512 / 1024 / 2048 m (beide
|
||
Achsen gleichzeitig). Erlaubt sind **256–4096 m** (Werte außerhalb werden
|
||
beim Anwenden an die Grenzen geklemmt).
|
||
- **Anker Mitte:** Die Karte bleibt am Ursprung zentriert. Das bestehende
|
||
Terrain behält seine WELTPOSITION (bilinear neu abgetastet — kein Stretch),
|
||
die neue Randzone wird flach auf Grundhöhe + Gras. Beim Vergrößern steigt
|
||
die Terrain-Auflösung automatisch mit (bis zum Format-Deckel 513 Punkte).
|
||
- **Verkleinern — Vorschau:** Der Dialog listet VORHER, was draußen liegen
|
||
würde („Beim Verkleinern liegen draußen: 5 Objekte, 2 Bauteile, 1
|
||
Spawn-Punkt“). Per Schalter entscheidest du, ob diese beim Anwenden
|
||
**entfernt** werden (Standard: ja — Strg+Z holt sie zurück) oder über den
|
||
Rand hinaus in der Map bleiben — dann ist die Map **nicht speicherbar**
|
||
(Regel: nichts außerhalb der Match-Grenzen), bis du die Einträge verschiebst
|
||
oder löschst. Warnung, falls ein Team dadurch unter
|
||
**4 Spawn-Punkte** fällt (Maps brauchen mindestens 4 pro Team zum Speichern).
|
||
- **Vergrößern über ~1024 m — Warnband:** Ab dieser Größe wird das Terrain
|
||
grober aufgelöst (mehr Meter pro Höhenpunkt) — der Dialog weist auf die
|
||
geringere Detail-Dichte und das Quest-Perf-Budget (Objektzahl/Draw-Calls) hin.
|
||
- **Wann erlaubt?** Jederzeit — es muss nur eine Map existieren.
|
||
- **Undo:** Der Resize ist **EINE** Undo-Einheit: Terrain, Objekte, Bauteile
|
||
und Spawn-Zonen zusammen. **Strg+Z stellt den kompletten Vorher-Zustand
|
||
her** (inkl. gelöschter Objekte), Strg+Y stellt den Resize wieder her.
|
||
Nach dem Resize sind ungespeicherte Änderungen vorhanden (Speichern mit
|
||
Strg+S signiert die Prüfsumme neu).
|
||
|
||
## Terrain-Werkzeug (Karte 2/3) — nur aktiv, wenn das Terrain-Werkzeug an ist
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| **[** | Pinselgröße verkleinern — durch die 3 Presets Klein (4 m) / Mittel (12 m) / Groß (32 m) zyklisch; Preset-Buttons, Slider und Label wandern mit |
|
||
| **]** | Pinselgröße vergrößern (gleicher Zyklus, andere Richtung) |
|
||
| **1** | Pinselmodus Heben |
|
||
| **2** | Pinselmodus Senken |
|
||
| **3** | Pinselmodus Glätten |
|
||
| **4** | Pinselmodus Malen (mit der zuletzt gewählten Materialfarbe) |
|
||
| **Linksklick-Ziehen** | Boden formen bzw. malen (je nach Pinselmodus) |
|
||
| **Strg + Linksklick-Ziehen** | **Gegenteil:** bei Heben senkt er, bei Senken hebt er (Invert-Konvention wie Blender/Photoshop); im Malen-Modus malt Strg+Klick Gras zurück |
|
||
| Rechte Maustaste | **Kein Terrain-Strich mehr** — gehört dem Freelook-Flug (absoluter Vorrang, siehe Navigation) |
|
||
| Strg halten | temporärer Snap-Zwang beim Objekt-Bewegen/Platzieren (gilt editorweit, nicht nur hier) |
|
||
|
||
Konfliktfreiheit: Die Ziffern 1–4 sind NUR im Terrain-Werkzeug belegt — im
|
||
Objekt-/Bauen-Modus sind sie unbenutzt, im Flugmodus (rechte Maustaste
|
||
gehalten) bleiben Leertaste/Shift/Strg die Kamera. **Leertaste, Umschalt und
|
||
Strg triggern im Flug KEINE Werkzeug-Aktion:** Terrain senkt nur bei
|
||
Strg+gedrücktem Linksklick (nicht bei Strg allein), Entf/Strg+Z & Co. bleiben
|
||
unangetastet, und der Flug-Einstieg gibt den GUI-Fokus frei, damit Leertaste
|
||
keinen fokussierten Button auslöst.
|
||
|
||
## Werkzeuge (Karte 3/3: F-Tasten wechseln das Werkzeug)
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| **F1** | Werkzeug: Terrain formen |
|
||
| **F2** | Werkzeug: Objekte platzieren/auswählen (Standard) |
|
||
| **F3** | Tab „Bauen“ öffnen (Bauteile wählen, dann in die Karte klicken) |
|
||
| **F4** | Werkzeug: Spawn-Zonen malen |
|
||
| Esc (im Terrain-/Spawn-Werkzeug) | Werkzeug beenden — zurück zum Objekt-Werkzeug |
|
||
| Esc (beim Greifen) | Greifen abbrechen, alte Positionen zurück |
|
||
| Esc (beim Platzieren) | Ghost-Preview abbrechen |
|
||
| Esc (Kurzhilfe offen) | Kurzhilfe schließen |
|
||
| **L** | **Höhenlinien fixieren** (Karte t_89c0ec95): Linien immer sichtbar/unsichtbar — unabhängig vom Werkzeug. Ohne Fix erscheinen sie NUR im Terrain-Werkzeug (F1) |
|
||
|
||
F1–F4 und F5/H/L wirken NUR, wenn kein Textfeld/SpinBox fokussiert ist und kein
|
||
Dialog offen ist (ShortcutPolicy) — Tippen geht immer vor.
|
||
|
||
Die Terrain-Ziffern 1–4 und [ / ] bleiben (Karte 2/3) NUR im Terrain-Werkzeug
|
||
belegt — der Werkzeugwechsel läuft jetzt über die F-Tasten, nicht über Ziffern.
|
||
|
||
Höhenlinien-Kopplung (Karte t_89c0ec95): Die Konturen (1 m, alle 5 m kräftiger)
|
||
sind Werkzeug-gekoppelt — **F1 (Terrain) blendet sie ein, jeder andere
|
||
Werkzeugwechsel blendet sie aus** (hart, ohne Fade). Wer sie dauerhaft will,
|
||
fixiert sie mit **L** oder dem Button „≈ Höhenlinien“ oben. Das Relief-Shading
|
||
(Hillshade + Höhen-Kurve) bleibt davon unberührt und immer an. Auf flachen Maps
|
||
(< 2 m Gesamtrelief) sind die Linien automatisch aus. L ist sonst unbesetzt
|
||
(Kollisions-Prüfung t_89c0ec95).
|
||
|
||
## Hilfe & Test (Karte 3/3)
|
||
|
||
| Eingabe | Wirkung |
|
||
| --- | --- |
|
||
| **H** | Kurzhilfe-Overlay an/aus — alle Tasten dieser Datei als Panel über der Karte; Esc schließt ebenfalls. Nicht-blockierend: der Editor bleibt bedienbar |
|
||
| **T** | Werkzeug: Test-Startpunkt setzen (Karte t_96e3c4ee): Klick in die Karte = dort startet F5. Höhe kommt automatisch vom Terrain; Klick auf Objekt/Bauteil = Boden darunter; Entf im Werkzeug löscht den Punkt. **KEIN Spiel-Spawnpunkt** — er landet in einer Editor-Sidecar-Datei, nicht in der `.svmap` (Spawn-Checks/Analysen unberührt). Im Testlauf versetzt **T** dich sofort zum Blickpunkt und setzt dort den Test-Start |
|
||
| **F5** | ▶ Karte testen (aktuelle Map sofort als Spiel durchlaufen; der Editor bleibt offen). Start-Reihenfolge: gesetzter Test-Start → erster Team-Spawnpunkt → Kartenmitte (je mit Klartext-Hinweis) |
|
||
|
||
Die Statuszeile unten zeigt PERMANENT das aktive Werkzeug („Werkzeug: …“) plus
|
||
den Hinweis „Umschalt+F = Flugmodus“ — man sieht immer, wo man ist.
|