Statystyki meczu

Statystyki gry to zbiorcze statystyki dotyczące Twojej gry, które gracze mogą wyświetlać w swoim profilu gracza. Te statystyki pozwalają graczom śledzić postępy w całej grze, oglądać najciekawsze momenty i porównywać swoje wyniki z innymi graczami. W przyszłości będą też zasilać funkcje Google Play, takie jak zadania, wyzwania społecznościowe i inne.

Integracja

Wysyłaj dane za pomocą interfejsu Game Stats API jako elastyczne zdarzenia gracza w przypadku powtarzalnych statystyk i wstępnie zdefiniowane zdarzenie progressUpdate w przypadku statystyk postępów. Musisz też skonfigurować logikę obliczania statystyk, które będą wyświetlane w profilu gracza, oraz informacje o ich wyświetlaniu.

Zdarzenia gracza reprezentują odrębne momenty w grze, ukończenie pętli gry lub kamienie milowe postępu.

Zdarzenie związane z graczem jest zdefiniowane i modelowane w ten sposób:

  1. Zdarzenie jest reprezentowane przez konkretne działanie gracza, takie jak ukończenie meczu, biegu, odblokowanie skrzyni lub zapisanie postępów w danym obszarze.
  2. Każde działanie ma określone skutki lub cechy, które je definiują. Są one modelowane jako właściwości zdarzenia, które dostarczają kontekstu zdarzenia i jego konkretnych wyników (np. typ meczu, liczba zebranych monet, wynik meczu lub liczba trafień w głowę).

Integracja obejmuje te kroki:

  • Zadeklaruj schemat danych pierwotnych: zdefiniuj zdarzenia dotyczące graczy, przesyłając plik CSV w Konsoli Play. Zobacz Wytyczne dotyczące plików CSV.
  • Integracja z interfejsem Game Stats API: wysyłaj nieprzetworzone dane o graczach w zadeklarowanym formacie, aby uzyskać elastyczne zdarzenia dotyczące graczy i zdarzenie progressUpdate.
    • Wysyłaj wszystkie zdefiniowane zdarzenia za pomocą integracji po stronie klienta lub serwera. Więcej informacji znajdziesz w przykładach elastycznych zdarzeń i zdarzenia progressUpdate.
  • Prześlij plik ZIP: prześlij 3 pliki CSV i wszystkie pliki obrazów ikon, które określają 5 powtarzających się statystyk i 1 poziom rozwoju gracza. Więcej informacji znajdziesz w wytycznych dotyczących plików ZIP. Podaj te informacje:
    • Plik CSV z powtarzającymi się statystykami:
      • Unikalny identyfikator statystyki.
      • Określ etykietę zdarzenia, która będzie używana do obliczania statystyk. Nie możesz tu użyć etykiety zdarzenia progressUpdate.
        • Określ etykietę właściwości, która ma być używana do obliczania statystyk. Musi to być właściwość określonego zdarzenia.
        • Określ typ agregacji (SUM, MAX, MIN lub COUNT), aby określić sposób obliczania statystyk w wybranej etykiecie właściwości.
        • Określ opcjonalny warunek filtra, aby obliczać logikę tylko wtedy, gdy warunek jest spełniony. Określ etykietę właściwości i zdarzenia, operator (=, < lub >) oraz wartość progową.
      • Dodaj flagę wartości logicznej, aby wskazać, czy statystyki mogą być używane w przypadku funkcji konkurencyjnych.
      • Jeśli funkcja może być używana w przypadku funkcji konkurencyjnych, podaj minimalne i maksymalne limity godzinowe dla prawdziwego gracza. Będziemy go używać do identyfikowania graczy, którzy mogą nadużywać funkcji takich jak ligi i wyzwania społecznościowe.
      • Podaj unikalną wyświetlaną nazwę statystyki, która będzie widoczna dla graczy.
      • Podaj unikalny tekst opisujący statystykę. Opis powinien zawierać szczegółowe informacje o tym, jak gracz ją zdobywa.
      • Podaj unikalną ikonę reprezentującą statystykę, wpisując dokładną nazwę pliku ikony w pliku CSV.
      • Podaj kolejność, w jakiej gracz będzie widzieć statystyki w swoim profilu gracza.
      • Podaj opcjonalne dane wejściowe, czy rosnąca czy malejąca wartość jest korzystna dla gracza. Te dane wejściowe będą używane do wyświetlania animacji związanych z ruchem zawodników.
      • Podaj opcjonalną jednostkę miary dla statystyki, np. km, mile lub sekundy.
    • Plik CSV ze statystykami postępów gracza:
      • Podaj unikalną wyświetlaną nazwę postępów gracza, która będzie widoczna dla graczy.
      • Dodaj unikalną ikonę reprezentującą statystykę.
      • Podaj opis statystyki postępu.
      • Podaj opcjonalne dane wejściowe, które określają, czy rosnąca czy malejąca wartość jest korzystna dla gracza. Ten rodzaj danych wejściowych będzie używany do informowania o ruchach graczy tylko wtedy, gdy właściwość currentProgress jest typu INT.
      • Podaj opcjonalną jednostkę miary dla statystyki, np. km, mile, sekundy.
    • Plik CSV do lokalizacji: podaj zlokalizowane nazwy wyświetlane wszystkich statystyk.
      • Dodaj po jednym wierszu dla każdej wersji językowej.
      • Użyj ciągu znaków wyświetlanej nazwy statystyki dodanego w poprzednim pliku CSV, aby jednoznacznie zidentyfikować statystykę, do której dodawane jest tłumaczenie.
      • Określ język z listy kodów języków.
      • Dodaj lokalizację nazwy wyświetlanej w określonym języku.
      • Dodaj zlokalizowany opis statystyki w określonym języku.

