Добрый день, дорогие читатели! В последней статье я рассказывал, сколько реально можно заработать на очень простой игре в Яндекс Играх. Можете ознакомиться тут:
Кое-что в той статье я бы уже изменил по прошествию времени. Возможно чуть позже, в последующих статьях, напишу что именно. В данной же статье я хотел рассказать чуть о другом. А именно о том, как встроить Яндекс SDK в игру, созданную на Game Maker Studio.
Дальше будет не такое увлекательное чтение, а скорее пошаговая инструкция, основанная на собственном опыте, с некоторыми замечаниями и проблемами, с которыми я столкнулся и обнаружил.
В русскоязычном интернете я такой инструкции не встречал (кроме одного видоса на эту тему), по этому контент данной статьи в какой-то степени уникален и очень вам пригодится, если реально решите встраивать SDK в игру.
Где взять Яндекс SDK под Game Maker Studio?
Для начала нам необходимо скачать Yandex SDK и подготовить для встраивания в нашу игру. Для этого:
1) Переходим по этой ссылке на маркетплейс гейммейкера, входим под своей учетной записью и качаем это расширение (оно бесплатное):
2) Открываем это расширение с Game Maker Studio и готовим пакет для последующего встраивания в ваши игры.
Чтобы это сделать, откройте (запустите) из этого скаченного пакета файл "YandexGames_Demo":
По сути это просто тестовый проект, созданный на Game Maker Studio. С него нам необходимо экспортировать некоторые нужные нам компоненты для последующего импортирования их в наши игры.
Для этого в открывшемся проекте, переходим на вкладку "Tools" и выбираем "Create Local Package":
У нас откроется следующее окно:
Тут нам необходимо выбрать, какие именно компоненты мы хотим экспортировать из этого проекта, создав пакет, который в дальнейшем мы сможем встраивать во все наши игры, созданные под Яндекс.
Если вы хотите в свою игру встраивать только полностраничную рекламу и рекламу для показа видео за вознаграждение, то вам потребуется экспортировать всего три компонента:
- Само расширение YaGames из паки Extensions
- Объект кнопки obj_button_showFullscreenAds из папки Objects->Buttons->Ads
- Объект кнопки obj_button_showRewardVideo из папки Objects->Buttons->Ads
- Скрипт isMap из папки Scripts->GM Fixes and Tweaks (не буду вдаваться в подробности, но на самом деле нам этот скрипт не особо нужен, а переносим его, чтобы не ломался код и не пришлось его сильно корректировать в нашей игре)
Просто разворачиваем папки по вышеуказанным путям, выделяем нужный нам компонент и нажимаем кнопку "Add", чтобы он перенесся в правое окно. По итогу у вас должно получиться как на скриншоте выше (единственное там не указал скрипт isMap, но он тоже должен быть).
Так же не забудьте заполнить три поля слева, выделенных на скриншоте желтым, чтобы назвать как-то ваш пакет (дать имя файлу). Я его назвал MyYandexPackage.
После этого нажимаем "OK" справа снизу. У вас откроется стандартное окно с выбором пути, куда вы хотите сохранить данный пакет. Файл сохранится с расширением *.yymps (если память не подводит).
Все, наш пакет экспортирован. Храните этот файлик в удобном для вас месте. Теперь вы его можете импортировать в ваши игры для встраивания рекламы.
Как встроить Яндекс SDK в вашу игру?
Тут все очень просто. Пакет у нас сформирован. Вам теперь просто необходимо его импортировать в ваш проект. Для этого откройте вашу игру в Game Maker Studio.
Открытый ранее скаченный с маркетплейса проект Yandex Games SDK HTML5 можете закрыть. Он нам больше не пригодится.
Уже в вашем открытом проекте (вашей игре) перейдите на вкладку "Tools" и нажмите "Import Local Package":
Откроется стандартное окно в котором вам нужно будет выбрать файл экспортированного ранее пакета (у меня это был MyYandexPackage.yymps). Далее в уже знакомом вам окне, выбираете необходимые вам компоненты с левого окна в правое, выделяя их и нажимая "Add", либо просто можете нажать "Add all", чтобы выбрать сразу все. И после этого уже нажимаете слева снизу на кнопку "Import":
Все! Дело сделано! Все эти компоненты появились в дереве ресурсов вашей игры и с ними теперь можно будет работать. Т.е. по сути мы просто перенесли (скопировали) объекты и расширение из одного проекта (скаченного) в другой (в ваш).
Как запустить показ рекламы в вашей HTML5 игре на Яндекс?
Половина дела сделана, необходимые нам компоненты уже в игре, нам только осталось немного подредактировать их ну и далее подстроить под особенности именно вашей игры.
Мы импортировали компоненты для запуска двух типов рекламы: полностраничной (так же называют fullscreen или interstitial) и видео за вознаграждение (или reward).
Давайте начнем с показа первого типа рекламы.
Как запустить показ полноэкранной рекламы?
В этом случае нам пригодится объект obj_button_showFullscreenAds. Для начала давайте его подредактируем.
Убедитесь, что у него нет "родителя" (во вкладке "Parent" должно быть "No object"):
Код в событии "Create" объекта удаляем, либо можно полностью удалить само событие "Create":
Теперь, чтобы вам показать полностраничную рекламу, вам достаточно написать следующий код:
req_id = YaGames_showFullscreenAdv();
Все! Эта одна строчка в этом объекте вызывает показ полностраничной рекламы. Где и в какой момент вызывать этот код - выбирать вам.
В данном объекте она вызывается в событии отжатия левой кнопки мыши.
Если хотите оставить так как есть (для тестов, например), то вам нужно будет сделать несколько корректировок:
1) Во-первых, удалите весь остальной код в событии "Left Released" как на скриншоте ниже, оставив только одну строчку вызова рекламы:
Тут используется переменная "is_clicked", но в вашем проекте ее нет. Дело в том, что в изначальном примере у данного объекта был родитель и эта переменная инициировалась в нем. Но так как мы экспортировали только часть проекта, то половина кода соответственно пропала. Это же касается и других участков кода, который мы потеряли, не экспортировав в наш пакет за ненадобностью некоторые элементы (например, скрипт "log").
2) Во-вторых, у этого объекта должна быть маска, чтобы сработало это событие отжатия левой кнопки мыши и соответственно вызвался код показа рекламы. Для этого назначьте этому объекту какой-нибудь спрайт (спрайт кнопки, кликнув на которую у нас покажется реклама), а так же не забудьте поставить этот объект в комнату. (в ваш уровень, в меню или куда бы то ни было).
3) Ну и, в-третьих, нам нужно подредактировать код в событии "Async-Social". Закомментируйте 3-ю и 8-ю строчку кода (поставьте два слэша //), чтобы этот код не выполнялся. Так как там используется скрипт log, который мы не экспортировали со скаченного проекта, то код выдаст ошибку, не найдя данный скрипт. Он по сути просто выводит сообщение, а нам это не особо то и нужно.
Вот собственно и все! Далее выбираем таргет (Current Build Target) - HTML5, чтобы сделать сборку игры под HTML5 (данный пакет экспорта докупается отдельно, в бесплатной версии GMS он не поставляется!!!):
Нажимаем на вкладку Build->Create Executable, и в появившемся окне Package as Zip:
В появившемся окне выбираем путь для сохранения архива с игрой, который далее можно заливать на Яндекс Игры.
С какими особенностями вы тут можете столкнуться?
Когда вы зальете архив в ваш черновик на сайте Яндекс игр и сохраните его, то у вас появится ссылка на запуск этой игры, но из за багов в Яндексе при повторных заливках архива он не сразу обновляется. Т.е. может быть написано, что архив с игрой уже залит, но запустив его по появившейся ссылке по факту это может быть еще предыдущая ваша залитая версия игры. И если вы вдруг не видите изменений, которые вы внесли в новую сборку, то не пугайтесь, просто закройте игру, чуть подождите, обновите страницу с черновиком в браузере и попробуйте заново запустить вашу игру по этой ссылке.
Так же вы можете столкнуться с тем, что запустив игру и нажав на созданную кнопку для показа полностраничной рекламы в вашей игре вы ничего не увидите, т.е. вообще не поступит никакой реакции. Так же не пугайтесь, что что-то вы сделали не так или что что-то не работает. Дело в том, что особенность полностраничной рекламы Яндекса в том, что они сами ограничивают показ рекламы. Т.е. полностраничная реклама не может показываться каждую секунду при каждом нажатии созданной вами кнопки. Она показывается с интервалом раз в 1-3 минуты (точно не засекал).
Т.е. чтобы протестировать работоспособность, просто подержите вашу игру запущенной и попробуйте спустя 1-2 минуты повторно нажать на кнопку. Я уверен, реклама у вас покажется. ))
Как запустить показ рекламы видео за вознаграждение (Reward)?
В этом случае нам пригодится объект obj_button_showRewardVideo. Но для начала его так же необходимо будет подредактировать.
Делаем все тоже самое, что в объекте показа полностраничной рекламы:
1) Проверяем, чтобы у объекта не было назначено родителя
2) Чистим событие "Create".
3) Редактируем событие "Left Released", оставив лишь одну строчку кода, которая как раз отвечает за показ видео:
req_id = YaGames_showRewardedVideo();
4) Назначаем спрайт этому объекту, вставляем его в комнату
5) В событии "Async-Social" удаляем или закомментируем строчки, в которых есть скрипт log.
Все! Можете делать HTML5 сборку и заливать архив на странице вашей игры с черновиком Яндекс Игр. Данную рекламу тестировать проще, она запустится сразу, при нажатии на кнопку, если вы все сделали правильно. У нее нет таких ограничений, как у полностраничной рекламы с показом раз в 1-3 минуты.
Но как же давать награду после просмотра видео? Ведь эта реклама подразумевает именно награду за просмотр. Модераторы Яндекса пристально следят за этим и не пропустят игру, если за просмотр видео не поступит никакой награды.
Тут тоже все очень просто: в событии "Async-Social" есть места в коде, которые выполняют прописанный там код в определенные моменты времени (причем там присутствуют комментарии):
1) место в коде, кода видео открылось (пишем код после case "rewardOpened")
Тут вы можете например написать код, отключающий звуки (это одно из требований на Яндекс Играх - при показе рекламы игровой музыки и звуков звучать не должно, чтобы не заглушать звук самой рекламы).
2) место в коде, когда получать награду (пишем код после case "rewardReceived")
Тут вы как раз прописываете код, дающий награду игроку за просмотр. Например, global.money += 100.
3) место в коде, когда видео закрыто (пишем код после case "rewardClosed")
Тут, например, вы можете обратно включить звуки/музыку.
Друзья, я рад, что вы дочитали статью до конца! Для написания данной статьи мне пришлось проделать очень большую работу. Но надеюсь оно того стоит и вам данная статья реально окажется полезной. Как писал ранее, в русскоязычном интернете это самая подробная инструкция по встраиванию рекламы в Яндекс Игры на движке GMS на момент ее написания. Подробнее не найдете. В статье могут присутствовать опечатки и неточности, так как все статьи на своем канале Дзен я пишу в основном в ночное время после работы. Свободного времени очень мало, по этому и статьи, к сожалению, выходят не так часто как хотелось бы. Ставьте лайки - это единственный показатель для меня, что статья вам понравилась, оказалась полезной и что следует продолжать писать. Так же подписывайтесь на канал, чтобы не пропустить важную, полезную и интересную информацию. Всем спасибо!