Публикация игры на площадку Яндекс Игры
В этом туториале вы подготовите игру с SDK GamePush, подключите площадку Яндекс Игры, заполните черновик в консоли разработчика, отправите игру на модерацию и при желании передадите её на дистрибуцию.
Вы можете обращаться к этому материалу всякий раз, когда нужно опубликовать новую HTML5-игру на Яндекс Играх.
Для начала работы вам потребуется:
- Игра с интегрированным GamePush SDK
- Аккаунт в GamePush
- Аккаунт разработчика Яндекс Игр
Подготовка игры к публикации на Яндекс Игры
Подключение SDK GamePush
Для интеграции плагина в движок воспользуйтесь инструкциями ниже:
- Добавление игры — JavaScript / HTML5 и общая настройка
- Unity
- Construct 3
- Godot
- Defold
- GameMaker
Основные методы
Game Ready
Основной метод, который должна вызывать ваша игра, чтобы пройти модерацию Яндекс Игр, — Game Ready. Он сообщает площадке, что игра загрузилась и готова к первому взаимодействию с игроком.
Вызовите метод после полной загрузки игры:
- JavaScript
- Construct 3
- Unity
Подробнее: Старт игры.
Пауза
Добавьте модуль паузы, чтобы SDK площадки и GamePush корректно останавливали игровой процесс при потере фокуса, сворачивании игры или показе рекламы.
- JavaScript
- Construct 3
- Unity
gp.on('pause', () => {
// Остановить геймплей, таймеры, физику
});
gp.on('resume', () => {
// Возобновить геймплей
});

private void OnEnable()
{
GP_Game.OnPause += OnPause;
GP_Game.OnResume += OnResume;
}
private void OnDisable()
{
GP_Game.OnPause -= OnPause;
GP_Game.OnResume -= OnResume;
}
private void OnPause()
{
// Остановить геймплей, таймеры, физику
}
private void OnResume()
{
// Возобновить геймплей
}
Подробнее: Пауза.
Разметка геймплея
Методы старта и завершения геймплея помогают SDK площадки понять, находится ли игра в активной фазе игрового процесса, в главном меню или на паузе.
- JavaScript
- Construct 3
- Unity
// В начале уровня / игровой сессии
gp.gameplayStart();
// В конце уровня, при возврате в меню или постановке на паузу
gp.gameplayStop();

// В начале уровня / игровой сессии
GP_Game.GameplayStart();
// В конце уровня, при возврате в меню или постановке на паузу
GP_Game.GameplayStop();
Подробнее: Геймплей.
Звук
Модуль звука помогает избежать типичных проблем на Яндекс Играх: музыка продолжает играть на Android при сворачивании, звук во время рекламы и подобные случаи.
- JavaScript
- Construct 3
- Unity
gp.sounds.on('mute', () => {
// Выключить все звуки в игре
});
gp.sounds.on('unmute', () => {
// Включить звуки обратно
});

private void OnEnable()
{
GP_Sounds.OnMute += OnMute;
GP_Sounds.OnUnmute += OnUnmute;
}
private void OnDisable()
{
GP_Sounds.OnMute -= OnMute;
GP_Sounds.OnUnmute -= OnUnmute;
}
private void OnMute()
{
// Выключить все звуки в игре
}
private void OnUnmute()
{
// Включить звуки обратно
}
Подробнее: Звуки.
Автоопределение языка
Если в игре есть локализация на два и более языка, добавьте автоопределение языка на старте — даже если в интерфейсе есть ручной переключатель языка.
Любой язык, которого нет в игре, определяйте как английский.
- JavaScript
- Construct 3
- Unity
const lang = gp.language; // ISO 639-1, например 'ru', 'en'

