Подводные камни Unity

Подводные камни Unity

Когда начинал работать на Unity 4 удивился как легко работается на этом движке.

Почитал пару книг и посмотрел несколько видеокурсов — и уже можешь что-то своё создать.

Первое время трудно было привыкнуть к светлой теме (пришлось потом плюс покупать на год за $300).

Но разработка была быстрой.

С неправильным стилем разработки (всё public) пришлось бороться путём ([SerializeField]). Но это уже мелочи.

Когда дошёл до создания своих редакторов — очень приятно был удивлён. Легко и тот же C# без дополнительных настроек и работы с XML.

Проект хорошо собирался под Android и когда показывал друзьям и сотрудникам — всё работало замечательно.

Билд был большой (40Мб), но это терпимо. Особенно, когда хочется быстрой обратной связи.

Но как проект стал разрастаться — Unity стала регулярно вылетать. И это на 2д игрушке.

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

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

Приходится либо допиливать самому, либо отказываться от приятных функций.

Ассетов много, но доверять им можно только после продолжительной проверки.

Так у меня возникла проблема — LeanTween пользовался годами. Но один раз две недели провёл над отладкой кода.

Всё вроде замечательно — но не вижу проблемы и всё.

И пришлось нанимать фрилансера — и он за час всё сделал. Просто заменил LeanTween на DoTween и всё пошло.

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

И вроде — полезно, но уже боязно как-то новые ассеты брать. Даже эксперименты не помогут.

Пока Unity не купил Perforce и не сделал свой процесс контроля версий, приходилось работать с git. А он плохо расчитан на игры. Приходилось в github/bitbucket делать поддержку LFS (large file system), чтобы текстуры и меши помещались в контроль версий.

Сравнивать файлы Unity в diff тоже оказалось сложной задачей — много технических полей. Пришлось изучить как под капотом она работает.

Сейчас Unity открыла много исходника C# библиотек и сделала систему подключения. Работать стало легче.

Но в 2018.3 они ввели композитные ассеты и вся игра рассыпалась. Пришлось откатиться до 2018.2 LTS (хоть 3 года будут поддерживать).

Когда ты мелкий инди и должен зарабатывать себе на хлеб, на создание игры уходит много времени (1-2 часа в день растягивает разработку на годы).

И движок, за которым надо бежать, чтобы фиксить баги (и наконец возможности — с 4й на 5ю перешёл из-за асинхронной загрузки уровней, с 5 на 2017ю из-за улучшенного 2д, с 2017 на 2018 из-за улучшенного управления проектом и дальнейшего улучшения 2д)

Поэтому от Unity остались двойственные впечатления. Делать быстро (на джем за 2-3 дня делал игры — на других движках не получалось так быстро), но сопровождать и улучшать — муторно.

***

Недавно они наконец закончили свой DOTS (data oriented toolset) и Jobs (паралелльные задачи).

Но там полностью переработанная логика и надо игру переделывать под дата-ориентированность.

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

У меня в проекте не больше 20-30 объектов за раз и мне это не нужно. Да и двумерные игры достаточно просты в обработке.

Хотел перейти на композитные ассеты как в Godot. Но оказалось, что мне придётся переделать 50 префабов заново (новая модель требует другого подхода).

Так что оставил эту затею.

Сейчас с 2019.4 бесплатно доступна тёмная тема. Но туда переходить — придётся побороться с новыми возможностями движка.

***

Надо очень внимательно относиться к управлению проектами — иначе можно потом потеряться. У Unity в отличие от GameMaker нет предустановленного шаблона размещения сущностей.

Так что лучше использовать уже устоявшуюся практику из Godot: сущности рядом с уровнем, и лишь общие в отдельную папку.

***

Все ассеты распаковываются в главную папку. И потом уходит много времени правильно расположить их в проекте.

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

И приходится учитывать эти риски и выделять время.

В общей сложности — борьба с движком занимает 20-30% времени.

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

Из-за вылетов пришлось поставить ассет AutoSave — он выручал меня не один раз. И он бесплатный.

***

Нет графа сцен, надо либо самому городить либо ассет покупать за $50. Второе — проще, но надо учить новую библиотеку и редактор.

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

Недавно — визуально стали разделять, но программно — как было просто нагромождение объектов, так и осталось.

***

Нужно приобретать ассет для конфигурации сборок.

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

Ассет стоит $65.

В общем — если хочешь комфортно работать — бери LTS (life time support) версию и много ассетов улучшающих качество жизни.

Много бесплатных, но и платные тоже нужны, иначе много времени теряешь на рутинные задачи.

Так что Unity конструктор — и его бесплатность — мнимая. Они заставят покупать его (сам 2 года сопротивлялся, пока купил лицензию плюс), и должен будешь платить год. Раньше не отказаться.

Лицензии (раз купил и пользуйся) уже нет. И это по мне очень неприятная финансовая модель. Стараюсь обходиться без подписок.

Итак кредитов и комуналки хватает. Ещё эти люди хотят залезть в карман на регулярной основе.

55
6 комментариев

Спасибо за информацию! Не в курсе с UE4 подобные проблемы?

Пока анрил изучаю. На детских проектах ничего не вылазило)

1

Переход на новую версию движка всегда сопровождается поломкой проекта, ССЗБ.
А вот с тулзами да, Юнити не хватает кое-чего, однако всё недостающее пишется или прикручивается из ассет стора. Этим Юнити отличается от конструктора игорей типа гейм мейкера, сам воркфлоу такой, что тебе рано или поздно придётся лезть писать расширения под свои задачи.
Алсо, они точно DOTS доделали? Вот прямо с визуальной интеграцией, с поддержкой в сценах, с нормальным набором компонентов?

Они прямо анонсировали, как вполне готовый для работы.
Слежу за новостями - там много интересного. Особенно в 2д происходит. Уже и свою систему анимации сделали (типа спайна)