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

Хранилище

Обзор

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

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

  • platform FREE - Облачное хранилище площадки + локальные хранилища (максимальная репликация).
    • Яндекс.Игры
    • CrazyGames
    • Площадки без поддержки
    • GamePix
    • GameDistribution
    • GameMonetize
    • Одноклассники
    • SmartMarket
    • Вконтакте
    • VK Play
    • WG Playground
    • Kongregate
    • PlayDeck
    • Google Play
    • Telegram
    • билайн
    • Фотострана
    • Android (альтернативные сторы)
    • Web (свои сайты)
  • local FREE - Локальные хранилища, параллельное сохранение в несколько типов локальных хранилищ для надежности без потерь прогресса на iOS.
    • LocalStorage - стандартное локальное хранилище.
    • IndexedDB - база данных браузера.
    • SafeStorage - безопасное хранилище, предоставляемое площадкой.
      • Яндекс.Игры
      • GamePix
      • CrazyGames
      • Web (свои сайты)
      • Площадки без поддержки
      • GameDistribution
      • GameMonetize
      • Одноклассники
      • SmartMarket
      • Вконтакте
      • VK Play
      • WG Playground
      • Kongregate
      • PlayDeck
      • Google Play
      • Telegram
      • билайн
      • Фотострана
      • 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: [email protected]

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