// Язык в формате enum Language ("English", "Russian")
Language lang = GP_Language.Current();
// Язык в формате ISO 639-1, например 'ru', 'en'
string langISO = GP_Language.CurrentISO();
Подробнее: Язык.
Сохранения и загрузка прогресса
Перед публикацией на любую площадку добавьте сохранение и загрузку прогресса. Через GamePush прогресс уходит в облако Яндекс Игр через модуль Игрока.
- Создайте поля игрока в панели управления GamePush (Игроки → Поля игрока).
- Изменяйте поля в игре и подтверждайте изменения через
sync. - При старте игры читайте сохранённые значения из полей игрока.
- Тип хранилища для конкретной площадки выберите в панели управления проектом в настройках площадки.
- JavaScript
- Construct 3
- Unity
// Сохранение
gp.player.set('level', 2);
gp.player.set('coins', 150);
await gp.player.sync();
// Загрузка (после инициализации SDK)
const level = gp.player.get('level');
const coins = gp.player.get('coins');

// Сохранение
GP_Player.Set("level", 2);
GP_Player.Set("coins", 150);
GP_Player.Sync();
// Загрузка (после инициализации SDK)
int level = GP_Player.GetInt("level");
int coins = GP_Player.GetInt("coins");
sync отправляет локальные изменения игрока в облако и применяет серверную логику (необработанные покупки, триггеры и другое). Вызывайте его после важных действий: завершения уровня, получения награды, покупки.
Подробнее: Облачные сохранения.
Реклама
На старте игры можно сразу вызвать два рекламных блока: Preloader и Sticky-баннер. На Яндекс Играх Preloader всегда показывает сама площадка, а Sticky-баннер настраивается в консоли в разделе Реклама. Тем не менее рекомендуем добавить вызовы в код, чтобы игра была готова и к другим веб-площадкам.
- JavaScript
- Construct 3
- Unity
// Preloader — до начала игры
await gp.ads.showPreloader();
// Sticky-баннер — за пределами игровой области; на Яндекс Играх может быть под, над или справа от игры
gp.ads.showSticky();

// Preloader — до начала игры
GP_Ads.ShowPreloader(OnPreloaderStart, OnPreloaderClose);
// Sticky-баннер — за пределами игровой области; на Яндекс Играх может быть под, над или справа от игры
GP_Ads.ShowSticky();
private void OnPreloaderStart() { }
private void OnPreloaderClose(bool success) { }
Основной рекламный блок в браузерных играх — межстраничная реклама (Fullscreen). Чаще всего её показывают между уровнями. В играх без уровней — после неигровых действий или с остановкой игры и обратным отсчётом перед показом.
Не вызывайте fullscreen-рекламу во время активного геймплея. Это может стать причиной отклонения игры площадкой и вызвать негатив у игроков.
- JavaScript
- Construct 3
- Unity
await gp.ads.showFullscreen();

GP_Ads.ShowFullscreen(OnFullscreenStart, OnFullscreenClose);
private void OnFullscreenStart() { }
private void OnFullscreenClose(bool success) { }
Для дополнительной монетизации добавьте рекламу за вознаграждение (Rewarded): бонус в конце уровня, пополнение валюты, воскрешение при поражении, ускорение таймеров и похожие механики.
- JavaScript
- Construct 3
- Unity
const success = await gp.ads.showRewardedVideo();
if (success) {
gp.player.add('coins', 100);
await gp.player.sync();
}

