Files
mmo/CLAUDE.md
Marek Lenczewski 73af6abeb7 update
2026-04-02 19:30:44 +02:00

5.1 KiB

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

  • Stats (Model): Autoload, zentrale Datenhaltung aller Entity-Attribute. Basiswerte aus Resources.
  • Systeme (Controller): Scene-Nodes in world.tscn/dungeon.tscn, lesen/schreiben über Stats.
  • Szenen (Views): Rendern, Input senden, Events empfangen. Kein Gameplay-State.
  • EventBus (Signals): Autoload, Kommunikation zwischen Szenen und Systemen.
  • Event-Flow: Szene → Input → EventBus → System → Stats → EventBus → Szene
  • Zwischen Szenen: Kommunikation über EventBus. Szenen kennen sich nicht.
  • Innerhalb einer Szene: Zugriff auf Geschwister-Nodes erlaubt.
  • Autoloads: EventBus (Signals), Stats (Entity-Daten), GameState (Szene + Position)
  • Gruppen: "player", "enemies", "portals", "boss", "cooldown_system"
  • Resources für Basiswerte (Stats, Abilities), Stats Autoload für Laufzeitwerte

Projektstruktur

Drei Grundordner nach Verantwortung. Resources liegen bei ihren Skripten.

  • scenes/ — Darstellung + Input
    • player/ — Spieler + player_stats + role/ (Rollen + Abilities)
    • enemy/ — Gegner + Boss + enemy_stats + boss_stats
    • portal/ — Portal + Gate + portal_stats
    • dungeon/ — Dungeon + dungeon_manager
    • hud/ — HUD
    • world/ — Hauptszene + portal_spawner
    • healthbar.gd — Shared Component
  • systems/ — Spiellogik
    • 9 Systeme (health, shield, damage, ability, cooldown, enemy_ai, respawn, spawn, buff)
    • aggro/ — AggroSystem (system, tracker, decay, events) + aggro_config
  • autoloads/ — Globaler Zustand
    • event_bus, game_state
    • stats/ — stats + base_stats

Planungsdokument

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/infosammlung/ 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. Portale spawnen dynamisch auf der Karte (PortalSpawner, max 3, 20-40m vom Zentrum)
  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 → Gate spawnt, Gegner werden entfernt
  5. Spieler betritt Gate → Dungeon (separate Szene, 4 Gegnergruppen + Boss)
  6. Spieler kann zwischen Welt und Dungeon hin und her (beide Gates aktiv solange Boss lebt)
  7. Boss stirbt → 2s Delay → Spieler wird zur Taverne teleportiert, Gates verschwinden
  8. Tod → 3s Respawn bei Taverne

Kampfsystem

  • Auto-Attack: Rollenspezifisch (D: 10 Schaden/10m, T: 5 Schaden/3m, H: 1 Heilung/20m), 0.5s CD
  • 5 Abilities pro Rolle: Single, AOE, Utility, Ult, Passive — jede Rolle hat eigene Werte
  • GCD 0.5s (gilt für 1, 2, 4), Utility ignoriert GCD
  • Heilung: Heiler heilt sich selbst (Singleplayer), is_heal Flag auf Ability
  • Passive: Schadens-Boost (D), Schild-Boost (T), Heal-Boost (H) — je 50%
  • Targeting: Klick, TAB (cyclet "enemies" + "portals"), Auto-Target (Gegner > Portal)
  • Aggro-System: 1:1 Schaden, Tank 2x, Heilung 0.5x, verfällt -1/s, exponentiell außerhalb Portal-Radius

Rollen

  • Tank (T), Schaden (D), Heiler (H) — wechselbar mit ALT+1/2/3
  • Jede Rolle hat eigenes AbilitySet mit unterschiedlichen Werten und Mechaniken
  • Tank: Weniger Schaden, Nahkampf, Schild-Ult (300%), Schild-Passive
  • Heiler: Heilt statt schadet (Single, AOE, Ult), Heal-Passive, AOE macht Schaden

Szenenwechsel

  • Stats Autoload cached Spieler-Werte automatisch bei Szenenwechsel
  • GameState speichert Rolle + Position
  • Gate (Eingang): save_player → Dungeon laden
  • Gate (Exit): returning_from_dungeon → Welt laden, Spieler bei Gate-Position
  • Boss-Tod: dungeon_cleared → Welt laden, Cache geleert, Spieler bei Taverne mit vollen HP

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.