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