Как я выкладывал головоломку на Яндекс Игры

Прошло 2 недели, как я выложил головоломку-нонограм "Угадай, кто я?" на Яндекс Играх:

Геймплей

Я не был знаком с WebGL в целом, и площадкой Яндекс Игры в частности, и хочу поделиться опытом и подвести итоги.

Регистрация в Яндекс Играх и рекламной сети Яндекс

Регистрации прошла быстро и просто - в этом помог и интуитивно понятный интерфейс и руководства и видеоролики от самого Яндекса. Описывать своими словами не имеет смысла, всё необходимое находится по ссылке:

https://yandex.ru/dev/games/doc/ru/services/about-monetization

Денежка за регистрацию аккаунта разработчика не взималась, что снижает порог входа, что с одной стороны хорошо - т.к. не надо тратить денежку как разрабу, с другой стороны способствует заливанию на платформу тонн клонов и помоечных проектов, что плохо.

Много времени ушло на создание контента для страницы приложения - описания (на 2х языках), шапки, иконки, скриншоты, видео игрового процесса - всё это не сложно, но уныло. Но я был морально готов, т.к. не впервые прохожу это процедуру - ранее выкладывал игры в гугл плей.

Обложка игры
Обложка игры

Модерация в Яндекс Играх

А вот к чему я не был готов - так это к модерации. В отличие от вышеупомянутого гугл плея она намного строже. В обучающих материалах я, или пропустил, или не встретил, что вообще существуют требования площадки и отправил на модерацию игру, которая полностью игнорирует эти самые требования, хоть и не по злому умыслу. Игра модерацию не прошла - были перечислены ошибки, которые необходимо устранить. И тут я акцентирую внимание на следующих вещах:

- модерация заняла менее суток. Хотя в интернете чаще натыкался на информацию про 3-5 дней. Возможно зависит от масштабов самой игры.

- был сформирован целый список с ошибками, хоть и не все имеющиеся. Хотя в интернете люди писали, что проверка идёт до первой ошибки.

- ошибки идут с пояснениями. Текст, при необходимости, дополняется скриншотом или видео, что очень круто. Из минусов не всегда указывается как эту ошибку устранить. К примеру у меня фрустрацию вызвала ошибка "не подключена монетизация", но об этом позже.

Грабли и методы их обхода

В процессе устранения ошибок наткнулся на ряд граблей, причём помимо обычных граблей, встречались детские грабли, которые, как вы знаете, бьют не по лбу. О которых не было ни слова в обучающих материалах найденных на просторах интернета, и по ним пришлось искать информацию точечно.

Грабли 1: нет звука.

Решение: нужно загружать звук ресурсом отдельно.

Я тестировал игру на мобилке в хроме и звук был. Но в Яндексе, его не было. Я поставил edge и firefox и там его тоже не оказалось. В итоге проблема решилась формированием папки с ресурсами, куда были уложены все звуковые файлы к которым нужно было обращаться как к веб-ресурсу. Звучит гиперкостыльно, но для Unity это действительно официально рабочий вариант. Я опустил технические подробности, но если надо отвечу в комментах. Кстати на firefox на мобилке звук дико хрипит. Я думал проблема с моей игрой, но во-первых звук хрипит и у других игр на сервисе яндеска, во-вторых на других обозревателях всё норм. Я долго игрался с качеством и типом звука - результат одинаковый. Так что кто использует firefox на мобилке - сорян.

Грабли 2: не отображаются китайские иероглифы.

Решение: нужно загружать шрифты отдельно.

Ранее я тестил на пк и мобилке(APK) и иероглифы были. А вот при запуске из браузера шрифты пропадают. Предполагаю, что на пк и мобилке (APK) подгружался дефолтный шрифт, а в браузере этот функционал не работает. Решение проблемы - положить шрифт вместе с игрой. Но вот если шрифт латиницы и кириллицы объединены и весят 109КБ, то иероглифы весят 10.3Мб. У меня вся игра без иероглифов весит 9.8МБ. Так что от поддержки китайского языка пришлось отказаться.

