# Topplistor för PlayDrop-spel

Deklarera topplistor i catalogue.json, skicka poäng med sdk.leaderboards och visa toppen och spelarens grannar. Poängtyper, gränser och uppdateringsregler.

Source: https://www.playdrop.ai/sv/create/learn/leaderboards

Topplistor ger spelarna en anledning att spela igen och en placering att dela. PlayDrop sparar varje spelares bästa poäng per topplista och visar den i spelet.

## Deklarera en topplista

Lägg till den i appen i [catalogue.json](https://www.playdrop.ai/sv/create/learn/catalogue-json):

```json
{
  "leaderboards": [
    { "key": "high-score", "displayName": "High score", "description": "Most points in one run",
      "scoreType": "INTEGER", "sort": "DESC", "unitLabel": "pts" },
    { "key": "best-time", "displayName": "Fastest run", "description": "Time to reach the flag",
      "scoreType": "TIME_MS", "sort": "ASC" }
  ]
}
```

- `key`: 3 till 64 tecken, som börjar med en gemen bokstav följd av gemena bokstäver, siffror, `_`, `.` eller `-`.
- `scoreType` och `sort` finns i två par: `INTEGER` med `DESC` (högst vinner, poäng på 0 eller mer) eller `TIME_MS` med `ASC` (lägst vinner, positiva millisekunder).
- `unitLabel` är valfri visningstext.

När en nyckel har publicerats kan den inte tas bort, och dess `scoreType` och `sort` kan inte ändras. Sluta använda en med `"status": "RETIRED"`. Topplistor kräver ett [paket](https://www.playdrop.ai/sv/create/learn/packaging).

## Skicka och läs poäng

```js
const result = await sdk.leaderboards.submitScore("high-score", 1200);
// { accepted, improved, previousBestScore, bestScore, rank, previousRank, bestScoreAt, leaderboard }
if (result.improved) showNewBest(result.bestScore, result.rank);

const { leaderboard } = await sdk.leaderboards.get("high-score", { top: 10, aroundMe: 3 });
// leaderboard: { definition, top, player, playerEntry, aroundPlayer }

const { leaderboards } = await sdk.leaderboards.list();
```

- Poäng är säkra heltal. Bara ett bättre resultat ersätter rekordet.
- `top` accepterar 1 till 100 poster och `aroundMe` 1 till 20 på varje sida om spelaren.
- `list({ includeRetired: true })` returnerar också pensionerade topplistor.

Skicka poäng i slutet av en omgång, inte varje bildruta, och bara i fasen `play`. Hantera avvisade anrop som vilket nätverksanrop som helst; håll spelet spelbart.

## Gäster och offline

Du kan skicka poäng utan att kontrollera inloggningen. Helt utan spelarsession slutförs en inskickning utan att sparas. Värdar som anger stöd för enhetsdata, som PlayDrop-appar med offlinestöd, behåller ett resultat som gjorts offline och synkroniserar det senare; deras avläsningar offline visar bara spelarens eget rekord, utan placering. I övrigt kräver en inskickning en anslutning.

## Det här gör inte topplistor

Det finns inga regioner, schemalagda nollställningar, säsonger eller automatiska veckopriser i SDK:t. För en veckolista bygger du in veckan i din egen design, till exempel med en ny nyckel per säsong som deklareras i en ny version.

Relaterat: [prestationer](https://www.playdrop.ai/sv/create/learn/achievements), [molnsparningar](https://www.playdrop.ai/sv/create/learn/cloud-saves), [dela ett resultat](https://www.playdrop.ai/sv/create/learn/social).

## Relaterade guider

- [Prestationer](https://www.playdrop.ai/sv/create/learn/achievements): Deklarera vanliga och stegvisa prestationer med ikoner i catalogue.json, lås upp dem och rapportera framsteg med sdk.achievements.
- [Molnsparningar](https://www.playdrop.ai/sv/create/learn/cloud-saves): Spara och läs in spelarens framsteg med sdk.me.appData och updateAppData, för gäster och inloggade, med regler för skrivningar, förhandsvisningar och offline.
- [catalogue.json](https://www.playdrop.ai/sv/create/learn/catalogue-json): Fälten i catalogue.json för PlayDrop-spel: identitet, spelsida, spellägen, ytor, inloggning, Instant, förladdning, media, översättningar, poäng och servrar.
