Zugreifen auf archivierte Turnierergebnisse
In diesem Tutorial wird veranschaulicht, wie Sie auf archivierte Bestenlistenzustände zugreifen können.
Jede Bestenliste kann manuell oder automatisch zurückgesetzt werden. Dies bedeutet, dass Statistikwerte für alle Spieler entfernt werden, was zu einem klaren Zustand führt und die Bestenliste-Version implementiert wird.
Bevor dies geschieht, erstellt PlayFab jedoch eine Momentaufnahme aller Statistikwerte der Bestenliste für jeden Spieler. Dadurch können Sie auf diese archivierte Version der Bestenliste zugreifen.
Notiz
Mit allen Titeln können Sie auf die zuletzt archivierte Version einer Bestenliste zugreifen. Dadurch erhalten Sie die aktuellen und die meisten früheren Versionen. Wenn Ihre aktuelle Leaderboard-Version beispielsweise 3 ist, können Sie nur auf Version 3 und die archivierte Version 2 zugreifen.
Ersteinrichtung
Bevor Sie diesen Leitfaden verwenden, stellen Sie sicher, dass Sie bereits einige Spieler für den Titel registriert haben. Der folgende Screenshot zeigt 5 Spieler, die mithilfe des Api-Aufrufs LoginWithCustomID künstlich registriert wurden.
Definieren und Simulieren einer Bestenliste
In diesem Schritt erstellen wir eine Bestenliste für unsere Testzwecke. Anschließend simulieren wir den Iterationsprozess der Bestenliste, indem wir die Bestenliste mehrmals auffüllen und zurücksetzen.
Öffnen Sie den Game Manager:
- Navigieren Sie zum Abschnitt Bestenlisten .
- Wählen Sie die Schaltfläche Neue Bestenliste aus, wie unten gezeigt.
So konfigurieren Sie die neue Bestenliste:
- Legen Sie den Namen der Statistik auf TestScore fest.
- Behalten Sie die Zurücksetzungshäufigkeitmanuell bei.
- Übernehmen Sie die Standardaggregationsmethode .
- Senden Sie die Datei, indem Sie Bestenliste speichern auswählen.
Sie gelangen auf die neue Seite "Bestenlisten ", auf der leere Daten gerendert werden (siehe unten).
Abschnitt "Test beginnen"
Wichtig
Der folgende Abschnitt ist ein Beispiel für das Auffüllen von Testdaten für die Zwecke dieses Beispiels. Ihr echtes Spiel füllt diese Daten auf natürlichere Weise auf.
Unser nächster Schritt besteht darin, einige Daten für unsere Bestenliste zu simulieren. Die schnellste Möglichkeit besteht darin, einen CloudScript-Handler zu erstellen, der zufällige Statistiken für einen bestimmten Spieler festlegt. Wir rufen diesen Handler für jeden Spieler über das Segment Alle Spieler auf.
Als Ergebnis erhält jeder Spieler einen zufälligen statistischen Wert, der eine gute Annäherung an ein reales Szenario ist.
Beginnen wir mit der Definition von CloudScript (weitere Informationen finden Sie in den Codekommentaren).
// Should be invoked from a task that runs over certain segment
handlers.PopulateLeaderboard = (args,ctx) => {
// When handler is executed as a task over the segment
// we can extract individual player id using the next line:
let playerId = ctx.playerProfile.PlayerId;
// Use player id and update player statistics as follows:
server.UpdatePlayerStatistics({
PlayFabId : playerId,
Statistics : [
{
"StatisticName": "TestScore",
"Value": getRandomInRange(100,1000)
}
]
});
}
// Utility method to generate random number
let getRandomInRange = (min, max) => {
return Math.round(Math.random() * (max - min) + min);
}
Laden wir CloudScript hoch. Verwenden von Game Manager:
- Navigieren Sie zur Registerkarte Automatisierung .
- Navigieren Sie dann zur Unterregisterkarte CloudScript .
- Fügen Sie den CloudScript-Code ein.
- Wählen Sie Als Revision speichern aus.
- Schließlich stellen Sie Revision bereit.
Als Nächstes müssen wir eine Aufgabe definieren, um unser CloudScript über ein bestimmtes Segment auszuführen:
- Navigieren Sie zur Registerkarte Spieler .
- Navigieren Sie dann zur Unterregisterkarte Segmente .
Standardmäßig generiert PlayFab ein Segment "Alle Spieler " für Sie. Dieses Segment ist besonders nützlich, wenn Sie alle Spieler in Ihrem Titel registrieren müssen (was genau bei uns der Fall ist).
- Wählen Sie das Segment Alle Spieler aus.
- Wählen Sie abschließend Task ausführen... aus.
Notiz
Wenn Sie kein Segment Alle Spieler in der Liste haben, lesen Sie bitte unseren Schnellstart zur Spielersegmentierung , um eins zu erstellen.
So konfigurieren Sie die Aufgabe:
- Richten Sie den Namen ein.
- Stellen Sie sicher, dass der Tasktyp auf Aktionen für jeden Player in einem Segment ausführen festgelegt ist.
- Vergewissern Sie sich außerdem, dass unter Segmentdie Option Alle Spieler ausgewählt ist.
- Fügen Sie eine neue Aktion hinzu.
- Wählen Sie unter Typdie Option CloudScript ausführen aus.
- Wählen Sie dann unter CloudScript-Funktion den Handler PopulateLeaderboard aus.
- Wählen Sie abschließend die Schaltfläche Speichern und ausführen aus.
- Stellen Sie sicher, dass das Ausführungsergebnis erfolgreich ist.
Ende des Testabschnitts
Auffüllen von Testdaten
- Navigieren Sie erneut zur Registerkarte Bestenlisten .
- Wählen Sie unsere Bestenliste aus.
- Sie werden sehen, dass Ihre Bestenliste mit Zufallswerten aufgefüllt wurde.
- Setzen Sie die Bestenliste zurück.
Dadurch wird eine Momentaufnahme aller daten erstellt, die wir derzeit haben, und dann werden statistikwerte für jeden Spieler zunichte gemacht und die Version erhöht.
- Nachdem Ihre Bestenliste zurückgesetzt wurde, führen Sie die CloudScript-Aufgabe erneut aus.
- Wiederholen Sie dies 2-3 Mal, setzen Sie dann zurück, und füllen Sie sie erneut aus.
Sie erhalten mehrere Leaderboard-Versionen(1):
- Aktuelle Versionsdaten werden in der Tabelle links (3) angezeigt.
- Archivierte Daten sind für frühere Versionen (2) verfügbar.
- Es ist nur die neueste Version verfügbar. Dies gilt für alle Titel.
Zugreifen auf archivierte Daten mithilfe von Game Manager
Sie können auf archivierte Ergebnisse direkt über die Bestenlistenseite zugreifen:
- Navigieren Sie zur Registerkarte Bestenlisten .
- Wählen Sie die gewünschte Bestenliste aus.
- Wenn Ihre Bestenliste archivierte Revisionen enthält, können Sie JSON-Daten über den Downloadlink im folgenden Screenshot herunterladen.
Zugreifen auf archivierte Daten mithilfe der API
Mit dem folgenden Code können Sie die neueste (aktuelle) Version der Bestenliste abrufen.
PlayFabClientAPI.GetLeaderboard(new GetLeaderboardRequest()
{
StatisticName = "TestScore",
}, result =>
{
Debug.Log("Leaderboard version: "+result.Version);
foreach (var entry in result.Leaderboard)
{
Debug.Log(entry.PlayFabId+" "+entry.StatValue);
}
}, FailureCallback);
Das Ergebnis sieht wie im folgenden Beispiel aus.
Alternativ können Sie eine Version der Bestenliste angeben, die Sie laden möchten.
PlayFabClientAPI.GetLeaderboard(new GetLeaderboardRequest()
{
StatisticName = "TestScore",
Version = 1
}, result =>
{
Debug.Log("Leaderboard version: "+result.Version);
foreach (var entry in result.Leaderboard)
{
Debug.Log(entry.PlayFabId+" "+entry.StatValue);
}
}, FailureCallback);
Das Ergebnis sieht wie im folgenden Beispiel aus.
Mit allen Titeln können Sie auf die neueste archivierte Version der Bestenliste zugreifen. Der Versuch, eine ältere Version zu pullen, führt zu einem Fehler (siehe unten).
Die gleichen Regeln gelten für alle Leaderboard-Anforderungen.
Informationen zu nützlichen Eigenschaften, die Sie mit den Bestenlistendaten erhalten können, finden Sie in der Dokumentation für das GetLeaderboardResult-Objekt .