Перейти к основному содержимому

Хранилище

Обзор​

Модуль позволяет работать с локальными хранилищами и облачными хранилищами площадок.

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

  • 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 (альтернативные сторы)
      • ❌Пикабу Игры
      • ❌Партнерские площадки
      • ❌Мой Мир
  • Вы можете в любой момент переключаться между типами хранилищ. Умолчательное значение - platform.

    // Установить тип хранилища - облако площадки + локальные хранилища
    gp.storage.setStorage('platform');

    // Установить тип хранилища - локальные хранилища
    gp.storage.setStorage('local');

    Контекстное хранилище​

    FREE

    По-умолчанию все данные хранятся в контексте игрока. Это позволяет хранить разные данные для разных игроков и площадок.

    Контекст состоит из:

    • ID проекта
    • Тип площадки
    • Тестовая / боевая версия сайта
    • ID игрока на площадке

    Так мы можем разделять данные для разных площадок, даже используя один домен. И разделять эти данные между игроками. Вы можете хранить отдельно данные гостя и данные авторизованных игроков.

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

    tip

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

    Установить значение​

    // Установить значение
    await gp.storage.set('key', 'value');
    // Установить число
    await gp.storage.set('gold', 1000);
    // Установить булевое значение
    await gp.storage.set('vip', true);

    // Установить любой тип данных
    await gp.storage.set('progress', {
    class: 'warrior',
    level: 5,
    gold: 1000,
    missions: [1, 5, 8],
    });

    События при установке значения

    // Значение установлено
    gp.storage.on('set', ({ key, value }) => {});

    Получить значение​

    Получение значений также ассинхронно.

    tip

    Если данных нет, хранилище вернет null.

    // Получить значение
    const value = await gp.storage.get('key');
    // Получить число
    const gold = await gp.storage.get('gold');
    // Получить булевое значение
    const vip = await gp.storage.get('vip');

    // Получить любой тип данных
    const progress = await gp.storage.get('progress');
    // progress.class
    // progress.missions[0]

    События при получении значения

    // Значение получено
    gp.storage.on('get', ({ key, value }) => {});

    Глобальное хранилище​

    FREE

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

    Установить значение​

    // Установить значение
    await gp.storage.setGlobal('key', 'value');
    // Установить число
    await gp.storage.setGlobal('gold', 1000);
    // Установить булевое значение
    await gp.storage.setGlobal('vip', true);

    // Установить любой тип данных
    await gp.storage.setGlobal('progress', {
    class: 'warrior',
    level: 5,
    gold: 1000,
    missions: [1, 5, 8],
    });

    События при установке значения

    // Значение установлено
    gp.storage.on('set:global', ({ key, value }) => {});

    Получить значение​

    Получение значений также ассинхронно.

    tip

    Если данных нет, хранилище вернет null.

    // Получить значение
    const value = await gp.storage.getGlobal('key');
    // Получить число
    const gold = await gp.storage.getGlobal('gold');
    // Получить булевое значение
    const vip = await gp.storage.getGlobal('vip');

    // Получить любой тип данных
    const progress = await gp.storage.getGlobal('progress');
    // progress.class
    // progress.missions[0]

    События при получении значения

    // Значение получено
    gp.storage.on('get:global', ({ key, value }) => {});

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

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

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

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

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