Wytyczne dotyczące plików CSV w przypadku wydarzeń

Możesz zaimportować wydarzenia za pomocą pliku PlayerGameEvent.csv.

Nazwa pliku Wymagany czy opcjonalny
PlayerGameEvent.csv Wymagane

Format pliku PlayerGameEvent.csv

Plik CSV zawiera zadeklarowane zdarzenie i jego właściwości w postaci wartości rozdzielonych przecinkami w tej kolejności:

 Event Name,Property Name,Property Type

Jeśli wysyłasz zdarzenie progressUpdate dla progressionStat, dodaj wiersz dla tego zdarzenia. To zdarzenie musi zawierać co najmniej właściwość currentProgress typu INT lub STRING oraz inne właściwości, które chcesz wysłać.

Przykładowa tabela
Nazwa zdarzenia Nazwa właściwości Typ usługi
matchCompleted czas trwania PODWÓJNE
matchCompleted zabójstwa, PRZ
matchCompleted isWinner WARTOŚĆ LOGICZNA
matchCompleted matchType CIĄG ZNAKÓW (UTF-8)
itemCollected coinsAmount PRZ
itemCollected weaponType CIĄG ZNAKÓW (UTF-8)
progressUpdate currentProgress PRZ

Wytyczne dotyczące plików ZIP ze statystykami

Statystyki możesz zaimportować naraz za pomocą pliku ZIP. Dokładne nazwy plików do użycia w pliku ZIP znajdziesz w tabeli:

Nazwa pliku Wymagany czy opcjonalny Akceptowane wartości
RepetitiveStatsConfig.csv Wymagane Metadane wielu zdarzeń.
ProgressionStatConfig.csv Wymagane Zadeklarowane zdarzenie i jego właściwości.
StatLocalizations.csv Opcjonalnie Zawiera tłumaczenia nazw i opisów osiągnięć.
Pliki ikon Wymagane Ikony w formacie PNG, JPEG lub JPG o wymiarach 512 x 512 pikseli.

Format pliku RepetitiveStatsConfig.csv

Plik CSV zawiera zadeklarowane zdarzenie i jego właściwości w postaci wartości rozdzielonych przecinkami w tej kolejności:

Stat ID, Event Name,    Property Name,  Aggregation,     Stat Display Name, Stat Description, Filter Property,  Filter Operator,    Filter Value,   Is Competitive, minLimit, maxLimit, Icon File Name, Sequence Number, Good value direction, unit

Jeśli nie chcesz używać warunku filtra, pozostaw komórkę pustą.