GP_Ads.ShowRewarded("COINS", OnRewardedReward, OnRewardedStart, OnRewardedClose);
private void OnRewardedStart() { }
private void OnRewardedReward(string value)
{
if (value == "COINS")
{
GP_Player.Add("coins", 100);
GP_Player.Sync();
}
}
private void OnRewardedClose(bool success) { }
Подробнее: Реклама и Sticky-баннер для Яндекс Игр.
Покупки
Кроме рекламы площадка поддерживает внутриигровые покупки: скины, валюту, билеты пропуска rewarded-рекламы, премиум-статусы, боевые пропуска и другие варианты.
На что обратить внимание при интеграции:
- Корректно заполняйте теги покупок и используйте их единообразно в коде.
- Правильно консумируйте разовые покупки и выдавайте товар.
- Заполняйте курсы валют в панели GamePush — сервис помогает автоматически подставлять цены для площадок.
Пример разовой покупки:
- JavaScript
- Construct 3
- Unity
await gp.payments.purchase({ tag: 'GOLD_1000' });
gp.player.add('gold', 1000);
await gp.player.sync();
await gp.payments.consume({ tag: 'GOLD_1000' });
GP_Payments.Purchase("GOLD_1000", OnPurchaseSuccess, OnPurchaseError);
private void OnPurchaseSuccess(string productIdOrTag)
{
if (productIdOrTag == "GOLD_1000")
{
GP_Player.Add("gold", 1000);
GP_Player.Sync();
GP_Payments.Consume("GOLD_1000");
}
}
private void OnPurchaseError() { }
Пример постоянной покупки:
- JavaScript
- Construct 3
- Unity
await gp.payments.purchase({ tag: 'VIP' });
if (gp.payments.has('VIP')) {
// Применить преимущества VIP
}
GP_Payments.Purchase("VIP", OnPurchaseSuccess, OnPurchaseError);
private void OnPurchaseSuccess(string productIdOrTag)
{
if (productIdOrTag == "VIP")
GP_Player.Set("VIP", true);
}
private void OnPurchaseError() { }
// Проверка позже, когда нужно
if (GP_Player.GetBool("VIP"))
{
// Применить преимущества VIP
}
Подробнее: Платежи и настройка площадки Яндекс Игр.
Тестирование в песочнице GamePush
С GamePush можно проверить интеграцию основных методов до загрузки билда на площадку:
- Game Ready вызывается вовремя
- Язык определяется корректно
- Музыка и звуки останавливаются во время рекламы
- Покупки работают из игры
- Необработанные покупки выдаются корректно (консумирование, если игрок оплатил, но не получил товар)
Как открыть песочницу
- Загрузите HTML5-билд игры в черновик в разделе Хостинг игр панели проекта.
- Откройте песочницу, нажав кнопку Протестировать игру.
- Используйте инструменты разработчика: заглушки рекламы, тестовую форму покупки и логи на странице.

Проверьте:
-
gp.gameStart()/GP_Game.GameReady()после загрузки - Пауза и звук при потере фокуса и во время рекламы
- Игра определяет язык и корректно переводится относительно выбранного в песочнице языка
- Прогресс сохраняется и восстанавливается после перезагрузки
- Корректность вызовов всех рекламных блоков; выдача награды за Rewarded только при успешном показе
- Покупка → выдача → consume (для разовых товаров)
- Выдайте покупку инструментами песочницы, перезагрузите игру и проверьте, получит ли игрок необработанную покупку
После проверки в песочнице глубокое тестирование в черновике Яндекс Игр обычно не требуется — достаточно короткой проверки.
Создание черновика и подключение площадки
Создание черновика в Яндекс Играх
- Откройте консоль разработчика Яндекс Игр.
- Нажмите Добавить игру и создайте новый черновик с уникальным ID.
- Не загружайте игру в черновик, где ранее уже была опубликована другая игра.
Заполнение черновика
На вкладке Черновик → Общее заполните основные поля:

- Версия — версия билда, например
0.0.0.1 - Архив — ZIP с HTML5-игрой (
index.htmlв корне) - Поддерживаемые платформы — устройства, на которых игра запускается
- Ориентация — портрет / альбом / любая
- Игра переведена на — языки локализации (управление языком — через SDK)
- Возрастной рейтинг и Категории — обязательные поля для модерации
- Теги и Ключевые слова — для поиска в каталоге
- Игра использует облачные сохранения — включите, если сохраняете прогресс через SDK
- Отсроченная публикация — если нужно опубликовать вручную после модерации
- Комментарий разработчика — заметка для модераторов
Также заполните блок Описание и продвижение: тексты, иконка, обложка, скриншоты и видео.
Если игра предусматривает множество онлайн-функций и частые обновления, требующие публикации через iframe, запросите разрешение у поддержки Яндекс Игр (в качестве iframe может выступать ссылка с хостинга GamePush).
В разделе Реклама включите Sticky-баннер:

