Erfolge für PlayDrop-Spiele
Standard- und Fortschrittserfolge mit Symbolen in catalogue.json deklarieren, freischalten und Fortschritt mit sdk.achievements melden.
Erfolge markieren Ziele in deinem Spiel, mit einem Symbol und einer Beschreibung, die Spieler auf PlayDrop sehen. Sie funktionieren für Gäste und angemeldete Spieler.
Erfolge deklarieren
{
"achievements": [
{ "key": "first-win", "displayName": "First flag", "description": "Reach the flag once",
"kind": "STANDARD", "icon": "achievements/first-win.png" },
{ "key": "collector", "displayName": "Collector", "description": "Collect 100 stars",
"kind": "INCREMENTAL", "maxProgress": 100, "icon": "achievements/collector.png" },
{ "key": "secret-room", "displayName": "Secret room", "description": "Find the hidden room",
"kind": "STANDARD", "hidden": true, "icon": "achievements/secret-room.png" }
]
}keyfolgt demselben Format wie die Schlüssel von Bestenlisten.kindistSTANDARD(wird einmal freigeschaltet) oderINCREMENTAL(wird freigeschaltet, wenn der FortschrittmaxProgresserreicht, eine positive ganze Zahl).iconist ein PNG im Paket. Verwende ein klares, quadratisches Bild, das auch in kleiner Größe gut erkennbar ist.hidden: truehält Name und Beschreibung geheim, bis der Erfolg freigeschaltet ist.
Veröffentlichte Schlüssel können nicht entfernt werden, und kind, maxProgress und hidden können sich nicht mehr ändern. Lege einen Erfolg mit "status": "RETIRED" still.
Freischalten und Fortschritt melden
await sdk.achievements.unlock("first-win");
await sdk.achievements.setProgressAtLeast("collector", starsCollected);
const { achievements } = await sdk.achievements.list();
const { achievement } = await sdk.achievements.get("collector");setProgressAtLeastnimmt den bisherigen Gesamtwert entgegen, niemals eine Differenz. Der Fortschritt steigt nur, ist aufmaxProgressbegrenzt und schaltet dort den Erfolg frei.- Beide Aufrufe liefern
{ accepted, changed, unlocked, progress, unlockedAt, achievement };changedist false, wenn nichts Neues passiert ist, sodass du deinen eigenen Hinweis nur einmal zeigst. list({ includeHiddenDefinitions: true, includeRetired: true })enthält auch versteckte und stillgelegte Definitionen.
Schalte Erfolge nur beim echten Spielen frei, niemals in Vorschauen oder Aufnahmen. Ganz ohne Spielersitzung werden die Aufrufe erfolgreich abgeschlossen, aber nicht gespeichert.
Gute Erfolge
Mische frühe Erfolge, die das Spiel beibringen, mit langfristigen Zielen. Benenne die Aktion, nicht die Belohnung: „Gewinne, ohne Schaden zu nehmen“ sagt, was zu tun ist. Ein Dutzend durchdachter Erfolge ist besser als hundert belanglose.