August 30, 2018

Отличия между Unity и UE4

1. Кривая обучения

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

UE4 зачастую представляет более сложную систему для новичка, но после некоторого изучения особенностей движка, пользователь получает большую гибкость в разработке. Визуальная система программирования “Blueprint”, основанная на нодах, позволяет создавать сложный шейдеры, имея за плечами совсем небольшой опыт программирования. Также, UE4 обладает отличной документацией, поддерживаемой и обновляемой до актуального состояния с выходом новых функций, огромной базой знаний и советов на форуме, и нескончаемым потоком видео уроков.

2. Инструментарий размещения объектов

Оба движка обладают отличными редакторами уровня, построенными, правда, на немного разных принципах.

Редактор UE4 по умолчанию работает с привязками к сетке, что позволяет быстро создавать огромные уровни их готовых ассет-блоков, не тратя лишнее время на проверку, насколько точно эти блоки стыкуются между собой. Изменяемый шаг сетки позволяет почти в любой ситуации не испытывать проблем с этой самой привязкой и дополнительно избегать наложения полигонов друг на друга, что может вызывать их мерцание. Удобной является возможность перемещать, масштабировать или вращать объект, просто выбрав его единожды, без необходимости наводить курсор мыши строго в его границы. Зажатый «Ctrl» позволяет перемещать объект по выбранной оси, зажатый вместе с «Ctrl», «Shift», заставит камеру перемещаться за объектом, как бы перемещая мир относительно выбранного объекта. Зажатие «V» приведет к тому, что опорную точку (ось) выбранного объекта станет возможно притянуть к любому вертексу другого объекта, а использование «V» со Средней Кнопкой Мыши позволит переместить опорную точку объекта к любому вертексу исходного объекта, а затем уже привязаться к вертексам другого объекта.

Инструмент под названием «Foliage tool» в UE4 позволяет буквально рисовать растительностью или любыми другим объектами по любой поверхности, быстро и удобно засеивая огромные пространства или выборочно убирая мелкие проплешины, в зависимости от настроек.

UE4 имеет инструмент BSP кистей, которые позволяют быстро создавать геометрию на уровне, не прибегая к внешним редакторам и экспорту\импорту fbx файлов.

Unity же больше похож на классические редакторы (3ds max, Maya, и т.д.), позволяющие свободное трансформирование и перемещение объекта. К примеру, возможно вращение объекта мышью сразу в 3-х плоскостях, недоступное в UE4, сильно ускоряющее процесс создания уровня и наполнения его объектами. Unity так же поддерживает привязку объектов друг другу по выбранным вертексам, как в Maya, после нажатия на «V» можно выбрать интересующий вертекс и за него перетащить объект, привязав к любому другому объекту. Данная функция по сути служит некоторой заменой системе с решеткой, которая есть в UE4.

Unity в данный момент не располагает встроенной системой расстановки растительности, однако авторы утверждают, что имеется достаточное количество недорогих плагинов, которые решают эту проблему. Приобрести их можно в специальном магазине ассетов «Unity Asset Store».

Unity не имеет традиционного BSP редактора как в UE4, однако, встроенный ProBuilder предоставляет практически стандартные для 3d редакторов возможности по генерации и созданию геометрии.

3. Импорт

Оба редактора позволяют импортировать ассеты как отдельной кнопкой импорта, так и простым перетаскиванием файлов из проводника. После импорта же, действия немного различаются. В UE4 вы можете как создать новый материал, перетащив текстуры в материал из встроенного проводника и соединив их с нужными входами самого материала, так и использовать Material Instance, позволяющий сильно сэкономить ресурсы при большом количестве схожих, но отличающихся текстурами или параметрами материалов. После выставления параметров вроде разрешения текстуры, запекаемого света и LOD'ов, объект готов к размещению в мире. В Unity для выбранного типа материала, текстуры перетаскиваются в доступные слоты, затем объект размещается в мире. Правильной практикой для Unity является использование prefab. Это особый вид ассетов, использующийся для создания экземпляров объекта в сцене. Любые изменения в самом префабе немедленно отражаются и на всех его экземплярах, при этом вы можете переопределять компоненты и настройки для каждого экземпляра в отдельности. Настройка LOD'ов и дополнительных возможностей происходит уже в рамках абстракции префаба.

Unity поддерживает только импортированные лоды, в то время как UE4 идет со встроенным инструментом для оптимизации, позволяющим без ущерба внешнему виду или текстурам оптимизировать геометрию объекта. Дополнительно есть возможности выбора класса объекта, в этом случае для импортированного LODа будет создан набор лодов, размер на экране и количество полигонов, которое будет автоматически выбрано движком, но может быть дополнительно настроено пользователем. Эта система создает достаточно хорошо оптимизированные лоды, настолько, что уменьшение полигонов в 2-4 раза не создает видимой границы перехода между ними при перемещении камеры по сцене. Импорт текстур практически не различается, однако UE4 позволяет настроить несколько больше параметров, например выбрать тип сжатия итоговой текстуры, тип и необходимость mip-mappping, а так же провести базовую цветокоррекцию без необходимости использования внешних редакторов.

4. Рендеринг и материалы

Говоря о Blueprint, и визуальном программировании в рамках Unreal engine, cистема нод в этом движке позволяет создавать сложные материалы, реагирующие на расположение объекта в мире или во времени, пусть она и не интуитивно понятна новичку, однако не требует умения программировать. Однако Unity наверстывает отрыв с новым шейдер графом, представляющим из себя похожую систему нод, соединяемых между собой и создающих итоговый материал.

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

Поддержка редактирования (рисования буквально) vertex color позволяет, используя сложный материал, рисовать различными материалами по поверхности объекта, создавая уникально выглядящие ассеты прямо в редакторе.

5. Освещение

Почти всегда основным приоритетом UE4 было реалистичное освещение, и Unity долгое время оставался позади в этом вопросе, однако новый переработанный движок освещения, практически сравнялся по возможностям с UE4. Оба движка имеют инструменты (skyLight в UE4) создания фэйкового освещения окружения, эмулирующие отскоки света от Глобального Освещения, недоступные в риалтайм движках. В целом оба движка обладают схожим ��абором функций на данный момент и сложно выделить какой-то один из них не в рамках конкретной задачи.

6. Пост-процесс

Оба движка обладают огромным набором возможностей по настройке пост-процесс эффектов, таких как SSAO, DOF, BLOOM и Color Correction. Однако в рамках UE4 настройка цвета чуть сложнее и обычно выполняется в сторонних редакторах с помощью создания LUT текстуры. В Unity же меню настроек выглядит более интуитивно понятным и напоминается такую в Davinci Resolve.

Наш сайт по XR разработкам