Грабли 3: не сохраняется прогресс.

Решение: нужно хранить прогресс на сервере.

Игра успешно сохраняет прогресс встроенными средствами PlayerPrefs. Но делает это до тех пор пока не поступит обновление игры или же браузер почистит кэш. Поэтому пришлось использовать SDK Яндекса для сохранение данных игры в профиле игрока. Отдельной проблемой было заставить загрузить данные игрока после загрузки игры. Там много технических подробностей, так что если надо так же готов ответить в комментах.

Грабли 4: не подключена монетизация.

Решение: нужно в html-файл index игры прописать коды RTB блоков.

Игру решил монетизировать с помощью полноэкранных рекламных блоков после завершения уровня и не чаще раз в 5 минут. Сделал всё по видеогайдам и следуя руководству. В черновике на Яндекс Игры Консоль рекламные блоки прекрасно выходили. В рекламной сети Яндекса значилось куча рекламных блоков, которые создались автоматически и, как я ошибочно думал, подхватываются они тоже автоматически. В профиле значилось "Монетизация подключена". Но модерация не проходила и 2 последних раза одной из причин было сообщение о неподключенной монетизации. В итоге я решил пойти методом тыка и создал полноэкранный блок и в конце создания вылезло сообщение с кодами которые нужно добавить в index.html игры. Почему об этом везде умалчивалось - я не знаю.

Грабли 5: должны отсутствовать ссылки на любые виды ресурсов и упоминание товарных знаков и фирменных наименований.

Решение: все ссылки и упоминания убрать, необходимая информация должна хранится в игре.

Когда выкладывал игры в гугл плей необходимо было указывать политику конфиденциальности. Я делал страницу на гитхаб и ссылку оставлял в игре. Так же по ссылке можно было ознакомиться с политикой конфиденциальности Unity. В Яндекс Играх же любые ссылки запрещены. Поэтому ссылки на соцсети и бусти пришлось удалить, а политику конфиденциальности поместить текстовым блоком в самой игре.

Вывод по выкладыванию игры

В результате работы над ошибками, оные были устранены и, спустя 3 заваленных модерации было получено заветное письмо с текстом: "Замечаний не имеем. Игра, которую вы загрузили в нашу консоль, была опубликована в нашем каталоге."

В итоге могу сказать, что разработка под WebGl для Яндекс Игр специфична и имеет ряд особенностей, которые необходимо учитывать. Но если изначально учитывать эти особенности при разработке, то не должно возникнуть серьёзных проблем. Есть некоторые шероховатости, но в целом, как для разработчика, о Яндекс Играх сложилось положительное мнение.

1313
12 комментариев

Добрый день. Спасибо, что помогаете другим разработчикам, опираясь на свой опыт. Действительно, при публикации игр на нашей площадке могут возникать вопросы. Поэтому будем рады ответить на них в нашем Telegram-канале: https://t.me/yagamedev и в личных сообщениях t.me/YandexGamesSupport 🙂

2

Я не разработчик, но, прочитав статью, делаю вывод, что это реальная возможность получить адекватное техническое ревью своего проекта БЕСПЛАТНО...

1

Именно так, но есть одно "но": модераторы Яндекс-игр как минимум частично шизоидные, могут пропустить серьезные технические баги, но докопаться до чего-то, чего они не поняли. То есть большая часть их возвратов связана с формальными требованиями их правил, и эту информацию никак нельзя использовать вне этой площадки.

Кроме того, возвращаясь к шизоидности, они выдают баги маленькими порциями, так что процесс может растянуться на месяцы, а узнаешь ты только то, что модер не понял, как ходить и вот тут реклама на его взгляд не вовремя)

1

То что звук хрипит может быть связано с упором в производительность. Некоторые решают проблему выключая звук при сильной нагрузке на процессор.

1

Да, вроде не должно. Старался оптимизировать. Встроенный в андроид тест нагрузки пишет ~120fps.

При старте игры информирование о политики конфиденциальности это требование гугл плей? Что-то новенькое для ЯИ

1

Да, требование гугл плей. ЯИ не требует.