How-to: Player-Unlock ergänzen
Status: lokale Shared-Domain; Nakama-Speicherung/Migration fehlt.
Schritte
- Stabile ID
unlock.<domain>.<name>wählen und als RequiredUnlockId in Weapon/Mod referenzieren. UnlockDefinitioninUnlockService.CreateDefaultUnlocks()(Shared/Progression/UnlockService.cs) ergänzen.UnlockRequirementwählen: AccountLevel, UnlockId, WeaponMasteryLevel, WeaponKills, ChallengeCompleted, All oder Any sind implementiert. Enumwerte WeaponCategoryKills, BossDefeated und FunRunXp existieren, werden inUnlockService.Meetsaber derzeit nicht behandelt und liefern false; vor Nutzung implementieren/testen.Idbei WeaponMasteryLevel/WeaponKills ist der Schlüssel imWeaponMasteries-Dictionary. All/Any verwenden Children; leere All ist true, leere Any false gemäß LINQ.- Starterunlock entweder in
PlayerProgressionDefaults.NewPlayer.UnlockedIdssetzen oder Requirement AccountLevel 0. Beide Mechanismen nicht widersprüchlich pflegen. - LoadoutValidator prüft Unlock nur wenn ProgressionPolicy nicht Disabled. Official ignoriert persönliche Unlocks.
- 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.