В этом документе описывается, как использовать статистику игр Google Play Games Services в играх на C++. Предполагается, что ваш проект настроен, как описано в разделе «Настройка Google Play Games Services» . API статистики игр можно найти в PgsGameStatsClient .
Прежде чем начать
Если вы еще этого не сделали, вам может быть полезно повторить основные понятия игровой статистики .
Прежде чем начать писать код, используя API игровой статистики:
Следуйте инструкциям по установке и настройке вашего приложения для использования сервисов Play Games, приведенным в руководстве «Настройка сервисов Google Play Games» .
Настройте желаемые игровые характеристики, следуя инструкциям в руководстве Google Play Console .
Получить клиент игровой статистики
Для начала использования API достижений ваша игра должна сначала получить объект PgsGameStatsClient . Это можно сделать, вызвав метод PgsPlayerGameEvent_create и передав в него объект Activity.
Интеграция на стороне клиента
Интеграция PlayerGameEvent на стороне клиента предполагает создание объекта события в C++ SDK в точках срабатывания и отправку данных с использованием функций загрузки, предоставляемых SDK.
Аналогично, для события progressUpdate запишите обновленный прогресс, используя свойство currentProgress с дополнительными определенными свойствами, и отправьте их с помощью функций загрузки, предоставляемых SDK.
События
Интеграция PlayerGameEvent на стороне клиента включает в себя:
Событие «Создать игрока»
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_putLong(player_event, "playerElimination", 2);
}
Обновление progressUpdate сборки. Обновление игрового события игрока.
C++
PgsPlayerGameEvent* progress_event = PgsPlayerGameEvent_create("progressUpdate");
if (progress_event != nullptr) {
PgsPlayerGameEvent_putLong(progress_event, "currentProgress", 52);
}
Запись события и загрузка
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);