Przykładowa tabela
Identyfikator statystyki Nazwa zdarzenia Nazwa właściwości Agregacja Wyświetlana nazwa statystyki Stat Description Filtruj usługę (opcjonalnie) Filtr operatora (opcjonalnie) Wartość filtra (opcjonalnie) Is Competitive minLimit maxLimit Nazwa pliku ikony Numer sekwencyjny Kierunek dobrej ceny jednostka
1 matchCompleted czas trwania MAKS. Najdłuższy mecz w trybie przetrwania Oznacza czas przetrwania gracza w dowolnym meczu. isWinner = PRAWDA PRAWDA 0 50 stat1.png 1 Malejący s
2 matchCompleted isWinner COUNT Wygrane mecze Oznacza liczbę wygranych meczów. isWinner = PRAWDA PRAWDA 0 50 stat3.png 2 Rosnący
3 matchCompleted zabójstwa, SUMA Zabójstwa w pojedynkach Liczba zabójstw w pojedynkach matchType = „1:1” FAŁSZ stat4.png 4 Rosnący
4 itemCollected coinsAmount SUMA Łączna ilość zebranego złota Gracz zbiera monety podczas meczu weaponType = „sword” FAŁSZ stat2.png 3 Rosnący

Format pliku ProgressionStatConfig.csv

Plik CSV zawiera zadeklarowane zdarzenie i jego właściwości w postaci wartości rozdzielonych przecinkami w tej kolejności:

Stat ID, Stat Display Name, Stat Description, Icon File Name, Good value direction, unit

Statystyka postępów będzie wyświetlana jako pierwsza w profilu gracza.

Przykładowa tabela
Identyfikator statystyki Wyświetlana nazwa statystyki Opis statystyki Nazwa pliku ikony Kierunek dobrej wartości
5 Poziom Gracze zdobywają punkty XP, grając w mecze i awansując na kolejne poziomy. Level.png zwiększanie,

Format pliku StatLocalizations.csv

Plik CSV zawiera zadeklarowane zdarzenie i jego właściwości w postaci wartości rozdzielonych przecinkami w tej kolejności:

Stat ID, Stat Display Name, Language Code, Localized Stat Name, Localized Stat Description
Przykładowa tabela
Identyfikator statystyki Wyświetlana nazwa statystyki Language Code Localized Stat Name (UTF-8) Localized Stat Description (UTF-8) 1 Najdłuższy mecz w trybie przetrwania es Supervivencia más larga en partidos Esto denota el tiempo de supervivencia de una jugadora en cualquier partido. 1 Najdłuższy mecz w trybie przetrwania fr Survie du match le plus long Cela indique la durée de survie d'un joueur dans n'importe quel match. 4 Łączna ilość zebranego złota es Oro total recolectado La jugadora recoge monedas mientras juega en un partido 4 Łączna ilość zebranego złota fr Or total collecté Le joueur collecte des pièces en jouant un match

Planowanie schematu

Za pomocą interfejsu Game Stats API możesz wysyłać 2 rodzaje danych: elastyczne zdarzenia gracza i wstępnie zdefiniowane zdarzenie dotyczące statystyk postępów gracza. Poniższe przykłady pokazują, jak elastyczne zdarzenia wyglądają w różnych typach gier.

Elastyczne zdarzenia odtwarzacza

Wydarzenia związane z graczem są definiowane przez odrębne momenty w grze, ukończenie pętli rozgrywki lub kamienie milowe postępu.

  • Określ zdarzenia jako konkretne momenty w grze, ukończenie pętli gry lub kamienie milowe postępu:
    • Ukończenie pętli gry, np. ukończenie meczu lub biegu.
    • kamienie milowe postępu, np. postęp w odkrywaniu zapisanych obszarów lub ukończony poziom;
  • Dodaj właściwości, aby podać kontekst zdarzenia i jego wyników, np. numer poziomu, typ meczu, typ broni, liczbę broni, trafienia w głowę, zebrane monety, wynik meczu, czas okrążenia lub typ samochodu.
  • Wysyłaj zdarzenia w ramach sesji rozgrywki od razu po ich wystąpieniu. Na przykład wyślij zdarzenie ukończenia pętli gry natychmiast po jej zakończeniu.
