Freigeben über


Erstellen einer einfachen Statistik

In diesem Tutorial erfahren Sie, wie Sie mit unserem neuen Statistikdienst eine einfache Statistik erstellen. Beginnen wir mit einem Beispiel für ein Shooter-Spiel, das verfolgen möchte, wann immer ein Spieler einen langen Schuss trifft.

Erstellen einer Statistik

Der erste Schritt besteht darin, eine Statistikdefinition zu erstellen, die die Standard Elemente zum Nachverfolgen langer Aufnahmen enthält. Für unser Shooter-Spiel benötigen wir nur eine Spalte für die Entfernung des Weitschusses. Das folgende Beispiel zeigt, wie Sie die Statistikdefinition mithilfe des C#-SDK erstellen.

public static async Task CreateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
    {
        Name = statName,
        AuthenticationContext = context,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Distance",
                AggregationMethod = StatisticAggregationMethod.Max,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}

Lassen Sie uns nun einige wichtige Elemente dieses Beispiels erläutern:

  • AuthenticationContext: Dieser Parameter verarbeitet die gesamte Authentifizierung hinter jeder Anforderung an unsere Dienste. Eine ausführliche Erläuterung finden Sie auf der folgenden Seite: Schnellstartstatistiken.
  • Name: Dieser Parameter hilft Ihnen beim Identifizieren der Statistikdefinition. Es ist wichtig, hier etwas Relevantes zu behalten, da es verwendet wird, um andere Anforderungen zum Abrufen von Informationen zu stellen.
  • EntityType: Dieser Parameter gibt den Entitätstyp an, für den Sie Ihre Statistik erstellen möchten. Weitere Informationen finden Sie hier: Entity Programming Model.
  • VersionConfiguration: Mit diesem Parameter können Sie eine Versionierungsstrategie für Statistiken festlegen, die sich nach einem bestimmten Zeitraum selbst zurücksetzen. Dieses Konzept wird hier ausführlich behandelt: Saisonale Statistiken.
  • Columns: Hier definieren wir die Anzahl der Spalten für unsere Statistik. In diesem Beispiel legen wir nur eine Spalte für die long shots fest. Wir definieren auch als AggregationMethod Max. Dies bedeutet, dass die Statistik nur aktualisiert wird, wenn der neue Wert größer als der vorherige ist.
    • Verfügt AggregationMethod über vier mögliche Werte:
      • Max: Der neue Wert muss größer als der vorherige sein.
      • Min: Der neue Wert muss niedriger als der vorherige sein.
      • Last: Es wird immer mit dem neuesten Wert aktualisiert.
      • Sum: Der vorherige und der neue Wert werden zusammen addiert.

Wenn alle Informationen klar sind, können Sie nun das Beispiel ausführen und Ihre erste Statistik erstellen.

Abrufen einer Statistikdefinition

Vor dem Hinzufügen von Daten zu dieser Statistik möchten wir sicherstellen, dass sie ordnungsgemäß erstellt wurden. Um diese Aktion auszuführen, stellen wir ein Beispiel dafür bereit, wie Sie Ihre Statistikdefinition abrufen können.

public static async Task GetStatisticDefinition(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    GetStatisticDefinitionRequest statDefReq = new GetStatisticDefinitionRequest()
    {
        Name = statName
    };

    PlayFabResult<GetStatisticDefinitionResponse> getStatDefResult = await statsAPI.GetStatisticDefinitionAsync(statDefReq)
}

Geben Sie zum Abrufen der Statistikdefinition den Namen der erstellten Statistik an. Wenn Sie über mehrere Statistikdefinitionen verfügen, können Sie das nächste Beispiel verwenden, um alle Statistikdefinitionen mit einer einzelnen Anforderung abzurufen.

public static async Task GetStatisticDefinitions(PlayFabAuthenticationContext context)
{
     PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
     ListStatisticDefinitionsRequest request = new ListStatisticDefinitionsRequest();
     PlayFabResult<ListStatisticDefinitionsResponse> getStatDefsResult = await leaderboardsAPI.ListStatisticDefinitionsAsync(request);
           
}

Aktualisieren einer Statistikdefinition

Wenn Sie Ihre Statistikdefinition aktualisieren möchten, können Sie dies wie folgt tun:

public static async Task UpdateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statisticName, VersionConfiguration version)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateStatisticDefinitionRequest updateStatDefinitionRequest = new UpdateStatisticDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = statisticName,
        VersionConfiguration = version

    };
    PlayFabResult<PlayFab.ProgressionModels.EmptyResponse> updateStatDefinitionResult = await statsAPI.UpdateStatisticDefinitionAsync(updateStatDefinitionRequest);

}

Beachten Sie, dass Spalten, EntityType und ResetInterval nicht im Rahmen des Updates geändert werden können.


### Deleting statistic definition