Sticky-баннер может давать значительную долю рекламного дохода. Крайне рекомендуем его включить.
Подключение Яндекс Игр в GamePush
В панели проекта GamePush добавьте площадку Yandex Games. Во вкладке Подключение укажите ID игры и Секретный ключ.

ID игры можно взять вверху левого меню консоли Яндекс Игр.

Чтобы получить Secret Key, перейдите в раздел Инап-покупки в консоли Яндекс Игр.

Добавьте свою покупку или любую тестовую. Обновите страницу — появится поле Secret Key во вкладке Настройки.

После копирования ключа удалите временную покупку, иначе игра может не пройти модерацию.
Сохраните площадку в GamePush.
Добавление покупок в Яндекс Играх
- Создайте продукты в панели GamePush и перенесите их в консоль Яндекс Игр (или наоборот) с совпадающими ID.
- В GamePush привяжите ID покупки в Yandex к продукту.

Покупки, заполненные в GamePush, можно экспортировать в CSV и импортировать в Яндекс Игры без повторного заполнения.
Как включаются покупки, зависит от договора с Яндексом:
- Единое соглашение (единая лицензионная схема) — покупки подключены автоматически для всех ваших игр. Отдельно писать на почту не нужно.
- Старый вариант договора через РСЯ — отправьте заявку на включение покупок на
games-partners@yandex-team.ru.
Статус смотрите в консоли разработчика: Профиль → Единая лицензионная схема.
Настройка в GamePush: Настройки платформ — Yandex Games.
Проверка игры в черновике Яндекс Игр
Откройте черновик через Открыть черновик или Открыть черновик с debug-панелью.

В режиме черновика игра работает с реальной площадкой Яндекс Игр: настоящая реклама, авторизация через Яндекс, облачные сохранения и каталог покупок с сервера.
Если вы уже проверили интеграцию в песочнице GamePush, достаточно короткой проверки:
- Игра запускается, Game Ready срабатывает
- Прогресс сохраняется
- Работают реклама и покупки (если есть)
- Звук корректно ведёт себя при сворачивании и во время рекламы
Отправка на модерацию
Когда черновик готов, нажмите Отправить на модерацию.
По умолчанию игра опубликуется сразу после одобрения. Чтобы опубликовать вручную позже, включите опцию Отсроченная публикация.
Статусы модерации
| Статус | Что означает |
|---|---|
| Ожидает модерации | Черновик отправлен и стоит в очереди |
| Опубликовано | Игра одобрена и опубликована автоматически |
| Проверен | Одобрена с отсроченной публикацией — на вкладке Черновик появится кнопка Опубликовать |
| Отклонен | Не одобрена — причины придут на почту, привязанную к Яндекс ID |
Полная проверка обычно занимает 3–5 рабочих дней. Контентная проверка (только промоматериалы) быстрее — около 2 рабочих дней.
При отклонении исправьте замечания и отправьте черновик повторно.
Также используйте Чек-лист тестирования игр при подготовке билда.
Дистрибуция через GamePush
Чтобы не тратить время на модерацию, договоры и общение с менеджерами, так как это занимает очень много времени, можно отправить игру на дистрибуцию GamePush.
Мы публикуем веб-игры на площадках «под ключ» и сопровождаем по всем вопросам. А также предоставляем хостинг, CDN и игровой бекенд в рамках партнерства. Все это поможет высвободить 95% ваших ресурсов для того, чем действительно хочется заниматься.
В панели проекта откройте раздел Дистрибуция, заполните форму и нажмите Отправить на модерацию.
Что дальше
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram: @gs_community.
Для ваших обращений e-mail: official@gamepush.com
Желаем вам успехов!

