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.
- PackedScene im vorhandenen Game3D-Feature-/Prefab-Schema anlegen.
- Muzzle als eindeutigen Marker, AnimationPlayer und AudioStreamPlayer3D anbinden.
- Projectile/Hitscan, Recoil, Spread und FireRate aus
CalculatedWeaponStats, nicht erneut aus Scene-Magic-Werten lesen. WeaponFactory.CreateinFeatures/Weapons/Runtime/WeaponFactory.cserzeugt Stats undWeaponRuntimeState;AdvancedWeaponControllerundWeaponView3Dbinden die technische Scene und Visuals an. Scene-Loads cachen, nie pro Schuss laden.- Catalog, technische Definition und Scene-Contract testen; der aktive Player uebernimmt das
ValidatedRunLoadoutaus 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.