68 lines
6.0 KiB
Markdown
68 lines
6.0 KiB
Markdown
# 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.
|