Gamico SDK
Один файл /sdk.js, промисный API. Объект SDK повторяет форму SDK Яндекс Игр, поэтому игры с Яндекса запускаются без изменений, а кросс-платформенные обёртки (GamePush, Playgama Bridge) подключают Gamico одним адаптером.
Быстрый старт
<!-- index.html -->
<script src="/sdk.js"></script>
<script>
(async () => {
const sdk = await Gamico.init();
const player = await sdk.getPlayer();
const save = await player.getData(); // { level: 3, coins: 120 }
sdk.features.LoadingAPI.ready();
function onLevelComplete() {
player.setData({ ...save, level: save.level + 1 }, true);
sdk.leaderboards.setScore('main', score);
sdk.adv.showFullscreenAdv({ callbacks: { onClose: startNextLevel } });
}
})();
</script>Локальная отладка
Откройте игру напрямую (не в iframe платформы) — SDK переключится в режим моков: сохранения в localStorage, реклама и покупки эмулируются. Каталог для моков можно задать через window.GAMICO_MOCK = { catalog: [...] }. Для теста в плеере платформы загрузите версию в кабинете и нажмите «Тест».
Методы
| Модуль | Вызов | Описание |
|---|---|---|
| Инициализация | const sdk = await Gamico.init({ signed? }) | Обязательно. Для игр с Яндекс Игр работает YaGames.init(). |
sdk.features.LoadingAPI.ready() | Игра загрузилась: снимает лоадер платформы, считается время загрузки. | |
sdk.features.GameplayAPI.start() / stop() | Разметка геймплея — во время игры платформа не покажет рекламу. | |
| Реклама | sdk.adv.showFullscreenAdv({ callbacks: { onOpen, onClose(wasShown), onError } }) | Полноэкранная реклама в паузах. Частоту ограничивает платформа (тихий старт 30 с, не чаще раза в 60 с). |
sdk.adv.showRewardedVideo({ callbacks: { onOpen, onRewarded, onClose, onError } }) | Реклама за награду, без ограничений частоты. Награду выдавайте в onRewarded. | |
sdk.adv.showBannerAdv() / hideBannerAdv() / getBannerAdvStatus() | Стики-баннер под игрой. | |
| Игрок | const player = await sdk.getPlayer() | getUniqueID(), getName(), getPhoto(size), getMode() — "lite" у гостя. |
await player.getData(keys?) / setData(data, flush) | Облачные сохранения, JSON до 200 КБ. Прогресс гостя переносится в аккаунт при входе. | |
player.getStats / setStats / incrementStats | Числовые счётчики. | |
await sdk.auth.openAuthDialog() | Окно входа. Бросает исключение, если игрок отказался. | |
| Покупки | const payments = await sdk.getPayments({ signed? }) | Товары заводятся в кабинете. |
await payments.getCatalog() | [{ id, title, description, imageURI, price: "49 ₽", priceValue, priceCurrencyCode }] | |
await payments.purchase({ id, developerPayload? }) | Окно оплаты (СБП, карта, SberPay). Возвращает { productID, purchaseToken, signature? }. | |
await payments.getPurchases() / consumePurchase(token) | Непотреблённые покупки: вызывайте при запуске и потребляйте расходуемые товары. | |
| Лидерборды | await sdk.leaderboards.setScore(name, score, extraData?) | Сохраняется лучший результат. Порядок (больше/меньше лучше) задаётся в кабинете. |
await sdk.leaderboards.getEntries(name, { quantityTop, includeUser, quantityAround }) | Топ и окружение игрока. Старый API getLeaderboards() тоже поддерживается. | |
await sdk.leaderboards.getPlayerEntry(name) | Результат и ранг игрока. | |
| Достижения | await sdk.achievements.unlock(code) / setProgress(code, value) / list() | Расширение Gamico. Показываются в профиле игрока. |
| Соцфункции | await sdk.social.share({ text }) | Нативное «Поделиться» или копирование ссылки на игру. |
| Ярлык | await sdk.shortcut.canShowPrompt() / showPrompt() | Добавить на главный экран (PWA). |
| Отзыв | await sdk.feedback.canReview() / requestReview() | Окно оценки игры (один раз на игрока). |
| Конфиг | await sdk.getFlags({ defaultFlags }) | Remote config из кабинета — без нового билда. |
| Прочее | sdk.serverTime(), sdk.environment, sdk.deviceInfo, sdk.on("game_api_pause" | "game_api_resume" | "auth_changed") | Пауза приходит при показе рекламы, оплате и сворачивании вкладки. |
Коды ошибок
AUTH_REQUIRED, PURCHASE_CANCELED, PRODUCT_NOT_FOUND, ALREADY_OWNED, ADV_RATE_LIMITED, LEADERBOARD_NOT_FOUND, SCORE_OUT_OF_RANGE, DATA_TOO_LARGE, METHOD_NOT_FOUND.
Серверный API
Для игр со своим бэкендом: проверка покупок и подписей по секретному ключу из вкладки «Интеграция».
GET /api/server/v1/games/{gameId}/purchases/{purchaseToken} X-Api-Key: <ключ>
POST /api/server/v1/games/{gameId}/verify-signature { "signature": "..." }Требования к билду
- Zip с
index.htmlв корне, до 250 МБ и 1 500 файлов (рекомендуем до 50 МБ для мобильных). - Подключён
/sdk.jsи вызываетсяLoadingAPI.ready(). - Реклама — только в паузах; никаких мискликов и рекламы во время геймплея.
- Внешние скрипты — только с проверенных доменов (остальные проверяет модератор).