Przykłady
Typ gry Etykieta zdarzenia Moment w grze / ukończenie wydarzenia związanego z postępami / ukończenie pętli gry Wynik Cechy
Liniowa gra logiczna Indie chapter_completed Ukończenie wydarzenia związanego z postępem Nie dotyczy Numer rozdziału, Nazwa rozdziału, Liczba prób, Liczba ekranów, Liczba ruchów, Treść rozdziału
screen_completed Ukończenie wydarzenia związanego z postępem Numer rozdziału, nazwa rozdziału, liczba prób, liczba ruchów, treść rozdziału
3D Endless runner run_completed Ukończenie pętli gry Zebrane monety, wynik Czas trwania biegu, monety zebrane za pomocą plecaka odrzutowego, dopalacz użyty na początku biegu, użyte deski surfingowe, użyte magnesy, użyte skocznie, użyte plecaki odrzutowe
RPG akcji w otwartym świecie areaExplorationProgress Ukończenie wydarzenia związanego z postępem Pokonani wrogowie, zebrane eliksiry Numer obszaru, nazwa obszaru, postęp w procentach
questCompleted Ukończenie pętli gry Nie dotyczy Nazwa zadania
weaponUnlocked Moment w grze Nie dotyczy Nazwa broni, poziom broni
chestUnlocked Moment w grze Zebrana ruda ulepszająca
Prosta łamigłówka z dekoracyjną metą puzzleCompleted Ukończenie pętli rozgrywki / ukończenie wydarzenia związanego z postępami Zebrane monety, zebrane doładowania Liczba ruchów, czy prezent Butlera został wykorzystany? Rodzaj poziomu, numer poziomu, użyte wzmocnienia kolorów, użyte dynamity
cardsCollected Moment w grze karty z 1 gwiazdką, karty z 2 gwiazdkami, karty z 3 gwiazdkami, wszystkie karty. Numer albumu, nazwa albumu
Zręcznościowe wyścigi raceCompleted Ukończenie pętli gry Pozycja, użycie NOS, czas wyścigu Rodzaj wyścigu, ocena, użyty samochód
carUpgraded Moment w grze Ulepszona cecha samochodu, stary poziom / wartość, nowy poziom / wartość Typ samochodu, bieżący poziom garażu
Strzelanka TPP typu battle royale matchCompleted Ukończenie pętli gry Eliminacje, strzały w głowę, wartość honoru Typ dopasowania, czas przeżycia
Symulacja zarządzania e-sportem matchCompleted Ukończenie pętli gry Wynik, zdobyte bramki, bramki Nazwa drużyny przeciwnika, nazwa drużyny grającej
trainingCompleted Moment w grze Drills done, teamplay_form_attack, teamplay_form_defense, teamplay_form_possession, teamplay_form_condition

progressUpdate zdarzenie

Jeśli w grze występuje podstawowy mechanizm postępu, użyj tego zdarzenia, aby wysłać bieżące postępy gracza. Zdarzenie ma 1 wstępnie zdefiniowaną właściwość o nazwie „currentProgress” typu INT lub STRING. Wysyłaj wartość bieżącego postępu za pomocą tej właściwości, ponieważ jest to jedyna wartość, która pojawia się w interfejsie statystyk gier w profilu gracza.

Gracze mogą porównywać swoje profile na podstawie bieżących postępów w grze, dlatego ważne jest, aby po pierwszej integracji nie było opóźnień w uzyskiwaniu wartości bieżących postępów. Aby przedstawić graczom aktualny postęp, należy wysyłać zdarzenie progressUpdate na początku każdej sesji gry, a także za każdym razem, gdy nastąpi zmiana aktualnego postępu.

Przykłady
Typ gry Właściwość currentProgress zdarzenia `progressUpdate`
Liniowa gra logiczna Bieżący numer rozdziału lub poziom
3d Endless Runner Rekord, aktualne saldo dopalaczy
Rekreacyjne gry logiczne Numer bieżącego poziomu, liczba zwycięstw za pierwszym razem, liczba ukończonych obszarów, liczba ukończonych kolekcji
Zręcznościowe wyścigi Numer obecnego poziomu, saldo waluty
RPG akcji w otwartym świecie Obecna ranga postaci, obecny poziom
Strzelanka TPP Numer bieżącego poziomu
Symulacje e-sportowe Numer poziomu menedżera, numer poziomu klubu

Szczegóły integracji

Punkty końcowe interfejsu API i pakiet SDK są dostępne w celu uzyskania opinii. Od lipca 2026 r. będą ogólnie dostępne. Zobacz oś czasu

W tej sekcji pokazujemy, jak tworzyć zdarzenia i wysyłać je w ramach integracji po stronie klienta i po stronie serwera.

Kiedy należy wysyłać dane

Elastyczne zdarzenia reprezentują działania w grze związane z ukończeniem pętli gry lub konkretnymi momentami w grze. Przesyłaj te zdarzenia od razu po ich wystąpieniu. Na przykład prześlij zdarzenie ukończenia pętli rozgrywki od razu po jej zakończeniu.

