# PlayDrop oyunları için liderlik tabloları

catalogue.json’da liderlik tabloları tanımla, sdk.leaderboards ile puan gönder, en iyileri ve oyuncunun komşularını göster. Puan türleri, sınırlar ve kurallar.

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

Liderlik tabloları oyunculara tekrar oynamak için bir neden ve paylaşacak bir sıralama verir. PlayDrop her oyuncunun her liderlik tablosundaki en iyi puanını saklar ve oyunda gösterir.

## Bir liderlik tablosu tanımla

Onu [catalogue.json](https://www.playdrop.ai/tr/create/learn/catalogue-json) içinde uygulamaya ekle:

```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`: küçük harfle başlayan, ardından küçük harfler, rakamlar, `_`, `.` veya `-` içeren 3 ile 64 karakter arası.
- `scoreType` ve `sort` iki çift halinde gelir: `DESC` ile `INTEGER` (yüksek olan kazanır, puanlar 0 ya da daha fazla) veya `ASC` ile `TIME_MS` (düşük olan kazanır, pozitif milisaniyeler).
- `unitLabel` isteğe bağlı görüntüleme metnidir.

Yayınlandıktan sonra bir anahtar kaldırılamaz; `scoreType` ve `sort` değerleri değiştirilemez. Bir tabloyu kullanmayı `"status": "RETIRED"` ile bırak. Liderlik tabloları bir [paket](https://www.playdrop.ai/tr/create/learn/packaging) gerektirir.

## Puan gönder ve oku

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

- Puanlar güvenli tamsayılardır. En iyi puanın yerini yalnızca daha iyi bir puan alır.
- `top` 1 ile 100 arasında kayıt, `aroundMe` ise oyuncunun her iki yanında 1 ile 20 arasında kayıt kabul eder.
- `list({ includeRetired: true })` kullanımdan kaldırılmış tabloları da döndürür.

Puanı her karede değil, bir turun sonunda ve yalnızca `play` aşamasında gönder. Reddedilen çağrıları her ağ çağrısı gibi ele al; oyunu oynanabilir tut.

## Misafirler ve çevrimdışı

Girişi kontrol etmeden puan gönderebilirsin. Hiç oyuncu oturumu yoksa gönderim kaydedilmeden tamamlanır. Çevrimdışı çalışabilen PlayDrop uygulamaları gibi cihaz verisi desteği bildiren ana uygulamalar çevrimdışı yapılan bir puanı tutar ve daha sonra eşitler; bunların çevrimdışı okumaları sıralama olmadan yalnızca oyuncunun kendi en iyi puanını gösterir. Diğer her yerde gönderim bağlantı gerektirir.

## Liderlik tablolarının yapmadıkları

SDK’da bölgeler, zamanlanmış sıfırlamalar, sezonlar ya da otomatik haftalık ödüller yoktur. Haftalık bir tablo için haftayı kendi tasarımına dahil et; örneğin her sezon için yeni bir sürümde tanımlanan yeni bir anahtar kullan.

İlgili: [başarımlar](https://www.playdrop.ai/tr/create/learn/achievements), [bulut kayıtları](https://www.playdrop.ai/tr/create/learn/cloud-saves), [puan paylaşma](https://www.playdrop.ai/tr/create/learn/social).

## İlgili kılavuzlar

- [Başarımlar](https://www.playdrop.ai/tr/create/learn/achievements): catalogue.json içinde simgeli standart ve artımlı başarımlar tanımla, bunları aç ve ilerlemeyi sdk.achievements ile bildir.
- [Bulut kayıtları](https://www.playdrop.ai/tr/create/learn/cloud-saves): İlerlemeyi sdk.me.appData ve sdk.me.updateAppData ile kaydet ve yükle; misafirler ve giriş yapmış oyuncular için yazma, önizleme ve çevrimdışı kuralları.
- [catalogue.json](https://www.playdrop.ai/tr/create/learn/catalogue-json): PlayDrop oyunlarının kullandığı catalogue.json alanları: kimlik, oyun sayfası, oynanış modları, yüzeyler, giriş, Instant, ön yükleme, medya, çeviriler, skorlar ve sunucular.
