Добавление событий в вашу игру

В этом руководстве показано, как использовать службу Events в приложении C++.

Прежде чем вы начнете

Если вы еще этого не сделали, вам может быть полезно ознакомиться с концептами игры событий .

Чтобы настроить среду разработки C++ для использования службы Events, следуйте инструкциям в руководстве Начало работы с C++ . Вы можете загрузить SDK C++ для сервисов Play Games со страницы загрузок SDK .

Прежде чем ваша игра сможет получить доступ к событиям, вы должны сначала определить их в консоли Google Play .

Отправка события

Вы можете добавить код в свою игру, чтобы уведомлять службу событий всякий раз, когда происходит событие, представляющее интерес для вашей игры. Примеры событий, которые вы можете зафиксировать в своей игре: убийство врагов, исследование или возвращение в различные игровые регионы или приобретение внутриигровых предметов. Как правило, вы должны вызвать метод Increment в диспетчере событий, чтобы увеличить счетчик события на 1 каждый раз, когда игрок выполняет действие, связанное с событием (например, «Убил одного монстра»).

В следующем примере показано, как можно отправить обновленный счетчик событий в службу событий.

  // Increment the event count when player performs the 'Attack blue
  // monster' action.
  game_services_->Events().Increment(BLUE_MONSTER_EVENT_ID);

Получение событий

Чтобы получить текущее значение счетчика, хранящееся на серверах Google для определенного события, вызовите один из методов Fetch* . Вы можете сделать это, например, если хотите показать внутриигровую статистику игрока или прогресс из пользовательского пользовательского интерфейса в вашей игре.

В следующем примере показано, как вы можете получать и регистрировать данные о событиях в своей игре.

  // Log Events details.
  LogI("---- Showing Event Counts -----");
  gpg::EventManager::FetchAllCallback callback =
      [](gpg::EventManager::FetchAllResponse const &response) {
    for (auto i : response.data) {
      gpg::Event const &event = i.second;
      LogI("Event name: %s  count: %d", event.Name().c_str(),
           event.Count());
    }
  };
  game_services_->Events().FetchAll(callback);