progressUpdate Event reprezentuje bieżący poziom postępu gracza. Dane dotyczące statystyk postępów należy przesyłać za pomocą tego zdarzenia w tych sytuacjach:

  1. Gdy tylko nastąpi zmiana bieżącego postępu, natychmiast wyślij najnowszą wartość.
  2. Za każdym razem, gdy gracz uruchamia grę, aby zapewnić stałą obecność tej statystyki.

Ścieżki integracji

Istnieją 2 ścieżki integracji: klient i serwer-serwer.

Integracja serwer-serwer

Publiczny punkt końcowy interfejsu API umożliwia wysyłanie zdarzeń w ładunku żądania przy użyciu tych konfiguracji:

Parametry ścieżki
Parametr Typ danych Opis
playerId Ciąg znaków Identyfikator gracza w usługach gier Play.

Autoryzacja i uwierzytelnianie

Wywołania interfejsu API między serwerami są zgodne ze standardowymi wytycznymi dotyczącymi dostępu po stronie serwera do usług gier Play przy użyciu protokołu OAuth 2.0. Żądania muszą zawierać token okaziciela autoryzowany w zakresie https://www.googleapis.com/auth/games.

Flexible Events: treść żądania

BatchRecordEventsRequest

{
  "packageName": string,
  "requestTime": string,
  "events": [
    {
      object (PlayerGameEvent)
    }
  ]
}

PlayerGameEvent

{
  "eventId": string,
  "eventName": string,
  "eventProperties": {
    // keys (e.g., "matchId", "score")
    "": {
       object (PropertyValue)
    }
  },
  "eventTime": string
}

PropertyValue

// ONE of the following fields will be present:
{
// 64-bit integer formatted as a string to prevent data loss
"intValue": "string",
// Double-precision floating point number.
"doubleValue": number,
// Standard UTF-8 text string.
"stringValue": "string",
// Boolean value (true or false).
"boolValue": boolean,
// RFC 3339 formatted timestamp string (e.g., "2026-01-01T18:00:00Z").
"timestampValue": "string",
// Duration in seconds suffixed with 's' (e.g., "240s" or "3.5s").
"durationValue": "string"
}

progressUpdate event: Request Body

BatchRecordEventsRequest

{
  "packageName": string,
  "requestTime": string,
  "events": [
    {
      object (PlayerGameEvent)
    }
  ]
}

PlayerGameEvent – progressUpdate

{
  "eventId": string,
  "eventName": "progressUpdate",
  "eventProperties": {
    "": {
       object (PropertyValue)
// Must have at least one property "currentProgress"  of  type  INT  or  STRING
    }
  },
  "eventTime": string
}

Treść odpowiedzi

Jeśli operacja się uda, zwracany jest kod stanu HTTP 200 OK z pustym obiektem JSON.

Przykładowa treść żądania

Elastyczne zdarzenie: PlayerGameEvent

{
  "packageName": "com.example.awesomegame",//Your package name
  "requestTime": "2026-01-01T18:00:00Z",
  "events": [
    {
      "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID for deduplication //and idempotency
      "eventName": "matchCompleted",
      "eventTime": "2026-01-01T17:00:00Z",
      "eventProperties": {
        "matchId": {
          "stringValue": "Match_A"
        },
        "gameMode": {
          "stringValue": "Battle_B"
        },
        "locationId": {
          "stringValue": "Location_XYZ"
        },
        "playerElimination": {
          "intValue": 2
        },
        "survivalTimeSeconds": {
          "durationValue": "240s"
        },
        "isWinner": {
          "boolValue": true
        }
      }
    }
  ]
}

progressUpdate wydarzenie

{
  "packageName": "com.example.awesomegame",//Your package name
  "requestTime": "2026-01-01T18:00:00Z",
  "events": [
    {
      "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID
      "eventName": "progressUpdate",
      "eventTime": "2026-01-01T17:00:00Z",
      "eventProperties": {
        "currentProgress": {
          "intValue": 52
        },
//Add more properties as per your requirement
      }
    }
  ]
}

Integracja po stronie klienta

Integracja po stronie klienta będzie dostępna za pomocą pakietów SDK Unity, Java i C++.

Integracja po stronie klienta w przypadku PlayerGameEvent polega na utworzeniu obiektu zdarzenia w języku Java lub Csharp (w zależności od pakietu SDK) w punktach wyzwalania i wysłaniu go za pomocą funkcji przesyłania udostępnianych przez pakiet SDK.

