11 июня 2015 г. Unity3D или Unreal Engine 4
Поскольку не так давно мы прошли через муки «какой движок выбрать, Unity3d или Unreal Engine 4 (UE4)», я решил написать небольшую статью, в которой в двух словах опишу преимущества и недостатки каждого из движков, а также поделюсь тем, какие аргументы повлияли на наш конечный выбор.
В то время, как многие студии-разработчики игр используют собственные игровые движки, есть еще огромный рынок и даже крупных студий, нуждающихся в игровом движке, который поможет создать свою игру за краткие сроки. Unity3d и Unreal Engine 4 — это одни из самых популярных игровых движков, доступных на сегодняшний день. Хотя оба — отличные игровые движки, в зависимости от того, что вы собираетесь сделать, каждый может стать для вас оптимальным вариантом. Возможно, вы предпочитаете простой удобный интерфейс, или, может быть, язык программирования для вас более приоритетен — независимо от тех или иных обстоятельств, давайте посмотрим на различия, а также на сильные и слабые стороны каждого движка. Тогда вы и сможете решить, какой из них будет соответствовать вашим потребностям.
Какой тип игр вы собираетесь создавать?
Ответы на эти вопросы могут помочь вам определить, какой движок следует использовать. Оба движка могут справиться с любой из этих задач, но в зависимости от того, что вы делаете, один движок может быть намного удобнее и оптимальнее.
Если вы хотите делать мобильные игры — Unity будет идеальным решением. Это подтверждается доминированием Unity среди разработчиков мобильных игр, а также большим количеством плагинов для использования нативных возможностей мобильных платформ: реклама, внутренние покупки, аналитика, игровые центры — все это интегрируется в игру за считанные минуты. Если вы нацелены на разработку 2d игры, Unity тоже будет прекрасным выбором, потому что именно у него есть прекрасные возможности для создания 2d игр. Хотя Unreal Engine 4 в последнее время пытается заманить разработчиков мобильных приложений, обещая не меньшие, а даже большие возможности для 2d игр.
Если вы хотите создавать 3d игры, Unity также очень мощный инструмент для разработки 3d игр. Хотя графически он далеко не на том уровне, что Unreal Engine 4. При необходимости использовать графику лучшим решением будет Unreal Engine 4.
Наша команда специализируется на разработке 2d мобильных игр, поэтому наш голос уходит к Unity.
Программирование
Asset Store
Оба движка Unreal Engine 4 и Unity3d имеют свой магазин ассетов: из них можно загрузить готовые 3d модели персонажей и окружения, текстуры и даже такие вещи, как звуки и системы частиц. Тем не менее, Unity3d однозначно выходит на первое место с точки зрения количества ассетов в магазине. В нем имеется все — от анимаций и генераторов GUI до расширений редактора для управления ИИ. Там есть все, что нужно для создания игры. Только плати деньги 🙂
Цена
В отличие от Unity3d, в Unreal Engine 4 есть еще один большой плюс для программистов — это открытый код. Мы, не смотря на это, в итоге выбрали Unity3d. И я могу с уверенностью сказать, что ни капли не пожалели об этом. Главные аргументы, которыми мы руководствовались — это удобство и скорость разработки под мобильные платформы, а так же основной язык программирования С#.
Будет очень интересно послушать ваши за и против UE4 и Unity3d, а может и других движков которые вы используете. Так что добро пожаловать в комментарии 🙂
Интересует создание игр? Узнайте, во сколько обойдется разработка клона игры вроде Pokémon GO!
Unreal vs Unity или какое «U» выбрать
Всем доброго оборота земли вокруг своей оси в вашей широте и долготе дней. Сей опус будет полезен “Сомневающимся” и поможет пролить немного излучения звезды по имени Солнце на коварную маркетинговую кампанию самых популярных игровых движков. Я занимаюсь разработкой игр уже больше 10 лет, поэтому нескромно могу выразить свое ЛИЧНОЕ мнение о всех достоинствах и недостатках. Добро пожаловать ниже…
Unity сразу обрел огромную базу фанатов и разработчиков за счет своей простоты и удобства, а Unreal в это время мог оперировать только обученными профессионалами с большим опытом. Порог вхождения в Unreal неприлично высок, чтобы начать программировать игры на нём, вам нужно знать С++ и тонну мелких деталей работы движка, а это не один год обучения на программиста и изучения самого движка. В юнити любой человек не обделенный логикой и азами Pascal сможет написать простенькую игру за неделю. В Unreal на подобное уйдет в 10 раз больше времени и это неоспоримый Факт.
Epic Games (разработчики Unreal) знают свои слабые и сильные стороны, поэтому выпуск Blue Print не заставил себя долго ждать и действительно понизил порог вхождения в UE, но всего лишь для “прототипирования”. Серьезные проекты по прежнему “крайне рекомендуется” писать на С++ со всеми последствиями. На рынке сейчас “на глаз” разработчиков на Unreal 1 к 10 или даже к 20 по сравнению с Unity.
Работа с редактором
Просто знайте, нельзя нажать кнопку экспорт в вашем любимом 3д пакете и получить всё в том же виде в UE, вам придется каждый объект заботливо расставлять руками, про материалы и прочее естественно забудьте тоже, потому что UE кроме Diffuse+spec+Ao+metallic импортировать ничего не будет, не говоря уже про второй UV канал на назначенной текстуре или тайлинг и прочие подробности. Я страдал достаточно для того чтобы написать свой собственный экспортер из 3ds max Vray в Unreal и потратил на это несколько месяцев лишь бы не мучаться с редактором Unreal. Это позволило переводить сцены с 1000 объектов в Unreal за каких то 30 минут компьютерного времени, но даже это не помогло мне 🙂
Если вы хотите делать мобильные игры, то приготовьтесь к Аду, каждый ребут редактора отключает Mobile Preview режим и вам придется вручную каждый раз включать его заново и ждать пока перекомпилируется весь рендер движок под мобильные устройства, а это занимает несколько минут. Умножьте это на поистине Эпичную стабильность редактора, который может крашится каждые 10 минут, запускается заново несколько минут на топовом железе…
Epic очень богатая контора и она может себе позволить многое: бесплатный движок (в первую очередь для того чтобы хоть как то выращивать новых специалистов для их внутренних потребностей в разработке игр), провальные игры и щедрость с ними связанную (PARAGON) в отличии от Unity, которая перебивается продажами самого движка и подписок, если бы денег было больше, то отставание в графическом плане не было бы настолько заметным, но даже сейчас 2018 версия уже не слишком сильно уступает UE.
Орёл или решка: сравнение Unity и Unreal Engine
Портал 80.lv опубликовал краткое сравнение самых популярных современных игровых движков — Unity 3d и Unreal Engine 4. Его подготовил инди-разработчик и видеоблогер Jayanam.

