Unreal vs Unity или какое "U" выбрать

Всем доброго оборота земли вокруг своей оси в вашей широте и долготе дней. Сей опус будет полезен “Сомневающимся” и поможет пролить немного излучения звезды по имени Солнце на коварную маркетинговую кампанию самых популярных игровых движков. Я занимаюсь разработкой игр уже больше 10 лет, поэтому нескромно могу выразить свое ЛИЧНОЕ мнение о всех достоинствах и недостатках. Добро пожаловать ниже…

Итак, начнем немного с истории. Unreal Engine - движок созданный профессиональной командой разработчиков игр серии Unreal Tournament в 1998 году для создания одноименной игры, а Unity3d в 2005 году профессиональной командой разработчиков, но отнюдь не игр. Целью Unity было создание движка нового поколения, который существенно должен был понизить порог вхождения для новичков в разработке игр и максимально упростить портирование готовых игр на различные платформы. Во главе угла стояла простота использования.

Юнити стал по настоящему первым “Народным движком”. Я могу вспомнить ещё несколько популярных на то время, но они все погибли. В то дикое время под каждую игру писали свой собственный велосипед, потому что до Юнити получить готовый движок без огромного количества денег(десятки и даже сотни тысяч долларов) на лицензирование просто не было возможности. Unity сразу обрел огромную базу фанатов и разработчиков за счет своей простоты и удобства, а Unreal в это время мог оперировать только обученными профессионалами с большим опытом. Порог вхождения в Unreal неприлично высок, чтобы начать программировать игры на нём, вам нужно знать С++ и тонну мелких деталей работы движка, а это не один год обучения на программиста и изучения самого движка.

В юнити любой человек не обделенный логикой и азами Pascal сможет написать простенькую игру за неделю. В Unreal на подобное уйдет в 10 раз больше времени и это неоспоримый Факт. Epic Games (разработчики Unreal) знают свои слабые и сильные стороны, поэтому выпуск Blue Print не заставил себя долго ждать и действительно понизил порог вхождения в UE, но всего лишь для “прототипирования”. Серьезные проекты по прежнему “крайне рекомендуется” писать на С++ со всеми последствиями. На рынке сейчас “на глаз” разработчиков на Unreal 1 к 10 или даже к 20 по сравнению с Unity. Отсюда следует основной минус UE - Разработка под него на порядок Дороже и Сложнее. Специалистов мало, по факту хороших спецов учат только “уже состоявшиеся спецы” из самой Epic или других крупных контор, которые годами разрабатывают игры на Unreal. Если вы маленькая команда или Indie разработчик, то ваш предел в играх на Unreal это уже готовые мультиплеер FPS стрелялки, по тому что по факту UE был и остается движком для игры Unreal Tournament. Вся логика движка заточена под шутеры от первого/третьего лица по сети.

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

Работа с редактором Unreal Editor - это просто издевательство над художниками и всеми кто так или иначе связан с созданием арта, звука, анимаций, текстур и прочего. Его основной и гигантский минус - не связанность с файловой системой вашего PC, то есть нельзя просто перетащить файл из папки в папку или даже “О Б-ЖЕ!!” в само окно редактора. Теперь любой файл 3д модели или текстуры вам придется Импортировать с помощью КНОПКИ и никак иначе. Если вам надо немного поменять модель, то вам придется Удалять Руками Импортнутые объекты и Заново их Импортировать столько раз, сколько вы захотите улучшать ваш файл. Реимпорт там конечно “существует”, но он работает настолько нестабильно, что у меня теряется дар речи. Например Vertex Color никогда не реимпортится заново, все созданные клипы анимаций затираются при реимпорте и т д. Если вы не отстрадали своё в этом редакторе огромное количество времени, то готовьтесь к тому что 80% времени вы будете заниматься импортом и реимпортом, а если объектов в вашей локации 100-200-300….Просто знайте, нельзя нажать кнопку экспорт в вашем любимом 3д пакете и получить всё в том же виде в UE, вам придется каждый объект заботливо расставлять руками, про материалы и прочее естественно забудьте тоже, потому что UE кроме Diffuse+spec+Ao+metallic импортировать ничего не будет, не говоря уже про второй UV канал на назначенной текстуре или тайлинг и прочие подробности.

