События

Пауза и возобновление игры

С помощью событий game_api_pause и game_api_resume платформа сообщает игре, что нужно поставить игровой процесс на паузу или возобновить его. Они упрощают процесс интеграции с нашей платформой и помогают соответствовать требованиям модерации (пункты 1.3 и 4.7).

Игры, которые поддерживают события паузы и возобновления игры, могут быть дополнительно дистрибутированы на внешние площадки.

game_api_pause и game_api_resume

События помогут вам отследить:

  • показ и закрытие полноэкранной или rewarded-рекламы;
  • открытие и закрытие окна покупок;
  • переключение вкладок браузера;
  • сворачивание и разворачивание окна браузера.

Они согласованы с методами разметки геймплея. При срабатывании game_api_pause вызывается метод GameplayAPI.stop(), а при срабатывании game_api_resumeGameplayAPI.start().

Если игра уже была остановлена с помощью метода GameplayAPI.stop() (например, когда игрок открыл меню), и затем срабатывает game_api_pause, то при последующем событии game_api_resume метод GameplayAPI.start() не будет вызван. Это позволяет сохранить текущее состояние игры без нарушения логики разметки геймплея.

Используйте методы on() и off() из SDK Яндекс Игр для подписки на события и отписки от них соответственно.

Пример

const pauseCallback = () => {
    pauseGame(); // Ваша функция, останавливающая game loop и музыку.
    console.log('GAME PAUSED');
};

ysdk.on('game_api_pause', pauseCallback); // Подписка на события 'game_api_pause'.
ysdk.off('game_api_pause', pauseCallback); // Отписка от событий 'game_api_pause'.
const resumeCallback = () => {
    resumeGame(); // Ваша функция, возобновляющая game loop и музыку.
    console.log('GAME RESUMED');
};

ysdk.on('game_api_resume', resumeCallback); // Подписка на события 'game_api_resume'.
ysdk.off('game_api_resume', resumeCallback); // Отписка от событий 'game_api_resume'.

Выход из игры

Вы можете отслеживать события, возникающие при нажатии пользователем определенных кнопок в игре.

enum ESdkEventName {
    EXIT = 'EXIT',
    HISTORY_BACK = 'HISTORY_BACK'
}

ysdk = {
    EVENTS: {
        EXIT: ESdkEventName.EXIT,
        HISTORY_BACK: ESdkEventName.HISTORY_BACK
    },

    dispatchEvent(eventName: ESdkEventName, detail?: object): Promise<unknown> {},

    on(eventName: ESdkEventName, listener: Function): () => void {}
};

HISTORY_BACK

Внимание

Событие доступно только в случае, если игра запущена на телевизоре.

Чтобы отследить нажатие на кнопку Back, используйте метод:

ysdk.on(ysdk.EVENTS.HISTORY_BACK, () => {
    // Показ пользователю кастомного диалога игры с возможностью
    // подтвердить выход из игры, перейти к внутренним настройкам, магазину и т. п.
});

EXIT

Если пользователь подтвердил выход из игры в кастомном диалоге, открывшемся после нажатия Back, то игра должна отправить событие выхода. Для этого используйте метод:

ysdk.dispatchEvent(ysdk.EVENTS.EXIT);

Примечание

Сотрудники службы поддержки помогают разместить готовую игру на платформе Яндекс Игр. На прикладные вопросы о разработке и тестировании предметно ответят другие разработчики в Сообществе в Telegram.

Если при использовании SDK Яндекс Игр вы столкнулись с проблемой или у вас появился вопрос, обратитесь в службу поддержки:

Написать в чат