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:
- Zdarzenie jest reprezentowane przez konkretne działanie gracza, takie jak ukończenie meczu, biegu, odblokowanie skrzyni lub zapisanie postępów w danym obszarze.
- 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.
- Wysyłaj wszystkie zdefiniowane zdarzenia za pomocą integracji po stronie klienta lub serwera.
Więcej informacji znajdziesz w przykładach elastycznych zdarzeń i zdarzenia
- 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ść
currentProgressjest 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.
- Plik CSV z powtarzającymi się statystykami:
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:
- Gdy tylko nastąpi zmiana bieżącego postępu, natychmiast wyślij najnowszą wartość.
- 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. |
|
Niedostępne |
| Lipiec 2026 r. |
|
|
| Sierpień 2026 r. | Nie dotyczy |
|
| Wrzesień 2026 r. | Nie dotyczy |
|