Документация SDK
Интегрируйте вашу HTML5-игру с платформой F-Fest для доступа к сохранениям, ачивкам и многому другому.
1. Интеграция
Платформа автоматически внедряет загрузчик SDK в вашу игру. Вам не нужно ничего подключать вручную. Просто убедитесь, что в вашем index.html есть тег <head> или <body>.
После загрузки SDK будет доступен глобальный объект window.fFestSdk. Вся работа с SDK происходит через этот объект.
2. Инициализация
Прежде чем использовать любую функцию SDK, его необходимо инициализировать. Этот процесс асинхронный. Рекомендуется обернуть основной код вашей игры в функцию и вызывать её после успешной инициализации.
// Пример в вашем основном JS-файле
async function main() {
try {
const user = await window.fFestSdk.init();
console.log('SDK готов. Пользователь:', user.username);
// Здесь начинается ваша игра
startGame();
} catch (error) {
console.error('Ошибка инициализации SDK:', error);
// Показать ошибку игроку
showErrorScreen(error.message);
}
}
// Вызываем основную функцию
main();
3. Данные игрока
После инициализации вы можете получить информацию о текущем игроке.
fFestSdk.player.get()
Возвращает объект с данными игрока. Доступно только после init().
const player = window.fFestSdk.player.get();
if (player) {
console.log('ID игрока:', player.id);
console.log('Никнейм:', player.username);
}
4. Хранилище данных
Используйте хранилище для сохранения и загрузки прогресса игрока. Данные надежно шифруются и хранятся на сервере, привязанные к аккаунту игрока и вашей игре.
fFestSdk.storage.save(key, value)
Сохраняет данные. key — строка, value — любой JSON-сериализуемый объект.
const gameState = {
level: 5,
score: 12500,
inventory: ['sword', 'shield']
};
window.fFestSdk.storage.save('gameState', gameState)
.then(() => console.log('Игра сохранена!'))
.catch(err => console.error('Ошибка сохранения:', err));
fFestSdk.storage.load(key)
Загружает данные по ключу.
window.fFestSdk.storage.load('gameState')
.then(data => {
if (data) {
console.log('Загружены данные:', data);
// Применить загруженное состояние
} else {
console.log('Сохранений нет, начинаем новую игру.');
}
})
.catch(err => console.error('Ошибка загрузки:', err));
5. Достижения
Вы можете создавать и выдавать достижения игрокам. Ачивки создаются "на лету" при первом вызове.
fFestSdk.achievements.unlock(achievementData)
Открывает (и при необходимости создает) достижение.
| Параметр | Тип | Описание |
|---|---|---|
key | string | Уникальный ключ достижения в рамках вашей игры (например, 'FIRST_WIN'). |
name | string | Название достижения. |
description | string | Описание. |
iconMode | 'SVG' | 'FILE' | Режим иконки. 'SVG' для inline SVG, 'FILE' для пути к файлу. |
iconValue | string | Содержимое SVG или относительный путь к файлу иконки в архиве игры. |
window.fFestSdk.achievements.unlock({
key: 'TUTORIAL_COMPLETE',
name: 'Первые шаги',
description: 'Вы успешно завершили обучение.',
iconMode: 'SVG',
iconValue: '<svg viewBox="0 0 24 24">...</svg>'
}).then(result => {
if (result.newlyUnlocked) {
console.log('Новое достижение открыто!');
}
});
6. Учет времени в игре
Платформа автоматически отслеживает время, проведенное в игре, пока вкладка активна. Однако, для более точного учета (например, если в игре есть пауза), вы можете отправлять "хартбиты".
fFestSdk.heartbeat()
Сообщает серверу, что игрок активен. Рекомендуется вызывать раз в 10-15 секунд, когда игра не на паузе.
setInterval(() => {
if (!game.isPaused) {
window.fFestSdk.heartbeat();
}
}, 10000);
7. Турниры
Если ваша игра участвует в турнире, вы можете отправлять счет игрока на сервер.
fFestSdk.tournaments.submitScore(score)
Отправляет счет. score — число. Сервер автоматически засчитает его для активного турнира, если он есть для этой игры, и обновит только если новый счет больше предыдущего.
function onGameOver(finalScore) {
window.fFestSdk.tournaments.submitScore(finalScore)
.then(() => console.log('Счет отправлен!'))
.catch(err => console.error('Ошибка отправки счета:', err));
}
