This commit is contained in:
Marek Le
2026-03-29 22:58:23 +02:00
parent b9ed399d34
commit 80a65fa555
19 changed files with 217 additions and 58 deletions

30
plan.md
View File

@@ -2,7 +2,8 @@
## Szenenbaum
- Welt
- Player
- Gegner
- Portal
- Gegner
- HUD
## Architektur
@@ -16,6 +17,7 @@
- Kollision (StaticBody3D, WorldBoundaryShape3D)
- Licht (DirectionalLight3D, 45°, Schatten)
- Spieler (Instanz von player.tscn)
- Portal (Instanz von portal.tscn)
- HUD (Instanz von hud.tscn)
- player.tscn — Spieler
@@ -41,6 +43,19 @@
- ClassIcon (Label, Klassen-Symbol: T=Tank, D=Schaden, H=Heiler)
- Ability 1-5
- portal.tscn — Portal (Gegner-Spawner, anvisierbar, Gruppe "targetable")
- StaticBody3D (portal.gd)
- Kollision (CylinderShape3D)
- Mesh (CylinderMesh, Platzhalter)
- Health (Node, health.gd)
- HitArea (Area3D, Trefferbereich)
- CollisionShape3D
- PortalSpawner (Node, portal_spawner.gd)
- Spawnt 3 Gegner bei 85%, 70%, 55%, 40%, 25%, 10% Leben (einmalig)
- Portal = Spawnpunkt der Gegner
- 10m Aggro-Radius um das Portal
- Healthbar (Sprite3D + SubViewport, healthbar.gd)
- enemy.tscn — Gegner
- CharacterBody3D (enemy.gd)
- Kollision (CapsuleShape3D)
@@ -55,7 +70,7 @@
- EnemyMovement (Node, enemy_movement.gd)
- EnemyCombat (Node, enemy_combat.gd)
- EnemyAggro (Node, enemy_aggro.gd)
- Healthbar (Sprite3D + SubViewport, über dem Gegner, enemy_healthbar.gd)
- Healthbar (Sprite3D + SubViewport, über dem Gegner, healthbar.gd)
- SubViewport
- Border (ColorRect, gelb, sichtbar bei Anvisierung)
- HealthBar (ProgressBar, grün)
@@ -71,9 +86,11 @@
- 3 Utility: Schild sofort auf 100%, 5s CD, kein GCD
- 4 Ult: 4x Single + 2x AOE um Ziel, 30s CD, GCD
- 5 Passive: 50% mehr Schaden (permanent aktiv, kein CD)
- targeting.gd — Klick/TAB anvisieren, Kampfmodus bei Gegner-Angriff, Auto-Targeting auf nächsten Gegner
- targeting.gd — Klick/TAB anvisieren (Gruppe "targetable"), Kampfmodus bei Gegner-Angriff, Auto-Targeting auf nächsten Gegner
- event_bus.gd — Autoload-Singleton, globale Signals
- enemy.gd — Gegner-Kern, State Machine (Idle, Verfolgen, Angreifen, Zurückkehren), alarmiert Gegner in 3m
- portal.gd — Portal-Kern, Gruppe "targetable", kein Kampf/Aggro/State
- portal_spawner.gd — Spawnt Gegner bei Lebensschwellen, setzt Portal als Spawnpunkt
- enemy.gd — Gegner-Kern, State Machine (Idle, Verfolgen, Angreifen, Zurückkehren), alarmiert Gegner in 3m, Gruppe "enemies" + "targetable"
- enemy_movement.gd — Navigation zum Ziel/Spawnpunkt
- enemy_combat.gd — Angriff über Event (damage_requested)
- enemy_aggro.gd — Aggro-Tabelle (Spieler → Wert), wählt Ziel mit höchstem Aggro
@@ -81,13 +98,15 @@
- Heilung = Aggro (0.5x)
- Tank = Aggro-Multiplikator (2x)
- Aggro verfällt -1/s
- Außerhalb 10m Portal-Radius: Aggro verfällt 1% * 2 je s (1%, 2%, 4%, 8%, ...)
- Ohne Aggro: Gegner kehrt zum Portal zurück, regeneriert 10% Leben/s bis 100%, dann 1%/s
- Bei Spieler-Tod → Aggro auf 0
- health.gd — Leben, 1/s Regeneration, Tod bei 0 (wiederverwendbar)
- shield.gd — Schild, regeneriert nach 3s ohne Schaden, in 5s voll (wiederverwendbar)
- player_class.gd — Klassenwechsel ALT+1 bis ALT+3 (Tank/Schaden/Heiler), tauscht AbilitySet
- respawn.gd — Bei Tod: Spieler deaktivieren, 3s Timer, Respawn am Startpunkt, Leben/Schild voll
- hud.gd — Reagiert auf Events, aktualisiert HealthBar/ShieldBar/AbilityBar/RespawnTimer
- enemy_healthbar.gd — Liest Health/Shield vom Gegner, aktualisiert Balken über dem Gegner, gelber Rand bei Anvisierung, blauer Lebensbalken wenn Spieler Ziel ist
- healthbar.gd — Liest Health/Shield (optional) vom Parent, gelber Rand bei Anvisierung, blauer Lebensbalken wenn Spieler Ziel ist (nur bei Gegnern)
## Abilities (Resources)
- ability.gd (Resource) — name, type, damage, range, cooldown, uses_gcd, execute()
@@ -113,3 +132,4 @@
- respawn_tick(timer) — Respawn-Countdown Update
- enemy_engaged(enemy, target) — Gegner hat Spieler anvisiert
- cooldown_tick(cooldowns, max_cooldowns, gcd_timer) — Cooldown-Update für HUD
- portal_spawn(portal, enemies) — Portal hat Gegner gespawnt