If you want to delete your statistic definition to add more columns or fix some errors, you can do so as follows:

 
``` C#

public static async Task DeleteStatisticDefinition(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    DeleteStatisticDefinitionRequest deleteStatDefRequest = new DeleteStatisticDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = statName,
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> statResponse = await statsAPI.DeleteStatisticDefinitionAsync(deleteStatDefRequest);    
}

Hinzufügen von Daten zu einer Statistik

Wenn wir mit unserem Shooter-Beispiel fortfahren, wissen wir jetzt, wie eine Statistikdefinition erstellt, abgerufen und bei Bedarf gelöscht wird. Unser nächster Schritt besteht darin, daten zu unserer Statistik hinzuzufügen.

Beachten Sie, dass es sich bei diesen Statistiken um entitätsbasierte Statistiken handelt, was bedeutet, dass es sich bei den Einträgen um Entitäten handelt. In unserem spezifischen Beispiel verwenden wir den Entitätstyp title_player_account, sodass unsere Statistiken die Informationen eines Spielers nachverfolgen. Denken Sie jedoch daran, dass sie auch andere Entitätstypen verwenden können. Sie können sie sich hier ansehen: Verfügbare integrierte Entitätstypen.

Nun sehen wir uns an, wie wir unserer Statistik Daten hinzufügen können.

public static async Task UpdateStatisticForPlayer(PlayFabAuthenticationContext context, string statName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateStatisticsRequest updateStatRequest = new UpdateStatisticsRequest()
    {
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
        AuthenticationContext = context,
        Statistics = new List<PlayFab.LeaderboardsModels.StatisticUpdate>() 
        {
            new PlayFab.LeaderboardsModels.StatisticUpdate() 
            {
                Name = statName,
                Scores = new List<string> { score.ToString()},
            }
        }
    };

    PlayFabResult<UpdateStatisticsResponse> updateResult = await statsAPI.UpdateStatisticsAsync(updateStatRequest);
}

Lassen Sie uns nun einige wichtige Elemente dieses Beispiels erläutern:

  • Entity: Dieser Parameter entspricht der Entität, von der aus die Aktualisierung des stat-Objekts durchgeführt werden soll.
  • Statistics: Dieser Parameter entspricht dem tatsächlichen Satz von Statistiken einer Entität.
  • StatisticUpdate: Dieser Parameter entspricht den Statistikwerten, die hinzugefügt werden sollen.
    • Scores: Dieser Parameter entspricht der Liste der Bewertungen, die Sie einer Entität hinzufügen können. Denken Sie daran, dass Statistiken mehr als eine Spalte enthalten können. Sie können diese Konzepte hier ausführlich überprüfen: Mehr mit Statistiken tun
    • Name: Dieser Parameter entspricht dem Statistiknamen, der beim Erstellen der Statistikdefinition festgelegt wurde.

Wenn diese Konzepte klar sind, sind Sie jetzt bereit, Ihrer Statistik Daten hinzuzufügen.

Abrufen von Daten aus einer Statistik

Lassen Sie uns eine kurze Zusammenfassung machen. An diesem Punkt haben Sie eine Statistik erstellt, alle Konfigurationsdetails überprüft und damit begonnen, Daten hinzuzufügen. Stellen wir uns nun vor, einige Spieler haben bereits damit begonnen, Ihr Spiel zu verwenden, alle mit beeindruckenden langen Schüssen. Wir möchten eine Abfrage für eine dieser Abfragen durchführen. Im folgenden Beispiel wird gezeigt, wie diese Aktion ausgeführt wird.

public static async Task GetStatsForEntity(PlayFabAuthenticationContext context, string entityId)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

    GetStatisticsRequest request = new GetStatisticsRequest()
    {
        AuthenticationContext = context,
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
    };
    
    PlayFabResult<GetStatisticsResponse> result = await statsAPI.GetStatisticsAsync(request);

    Console.WriteLine("Stats for entity: " + result.Result.Entity.ToString());
    foreach (KeyValuePair<string, PlayFab.LeaderboardsModels.EntityStatisticValue> statValuePair in result.Result.Statistics)
    {
        Console.WriteLine($"{statValuePair.Value.Name} : {string.Join('|', statValuePair.Value.Scores)}");
    }
}

Hier fragen wir alle Statistiken ab, die einer Entität zugeordnet sind, und geben dann den Namen mit dem entsprechenden Wert aus.

Löschen von Statistikwerten

Unsere Statistiken funktionieren wie erwartet, und wir haben eine Reihe von Spielern in Ihrem Spiel. Wir stellen jedoch ein ungewöhnliches Verhalten im Spiel fest. Also haben wir beschlossen, neu zu beginnen und die Daten unserer Statistik zu löschen. Im nächsten Beispiel sehen Sie, wie Daten aus Ihrer Statistik erstellt werden.


 public static async Task DeleteStats(PlayFabAuthenticationContext context, string entityId, List<StatisticDelete> stats)
 {
     PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
     DeleteStatisticsRequest statsDelReq = new DeleteStatisticsRequest()
     {
         Entity = new PlayFab.LeaderboardsModels.EntityKey()
         {
            Id = entityId,
            Type = EntityType
         },
         Statistics = stats
     };
 
     PlayFabResult<DeleteStatisticsResponse> delStatsResult = await statsAPI.DeleteStatisticsAsync(statsDelReq);     
 }

Lassen Sie uns nun einige wichtige Elemente dieses Beispiels erläutern:

  • Entity: Dieser Parameter ist die Entität, aus der Sie löschen möchten.
  • List<StatisticDelete>: Dieser Parameter ist eine Liste der Namen der Statistiken, die Sie löschen möchten.

Schlüsse

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

  • Erstellen einer Statistik
  • Überprüfen der Konfiguration einer Statistik
  • Aktualisieren der Konfiguration einer Statistik
  • Löschen der Statistikkonfiguration
  • Auffüllen der Statistik
  • Löschen Sie Einträge in der Statistik.

Weitere Informationen