Я страдал достаточно для того чтобы написать свой собственный экспортер из 3ds max Vray в Unreal и потратил на это несколько месяцев лишь бы не мучаться с редактором Unreal. Это позволило переводить сцены с 1000 объектов в Unreal за каких то 30 минут компьютерного времени, но даже это не помогло мне :) Если вы хотите делать мобильные игры, то приготовьтесь к Аду, каждый ребут редактора отключает Mobile Preview режим и вам придется вручную каждый раз включать его заново и ждать пока перекомпилируется весь рендер движок под мобильные устройства, а это занимает несколько минут. Умножьте это на поистине Эпичную стабильность редактора, который может крашится каждые 10 минут, запускается заново несколько минут на топовом железе… Новые Фичи приходят в движок в таком состоянии, в котором разобраться в них без бутылки зачастую непредставляется возможным, потому что набор галочек и консольных команд для работоспособности “фичи” переходит все разумные границы. Хотите крутую ткань? Волосы? Плоские отражения не пост эффектом ?

Будьте добры прочитайте всю документацию 5 раз, и через двое суток с красными глазами вы узнаете, что фича не доступна, пока вы не нажмете галочку в меню о котором даже не слышали ни вы, ни весь чат разработчиков UE в телеграме. После этого Unity Editor покажется вам МАННОЙ НЕБЕСНОЙ. Это абсолютно понятный, простой в использовании механизм, полностью контролируемый и безусловно его киллер фичей является то, что писать под него плагины можно на самом Unity, а вот написать простейший скрипт в UE редакторе по расстановке объектов - только на С++ используя исходники движка. Отсюда и нереальное количество плагинов для юнити и единицы полезных для UE. Но при этом UE до сих пор является лидером рынка по Графену, потому что им заведуют всё теже Профессиональные Разработчики Игр, которые двигают индустрию вперед.

В Epic Games проблема решается просто - Нужен качественный персонаж? Берем специально обученного человека и даем ему месяц на задрачивание этого персонажа и так с каждым более менее сложным игровым объектом. Студии по разработки на УЕ насчитывает ГИГАНТСКОЕ количество людей, которые работают в редакторе со своими отдельными объектами.Epic очень богатая контора и она может себе позволить многое: бесплатный движок (в первую очередь для того чтобы хоть как то выращивать новых специалистов для их внутренних потребностей в разработке игр), провальные игры и щедрость с ними связанную (PARAGON) в отличии от Unity, которая перебивается продажами самого движка и подписок, если бы денег было больше, то отставание в графическом плане не было бы настолько заметным, но даже сейчас 2018 версия уже не слишком сильно уступает UE.

Вывод простой, если вы богатый успешный разработчик с большим опытом и уверенностью в себе и вы любите красивую 3д графику и мультиплеер - ваш выбор UE, во всех остальных случаях - Unity.Надеюсь кому то поможет эта статья, а я могу лишь напомнить, что это моё личное мнение и опыт, некоторые слова можно трактовать как то иначе, потому что выверять каждое предложение и слово у меня просто нет времени. Всем удачи и приятной разработки игр. Помните, что главное в этом деле - это любовь к своей работе, если разработка не приносит вам удовольствия - срочно меняйте работу, движок и всё что угодно связанное с этим. Адьёс Амигос.

Комментарии (20)

0
iolanta989
Вывод напомнил мне пикчу, где сравниваются "Почтенные UE бояре" и "Грязные Unity холопы"
0
bryarey
Вы так отлично опустили Unreal, что я, как Unity-разработчик и преподаватель курса Unity, не могу не ответить взаимностью :)
Итак, подводные камни Unity.

Unity - это продаваемый продукт. Соответственно, маркетологи имеют большое влияние на саму концепцию разработки и развития движка, а именно:

