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:
parent
5addad0b8c
commit
04f22183ce
1 changed files with 254 additions and 0 deletions
254
PROJEKTDOKU.md
Normal file
254
PROJEKTDOKU.md
Normal 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 (1–9)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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
|
||||||
|
```
|
||||||
Loading…
Add table
Reference in a new issue