# Topplister for PlayDrop-spill

Deklarer topplister i catalogue.json, send poengsummer med sdk.leaderboards og vis toppen og spillerens naboer. Poengtyper, grenser og oppdateringsregler.

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

Topplister gir spillerne en grunn til å spille igjen og en plassering å dele. PlayDrop lagrer hver spillers beste poengsum per toppliste og viser den på spillet.

## Deklarer en toppliste

Legg den til i appen i [catalogue.json](https://www.playdrop.ai/nb/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 til 64 tegn, som begynner med en liten bokstav, deretter små bokstaver, sifre, `_`, `.` eller `-`.
- `scoreType` og `sort` kommer i to par: `INTEGER` med `DESC` (høyest vinner, poengsummer på 0 eller mer) eller `TIME_MS` med `ASC` (lavest vinner, positive millisekunder).
- `unitLabel` er valgfri visningstekst.

Når en nøkkel er publisert, kan den ikke fjernes, og `scoreType` og `sort` kan ikke endres. Slutt å bruke en toppliste med `"status": "RETIRED"`. Topplister krever en [pakke](https://www.playdrop.ai/nb/create/learn/packaging).

## Send inn og les poengsummer

```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();
```

- Poengsummer er sikre heltall. Bare en bedre poengsum erstatter rekorden.
- `top` godtar 1 til 100 oppføringer og `aroundMe` 1 til 20 på hver side av spilleren.
- `list({ includeRetired: true })` returnerer også avviklede topplister.

Send inn ved slutten av en runde, ikke i hvert bilde, og bare i `play`-fasen. Håndter avviste kall som ethvert nettverkskall; hold spillet spillbart.

## Gjester og uten nett

Du kan sende inn uten å sjekke innlogging. Uten noen spillerøkt i det hele tatt fullføres en innsending uten å bli lagret. Verter som oppgir støtte for enhetsdata, som PlayDrop-apper som fungerer uten nett, tar vare på en poengsum oppnådd uten nett og synkroniserer den senere; når de leser uten nett, viser de bare spillerens egen rekord, uten plassering. Andre steder krever en innsending nettverkstilkobling.

## Hva topplister ikke gjør

Det finnes ingen regioner, planlagte nullstillinger, sesonger eller automatiske ukentlige premier i SDK-en. For en ukentlig toppliste bygger du uken inn i ditt eget design, for eksempel med en ny nøkkel per sesong deklarert i en ny versjon.

Relatert: [prestasjoner](https://www.playdrop.ai/nb/create/learn/achievements), [skylagring](https://www.playdrop.ai/nb/create/learn/cloud-saves), [dele en poengsum](https://www.playdrop.ai/nb/create/learn/social).

## Relaterte veiledninger

- [Prestasjoner](https://www.playdrop.ai/nb/create/learn/achievements): Deklarer vanlige og trinnvise prestasjoner med ikoner i catalogue.json, lås dem opp og rapporter fremgang med sdk.achievements.
- [Skylagring](https://www.playdrop.ai/nb/create/learn/cloud-saves): Lagre og hent fremgang med sdk.me.appData og updateAppData for gjester og innloggede spillere, med regler for skriving, forhåndsvisninger og spill uten nett.
- [catalogue.json](https://www.playdrop.ai/nb/create/learn/catalogue-json): catalogue.json-feltene PlayDrop-spill bruker: identitet, oppføring, spillmåter, flater, innlogging, Instant, forhåndslasting, medier, oversettelser, poeng og servere.