1. Создание "модных" новых фич всегда в приоритете перед фиксом старых знакомых багов. Согласитесь: "в новой версии мы полечили баги" меньше мотивирует на покупку, чем "в новой версии мы выкатили 8 новых фич, в том числе систему предрассчитанного непрямого освещения, которая сделает ваши сцены удивительно красивыми". При этом старые баги существуют годами, и недавно был казус, когда сторонний разработчик предложил работающий фикс, а разрабы Unity не смогли его интегрировать, потому что это не согласовано с руководством.

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

Так было с переходом на систему освещения Enlighten, когда все юзеры, работающие с запеченым светом для мобильных устройств просто взвыли: был полностью изменен воркфлоу, многие вещи стало сделать стандартными средствами просто невозможо, появилось множество костылей и замысловатых ворк-эраундов для решения таких задач. Например, чтобы реализовать нормальное запекание света для LODов, приходилось делать три (по числу LOD-ов) копии сцены, растаскивать их в пространстве на километр, и в один проход запекать свет сразу на всех лодах. После чего снова собирать всю эту петрушку вместе.

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

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

3. Очевидно, что молоток, которым можно закручивать шурупы, будет менее удобен для этой задачи, чем обыкновенная отвертка. Сварить кашу с юнитишной реализацией, например, мультиплеера - очень сложно.

4. Физика в Unity очень спорная. Там используется отличный движок PhysX, но как он интегрирован! БольшАя часть настроек просто не доступна никаким образом, чтобы не сбивать с толку новичков (обратная сторона низкого порога вхождения). Абсолютно невозможно считать физику на видеокарте.

5. Unity имеет большое сообщество активных пользователей, множество ассетов и плагинов. Но из личного опыта могу сказать, что в 90% случаев эти ассеты и плагины приходится радикально допиливать, если они вообще пригодны к использованию. Обычно плагин заточен под очень узко специализированную задачу, и его внутренняя архитектура (пишут новички-энтузиасты!) не предполагает расширения функционала. В результате, очень часто получается быстрее написать свою реализацию с нуля, чем использовать плагины.

Надо добавить, что Unity может использоваться (и используется) для очень крутых проектов. Как правило, они тоже влетают в копеечку, как и с Unreal - потому что для таких проектов приходится отказываться от архитектуры, которую предполагает Unity, и писать свои архитектурные велосипеды - многие отказываются от стандартных методов MonoBehaviour (Start, Update и т.п.), пишут свои системы связывания компонентов, создают навороченные фреймворки... потому что стандартные решения, предлагаемые юнити, не отвечают требованиям производительности на больших проектах.

Вывод - в целом, я согласен с автором поста: Unity имеет низкий порог вхождения, лучшую на рынке кросс-платформенность, хорошо подходит для инди-проектов. Но не сильно обольщайтесь, лажи тоже хватает :)
+1
bubl231285
Комментарий удален
0
bryarey
Вы хоть текст-то читали, сударь?

"Кто в чем работает тот и орет "лучше" про свою программу" - с точностью до наоборот. Я работаю в Юнити, и рассказываю о ее недостатках и подводных камнях.

"Ведь на 99% у них функционал одинаковый" - чушь собачья, есть принципиальная разница: доступность исходников, язык программирования, поддержка разных платформ.
-2
bubl231285
Комментарий удален
0
bryarey
Вы не разобрались в вопросе.
1. ... я не могу не ответить взаимностью, и не опустить юнити - то есть я уравновешиваю мнение автора, который критикует анриал, своей критикой юнити - при этом я работаю именно в юнити. И текст вы не читали. А зачем? Пиши каменты, не читая пост!

2а. Зато исходники юнити не доступны.

2б. "Язык разный но кому какая разница " - А вы на чем пишете, позвольте узнать? Я подскажу: в анриале используется С++, в Юнити - С#. Знаете в чем разница? Или будете рассказывать, что ее нет?

