Files
Blockline/docs/MAP-SELECTION.md

68 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Map-Auswahl und Bot-Navigation
## Spielen
In dieser Projektkopie **Start-Local.cmd** öffnen, dann **PLAY → MAP AUSWÄHLEN → Dust 2 · CS 1.6 → START GAME**.
Quarry bleibt wählbar. **MULTIPLAYER → HOST GAME** bietet dieselbe Auswahl samt Match-Einstellungen; im Formular bei Bedarf nach unten scrollen. LAN-Browser zeigt den Mapnamen. Direct Connect und Join übernehmen die Karte des Hosts.
Die Kopie hat kein `.git`. Start-Game.exe kann daher über seinen vorhandenen Updater eine andere Version auswählen. Start-Local.cmd bzw. `Start-Game.exe --local` startet zuverlässig diese Dateien. Der Launcher wurde nicht verändert.
CLI mit Godot: `-- --host --map=dust2` oder `--map=quarry`. Dedicated: `-- --dedicated --map=dust2`; alternativ `"map": "dust2"` in server.json. Beide Clients müssen denselben Projektstand verwenden.
## Dateien und Zuständigkeiten
- `scripts/map_catalog.gd`: stabile Map-IDs und Anzeigenamen.
- `scripts/dust_geometry.gd`: GLB-Import, Materialzuordnung und Weltkollisionen. Kein Spieler-Mesh-Collider; Spieler bleiben Capsules.
- `scripts/dust_arena.gd`: Dust-Spawns, Patrouillen, Objectives, Beleuchtung und Map-Abmessungen (ca. 112 × 133 m).
- `scripts/arena_navigation.gd`: eigene NavigationServer-Karte je Arena, gebackene NavigationMesh-Ressource, 3D-Pfade; Ressourcen beim Wechsel freigeben.
- `scripts/arena.gd`: unveränderte Quarry-Geometrie, ergänzt um Map-Metadaten und 3D-Navigation. Der alte AStarGrid bleibt für bestehende Aufrufer verfügbar.
- `scripts/bot_routes.gd`: ersetzt feste Gebäudeknoten durch echte begehbare Flächen.
- `scripts/bot_steering.gd`: höhentolerante Wegpunkte, gegenseitiges Ausweichen mit Kollisionsprüfung, Stillstand erkennen.
- `scripts/bots.gd`: Pfad neu berechnen, erreichbare Patrouillenziele, horizontal normierte Bewegung auch an Steigungen.
- `scripts/game.gd`, `ui.gd`, `front_end.gd`, `discovery.gd`, `server_settings.gd`: Auswahl, Host/Client-Übernahme und Server-Konfiguration.
- `scripts/hud.gd`, `round_objectives.gd`: passende Kartengrenzen, Minimap und Zielpositionen.
- `scripts/snapshot_fragments.gd`: große komprimierte Zustandsmeldungen in 1000-Byte-Teilen; nur vollständige aktuelle Meldungen anwenden, veraltete/verlorene Teile verwerfen, Speicher begrenzen.
## Assets
`assets/scan/dust2/` enthält das GLB, elf externe StandardMaterial3D-Ressourcen und die von Godot extrahierten Texturen, Lizenz/Herkunft, Minimap und `navigation.res`. Die externe Materialzuordnung bewahrt alle elf Original-UV-Zuordnungen. Keine erfundenen Normal-Maps: Das Paket liefert Farbtexturen mit bereits eingebauter Beleuchtung. Der klassische CS-1.6-Look und die Auflösung des gelieferten Materials bleiben erhalten.
Das zusätzliche ZIP enthält dieselben elf Texturen (vertikal gespiegelt), eine weitere Dust-Quelldatei sowie ein anderes Zone9-Modell. Diese redundanten bzw. fremden Map-Dateien werden nicht zusätzlich ins Spiel kopiert. Sie sind weiterhin in Downloads vorhanden.
Die Quarry-Navigation liegt in `assets/navigation/quarry.res`. Navigationsnetze werden vorab erstellt, nicht bei jedem Spielstart gebacken. Änderungen an kollidierender Map-Geometrie erfordern erneutes Backen.
## Navigation neu erzeugen
Im Projektordner mit Godot 4.5:
```powershell
$godot = '.\tools\godot\Godot_v4.5-stable_win64_console.exe'
& $godot --headless --editor --path . --import
& $godot --headless --path . --script tests/dust_prepare.gd
& $godot --headless --path . --script tests/quarry_navigation_bake.gd
```
`dust_prepare.gd` erzeugt Materialien und Navigation. Bei Layoutänderungen auch Spawns/Zielpositionen in dust_arena.gd und die Minimap aktualisieren. Die Rasterauflösung des NavigationServer für Kantenverbindungen ist bewusst feiner als die Bake-Voxel: dicht benachbarte Kanten dürfen nicht fälschlich zusammenfallen.
## Prüfungen
- `tests/map_selection.gd`: beide Maps, freie Capsules an allen Spawns, Verbindungen, Menüoptionen und acht Spieler.
- `tests/bot_navigation.gd`: reale Capsule-Bewegung die Quarry-Außentreppe hinauf, Dust-Höhenroute sowie zwei entgegenkommende Bots im selben Weg.
- `tests/map_network.gd`: zwei echte ENet-Prozesse, Host auf Dust, Client zunächst auf Quarry, anschließend gleiche Map und acht synchronisierte Akteure. Für Windows den eigentlichen `Godot_v4.5-stable_win64.exe` starten, nicht den Console-Wrapper; Firewall-Freigaben sind programmspezifisch. Testport UDP 27992.
- `tests/snapshot_fragments.gd`: Reihenfolge, Duplikate, fehlende Meldungen und Größenbegrenzung.
- `tests/dust_visual.gd`, `tests/map_menu_visual.gd`: echte Vulkan-Renders, Übersicht/Spielerhöhe/Menüs/Spielansicht; Bilder in logs/.
- `tests/audit_gdscript.py`: kompletter Parser-/Typdeklarations-Audit.
- Bestehende Grafik-, Waffen-, Auto-Reload- und Architekturtests bleiben erhalten.
Manuell: beide Maps hosten, Treppen und Tunnel laufen, mehrere Bots beobachten, nach Match-Ende verlassen und die andere Map starten. Auf einem zweiten LAN-PC beitreten und Map/Minimap/Spielerpositionen vergleichen.
## Grenzen
Navigation und Begegnungstests decken ausgewählte Routen ab, nicht jede denkbare Menschenmenge an jedem Engpass. Sehr enge Stellen können weiterhin kurzzeitiges Ausweichen/Neuplanen auslösen. Der Zweiprozess-Netzwerktest ersetzt keinen Test auf zwei physischen LAN-Rechnern. Keine pauschale FPS-Garantie; Grafik hängt auch von vorhandenen Spieler-Assets und Einstellungen ab.
## Ergebnis dieser Integration
Map-/Spawn-Prüfungen bestanden; beide Treppen-Laufwege und das gegenseitige Passieren bestanden. LAN-Test mit zwei Spielprozessen und acht Akteuren: Host und Client erfolgreich auf Dust 2, keine Paketgrößenwarnung mehr. Echte Vulkan-Renders geprüft. Bestehende Grafiktests 81/81, Korrekturen 24/24, Auto-Reload 15/15, Shooting-Polish 19/19 und Node-Architektur bestanden. Der isolierte Polish-Test übernimmt nun auch seine drei erzeugten Modul-Nodes in den Szenenbaum, sodass sie sauber freigegeben werden.
GDScript-Audit: 145/145 bestanden. Lokaler Launcher mit `--local --verify` geprüft; `logs/selected-project.txt` bestätigt den neuen Workspace.