Подводные камни 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 года сопротивлялся, пока купил лицензию плюс), и должен будешь платить год. Раньше не отказаться.


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

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


***



Вывод: Unity замечательный движок, только стоит денег его собрать в рабочее состояние и поддерживать (особенно, если пользуетесь их сервисами - Collaborate и пр.)

Комментарии

Популярные сообщения