Dokumentation hinzugefügt

- Vollständige Projektdokumentation (PROJEKTDOKU.md)
- Beschreibt Steuerung, Szenen-Struktur, Scripts, Ressourcen-Klassen
- Kampfsystem-Erklärung und geplante Features

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Andre 2026-03-14 15:36:45 +01:00
parent 5addad0b8c
commit 04f22183ce

254
PROJEKTDOKU.md Normal file
View file

@ -0,0 +1,254 @@
# DungeonCrawler Projektdokumentation
## Übersicht
DungeonCrawler ist ein Third-Person Action-RPG entwickelt in Godot 4.
Spieler können solo oder in einer Gruppe von bis zu 6 Spielern Dungeons erkunden,
Gegner bekämpfen und ihre Charaktere mit verschiedenen Klassen und Ausrüstungen anpassen.
---
## Technologie
- **Engine:** Godot 4 (GDScript)
- **Perspektive:** Third-Person
- **Plattform:** PC (Windows)
---
## Steuerung
| Taste | Aktion |
|---|---|
| W / A / S / D | Bewegen |
| Mausrad | Kamera zoomen (min 5, max 20) |
| RMB gehalten | Kamera drehen, Spieler schaut mit |
| Linksklick auf Gegner | Ziel markieren |
| Rechtsklick auf Gegner | Ziel markieren + Autoattack starten |
| 1 9 | Aktionsleiste Slot auswählen |
| Leertaste | Springen |
| T | (Test) 10 Schaden am Spieler |
---
## Szenen-Struktur
### world.tscn
Hauptszene der Spielwelt.
```
World (Node3D)
├── Player (player.tscn)
├── Enemy (enemy.tscn)
├── StaticBody3D (Boden)
│ ├── MeshInstance3D
│ └── CollisionShape3D
├── DirectionalLight3D
└── NavigationRegion3D
```
### player.tscn
Der Spielercharakter.
```
Player (CharacterBody3D)
├── [Kenney GLB Modell]
├── CollisionShape3D
├── CameraPivot (Node3D)
│ └── Camera3D
└── HUD (hud.tscn)
```
### enemy.tscn
Ein Gegner.
```
Enemy (CharacterBody3D)
├── [Kenney GLB Modell]
├── CollisionShape3D
├── Area3D
│ └── CollisionShape3D
├── NavigationAgent3D
└── HealthLabel (Label3D)
```
### hud.tscn
Die Spieler-UI.
```
HUD (CanvasLayer)
└── Control
├── HealthBar (ProgressBar)
│ └── HealthLabel (Label)
└── ActionBar (HBoxContainer)
└── A1 A9 (Panel)
└── Label (19)
```
---
## Scripts
### player.gd
Steuert den Spielercharakter.
**Variablen:**
| Variable | Typ | Beschreibung |
|---|---|---|
| SPEED | const float | Bewegungsgeschwindigkeit (5.0) |
| JUMP_VELOCITY | const float | Sprungkraft (4.5) |
| GRAVITY | const float | Schwerkraft (9.8) |
| max_hp | int | Maximale HP (100) |
| current_hp | int | Aktuelle HP |
| can_attack | bool | Angriff möglich (Cooldown-Flag) |
| target | Node | Aktuell markierter Gegner |
| equipped_weapon | Weapon | Ausgerüstete Waffe (null = unbewaffnet) |
**Funktionen:**
| Funktion | Beschreibung |
|---|---|
| take_damage(amount) | Schaden abziehen, HP-Leiste aktualisieren |
| heal(amount) | HP heilen |
| die() | Spieler gestorben |
| get_attack_damage() | Schaden berechnen (Waffe oder 1) |
| get_attack_range() | Reichweite (Waffe oder 1.5) |
| get_attack_cooldown() | Cooldown (Waffe oder 1.5s) |
| set_target(target, start_attack) | Ziel markieren, optional Autoattack starten |
| autoattack() | Wiederholt angreifen solange Ziel gültig |
| _try_select_target(start_attack) | Raycast von Kamera auf Mausposition |
---
### enemy.gd
Steuert den Gegner.
**Variablen:**
| Variable | Typ | Beschreibung |
|---|---|---|
| SPEED | const float | Bewegungsgeschwindigkeit (3.0) |
| ATTACK_DAMAGE | const int | Schaden pro Angriff (5) |
| ATTACK_RANGE | const float | Angriffsreichweite (1.5) |
| ATTACK_COOLDOWN | const float | Angriffspause (2.0s) |
| max_hp | int | Maximale HP (50) |
| target | Node | Ziel des Gegners (Spieler) |
**Funktionen:**
| Funktion | Beschreibung |
|---|---|
| take_damage(amount) | Schaden nehmen, bei 0 HP sterben |
| die() | Gegner aus Szene entfernen |
| show_health() | HP-Label einblenden |
| hide_health() | HP-Label ausblenden |
| _attack() | Angriff mit Cooldown |
---
### camera_pivot.gd
Steuert die Third-Person-Kamera.
**Einstellbare Parameter (Export):**
| Parameter | Standard | Beschreibung |
|---|---|---|
| sensitivity | 0.3 | Mausempfindlichkeit |
| min_pitch | -40° | Maximale Neigung nach unten |
| max_pitch | 20° | Maximale Neigung nach oben |
| min_zoom | 5.0 | Minimale Kameraentfernung |
| max_zoom | 20.0 | Maximale Kameraentfernung |
| zoom_speed | 1.0 | Zoom pro Mausrad-Schritt |
---
### hud.gd
Verwaltet die Spieler-UI.
**Funktionen:**
| Funktion | Beschreibung |
|---|---|
| update_health(current, max) | HP-Leiste und Text aktualisieren |
| set_active_slot(index) | Aktions-Slot 0.1s golden hervorheben |
---
## Ressourcen-Klassen
### Weapon (resources/weapon.gd)
Definiert eine Waffe als Godot-Ressource (.tres).
| Property | Typ | Beschreibung |
|---|---|---|
| name | String | Waffenname |
| weapon_type | WeaponType | UNARMED, SWORD, AXE, MACE, DAGGER, STAFF, BOW |
| min_damage | int | Minimaler Schaden |
| max_damage | int | Maximaler Schaden |
| attack_speed | float | Angriffsgeschwindigkeit (Cooldown) |
| range | float | Angriffsreichweite |
| icon | Texture2D | Icon für die Aktionsleiste |
### Attack (resources/attack.gd)
Definiert einen Angriff — Schaden kommt von der ausgerüsteten Waffe.
| Property | Typ | Beschreibung |
|---|---|---|
| name | String | Angriffsname |
| damage_type | DamageType | PHYSICAL, FIRE, ICE, LIGHTNING, POISON |
| icon | Texture2D | Icon für die Aktionsleiste |
---
## Kampfsystem
### Autoattack
- Rechtsklick auf Gegner → Ziel markieren + Autoattack startet
- Linksklick auf Gegner → nur Ziel markieren
- Autoattack läuft automatisch im Takt der Waffen-Angriffsgeschwindigkeit
- Ohne Waffe: 1 Schaden, 1.5s Cooldown, 1.5 Reichweite
- Mit Waffe: Schaden = zufällig zwischen min/max, Speed und Range von der Waffe
### Schadenstypen (geplant)
- **PHYSICAL** normaler Schaden
- **FIRE** Feuerschaden (z.B. Magier)
- **ICE** Eisschaden
- **LIGHTNING** Blitzschaden
- **POISON** Giftschaden (Schaden über Zeit geplant)
---
## Geplante Features
### Klassen-System
Jede Klasse hat unterschiedliche Basis-Stats und verfügbare Skills:
| Klasse | Stärken | Waffen |
|---|---|---|
| Krieger | Hohe HP, hoher physischer Schaden | Schwert, Axt, Streitkolben |
| Magier | Hoher Magieschaden, niedrige HP | Stab |
| Bogenschütze | Hohe Reichweite, schnelle Angriffe | Bogen, Dolch |
### Weitere geplante Features
- [ ] Klassen-System mit unterschiedlichen Stats
- [ ] Mana-System für Magier
- [ ] Spell-System (Feuerbälle etc.)
- [ ] Inventar und Ausrüstungssystem
- [ ] Waffen aufheben und ausrüsten
- [ ] Erfahrungspunkte und Level-Up
- [ ] Mehrere Gegnertypen
- [ ] Dungeon-Level mit Wänden und Räumen
- [ ] Multiplayer (bis zu 6 Spieler)
- [ ] Gegner-Respawn
- [ ] Boss-Gegner
---
## Projektstruktur
```
DungeonCrawler/
├── assets/ # 3D-Modelle (Kenney GLB)
├── resources/
│ ├── attack.gd # Attack-Ressourcen-Klasse
│ └── weapon.gd # Weapon-Ressourcen-Klasse
├── basic_attack.tres # Autoattack-Ressource
├── camera_pivot.gd # Kamera-Script
├── enemy.gd # Gegner-Script
├── enemy.tscn # Gegner-Scene
├── hud.gd # HUD-Script
├── hud.tscn # HUD-Scene
├── player.gd # Spieler-Script
├── player.tscn # Spieler-Scene
├── world.gd # Welt-Script
├── world.tscn # Hauptszene
└── PROJEKTDOKU.md # Diese Dokumentation
```