From d6715e9c3f18c284087c1e29f4195415a4e7571b Mon Sep 17 00:00:00 2001 From: Marek Le Date: Mon, 30 Mar 2026 15:41:59 +0200 Subject: [PATCH] update --- CLAUDE.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..5fc759e --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,67 @@ +# MMO Projekt + +## Überblick +Community-MMO in Godot 4.6 (Forward+, Jolt Physics). Ziel: Einsamkeit bekämpfen durch geographische Nähe der Spieler. Stilles Designprinzip — nicht als "Anti-Einsamkeits-Spiel" vermarktet. + +## Sprache +Der User kommuniziert auf Deutsch. Code und Variablen auf Englisch. Kommentare nur wo nötig. + +## Code-Style +- GDScript mit 2 Spaces Einrückung (Godot Editor auf Spaces/2 eingestellt) +- Explizite Typen bei Variablen die von Variant-Funktionen kommen (z.B. `var dist: float = ...` statt `var dist := ...` bei `distance_to()`, `min()`, `get_node_or_null()`) +- Keine Debug-Prints im finalen Code (nur temporär zum Testen) + +## Architektur +- **Zwischen Szenen**: Kommunikation über EventBus (Autoload). Szenen kennen sich nicht. +- **Innerhalb einer Szene**: Modulare Skripte als Child-Nodes, Zugriff auf Geschwister-Nodes erlaubt. +- **Gruppen**: "player", "enemies", "portals" +- **Resources** für statische Konfiguration (Stats, Abilities), **Nodes** für laufenden Zustand +- Portale sind keine Gegner — eigene Gruppe "portals", kein State/Aggro/Combat + +## Projektstruktur +- `scenes/` — .tscn Dateien (world, player, enemy, portal, hud) +- `scripts/player/` — Spieler-Skripte (player, camera, movement, combat, targeting, role, respawn) +- `scripts/enemy/` — Gegner-Skripte (enemy, enemy_movement, enemy_combat, enemy_aggro) +- `scripts/portal/` — Portal-Skripte (portal) +- `scripts/components/` — Wiederverwendbare Komponenten (health, shield, healthbar, spawner) +- `scripts/abilities/` — Ability-System (ability, ability_set) +- `scripts/resources/` — Resource-Klassen (entity_stats) +- `resources/stats/` — Stats .tres (player_stats, enemy_stats, portal_stats) +- `resources/abilities/` — Ability .tres (single_attack, aoe_attack, utility_shield_reset, ult_burst, passive_damage_boost) +- `resources/ability_sets/` — AbilitySet .tres pro Rolle (tank_set, damage_set, healer_set) + +## Planungsdokument +`mmo/plan.md` enthält die vollständige Projektstruktur: Szenenbaum, Szenen mit Nodes, Skripte, Components, Stats, Aggro-Regeln, Abilities und Events. Dieses Dokument ist die Wahrheit für den Soll-Zustand. + +## Design-Dokumente +Unter `~/Documents/2026/projekte/mmo/` liegen die originalen Design-Docs: +- `story.md` — Gameplay-Loop, Szenarien, Steuerung +- `idden.md` — Alle Ideen, Kernphilosophie, Technik +- `Szenarien.md` — Ressourcenanfragen, Dungeons, Gemeinschaft, Endgame +- `Level 1.md` bis `Level 3.md` — Systeme nach Priorität + +## Core Loop +1. Portal spawnt auf der Karte +2. Spieler greift Portal an → Gegner spawnen bei Lebensschwellen (85%/70%/55%/40%/25%/10%) +3. Spieler bekämpft Gegner mit Abilities (Single, AOE, Utility, Ult) + Auto-Attack +4. Portal bei 0 HP → Phase 2 (geplant: wird Gate zu Dungeon) +5. Tod → 3s Respawn am Startpunkt + +## Kampfsystem +- Auto-Attack: 10 Schaden, 1s, automatisch bei anvisiertem Gegner im Kampf +- 5 Abilities pro Rolle: Single, AOE, Utility, Ult, Passive +- GCD 0.5s (gilt für 1, 2, 4), Utility ignoriert GCD +- Cooldown-Overlay in AbilityBar (von oben nach unten) +- Targeting: Klick, TAB (cyclet "enemies" + "portals"), Auto-Target (Gegner > Portal) +- Aggro-System: 1:1 Schaden, Tank 2x, verfällt -1/s, exponentiell außerhalb Portal-Radius + +## Rollen +- Tank (T), Schaden (D), Heiler (H) — wechselbar mit ALT+1/2/3 +- Aktuell alle gleiche Abilities, später unterschiedlich +- Jede Rolle hat eigenes AbilitySet (Resource) + +## Workflow mit dem User +- **plan.md ist zentral** — User will Änderungen zuerst in plan.md dokumentiert haben, dann implementieren +- **Modularer Aufbau** — Jede Szene/Skript hat eine Aufgabe +- **Schrittweise** — Erst planen, dann Code zeigen, dann implementieren +- **Godot-Eigenheiten**: Nach Änderungen an Autoloads/Scripts Godot neu starten. Godot überschreibt .tscn beim Speichern — Szene im Editor schließen vor externen Edits.