Разработка

Мобильный WebGl на UNITY. Что такое Tiny и как меня спас Cocos Creator

Введение


Принесу вам полезное знание, насчет современного мобильного вебгл на юнити. Вкратце — его нет. Если кто-то на работе вам говорит что нужно на юнити сделать веб игру — скидывайте ему эту запись. Если он не передумает, человека уже не спасти. 

Вебгл билды до сих пор маркируются как не предназначенные для мобил. Их минимальный размер 15 метров. Первый запуск от 10 секунд. Но вебвью в самом юнити все равно запускает каждый раз долго.



По работе, задача была что-то с этим придумать. Есть куча миниигр, и они должны быть браузерными, чтобы грузить их в каталог без обновления приложения. На счет того, нарушает ли это требования апстора — не моя забота.

С вебгл билдами две проблемы: большой вес долгая загрузка. В плане работы, все в целом ок, фпс приемлемый. Последним, я был крайне удивлен, так как предыдущий опыт с html5 был лет пять назад на Phaser'e и там два 2d ставили фпс на колени. 

Были попытки как-то заоптимайзить сам вебгл — ничего не вышло. Есть разные сжатия, но они тоже не канают для мобил. Но главное, что вообще не поддается оптимизации — это время запуска. В небольших играх в зависимости от устройства запуск мог доходить до 30 секунд.

Project Tiny


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

Играть тут 

Ну как вы поняли, сейчас речь про крутой и могучий Tiny. Прошло 3 года, но этот малыш до сих пор в превью. Блядь, вы ебанутые там или че? Ой, ну в смысле, а что так долго?

Tiny — это мой худший экспириенс в разработке игр. Такого говно на серьезных щщах собрать — это еще надо уметь. Та же 2д физика сделана через полный пиздец. VSCode напрочь отказывался видеть проект, VS Studio — лучше обоссыте.

Сам юнити при этом тупит, пердит и еще писать все нужно в ECS и никаких монобехов, они убираются при билде. Билд, кстати, нужно делать каждый раз, когда хочешь проверить игру, никаких нажать плей в юнити, только хардкор.

Зато, тини весит мало, запускается мгновенно. Но сама разработка на нем — ад и кошмар. Ну представьте, что юнитисты выпустили снова фичу, половину работы забыли сделать, половину написали, что скоро сделают (никогда) и нахуярили сверху кучу багов, чтобы вы вообще забыли про веселый геймдев.

Тини — маркетинговый ход. Небольшие билды, хтмл5, быстрый запуск и на удобном вам знакомом unity. Но гайс, это наеблово. То как вы делали игру — там не работает. Вам нужно использовать ECS, забыть про монобехи и вести борьбу с компонентами, которые почему-то не работаю так как надо. И конечно, никто в интернете вам не поможет с вашими проблемами.

Cocos Creator


Честно скажу, это было очень приятно. Кокос креатор сделали все как у юнити, но не добавили ничего лишнего (пока). Вот, посмотрите как он выглядит

Китайский юнити

Очень знакомо, не так ли? Пожалуй, это одно из самых важных преимуществ. Китайцы умеют копировать и делают это крайне хорошо. Идея правда гениальная, Unity давно стал стандартом в геймдеве. Ну, вы конечно можете еще работать на UE, но все же. 

Кокос под чистую скопировал интерфейсы, флоу работы, апи. Проженному юнитисту тут будет легко и непринуждённо. На данный момент кокос использует TypeScript, раньше можно было еще на js писать. 

А это значит, что скорость запуска кода максимально высокая. Написали строчку, перешли в редактор нажать ctrl+s, дальше в браузере уже запускается новая версия. Возможно, шаг с редактором можно автоматизировать, но на маке вполне удобно было скакать между окнами. 

билд в браузере

В браузере уже есть заготовленные размеры экранов, фпс счетчик, и еще немного функционала — очень удобно. 

Процесс переноса небольшой игры занял в районе 4х дней. Пришлось погуглить некоторые моменты, переэкспорить спайн (кстати, тут он встроенный. Никаких дополнительных  плагинов), и разобраться с особенностями TypeScript. В отличие от js, он вообще не любит возможности ошибок.

Пройдусь быстро по минусам:
  • Мало инфы в инете
  • Инспектор отображает поля не в порядке их написания в коде, а в порядке даты их появления. В целом, с инспектором было бы не плохо что-то сделать, типа кнопки добавить, валидацию
  • Не нашел гизмосов, а было бы удобно
  • Отличия от юнити все же есть и они могут вводить в заблуждение

Итоги


С помощью кокоса получилось из 30 мб, сделать 5. Запуск ускорить в 3-5 раза. И провести хорошо время благодаря восточную страну за такой подарок. 

Ресурсы посжимал через TinyPng, спрайты позагонял в атласы через TexturePacker. Все аудио перевел в mp3. 

Кокос очень хорошо подойдет для разработки небольшой хтмл5 игры (кто-то делает большие?). Как я понял, для полной свободы вы можете использовать Pixi, но поверьте, графический редактор, для разработки игр вещь очень полезная. 

У меня все, если еще не зашли в мою телегу, то заходите
Made on
Tilda