Первая область сравнения — UI-редакторы для создания уровней, которые, по мнению автора, очень похожи. В них есть браузеры контента для ассетов, скриптов и других файлов проекта. Игровые объекты можно перетаскивать в область сцены и таким образом добавлять в её иерархию.
Объекты в редакторе сцены изменяются с помощью инструментов перемещения, поворота и масштабирования — они похожи в обоих движках. Свойства Unity-объектов отображаются в Inspector, а UE4 — в части Details. Jayanam также сравнивает возможности Unity Prefabs c Blueprints.
В обоих движках есть статические меши (static meshes) — их можно двигать, поворачивать, и масштабировать — и скелетные меши (skeletal meshes) — геометрические объекты, привязанные к костям скелета и используемые для анимирования персонажей. Их можно создавать в программах вроде Blender или Maya.
Анимации, включённые для скелетных мешей, также можно импортировать. В Unity они прикрепляются к импортированному объекту, как клипы анимации (animation clips), а в UE4 называются последовательностями анимации (animation sequences). В первом движения управляются с помощью контроллеров анимации (animation controllers), а во втором по тому же принципу действуют анимационные Blueprints.
В обоих движках есть стейт-машины, определяющие переходы из одного состояния ассета в другое. В UE4 система называется Persona, а в Unity — Mecanim. Также возможно применение скелетных мешей одного скелета к другим, но в Unity это в основном используется для анимирования гуманоидов.
В UE4 анимации можно редактировать, в Unity — практически нет, особенно плохо дело обстоит с движениями гуманоидов. По мнению автора, движки не подходят для профессионального анимирования персонажей — лучше использовать программы вроде Blender или Maya, а результат импортировать в виде FBX-файлов. Прикреплённый к объектам материал добавляется в проект, но его свойства вроде шейдера или текстур придётся применять вручную.
Для этого в Unity нужно задать материалу шейдер и добавить в его слоты текстуры — карты шероховатостей, нормалей или диффузии. Собственные шейдеры придётся писать самостоятельно или с помощью сторонних инструментов вроде Shader Forge или ASE. А в UE4 встроен очень мощный редактор материалов, основанный, как и система Blueprints, на нодах.
Для программирования в UE4 используется язык C++, который не все любят из-за сложности и продолжительности компилирования. Однако Jayanam считает, что у движка понятный API и приемлемый период компиляции. В UE4 очень мощная и проработанная система визуального скриптования — Blueprints, с помощью которой можно достичь практически тех же результатов, что и c C++.
Unity 5 поддерживает языки C# и JS. API и его концепт очень похож на аналог из UE4. При использовании управляемого языка вроде C#, программист не обязан использовать указатели (pointers), компилирование происходит быстро. В Unity нет системы визуального скриптования, и чтобы использовать что-то подобное, разработчик вынужден покупать сторонние дополнения вроде Playmaker.
Для 2D-разработки в Unity есть великолепные инструменты — sprite creator, sprite editor и sprite packer. UE4 также поддерживает спрайты в Paper 2d, но решения из Unity мощнее, кроме того, в последнем есть отдельный физический движок для 2d-объектов.
В UE4 встроен постпроцессинг. К сцене можно применять bloom-эффект, тонирование и антиалиасинг как глобально, так и к отдельным её частям (при помощи компонента PostProcessVolume).
В Unity есть стек постпроцессинга, который можно скачать из магазина ассетов движка. Система менее гибкая, чем в UE4 — эффекты применяются только стеком или скриптами к камере.
Sequencer в UE4 можно использовать для создания синематиков. Это мощный инструмент, работающий по принципу добавления объектов на временную шкалу. К настоящему моменту в Unity 5.6 нет системы для синематиков, но timeline-редактор добавят в Unity 2017.
В заключении автор подчёркивает, что оба движка — мощные, но UE4 более гибок. В то же время, для создания 2D-игры он бы выбрал Unity 5, а вот дорогой 3D-проект с открытым миром делал бы на UE4.
Другие мнения
Израильская компания AppReal-VR, занимающаяся решениями для виртуальной реальности, также сравнивала движки, но применительно к мобильной и VR-разработке.
У каждого из движков есть свои сильные стороны для разных задач. Unity подойдёт новичкам и любителям, в то время как Unreal — строго для профессиональных разработчиков. Набор функций Unreal Engine лучше подходит для трёхмерных проектов, в то время как у Unity огромный послужной список на мобильных устройствах. Если вы собираетесь делать мобильную игру, или у вас VR-проект с небольшим бюджетом — выбирайте Unity. Если же вы делаете дорогую игру для консолей с опытной командой разработчиков — используйте Unreal Engine 4. Из блога AppReal-VR
А каким был ваш опыт работы с Unity 3D и Unreal Engine 4? Поделитесь в комментариях.
UE4 для Unity-разработчиков
Привет, Хабр! Меня зовут Александр, и сегодня мы сравним Unity и Unreal Engine 4.
Думаю, многие разработчики пробовали движок Unity и видели сделанные на нём игры, проекты, какие-то демки. Его главный конкурент — движок Unreal Engine. Он берёт своё начало в проектах компании Epic Games, таких как шутер Unreal Tournament. Давайте рассмотрим, как начать работу с движком Unreal после Unity и какие препятствия могут подстерегать нас на пути.
Бывает, что 3D-движки сравнивают весьма поверхностно, либо акцентируют внимание только на одной из фич, например, на графике. Мы же холиварить не будем и рассмотрим оба движка в качестве равноправных инструментов. Наша цель — сопоставить две технологии и помочь вам разобраться в движке Unreal Engine 4. Сравним базовые системы движков на конкретных примерах кода демо-проекта UShooter (Unreal + Unity Shooter), специально сделанного для этих целей. Проект использует версию Unity 5.5.0 и Unreal Engine 4.14.3.
Система компонентов (Unity)
Когда мы запускаем проект на Unreal, то видим, что персонаж в сцене — лишь один объект. В окне World Outliner нет привычных нодов модели (вложенных объектов, мешей), костей скелета и т. д. Это следствие различий систем компонентов Unity и Unreal.
В Unity сцена состоит из объектов типа Game Object. Это пустой универсальный объект, к которому добавляются компоненты, реализованные скриптами поведения (MonoBehaviour) и встроенными компонентами движка. Иногда их оставляют пустыми, в качестве объекта-маркера, на месте которого будет создан, например, игровой персонаж или эффект.
Система компонентов (UE4)
Персонажи и их Controller’ы
ACharacter создан на основе APawn и имеет расширенные механизмы перемещения, встроенный компонент скелетного меша, базовую логику перемещения персонажа и его представление для сетевой игры. Для оптимизации можно создать персонажа на основе APawn и реализовать только необходимый проекту функционал.
Описание игрового класса (Actor’а)
Теперь, немного узнав о компонентах Unreal, мы можем взглянуть на класс ракеты в Unreal-версии UShooter.
Функция OnImpact — аналог OnCollisionEnter в Unity. Но для работы с ней требуется подписаться на события компонента USphereComponent в конструкторе или даже во время игры. Это не работает автоматически, как в Unity, зато здесь есть возможность оптимизации. Если нам больше не нужно реагировать на столкновения, мы можем отписаться от события.
Блупринты (Blueprint)
Типичное действие после создания C++ класса в Unreal — создание на его основе Blueprint Class ’а. Это расширение объекта, которое нам предоставляет Unreal. Система Blueprint’ов в Unreal используется для визуального программирования. Мы можем создавать визуальные схемы, соединять события с какими-то реакциями на них. Через блупринты движок упрощает взаимодействие программистов и дизайнеров. Мы можем написать на С++ часть игровой логики и предоставить доступ к ней дизайнерам.
При этом Unreal позволяет отделить, если требуется, C++ исходники проекта от его бинарников и контента. Дизайнеры или аутсорсеры могут работать с собранными dll-библиотеками и никогда не узнают, что происходит внутри C++ части проекта. Это дополнительная степень свободы, предоставляемая движком.
Unreal хорош тем, что в нём практически всё связано с Blueprint’ами. Мы можем расширять ими С++ классы, создавать из них Blueprint-наследников и т. д. Эта система тесно связана со всеми компонентами движка, от его внутренней логики до визуальных компонентов, collision, анимации и т. д.
В Unity есть схожие системы визуального программирования, например Antares Universe. Они не входят в состав движка и созданы поверх него, поэтому в любой момент что-то может сломаться (например, при обновлении версии движка). Система визуального скриптования в Unity не предусмотрена. На мой взгляд, это серьёзный недостаток по сравнению с Unreal. Ведь благодаря таким системам даже далекие от программирования люди могут составить схему взаимодействия объектов или связать какую-то последовательность действий. К слову, в Unreal все шаблоны проектов имеют две версии: как на основе C++ кода, так и целиком на Blueprint’ах. Таким образом, создать простой проект без использования кода, целиком на блупринтах — вполне реально.
Демка шутера (UShooter)
В Unity мы пишем демку с нуля, а в Unreal опираемся на шаблоны. В шаблоне выберем управление и вид камеры, и Unreal сгенерирует проект с указанными настройками. Это хорошая основа, от которой вы можете отталкиваться для ускорения разработки и создания прототипа проекта.
Система ввода (Unity)
Система ввода (UE4)
Вызовом BindAxis(«MoveRight», this, &AUShooterCharacter::MoveRight) в Input Component мы привязываем нажатие кнопки MoveRight к вызову одноимённой функции движения. Не требуется каждый кадр заниматься опросом кнопки.
Также в Unreal не ограничено количество альтернативных кнопок. В Unity в Input Manager есть только основная кнопка и альтернативная. Чем больше устройств ввода в вашей игре, тем острее может быть эта проблема.
Работа с 3D-моделями
Система анимации (Unity)
У нас есть персонаж, мы знаем, как работать с вводом, теперь нужно проигрывать анимацию. В Unity для этого есть Animation Controller, в нём мы описываем определённые состояния персонажа. Например, бежать, прыгать или умереть. Каждому блоку соответствует свой анимационный клип, и мы настраиваем такой граф переходов:
Хотя эта схема называется Animation Controller, внутренней логики у неё нет. Это просто схема переключения анимации в зависимости от состояния. Чтобы она работала, мы заранее объявляем в этом контроллере названия переменных, соответствующих состоянию персонажа. Скрипт, управляющий анимацией, зачастую сам передаёт эти состояния контроллеру каждый кадр.
В переходах между состояниями (на схеме показаны стрелочками) мы настраиваем условия переходов. Можно настроить смешивание (crossfade) анимации, т. e. время, в течение которого одна анимация затухнет, а другая продолжится, для их плавного совмещения.
Система анимации (UE4)
Тут мы видим уже знакомые нам состояния Idle/Run, Jump, Dead. Но один узел совмещает в себе Idle и Run. Внутри него находится так называемый Blend Space 1D, он используется для плавного перехода анимации в зависимости от значения одной или нескольких переменных. С помощью Blend Space можно привязать скорость персонажа к переходу между анимацией Idle и Run. Кроме того, получится настроить несколько точек перехода. Например, от нуля до метра в секунду персонаж идёт медленно — это будет движение, интерполированное между анимацией Idle и Walk. А после некоторого порогового значения включается бег (Run). И всё это будет в одном узле Animation Blueprint’а, который обращается к Blend State.
Стрелочками показаны переходы между состояниями, но, в отличие от Unity, мы можем создать Blueprint, реализующий внутреннюю логику работы этих переходов. В Animation Blueprint есть доступ к персонажу, на котором он используется, поэтому Blueprint сам обращается к его параметрам (скорость движения и т. п.). Это можно рассматривать как дополнительную оптимизацию, так как позволяет не рассчитывать параметры, которые не используются для текущего состояния персонажа.
В Unreal существует множество инструментов для анимации. Montage представляет собой подсистему и редактор, который позволяет совмещать анимационные клипы и их фрагменты.
Тут представлено совмещение машины состояний движения с анимацией атаки, которую мы проигрываем через инструмент Montage.
Проблема вложенных Prefab’ов
Большая проблема в Unity — вложенные prefab’ы. На случай, если проблема вам не знакома, рассмотрим пример.
Предположим, объект «стол с ноутбуком» сохранили в prefab table1, а затем понадобился второй подобный объект, но уже с зелёным цветом экрана ноутбука. Создаём новый prefab — table2, перетаскиваем в него старый ноутбук, меняем цвет экрана на зелёный, сохраняем. В результате table2, второй prefab, становится совершенно новым объектом, у него нет никаких ссылок на оригинал. Если мы поменяем исходный префаб, это никак не отразится на втором префабе. Простейший случай, но даже он не поддерживается движком.
В Unreal, благодаря наследованию Blueprint’ов, такой проблемы нет: изменение исходного объекта отразится на всех дочерних объектах. Это пригодится не только для игровых объектов, персонажей, какой-то логики или даже статических объектов на сцене, но и для системы интерфейсов.
С другой стороны, можно попытаться победить эту проблему в Unity, используя ассеты в Asset Store. В Unity есть плагины, расширения движка, которые так и называются — Nested Prefabs. Существует несколько подобных систем, но они немного костыльные, сделаны поверх движка, поддержки нет. Они пытаются сохранить в себе внутреннее состояние объекта. Когда запускается игровая сцена, они пробуют восстановить внутренние структуры, их поля, свойства и т. д., удаляют устаревшие объекты в сцене и заменяют их экземплярами из префабов. В результате мы получаем не только удобство вложенных префабов, но и ненужные тормоза, лишнее копирование данных и создание объектов. А если что-то в движке поменяется, то эти системы могут и вовсе отвалиться по неизвестным причинам.
Системы UI
В Unity нельзя сохранить в prefab элементы окон или какие-то виджеты. Можем попытаться, но возникнет та же самая проблема префабов: движок забудет о старых объектах. Поэтому зачастую в Unity мы создаём элементы управления, добавляем скрипты и потом их копируем, не создавая prefab. Если приходится добавлять в такие «виджеты» что-то новое, требуемые изменения нужно повторять вручную.
В Unreal мы можем сохранить элементы интерфейса в виджеты (Widget Blueprint), быстро сделать на основе одних элементов управления новые. Cделали кнопку и надпись, пусть это будет наш status bar widget. На основе стандартных и новых виджетов получается быстро и удобно строить окна интерфейса. К слову, виджеты также расширяются за счет Blueprint’ов, можно описать логику их работы на визуальных схемах.
В Unreal система редактирования интерфейсов и всех виджетов открывается в отдельной вкладке редактора. В Unity интерфейс редактируется через специальный объект Canvas, расположенный прямо в 3D-сцене и зачастую даже мешающий её редактировать.
Преимущества и недостатки
Для новичка значительно проще движок Unity, у него устоявшееся сообщество, множество готовых решений. Можно расширять редактор скриптами, добавлять новые меню, расширять инспектор свойств и т. п.
В Unreal тоже можно написать для редактора свои окна и инструменты, однако это чуть сложнее, так как надо делать плагин, и это тема для отдельной статьи. Это посложнее, чем в Unity, здесь нельзя написать маленький скрипт, чтобы появилась полезная кнопка, расширяющая функционал редактора.
Из плюсов Unreal стоит отметить визуальное программирование, наследование blueprint’ов, виджеты UI, систему анимации с множеством возможностей и многое другое. Кроме того, в Unreal Engine 4 существует целый набор классов и компонентов, рассчитанных на создание игр: Gameplay Framework. Gameplay Framework является частью движка, на нём созданы все шаблоны проектов. Классы Gameplay Framework открывают множество возможностей — от описания игровых режимов (Game Mode) и состояния игрока (Player State) до сохранения игры (Save Game) и управления персонажами (Player Controller). Особенная фича движка — продвинутая сетевая подсистема, выделенный (dedicated) сервер и возможность запуска сетевой игры в редакторе.
Заключение
Мы сравнили движки Unity 5 и Unreal Engine 4 на конкретных примерах и проблемах, с которыми вы можете столкнуться, начав работу с движком Unreal. Часть сложностей, присущих Unity, решена в Unreal Engine 4. Конечно, невозможно в одном докладе сделать всесторонний обзор этих технологий в полной мере. Однако мы надеемся, что данный материал поможет вам в изучении движка.








