Waffen, Loadouts, Progression und Mastery
Status: vier technische Startwaffen aktiv integriert; serverautoritativer Dungeon-Waffenpfad aktiv, Backend-Persistenz weiterhin offen
Verantwortung je Ebene
| Ebene | Tatsächlicher Typ | Verantwortung |
|---|---|---|
| statische Daten | WeaponDefinition, WeaponModificationDefinition, WeaponMasteryPerkDefinition |
IDs, Basiswerte, Kompatibilität, Assets, Versionen |
| Kataloge | WeaponCatalog, WeaponModificationCatalog, WeaponMasteryPerkCatalog |
Lookup und strukturelle Validierung |
| dauerhafter Stand | PlayerProgressionProfile, PlayerProgressionSnapshot, WeaponMasteryProgress |
Profilinvarianten, Accountlevel, Unlocks, Challenges, XP, Perkauswahl |
| gespeicherte Auswahl | PlayerLoadout |
Primary/Secondary, Mods je Slot, ausgewählte Perks |
| Policy | RunRules |
Official/Fun/Community, Normalisierung, Whitelists, Max Mods |
| Run-Artefakt | ValidatedRunLoadout |
sortierte IDs, angewandte Policy, Balanceversion, SHA-256-Hash |
| Berechnung | WeaponStatCalculator |
Add → Multiply → Override → Normalisierung; Mastery/temporäre Mods gemäß Policy |
| Godot-Runtime | AdvancedWeaponController, WeaponView3D, WeaponAmmoRuntime |
Loadout, Equip, Ammo, Reload, Physics Queries, Damage und Visual-Hooks |
Wichtige Pfade
src/HolodeckArena.Shared/Weapons/WeaponDefinition.cs,WeaponCatalog.cs,WeaponDefinitionFactory.cs: Definitionen, Katalog und Content-Factory.src/HolodeckArena.Shared/Weapons/WeaponReplayEvent.cs,DungeonCombatReplayEvent.cs,ReplicatedPlayerWeaponState.cs: Replay- und Replication-Contracts.src/HolodeckArena.Shared/Loadouts/LoadoutValidator.cs,PlayerLoadout.cs,ValidatedRunLoadout.cs,WeaponStatCalculator.cs: Auswahl, Validation, Hash und Stats.src/HolodeckArena.Shared/Progression/PlayerProgressionProfile.cs,UnlockService.cs,WeaponMasteryService.cs: Profilgrenze, Unlocks und Mastery. Der Snapshot ist das Serialisierungsmodell; Änderungen laufen über das Profil.src/HolodeckArena.Shared/Runs/RunRules.cs: Runmodi.src/HolodeckArena.Game3D/Features/Weapons/Runtime/WeaponFactory.cs,WeaponInstance.cs,WeaponRuntimeState.cs: Godot-Fabrik und Laufzeitzustand.Features/Weapons/Components/PlayerWeaponComponent.cs: Slot-/Snapshot-Shells.Features/Loadouts/UI/LoadoutScreen.cs: nicht verdrahtete UI-Shell.- Tests:
tests/HolodeckArena.Game3D.Tests/Weapons/WeaponsLoadoutsMasteryTests.cs.
Laufzeit- und Modifikatorablauf
LoadoutValidator prüft Existenz/Enabled, Run-Allow/Deny, Unlocks, Mod-Slot und Kompatibilität, Anzahl, Duplicates, FixedLoadout, Masterylevel und einen Perk pro Tier. CreateValidated sortiert IDs und erzeugt den Hash aus Loadout, Policy, WeaponBalanceVersion und RulesetVersion. Statberechnung ist deterministisch, auf vier Nachkommastellen gerundet und geklemmt.
Official: Progression aus, Basisstats normalisiert, keine Mastery-XP/Perks. Fun: Unlocks und Mastery, persönliche Stats, XP erlaubt. Community entspricht aktuell Fun ohne zusätzliche Defaults; Custom Restrictions müssen per with gesetzt werden.
Vorhandener Content
Weapons: weapon.pulse_rifle, weapon.plasma_shotgun, weapon.rail_rifle, weapon.arc_cannon. Alle besitzen technische Scenes, Fire-Behaviors, Unlocks und Mastery-Tracks. Beispiel-Mods und technisch wirksame Perks existieren fuer jede Gattung.
Bekannte Integrationslücken
Die Catalog-Pfade werden auf vier technische Scenes und das Development-Icon aufgelöst. Der aktive Player verwendet AdvancedWeaponController hinter IRunAuthority; ein ValidatedRunLoadout wird vor Combat-Start angewandt. DungeonCombatNetworkSync validiert Online-Waffenintents auf dem Headless-Server. Offen bleiben Nakama-Persistenz, eine finale Loadout-Scene und die vollständige serverautoritative Run-/Gegnersimulation.
Erweiterung, Tests und Fallstricke
Data-only Content wird in WeaponDefinitionFactory ergänzt, Unlock in UnlockService.CreateDefaultUnlocks, Tests in WeaponsLoadoutsMasteryTests. Bei Balanceänderung Version erhöhen. GameplayEffectId zentral auf eine deterministische Effektimplementierung abbilden; keine Sonderfall-Strings im PlayerController. Resource-Pfade zusätzlich im Godot-Editor prüfen, da Catalog.Validate nur res:// validiert.
How-tos: Waffe, Mod, Perk, Unlock, RunMode.
Aktualisierung: vier technische Startwaffen
Die vier Startwaffen, Fire-Behaviors, technischen Godot-Szenen, Damage-/Loadout-/Run-Hooks, Mods, Mastery-Erweiterungen, Netzwerkvalidierungsvertraege sowie die vollstaendige Anleitung zur finalen 3D-Anbindung sind jetzt in Technisches Waffensystem und 3D-Anbindung dokumentiert.
Die dort beschriebene Netzwerkvalidierung ist über DungeonCombatNetworkSync für Waffen-Sessions angeschlossen. Progression-/Loadout-/Mastery-Persistenz über Nakama bleibt ein separater Backend-Ausbaupunkt; ebenso die vollständige serverseitige Run- und Gegner-Simulation.
PlayerProgressionComponent hält ein PlayerProgressionProfile und exponiert dessen Snapshot an bestehende Godot-Consumer. Es enthält selbst keine Unlock- oder XP-Regeln. Extern geladene Collections werden an der Profilgrenze kopiert, damit nachträgliche DTO-Mutationen den Spielzustand nicht verändern.
Online authority
When a dungeon combat session is active, AdvancedWeaponController predicts presentation only and submits weapon intent. Damage, seeds, ammo, reloads, switching, hits, health, and kills are resolved from server-owned definitions and state. Offline runs continue to use the local damage pipeline. See Server-authoritative dungeon weapon combat.