Skip to content

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.