Менеджер игрока
Менеджер управляет состоянием игрока и его синхронизацией с сервером. После инициализации SDK запускается процесс синхронизации игрока с сервером. По завершении будет вызвано событие ready
.
Обзор
Свойства менеджера игрока FREE:
- JavaScript
- Unity
// Игрок авторизован
gp.player.isLoggedIn;
// Игрок использует один из способов входа (авторизация, секретный код)
gp.player.hasAnyCredentials;
// Промис ожидания игрока
gp.player.ready;
// Игрок авторизован
GP_Player.IsLoggedIn();
// Игрок использует один из способов входа (кука, авторизация, секретный код)
GP_Player.HasAnyCredentials();
Инициализация игрока проходит автоматически, вы можете дождаться готовности:
- JavaScript
- Unity
await gp.player.ready;
// Игрок готов
// Игрок готов
gp.player.on('ready', () => {});
Инициализация в Unity происходит до начала игры
Синхронизация
+0-1 RequestПосле изменений в игроке их можно отправить на сервер и сохранить локально на устройстве. Рекомендуется синхронизировать игрока после завершения уровня и получения наград, а также сразу после важного действия, например покупки предмета.
- JavaScript
- Unity
// Синхронизовать, возвращает промис
gp.player.sync();
// Перезаписать персонажа на сервере (локальный в приоритете)
gp.player.sync({ override: true });
// Синхронизировать данные с выбранным хранилищем
// "preferred" - указанное хранилище в панели управления
// "cloud" - наше облако + облако площадки + локальные хранилища
// "platform" - облако площадки + локальные хранилища
// "local" - локальные хранилища
gp.player.sync({ storage: 'preferred' });
// Игрок синхронизирован (success === true)
gp.player.on('sync', (success) => {});
// Синхронизовать игрока
GP_Player.Sync();
// Перезаписать персонажа на сервере (локальный в приоритете)
GP_Player.Sync(forceOverride: true);
// Синхронизировать данные с выбранным хранилищем
// "preferred" - указанное хранилище в панели управления
// "cloud" - наше облако + облако площадки + локальные хранилища
// "platform" - облако площадки + локальные хранилища
// "local" - локальные хранилища
GP_Player.Sync(storage: SyncStorageType.preferred);
Ограничение на сохраняемые данные: не более 1 МБ
на игрока.
Синхронизация с выбранным хранилищем
Вы можете сохранять прогресс как в облако GamePush, так и локально и в облако площадки.
Типы хранилищ:
preferred +0-1 Request - Предпочитаемое хранилище, определяется в панели управления.
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 варианта:
- Установить хранилище данных в панели управления для нужной площадки. В этом случае, при обычном вызове синхронизации, все данные будут сохраняться в указанное в панели управления хранилище.
- При синхронизации в коде указать хранилище данных:
- JavaScript
- Unity
// По-умолчанию, синхронизировать с хранилищем, указанным в панели управления
gp.player.sync({ storage: 'preferred' });
// Синхронизировать с облаком GamePush
gp.player.sync({ storage: 'cloud' });
// Синхронизировать с облаком площадки
gp.player.sync({ storage: 'platform' });
// Синхронизировать с локальным хранилищем
gp.player.sync({ storage: 'local' });
// По-умолчанию, синхронизировать с хранилищем, указанным в панели управления
GP_Player.Sync(SyncStorageType.preferred);
// Синхронизировать с облаком GamePush
GP_Player.Sync(SyncStorageType.cloud);
// Синхронизировать с облаком площадки
GP_Player.Sync(SyncStorageType.platform);
// Синхронизировать с локальным хранилищем
GP_Player.Sync(SyncStorageType.local);
Автоматическая синхронизация
Для упрощения контроля синхронизации вы можете включить автоматическую синхронизацию в нужные вам хранилища. Сохранение будет происходить только, если поля игрока были изменены.
- JavaScript
- Unity
// Включить синхронизацию
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',
});
// Включить синхронизацию
GP_Player.EnableAutoSync(
// частота синхронизации в секундах
interval: 30,
// По-умолчанию, синхронизировать с хранилищем, указанным в панели управления
storage: SyncStorageType.preferred
);
// Выключить синхронизацию
GP_Player.DisableAutoSync(storage: SyncStorageType.preferred);
// Примеры:
// Включить синхронизацию в локальное хранилище каждые 5 секунд
GP_Player.EnableAutoSync(
interval: 5,
storage: SyncStorageType.local
);
// Синхронизировать с облаком GamePush каждые 30 секунд
GP_Player.EnableAutoSync(
interval: 30,
storage: SyncStorageType.cloud
);
Дополнительная синхронизация публичных полей в облако
В случае, когда вам достаточно локального хранилища или облака площадки, но при этом у вас есть социальные механики, например, лидерборды, вы можете в настройках площадки установить дополнительно галку "При синхронизации сохранять публичные поля в облако".
Так вы сможете продолжать сохранять в предпочитаемое хранилище и как только обновите публичное поле - оно сохранится в нашем облаке при следующем вызове метода синхронизации. Сохранения в облако не будет, пока публичное поле не будет изменено.
Загрузка
+1 RequestВы можете принудительно загрузить игрока с сервера
(перезаписав локального).
- JavaScript
- Unity
// Загрузить, возвращает промис
gp.player.load();
// Игрок загружен (success === true)
gp.player.on('load', (success) => {});
// Загрузить игрока
GP_Player.Load();
Вход
+0-1 RequestПоказать оверлей с возможностями входа. Сейчас это платформенный вход, если поддерживается, и вход по секретному коду.
- JavaScript
- Unity
// Войти, возвращает промис
gp.player.login();
// Игрок вошел (success === true)
gp.player.on('login', (success) => {});
// Показать оверлей входа
GP_Player.Login();
// Подписка на события
private void OnEnable()
{
GP_Player.OnLoginComplete += OnLoginComplete;
GP_Player.OnLoginError += OnLoginError;
}
// Отписка от событий
private void OnDisable()
{
GP_Player.OnLoginComplete -= OnLoginComplete;
GP_Player.OnLoginError -= OnLoginError;
}
// Обработка событий
private void OnLoginComplete()
{
Debug.Log("LoginComplete");
}
// Обработка событий
private void OnLoginError()
{
Debug.Log("LoginError");
}
Выход
+0-1 RequestРазлогинить игрока. Если метод выхода поддерживается площадкой.
- JavaScript
- Unity
// Выйти, возвращает промис
gp.player.logout();
// Игрок вышел (success === true)
gp.player.on('logout', (success) => {});
// Выйти
GP_Player.Logout();
// Подписка на события
private void OnEnable()
{
GP_Player.OnLogoutComplete += OnLogoutComplete;
GP_Player.OnLogoutError += OnLogoutError;
}
// Отписка от событий
private void OnDisable()
{
GP_Player.OnLogoutComplete -= OnLogoutComplete;
GP_Player.OnLogoutError -= OnLogoutError;
}
// Обработка событий
private void OnLogoutComplete()
{
Debug.Log("LogoutComplete");
}
// Обработка событий
private void OnLogoutError()
{
Debug.Log("LogoutError");
}
Получение полей
+1 RequestЧто такое поля игрока смотрите в разделе cостояние игрока. Получить поля игрока можно следующим методом:
- JavaScript
- Unity
// Получить список полей, возвращает промис
gp.player.fetchFields();
// Поля получены (success === true)
gp.player.on('fetchFields', (success) => {});
// Получить список полей
private Fetch() => GP_Player.FetchFields(OnFetchFields);
// Поля получены
private OnFetchFields(List<PlayerFetchFieldsData> data){
}
Уведомление о других окнах
+1 RequestЕсли игрок откроет другое окно с игрой одновременно с другими открытыми окнами игры - все другие окна получат event:connect
. Вы можете подписаться на него следующим образом:
- JavaScript
- Unity
// срабатывает, когда игрок открывает другое окно с игрой
gp.on('event:connect', () => {});
//Подписка на событие
private void OnEnable()
{
GP_Player.OnConnect += OnConnect;
}
//Отписка от события
private void OnDisable()
{
GP_Player.OnConnect -= OnConnect;
}
//Обработка события
private void OnConnect()
{
Debug.Log("Connect");
}
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!