Podobnie w przypadku zdarzenia progressUpdate zarejestruj zaktualizowany postęp za pomocą właściwości currentProgress z dodatkowymi zdefiniowanymi właściwościami i wyślij je za pomocą funkcji przesyłania udostępnianych przez pakiet SDK.

Wydarzenia

Integracja po stronie klienta w przypadku PlayerGameEvent obejmuje:

Tworzenie elastycznego zdarzenia w grze

Java


// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("matchCompleted")
  .addProperty("matchId", "Match_A")
  .addProperty("gameMode", "Battle_B")
  .addProperty("mapId", "Location_XYZ")
  .addProperty("isWinner", true)
  .addProperty("survivalTimeSeconds", "240s")
  .addProperty("playerElimination", 2)
  .build();

List events = new ArrayList<>();
// ... populate list ...

Unity


// Build the PlayerGameEvent
var playerEvent = new PlayerGameEvent.Builder("matchCompleted")
   .AddProperty("matchId", "Match_A")
   .AddProperty("gameMode", "Battle_B")
   .AddProperty("mapId", "Location_XYZ")
   .AddProperty("isWinner", true)
   .AddProperty("survivalTimeSeconds", "240s")
   .AddProperty("playerElimination", 2)
   .Build();
var events = new List();
// ... populate list ...

C++


// Build the PlayerGameEvent
PgsPlayerGameEvent* player_event = PgsPlayerGameEvent_create("matchCompleted");
if (player_event != nullptr) {
   PgsPlayerGameEvent_putString(player_event, "matchId", "Match_A");
   PgsPlayerGameEvent_putString(player_event, "gameMode", "Battle_B");
   PgsPlayerGameEvent_putString(player_event, "mapId", "Location_XYZ");
   PgsPlayerGameEvent_putBoolean(player_event, "isWinner", true);
   PgsPlayerGameEvent_putString(player_event, "survivalTimeSeconds", "240s");
   PgsPlayerGameEvent_putLong(player_event, "playerElimination", 2);
}
Tworzenie progressUpdate zdarzenia w grze odtwarzacza

Java


// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("progressUpdate")
  .addProperty("currentProgress", 52)
  // Add other properties if needed
  .build();

List events = new ArrayList<>();
// ... populate list ...

Unity


// Build the PlayerGameEvent
var progressEvent = new PlayerGameEvent.Builder("progressUpdate")
   .AddProperty("currentProgress", 52)
   // Add other properties if needed
   .Build();
var events = new List();
// ... populate list ...

C++


PgsPlayerGameEvent* progress_event = PgsPlayerGameEvent_create("progressUpdate");
if (progress_event != nullptr) {
   PgsPlayerGameEvent_putLong(progress_event, "currentProgress", 52);
}
Zarejestruj wydarzenie i prześlij je

Java


// Buffers the event locally.
client.recordEvent(event);

// Buffers the events locally, (List version)
client.recordEvents(events);

// This submits the events to PGS
client.requestEventsUpload();

Unity


// Buffers the event locally.
PlayGamesPlatform.Instance.RecordEvent(playerEvent);

// Buffers the events locally, (List version)
PlayGamesPlatform.Instance.RecordEvents(events);

// This submits the events to PGS
PlayGamesPlatform.Instance.RequestEventsUpload();

C++


// Record the event
PgsGameStatsClient_recordEvent(client, player_event);

// This submits the events to PGS
PgsGameStatsClient_requestEventsUpload(client);

// Clean up handle to avoid leaks
PgsPlayerGameEvent_destroy(player_event);

// Clean up client handle when PGS operations are finished
PgsGameStatsClient_destroy(client);

Oś czasu

Data Integracja z interfejsem Game Stats API Konfiguracja statystyk gry
Czerwiec 2026 r.
  • Deweloperzy mogą zacząć planować modele danych
Niedostępne
Lipiec 2026 r.
  • Interfejs API jest ogólnie dostępny dla wszystkich deweloperów, którzy mogą rozpocząć integrację.
  • Dane przychodzące są weryfikowane pod kątem podanego schematu i konfiguracji.
  • Interfejs API konfiguracji do udostępniania schematu zdarzeń i konfiguracji statystyk
Sierpień 2026 r. Nie dotyczy
  • Wprowadziliśmy nową wersję Konsoli Play z obsługą przesyłania plików CSV
Wrzesień 2026 r. Nie dotyczy
  • Gracze zaczynają widzieć statystyki gier na swoim profilu gracza