Skip to content

How-to: Waffe erstellen

Status: Data-, Validation-, Godot- und serverautorisierter Waffenpfad vorhanden; finale Assets und Persistenz bleiben Ausbaupunkte.

1. Definition anlegen

Ergänze WeaponDefinitionFactory.CreateWeapons() in src/HolodeckArena.Shared/Weapons/WeaponDefinitionFactory.cs. Stabile ID weapon.<name>, passende WeaponCategory, Basiswerte, RequiredUnlockId, MasteryTrackId, Tags, Enabled und WeaponBalanceVersion setzen. Fire-Definition und technische Scene-Zuordnung liegen in WeaponTechnicalDefinitionFactory.cs.

Existierendes Beispiel weapon.pulse_rifle: AssaultRifle, 24 Damage, 6 FireRate, 30/120 Ammo, 1.8 s Reload, Mastery mastery.assault_rifle, Unlock unlock.weapon.pulse_rifle. Kopiere nicht blind seine Placeholder-Pfade.

2. Scene/Icon und Runtime

ScenePath und IconPath muessen gueltige res://-Pfade sein. Die vier technischen Startwaffen besitzen aktive Scenes; finale Modelle, Animationen und individuelle Icons koennen die Development-Praesentation spaeter ersetzen.

  1. PackedScene im vorhandenen Game3D-Feature-/Prefab-Schema anlegen.
  2. Muzzle als eindeutigen Marker, AnimationPlayer und AudioStreamPlayer3D anbinden.
  3. Projectile/Hitscan, Recoil, Spread und FireRate aus CalculatedWeaponStats, nicht erneut aus Scene-Magic-Werten lesen.
  4. WeaponFactory.Create in Features/Weapons/Runtime/WeaponFactory.cs erzeugt Stats und WeaponRuntimeState; AdvancedWeaponController und WeaponView3D binden die technische Scene und Visuals an. Scene-Loads cachen, nie pro Schuss laden.
  5. Catalog, technische Definition und Scene-Contract testen; der aktive Player uebernimmt das ValidatedRunLoadout aus der Run-Definition.

3. Unlock, Mastery und Mods

UnlockService.CreateDefaultUnlocks() in Progression/UnlockService.cs um dieselbe RequiredUnlockId ergänzen; Default-Unlock mit Level 0 oder explizit in PlayerProgressionDefaults.cs. Perks müssen exakt den MasteryTrackId referenzieren. Mods sind über WeaponId oder Category kompatibel. Die UI-Shell LoadoutScreen.cs muss den Katalogeintrag darstellen, ist aber noch nicht in einer Scene verdrahtet.

4. Run, Replay und Multiplayer

LoadoutValidator prueft Official/Fun/Community und Fixed-Loadout-Policies. Das validierte Loadout fliesst in Run-Definition, Combat, Replay und Completion-Snapshot. Der Online-Waffenpfad validiert Intent serverseitig; vollstaendige Gegner-/Run-Simulation bleibt ein separater Ausbaupunkt.

5. Version und Tests

Bei Balance-/Contentänderung WeaponDefinitionFactory.WeaponBalanceVersion erhöhen. In WeaponsLoadoutsMasteryTests.cs: Catalog lookup/validation, Unlock, allowed/denied, Mod-Kompatibilität, Statberechnung, Hashsensitivität und Serialization ergänzen. Zusätzlich Godot-Scene laden, Muzzle/Animation/Audio/Projectile, Ammo/Reload und Multiplayer manuell prüfen.

Abnahmekriterien

  • IDs stimmen in Definition, Unlock, Mastery, Mods, UI, Replay und Run überein.
  • Resource-Pfade existieren und werden nicht pro Schuss geladen.
  • Nur ValidatedRunLoadout wird instanziiert.
  • Official/Fun-Regeln, Balanceversion und deterministische Stats getestet.
  • bekannte Integrationslücken sind entweder geschlossen oder Feature bleibt ausdrücklich Data-only.

Verwandt: Systemseite, Modifikation, Mastery.