Перейти к основному содержимому
🎉 GP CONF 2026: Конференция о рынке WEB-игр 👾 23 сентября | Подробнее

Менеджер игрока

Менеджер управляет состоянием игрока и его синхронизацией с сервером. После инициализации GamePush SDK запускается процесс синхронизации игрока с сервером. По завершении будет вызвано событие ready.

Обзор​

Свойства менеджера игрока FREE:

// Игрок авторизован
gp.player.isLoggedIn;
// Игрок использует один из способов входа (авторизация, секретный код)
gp.player.hasAnyCredentials;
// Промис ожидания игрока
gp.player.ready;

Инициализация игрока проходит автоматически, вы можете дождаться готовности:

await gp.player.ready;
// Игрок готов

// Игрок готов
gp.player.on('ready', () => {});

Синхронизация​

+0-1 Request

После изменений в игроке их можно отправить на сервер и сохранить локально на устройстве. Рекомендуется синхронизировать игрока после завершения уровня и получения наград, а также сразу после важного действия, например покупки предмета.

// Синхронизовать, возвращает промис
gp.player.sync();

// Перезаписать персонажа на сервере (локальный в приоритете)
gp.player.sync({ override: true });

// Синхронизировать данные с выбранным хранилищем
// "preferred" - указанное хранилище в панели управления
// "cloud" - наше облако + облако площадки + локальные хранилища
// "platform" - облако площадки + локальные хранилища
// "local" - локальные хранилища
gp.player.sync({ storage: 'preferred' });

// Игрок синхронизирован (success === true)
gp.player.on('sync', (success) => {});
tip

Ограничение на сохраняемые данные: не более 1 МБ на игрока.

Синхронизация с выбранным хранилищем​

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

Типы хранилищ:

  • preferred +0-1 Request - Предпочитаемое хранилище, определяется в панели управления GamePush.

  • cloud +1 Request - Облачное хранилище GamePush. В момент сохранения мы также реплицируем данные в облачное хранилище площадки и локальные хранилища для максимальной надежности.

  • platform FREE - Облачное хранилище площадки.

    • ✅Яндекс.Игры
    • ✅CrazyGames
    • Площадки без поддержки
    • ❌GamePix
    • ❌GameDistribution
    • ❌GameMonetize
    • ❌Одноклассники
    • ❌SmartMarket
    • ❌Вконтакте
    • ❌VK Play
    • ❌WG Playground
    • ❌Kongregate
    • ❌PlayDeck
    • ❌Google Play
    • ❌Telegram
    • ❌билайн
    • ❌Фотострана
    • ❌Y8
    • ❌CoolMathGames
    • ❌Android (альтернативные сторы)
    • ❌Web (свои сайты)
    • ❌Пикабу Игры
    • ❌Партнерские площадки
    • ❌Мой Мир
  • local FREE - Локальные хранилища, параллельное сохранение в несколько типов локальных хранилищ для надежности без потерь прогресса на iOS.

    • LocalStorage - стандартное локальное хранилище.
    • IndexedDB - база данных браузера.
    • SafeStorage - безопасное хранилище, предоставляемое площадкой.
      • ✅Яндекс.Игры
      • ✅GamePix
      • ✅CrazyGames
      • ✅Web (свои сайты)
      • Площадки без поддержки
      • ❌GameDistribution
      • ❌GameMonetize
      • ❌Одноклассники
      • ❌SmartMarket
      • ❌Вконтакте
      • ❌VK Play
      • ❌WG Playground
      • ❌Kongregate
      • ❌PlayDeck
      • ❌Google Play
      • ❌Telegram
      • ❌билайн
      • ❌Фотострана
      • ❌Y8
      • ❌CoolMathGames
      • ❌Android (альтернативные сторы)
      • ❌Пикабу Игры
      • ❌Партнерские площадки
      • ❌Мой Мир
  • Для реализации сохранений в нужное хранилище есть 2 варианта:

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

    1. При синхронизации в коде указать хранилище данных:
    // По-умолчанию, синхронизировать с хранилищем, указанным в панели управления
    gp.player.sync({ storage: 'preferred' });

    // Синхронизировать с облаком GamePush
    gp.player.sync({ storage: 'cloud' });

    // Синхронизировать с облаком площадки
    gp.player.sync({ storage: 'platform' });

    // Синхронизировать с локальным хранилищем
    gp.player.sync({ storage: 'local' });

    Автоматическая синхронизация​

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

    // Включить синхронизацию
    gp.player.enableAutoSync({
    // частота синхронизации в секундах
    interval: 30,
    // По-умолчанию, синхронизировать с хранилищем, указанным в панели управления
    storage: 'preferred',
    });

    // Выключить синхронизацию
    gp.player.disableAutoSync({ storage: 'preferred' });

    // Примеры:

    // Включить синхронизацию в локальное хранилище каждые 5 секунд
    gp.player.enableAutoSync({
    interval: 5,
    storage: 'local',
    });

    // Синхронизировать с облаком GamePush каждые 30 секунд
    gp.player.enableAutoSync({
    interval: 30,
    storage: 'cloud',
    });

    Дополнительная синхронизация публичных полей в облако​

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

    Так вы сможете продолжать сохранять в предпочитаемое хранилище и как только обновите публичное поле - оно сохранится в нашем облаке при следующем вызове метода синхронизации. Сохранения в облако не будет, пока публичное поле не будет изменено.

    Загрузка​

    +1 Request

    Вы можете принудительно загрузить игрока с сервера (перезаписав локального).

    // Загрузить, возвращает промис
    gp.player.load();

    // Игрок загружен (success === true)
    gp.player.on('load', (success) => {});

    Вход​

    +0-1 Request

    Показать оверлей с возможностями входа. Сейчас это платформенный вход, если поддерживается, и вход по секретному коду.

    // Войти, возвращает промис
    gp.player.login();

    // Игрок вошел (success === true)
    gp.player.on('login', (success) => {});
    Пример входа

    Выход​

    +0-1 Request

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

    // Выйти, возвращает промис
    gp.player.logout();

    // Игрок вышел (success === true)
    gp.player.on('logout', (success) => {});
    Пример выхода

    Получение полей​

    +1 Request

    Что такое поля игрока смотрите в разделе cостояние игрока. Получить поля игрока можно следующим методом:

    // Получить список полей, возвращает промис
    gp.player.fetchFields();

    // Поля получены (success === true)
    gp.player.on('fetchFields', (success) => {});

    Уведомление о других окнах​

    +1 Request

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

    // срабатывает, когда игрок открывает другое окно с игрой
    gp.on('event:connect', () => {});

    Оставайтесь на связи​

    С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.

    Сообщество GamePush в Telegram: @gs_community.

    Для ваших обращений e-mail: official@gamepush.com

    Желаем вам успехов!