Кстати, вы научились нормали разворачивать? Если что, я не дорого беру за уроки.
0
bubl231285
Комментарий удален
0
bryarey
Нормали разворачивать не умеет, но коменты тереть уже научился - видимо, не все потеряно.
0
bryarey
Просто чтобы вы понимали разницу. Код из официального туториала Unreal, C++

FVector NewLocation = GetActorLocation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f;
RunningTime += DeltaTime;
SetActorLocation(NewLocation);

Код на Unity C#, делающий то же самое:

transform.position += Vector3.up * Mathf.Sin(Time.realtimeSinceStartup);
0
bubl231285
Просто после того как в споре о двух движках ты опустился до личных оскорблений, я понял,что ты из тех людей которым говорить что-то, как кидать г....о на вентилятор. Поэтому я решил не продолжать спор. Давай я тебя просто добавлю в игнор.
(в удаленном комментарии было написано "я понимаю почему ты недорого берешь за уроки")
+2
niak_ris
на полном серьезе автор по имени "bubl231285" написал какую то чушь. 1000 объектов я мерджил атвоматически скриптом который я написал, очевидно что читать текст не обязательно когда цель просто словить лулзов и хайпануть.
0
bubl231285
Комментарий удален
+1
Kenzo80
Дичь и неприкрытая ненависть к UE4 - суть бложика :)
0
niak_ris
Это первая статья по геймдеву в этом "бложике" :)
-1
Luummii
Друг, эта статья не должна быть ни первой от тебя, ни последней - её вообще не должно было быть, по простой причине твоей некомпетентности. Мало того сам ни хера не соображаешь, так еще и на всю округу чушь несешь.
+2
bubl231285
Комментарий удален
0
3dmentor
а что насчет Lumberyard & CryEngine?
0
bryarey
CryEngine - очень крутой движок для шутеров от первого лица, и это не тот движок, в котором, например, геймдиз может заниматься прототипированием: он довольно сложный. Бескомпромисный движок, я бы сказал. Короче, это решение для команды профи, которые делают крутой шутер с нормальным размахом и финансированием. ИМХО.

Lumberyard - универсальный движок, там много похожего на Unity (вплоть до дизайна сайта, хе-хе). Но там надо кодить на С++, или пользоваться визуальным скриптованием. ИМХО, это не гуд. Плюс пока еще небольшое комьюнити и небольшое количество поддерживаемых платформ (по сравнению с Unity). Но не исключено, что составит серьезную конкуренцию Юнити, или даже вытеснит с рынка со временем. Из плюсов там - полная бесплатность (платишь только за использование серверных/облачных фич), и доступ к исходному коду. В общем, мне стало интересно, попробую его качнуть и погонять :)
+3
MerCY
Воу воу, автор палехчи, по поводу порога вхождения, у UE какбы есть блюпринты, с которыми не надо выцарапывать кучу кода, причем блюпринтами там можно замутить почти все. так что тут вопрос ооооочень спорный, можно быстро состряпать какой-нить простенький(да и не простенький тоже) прототип без единой строчки кода.

по поводу файловой системы, тут да, UE перемудрили чуток, но есть функция "Реимпорт" и в само окно редактора таки можно перетаскивать все поддерживаемые файлы, есть свой встроенный редактор для монтажа всего и вся Sequencer.

также рекомендую автору следить за новостями UE, уже давно обкатывается "Unreal Datasmith" если уже не вышла, то скоро выйдет(я подписывался на бета тестирование), это такая штука которая из 3д макса(Maya, C4D и т.д.) с настроеными V-ray/Corona материалами экспортит всю вашу сцену в UE и конвертит это в свои маты, и даже светильники/порталы и камеры КАРЛ!!!

также следить за новостями Allegorithmic'ов, там вообще ребятки упарываются(в хорошем смысле), замутили плагин, который в реальном времени отображает модель с матами в UE пока ты её размалевываешь в Paintere или Designere.

такшта тут холиварить можно до бесконечности, но не стоит вводить людей в заблуждение.
0
Arn
Согласен, автор статьи вводит людей в заблуждение.