Freigeben über


Hinzufügen von Kontextdaten zu Bestenlisten

In diesem Tutorial wird erläutert, wie Kontextinformationen hinzugefügt werden, wenn eine Bestenliste aktualisiert wird. Das Spielstudio möchte möglicherweise einige Details zum Kontext hinzufügen, in dem ein Spieler eine Punktzahl erzielt hat, oder es könnte ein Feature innerhalb des Spiels geben, das sich auf diese angegebene Punktzahl bezieht.

Jetzt wechseln wir von unseren vorherigen Beispielen, in denen wir ein Arcade-Spiel hatten, zu einem stark kompetitiven Shooter-Spiel. In diesem Beispiel hat das Spiel enormen Erfolg, steht aber vor einer Herausforderung. Es gibt zu viele Beschwerden darüber, dass Menschen das Spiel mit externen Komponenten "hacken", die Rückstoß auf die Waffen entfernen und die Zielhilfe verbessern. Nun sind wir damit beauftragt, weitere Informationen zu allen verwendeten Komponenten und Netzwerkinformationen für unsere Rangfolgenübereinstimmungen nachzuverfolgen.

Erstellen einer Bestenliste

Um zu zeigen, wie sie mit diesem Szenario umgehen können, übernehmen wir die Bestenlistendefinition von der Seite Doing More With Leaderboards . Anhand dieser Definition erfahren Sie, wie Sie metadaten zu jeder Zeile hinzufügen, die der Bestenliste hinzugefügt wird.

public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        SizeLimit = 1000,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Eliminations",
                SortDirection = LeaderboardSortDirection.Descending,
            },
            new LeaderboardColumn()
            {
                Name = "Assists",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}

Hinzufügen von Metadaten zu jeder Zeile

Wir möchten wissen, ob der Spieler über nicht autorisierte Hardware verfügt, die sich auf das Spiel auswirkt, oder andere Schadsoftware, die die Leistung des Spielers verbessern könnte. Das Anti-Cheat-System ist in der Lage, all diese Informationen zu erhalten, aber da es eine enorme Anzahl von Spielern gibt, werden wir uns auf die Flagüberprüfung von Highscores und Metadaten von externen Komponenten konzentrieren.

Um diese Aktion auszuführen, verwenden wir die UpdateLeaderboard-API. Hier können wir uns das SDK-Beispiel ansehen:

public static async Task UpdateLeaderboardForPlayer(PlayFabAuthenticationContext context, string leaderboardName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateLeaderboardEntriesRequest updateLeaderboardRequest = new UpdateLeaderboardEntriesRequest()
    {
        Entries = new List<LeaderboardEntryUpdate>()
        {
            new LeaderboardEntryUpdate()
            {
                EntityId = entityId,
                Scores = new List<string> { score.ToString(), (score + 1).ToString(), (score + 2).ToString() },
                Metadata = "AntiCheat Data",
            }
        },
        AuthenticationContext = context,
        LeaderboardName = leaderboardName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> updateResult = await leaderboardsAPI.UpdateLeaderboardEntriesAsync(updateLeaderboardRequest);
}

Hier verwenden wir den Metadata Parameter innerhalb von , um Informationen hinzuzufügen, die LeaderboardEntryUpdate für einen Entwickler von Bedeutung sind. In diesem Fall verwenden wir es zum Speichern von Anti-Cheat-Daten. Mit diesem Beispiel sind wir nun in der Lage, alle relevanten Informationen von unseren Top-Spielern nachzuverfolgen, sodass Spielemoderator*innen bessere Entscheidungen darüber treffen können, wer gesperrt werden soll.

Schlüsse

In diesem Tutorial haben wir gelernt, wie die folgenden Vorgänge ausgeführt werden:

  • Erstellen Sie eine mehrspaltige Bestenliste.
  • Fügen Sie jeder Zeile der Bestenliste Metadaten hinzu.

Weitere Informationen