DungeonCrawler/PROJEKTDOKU.md
Andre 04f22183ce 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>
2026-03-14 15:36:45 +01:00

7 KiB
Raw Blame History

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