Skip to content

How-to: Player-Unlock ergänzen

Status: lokale Shared-Domain; Nakama-Speicherung/Migration fehlt.

Schritte

  1. Stabile ID unlock.<domain>.<name> wählen und als RequiredUnlockId in Weapon/Mod referenzieren.
  2. UnlockDefinition in UnlockService.CreateDefaultUnlocks() (Shared/Progression/UnlockService.cs) ergänzen.
  3. UnlockRequirement wählen: AccountLevel, UnlockId, WeaponMasteryLevel, WeaponKills, ChallengeCompleted, All oder Any sind implementiert. Enumwerte WeaponCategoryKills, BossDefeated und FunRunXp existieren, werden in UnlockService.Meets aber derzeit nicht behandelt und liefern false; vor Nutzung implementieren/testen.
  4. Id bei WeaponMasteryLevel/WeaponKills ist der Schlüssel im WeaponMasteries-Dictionary. All/Any verwenden Children; leere All ist true, leere Any false gemäß LINQ.
  5. Starterunlock entweder in PlayerProgressionDefaults.NewPlayer.UnlockedIds setzen oder Requirement AccountLevel 0. Beide Mechanismen nicht widersprüchlich pflegen.
  6. LoadoutValidator prüft Unlock nur wenn ProgressionPolicy nicht Disabled. Official ignoriert persönliche Unlocks.
  7. Für Nakama zuerst serverseitige Progression-RPC/Storage mit Schema/ProgressionVersion implementieren; Client-Snapshot nicht als Autorität übernehmen. Bestehende Profile benötigen Migration/default-safe Lesen. UI muss locked reason darstellen.

Tests

Direkt/Requirement, Accountlevelgrenze, Masterylevel/Kills, Challenge, verschachteltes AND/OR, unknown ID, Starterdefault und RunPolicy in WeaponsLoadoutsMasteryTests.cs oder einer neuen ProgressionTests.cs.

Verwandt: Systemseite, Nakama RPC.