Bestenlisten

Ranglisten nach Punktzahl mit automatischen Resets, Archiven vergangener Zeiträume und serverseitigem Anti-Cheat.

Codekommentare und API-Namen bleiben auf Englisch, damit sie zu den SDKs passen.

Auf dieser Seite

Bestenliste erstellen#

Erstellen Sie Bestenlisten auf der Seite Bestenlisten Ihres Projekts und verwenden Sie den Slug im Code.

EinstellungOptionen
SlugBezeichner in Kleinbuchstaben für den Code, z. B. coins.
SortierungDESC (höchste zuerst) oder ASC (niedrigste zuerst, z. B. Rundenzeiten).
PunktemodusBEST behält die beste Punktzahl jedes Spielers; LATEST ersetzt sie immer.
ResetNONE, DAILY, WEEKLY oder MONTHLY.
Minimale / maximale PunktzahlMinimale und maximale akzeptierte Punktzahl (optional).
Cooldown zwischen EinsendungenMindestabstand in Sekunden zwischen zwei Einsendungen eines Spielers (optional).

Punktzahl senden#

Der Spielername stammt aus dem Konto, daher kann ein Client keine Punktzahl für jemand anderen senden.

C#
var submit = await Majacloud.Leaderboards.SubmitScoreAsync("coins", 340);
if (submit.Ok && submit.Value.Accepted)
    Debug.Log("New rank #" + submit.Value.Entry.Rank);

Ranglisten lesen#

Für die Top-Einträge ist keine Anmeldung nötig; für den eigenen Rang des Spielers und die Einträge darum herum muss ein Spieler angemeldet sein.

C#
var top = await Majacloud.Leaderboards.GetTopAsync("coins", limit: 10);
var me = await Majacloud.Leaderboards.GetMyRankAsync("coins");
var around = await Majacloud.Leaderboards.GetAroundMeAsync("coins", radius: 3);

if (me.Ok && me.Value.Entry != null) Debug.Log("You are #" + me.Value.Entry.Rank + " of " + me.Value.Total);

Resets und frühere Zeiträume#

Tägliche, wöchentliche (Montag) und monatliche Bestenlisten werden um 00:00 UTC zurückgesetzt. Der abgeschlossene Zeitraum wird archiviert; Sie lesen ihn mit dem Zeitraum previous:

C#
var yesterday = await Majacloud.Leaderboards.GetTopAsync("coins", 10, 0, MajacloudLeaderboardPeriod.Previous);
Wie viele vergangene Zeiträume aufbewahrt werden und wie viele Einträge eine Bestenliste liefert, hängt vom Tarif ab (siehe Limits).

Anti-Cheat#

  • Punktzahlen außerhalb von Minimum oder Maximum werden mit validation abgelehnt.
  • Wer schneller als der Cooldown sendet, erhält rate_limited.
  • Clients können nur für den angemeldeten Spieler senden.
  • Bei kompetitiven Spielen sollte Ihr Server die Punktzahl bestimmen und sie mit dem geheimen Schlüssel senden.

Vom Server senden#

Senden Sie mit dem geheimen Schlüssel die player_id und die Punktzahl. Der Spieler muss existieren.

JavaScript
// Node.js with secretKey: submit after your server validated the match
await admin.server.submitScore('coins', 'player_3f9c…', 980);

Durchsucht Seitentitel, Überschriften und Text.

↑↓ zum Navigieren ↵ zum Öffnen Esc zum Schließen