Сравнение cryengine 5 и unreal engine 4. Результаты эталонного тестирования. Кадровая частота. Другие контрольные параметры

Новой мобильной Lineage 2 на Unreal Engine 4 мы решили составить небольшую подборку интересных ремейков игр на этом движке, которые заслуживают вашего внимания.

Итак, топ-5 ремейков игр на Unreal Engine 4. Поехали!

1.

Анонс ремейка легендарной Final Fantasy 7 на конференции E3 2015 стал для многих людей главным событием того года.

В последствии, на PlayStation Experience 2015, был показан трейлер, содержащий в себе несколько секунд впервые показанного геймплея с участием Клауда и Баррета в самом начале игры.

Чтобы понять, какое место занимает Final Fantasy 7 в игровой индустрии, и как сильно люди ждали этого момента, достаточно посмотреть нарезку реакций на анонс этого ремейка.

2.

3.

22-летний художник 3D-окружения Киммо Каунела из Финляндии на протяжении всего предыдущего года работал над проектом The Last Stop , вдохновлённым творением студии — игрой . Киммо удалось создать потрясающую карту, показывающую, как бы выглядела игра, будь она выпущена на движке Unreal Engine 4.

У парня есть аккаунт на Deviant Art и собственный сайт , где можно посмотреть его последние работы. Этот проект, по словам автора, научил его работе с Unreal Engine 4.

4.

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

Работа Эрнандеса использует модифицированную версию графического движка Unreal Engine 4. По его словам, сперва он хотел только воссоздать остров Тень Моисея (Shadow Moses) на новой технологии, чтобы знакомые с оригиналом геймеры и новички могли изучить его достопримечательности. Однако после того как на техническую демоверсию обратили внимание зарубежные СМИ, Эрнандес решил взяться за полноценный ремейк стесл-экшена.

В своей записи на Facebook автор переделанной Metal Gear Solid не уточнил, когда стоит ждать финальную версию. Видео, как следует из вступительного сообщения, записано на основе раннего прототипа ремейка.

5.

Моддер с ником Logithx вознамерился сделать ремейк культового шутера . Энтузиаст работает над воплощением антиутопичного Города-17 из HL2 с помощью Unreal Engine 4. Примерную дату окончания работ автор назвать пока не может — все пока еще на ранней стадии.

Logithx много времени работал над ремейком Half-Life 2 на прошлой версии движка от Epic — Unreal Engine 3. Однако когда компания начала распространение мощного UE4, он решил начать работу с нуля — и уже на новой технологии.

6.

«Как так, вы же сказали Топ-5 — откуда 6-й пункт?» - спросите вы.

К черту правила! Это же на Unreal Engine 4! Вы только посмотрите на эту графику! Автор проекта по переносу этой замечательной игры на новый движок - Александр Янг.

Pong — первая игра, показавшая, что игры — это серьезно. Забавно, но двух ракеток и шарика-пикселя хватило, чтобы устроить первый бум аркадных автоматов: игровые машины с Pong были так популярны, что рынок вскоре заполонили ее клоны. Впоследствии компания Atari выпустила версию Pong для консоли Atari 2600, доказав, что домашние игровые системы тоже имеют право на жизнь. Успех Pong также стал сигналом для других игровых компаний — например, по горячим следам Konami вошла на аркадный рынок с игрой Maze.

Unreal Engine - один из самых популярных и старых игровых движков, ставший известным благодаря возможности создания на нем сцен, схожих по качеству с кинематографическими. Он работает на большинстве современных игровых платформ - это консоли последнего поколения, ПК, устройства на iOS и Android, а так же macOS, Linux и html5. К тому же заявлена поддержка и недавно вышедшей новой портативной консоли - Nintendo Switch. Такая кроссплатформенность возможна благодаря поддержке всех современных стандартов как рендеринга (API DirectX, OpenGL, а так же на устройствах iOS - PowerVR), так и воспроизведения звука (OpenAl, EAX, DirectSound3D). Как и другие движки, UE комплектуется собственным редактором - UnrealEd, однако по удобству тот заметно проигрывает Unity3D и заточен скорее под создание профессиональных, а не любительских игр и анимаций.

Unreal Engine 1

Первая версия движка вышла почти 20 лет назад - в 1998 году, и уже тогда оказалась универсальнее топового движка того времени - id Tech 3: она включала в себя графический движок, физический движок, искусственный интеллект, управление файловой и сетевой системами и готовую среду разработки игр - UnrealEd. Движок работал на macOS, Windows, PlayStation 2 и Xbox, причем сетевая составляющая была кроссплатформенной - игроки с Windows могли играть на одних серверах с игроками на macOS.

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

Остальные особенности:

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

    Скайбокс (Skybox) - проецирование на поверхности отрисовки с другой точки (которая обычно помещалась в небольшую «коробку» с наложенной текстурой неба, отсюда и название Skybox). Таким образом, отображение не лицевой грани полигонов, а обратной, с заранее наложенной текстурой «неба» на объект. В движке широко использовался приём масштабирования текстур таким способом, что приводило к реалистичным видам окружающей среды - к примеру, неба в игре Unreal. Так же движок позволял использовать мультитекстурирование, позволявшее (при правильной расстановке источников света и ориентации относительно пререндеренных текстур) добиться эффекта трёхмерности поверхностей, хотя до появления движков с поддержкой истинной тесселяции еще оставалось почти 10 лет (первый движок с ее поддержкой, CryEngine 2, вышел в 2007 году).

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

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

В 1999 году вышло крупное обновление - Unreal Engine 1.5. Движок обзавелся лицевой анимации для персонажей, максимальное разрешение текстур было увеличено до 1024x1024, введена расширяемая система частиц и технология S3TC (S3 Texture Compression - метод сжатия текстур DirectX с потерями). Также была интегрирована вторая версия редактора UnrealEd. Пожалуй, самой красивой игрой на Unreal Engine 1.5 была игр-демонстрация возможностей движка - Unreal Tournament:


Первая версия движка больше не доступна для лицензирования, однако исходный код, необходимый для сборки собственных исполняемых файлов, существует в свободном доступе, но не для коммерческого использования - они распространяются по лицензии «Unreal Retail» - то есть только для персонального использования. Всего на UE 1 вышло больше двух десятков игр, среди них - всем известные Unreal Tournament, Deus Ex и Duke Nukem Forever.

Unreal Engine 2

Вторая версия Unreal Engine увидела свет в 2002 году с появлением Unreal Tournament 2003. В ней были практически полностью переписаны ядро и механизм рендеринга, а также интегрирована третья версия редактора UnrealEd. Физический движок теперь от сторонних издателей - Karma. Он поддерживает физику тряпичной куклы: обработку действия на тело не как на один объект, а как на скелет с привязкой к нему частей тела. У каждого сустава персонажа появились ограничители вращения, эти ограничители бывают двух видов: шарнирные и линейные. Линейные могут вращаться только вокруг одной оси, а шарнирные по всем трём.

Основные особенности движка:

  • Жидкая поверхность (fluid surface) - плоский объект, состоящий из большого числа полигонов, имитирующий поверхность жидкости. Такой объект можно поместить на границу с объёмом воды и он будет искажаться под действием проходящих через него объектов (например, ныряющего игрока).
  • Поддержка VoIP - возможность переговоров через микрофон с другими игроками во время игры.

    Транспортные средства - неподвижные (стационарные оборонительные установки), составленные из нескольких объектов (Karma vehicle), с использованием скелетной структуры и транспортные средства, прикрепляемые к другим транспортным средствам (например, пулемёт на башне танка). Некоторые транспортные средства могут действовать без «пилота», управляемые собственным искусственным интеллектом.

  • EAX 3.0 - движок трёхмерного звука, разработанный Creative Labs.
  • Отказ от варп-зон из-за перехода на движок Karma и 32-битной графики.

Unreal Engine 2.5

Как и версия 1.5, 2.5 нацелена в основном на оптимизацию движка под новые API - появилась поддержка DirectX 9, OpenGL 2 и Pixomatic (специальная версия рендера, умеющая рендерить изображения в основном силами процессора, то есть она подходила для компьютеров с мощным процессором и слабой видеокартой). Так же добавлена поддержка 64-битных операционных систем Windows (NT 4 и в дальнейшем XP) и Linux. Наибольшее возможное разрешение текстур поднято до 4096x4096 пикселов, добавлена полноценная поддержка юникода (16-бит), что позволило создавать полностью локализованные игры на азиатских языках (до этого часть фраз приходилось оставлять на английском).

Самой красивой игрой на UE 2.5 можно назвать Killing Floor - игра вышла в 2009 году, уже после выхода UE 3:


Unreal Engine 2X и Runtime

Это специальные версии движка - в первом случае для Xbox: были введены новые визуальные эффекты, такие как depth of field (глубина зрения), динамическая гамма-коррекция, bloom и различные вариации blur. Формат текстур был изменён для более реалистичного отображения теней в высоком разрешении, добавлена поддержка голосового чата, сервиса Xbox Live, а также функция разделения экрана. Был использован только в Unreal Championship 2. Во втором случае - урезанная бесплатная для некоммерческого использования версия движка, имевшая лишь базовый набор моделей и текстур. Полная же версия была платной - за лицензию на одну игру Epic Games просили от 350000 долларов.

Unreal Engine 3

Новая версия была сделана с упором на многоядерные процессоры - как в ПК, так и в новых (в то время) консолях PlayStation 3 и Xbox 360: теперь движок использует два параллельных потока данных - основной поток (отвечающий преимущественно за игровой процесс) и поток рендеринга. Кроме двух главных потоков могут быть вызваны второстепенные, которые выполняют разовые задачи. Так же движок обзавелся поддержкой API DirectX 10 и OpenGL 3 (от Pixomatic отказались как из-за его старости, так и из-за того, что даже самые мощные процессоры перестали справляться с графическими задачами). Появилась поддержка множества других платформ - начиная с Wii, iOS и Android и заканчивая такой экзотикой, как Windows RT.

Основные особенности нового движка:

  • Поддержка HDR, попиксельного освещения, динамических теней, Pixel Shader 4.0, геометрических шейдеров. Сам графический конвейер был переведён под управление шейдеров.
  • Физический движок сменился на PhysX, что позволило сделать эффекты тккани и улучшить эффекты жидкости. Однако аппаратное ускорение поддерживается только на Windows, поэтому эффекты на других платформах были урезаны.
  • За анимацию лиц персонажей отвечает интегрированный анимационный движок FaceFX, позволивший улучшить детальность прорисовки и реалистичность мимики.
  • Добавлена поддержка технологии SpeedTree, позволившая значительно снизить нагрузку на систему при отрисовке растительности (деревьев и травы).

Unreal Engine 3.5

Как и в предыдущих версиях х.5, тут была произведена, в основном, оптимизация - движок научился работать с DirectX 11, а так же был добавлен фильтр пост-обработки Ambient occlusion, улучшающий тени и освещения. Было увеличено число обрабатываемых персонажей в кадре. Переработана на новом уровне технология динамической водной поверхности, физика мягких тел и разрушаемое окружение также значительно улучшены.

На движке вышло больше 100 проектов, среди которых линейки Bioshock, Borderlands, Mass Effect, X-com, Mortal Combat, Battlefront и многие другие. Среди мобильных игр стоит отдельно выделить линейку Infinity Blade, до сих пор являющуюся эталоном графики под мобильные платформы:



Самой красивой игрой под ПК на UE 3 стоит назвать, пожалуй, Outlast 2 (хотя она еще в разработке):


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

Unreal Engine 4

Это самая новая и постоянно развивающаяся версия движка. Она поддерживает консоли текущего поколения (PlayStation 4 и Xbox One), API DirectX 12, а так же с недавних пор - и Nintendo Switch. Добавили достаточно много нового:

  • Поддержка очков виртуальной реальности SteamVR, HTC Vive и PlayStation 4 Morpheus (для последнего есть поддержка 120 Гц).
  • Новая система рендеринга травы и других объектов на земле вокруг игрока, которые создаются путём получения многочисленных копий одного или нескольких объектов - это сильно снижает нагрузку на видеокарту, при этом практически не портя картину (мало кто заметит, что два камня в нескольких метрах друг от друга одинаковы).
  • Иерархическая система LOD"ов (уровней детализации), которая позволяет рендерить объект на большом расстоянии с худшим качеством и меньшим числом запросов к рендереру.
  • Процедурный генератор растительности, который позволяет генерировать как огромные, так и маленькие области заполненные деревьями, кустами и травой так, как будто бы они здесь реально росли.
  • Возможность воспроизведения и перемотки последних нескольких минут геймплея в сетевых играх. .
  • Новый, фотореалистичный Depth of Field (глубина резкости), который теперь похож на боке, получаемый при съемке на камеру.
  • Отражения для полупрозрачных поверхностей (в том числе и отражения эффектов типа взрывов).
  • Автоматическое создание Convex Collision Meshes (выпуклая геометрия, на основе которой просчитываются физические столкновения).
  • Инструменты для локализации игр (в том числе - перевод фраз на текстурах).
  • Paper2D - встроенный движок для создания спрайтов.
Движок является абсолютно бесплатным для некоммерческого использования, однако если вы хотите создавать на нем игры, то вам придется платить 19 долларов в месяц за лицензию, а так же отчислять 5% от заработка создателям движка - Epic Games. Из-за таких более чем приемлемых условий инди-проектов на UE 4 много, да и крупные студии не отстают - в разработке сейчас находится больше 30 проектов, в том числе Borderlands 3, Tekken 7 и Dead Island 2. Самой красивой из вышедших игр можно назвать Gears of War 4:

Будущее движка

Об UE 5 неизвестно ничего, да и это понятно - 4ая версия вышла всего пару лет назад и активно разрабатывается, поэтому ждать крупного релиза ближайшие пару лет не стоит.

А не так давно нам попалась на глаза интересная статья о разработке мобильных игр с применением Unity (от 12 августа 2015 года); правда, ключевое достоинство статьи заключается в том, что в ней этот инструмент сравнивается с основным конкурентом: Unreal Engine.

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

Статья переведена с небольшими сокращениями

Мы (компания OnlineFussballManager GmbH) в настоящее время приступаем к разработке нового проекта для мобильных устройств. Мы собираемся создать захватывающую и уникальную комбинацию пошаговой стратегии и игры типа «футбольный менеджер».

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

Итак, момент истины настал, когда мы взялись за разработку визуального представления.
Учитывая поставленные перед нами требования и тот факт, что мы должны разработать эту игру и для iOS, и для Android - как реализовать этот проект технически?

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

Конечно, можно привести массу доводов о том, какой движок лучше и для каких целей. Сколько людей - столько мнений. Должны признаться, на какой-то момент и мы ощутили такой субъективизм. Команда активно поддержала Unreal Engine. Однако, сколько мы ни присматривались к UE, никто не мог охарактеризовать его объективно, без апелляции к личному мнению.

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

Далее пришел черед Cocos2D, который на первый взгляд казался многообещающим. Как понятно из названия, Cocos2D оптимизирован под разработку двухмерных игр. Поэтому возникал вопрос: хотим ли мы создать нашу изометрическую сетку зданий в истинном 2D или в фактическом 3D с фиксированной точкой обзора. После некоторых дополнительных исследований мы выбрали реализацию в 3D. В таком случае Cocos2D нас, очевидно, не устраивал.

Мы обратились к Marmalade. Ведь при помощи Marmalade были созданы такие известные игры как »Plants vs. Zombies« и »Godus«. Но, хотя мы и нашли у этого движка немало достоинств, оставались проблемы, вынудившие нас обратиться к другим вариантам. Один из наиболее существенных недостатков заключался в том, что сообщество специалистов по Marmalade довольно невелико.

Итак, из крупных альтернатив остались только Unreal и Unity. Но даже к этому моменту мы не могли уверенно выбрать один из двух без посторонней помощи.

К счастью, приближалась игровая конференция GDC в Сан-Франциско, поэтому мы воспользовались шансом слетать туда и посоветоваться с коллегами.

Встретились там с ребятами из Epic, вплотную познакомились с Unreal Engine, попробовали Paper 2D, их инструмент для просмотра превью мобильных приложений и спросили, чем бы нам воспользоваться: их движком или Unity?

Ребята нам удружили, сказав примерно следующее: «Unreal классный, но и Unity неплох. Попробуйте и то, и другое».

Тогда мы отправились к разработчикам Unity и присмотрелись к Unity 5 - как он повышает производительность в iOS. В конце концов, задали им такой же вопрос и получили аналогичный ответ.

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

Поскольку все наши программисты были заняты на текущих проектах, мы поручили работу над прототипом специалистам из компании Bit Baron.

Исследование движков, выполненное в компании Bit Baron

Компания »Online Fußball Manager« (OFM) планировала создать мобильную игру. Нас попросили о помощи, чтобы увереннее определиться, какой движок лучше всего подходит для их проекта. До тех пор мы занимались исключительно разработкой браузерных игр, но решили, что справимся с задачей. Было предложено сравнить два варианта: Unity и Unreal. В настоящее время это два «локомотива» в мире программирования игр. Существует немало отчетов, подробно иллюстрирующих мельчайшие различия между ними. Но особенность нашей работы заключалась в том, что мы написали для сравнения два практически идентичных тестовых приложения и охарактеризовали их показатели в соответствии с системой контрольных точек (эталонное тестирование).

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

Тестовый кейс

Мы хотели создать такой эталонный тест, который бы предоставил OFM информацию, непосредственно связанную с типом создаваемой ими игры. Заказчики указали, что в прототипе должно быть несколько анимированных зданий и деревьев. Поэтому мы создали 3D-сцену, где пользователю предлагалось самостоятельно расставлять эти объекты на карте. Размеры сетки составляли 11x16, она вмещала до 176 зданий. Каждый квадрат сетки поддерживал до 6 деревьев, таким образом, в сцене могло быть свыше 1000 деревьев. Мы добавили простой пользовательский интерфейс, где можно было добавить в сцену указанное количество деревьев и зданий. Также добавили функцию добавления зданий в конкретных местах - для этого нужно было щелкнуть по карте в желаемой точке. Что касается организации программы, мы построили сетку на плоскости, а просмотр сцены сделали через камеру, расположенную «над головой» пользователя. Мы также добавили специальный функционал камеры, чтобы пользователь мог масштабировать и панорамировать сцену. Поскольку этот прототип создавался, чтобы определиться с движком для разработки, мы сделали все возможное, чтобы в обоих вариантах сцена выглядела почти одинаково. В противном случае было бы невозможно сравнить визуальное качество первого и второго варианта. Для этого пришлось повозиться, поскольку некоторые вещи обрабатываются в Unreal и в Unity по-разному. В итоге у нас получились две очень похожие сцены.

Чтобы унифицировать тестирование производительности, мы хотели применить в обеих системах идентичные модели деревьев и зданий. Для деревьев использовалась мобильная модель SpeedTree, включавшая как раз около 1000 многоугольников и позволяла хорошо оценить, насколько мелкие инкременты в отображаемых треугольниках сказываются на кадровой частоте. Что касается анимированных зданий, нам не удалось найти для них такую модель, которая работала бы с обоими движками, поэтому мы применили две разные модели. Обе были рассчитаны чуть более чем на 16 000 многоугольников каждая, у них были практически идентичные настройки материалов. Мы полностью отключили уровни детализации (LOD), чтобы в обоих вариантах на любом расстоянии от камеры отображалось одинаковое количество треугольников. Тест проектировался не только с целью отразить различия производительности между двумя движками, но и чтобы показать разницу в качестве рендеринга. Кроме того, приходилось внимательно следить за стандартными шейдерами Unreal Engine. Заметив, что Unreal выглядит явственно лучше, мы обнаружили, что в камере действует ряд шейдеров, затратных с точки зрения производительности. После их отключения сцена визуально почти не изменилась. Освещение представляло совсем другую проблему, поэтому нам понадобилось некоторое время, чтобы довести его до ума.

Заказчики интересовались не только тестами рендеринга, но и тем, каковы будут впечатления от разработки на первом и втором движке. В конце концов, что толку от производительности, если вы не успеваете написать игру в установленные сроки. Чтобы очертить эти впечатления, мы сравнили и такие факторы, как длительность сборки, имеющуюся документацию, сложность развертывания в мобильной среде, а также сложность итераций кода. Мы полагали, что именно по этим показателям Unity будет сильнее (как флагман в области разработки мобильных игр).

Проект Unity

Прототип в Unity. На карте нанесено 200 деревьев

Хорошее

  • Основные элементы Unity – это объекты (»GameObject«) и компоненты (»MonoBehaviour«). Освоив эту концепцию, вы уже можете работать с Unity. Если правильно пользоваться этой системой, она позволяет значительно улучшить организацию проекта.
  • В Unity включено много компонентов, обеспечивающих вас всем необходимым для создания игры – кроме игровой логики как таковой. Как было указано выше, компонент может быть таким маленьким, как Plane (в Unreal отсутствует), который мы использовали для построения сетки. Новейшие дополнения движка - компоненты »UI« и »Layout«, обеспечивающие создание мощных и масштабируемых графических пользовательских интерфейсов.
  • Редактор можно расширять собственными сценариями, кроме того, в Asset Store доступна масса ресурсов на все случаи жизни. Хранилище Asset Store также содержит множество полезных сценариев, моделей материалов и пр. Они будут особенно кстати при прототипировании - можете просто загрузить все необходимое в виде временных ресурсов и пользоваться этим как подручными имитационными моделями.
  • Unity был одним из первых общедоступных движков, поддерживавших мобильную разработку. Поэтому он очень удобен при развертывании в мобильной среде, выглядит и действует там практически так же, как и в редакторе. Система постоянно совершенствуется, и развертывание протекает очень гладко. Это был существенный фактор, благодаря которому мы решили делать мобильный прототип.
  • Пожалуй, Unity может похвастаться самым широким сообществом специалистов среди всех игровых движков, поэтому если у вас возникнет вопрос - скорее всего, ответ на него найдется. Пусть Unity и поддерживает множество языков для написания сценариев, документация по каждому из них очень основательная. Более того, даже если вы найдете ответ, касающийся другого языка, логика этого ответа будет вам, тем не менее, понятна, и вы сможете адаптировать ее для решения своей проблемы.
  • В Unity проделана огромная работа по оптимизации рендеринга для множества однотипных объектов. Чтобы добиться сопоставимой производительности в Unreal, пришлось бы задействовать Instanced Rendering, а этот механизм обычно менее гибок, чем рендеринг в Unity.

Плохое

  • Исходный код движка закрыт. Если вы обсуждать с Unity цену исходного кода, то с этим придется смириться. Поэтому возможны проблемы, если откажет та или иная возможность, на которую вы полагаетесь - придется ждать обновления.
  • Новая система UI вполне хороша. В ней отсутствует специальный редактор, все изменения вносятся прямо в сцене - а сцена-то очень большая. Когда вы открываете сцену и хотите отредактировать UI, вам сначала придется изрядно увеличить масштаб интересующей вас области.

Это картинка из редактора Unity. Нам очень повезло, что мы смогли дополнить его нашими собственными сценариями

Ужасное

  • C новой системой UI в Unity есть две проблемы. При нажатии пальцем по сенсорному экрану вы не сможете определить, был ли нажат конкретный графический элемент. Допустим, пользователь хочет панорамировать экран при помощи слайдера. Но если мы наследовали класс GraphicsRaycaster, то можно открыть любые желаемые данные, которые могут быть сделаны общедоступными. Если заменить GraphicsRaycaster в объекте холста, то можно проверить, был ли нажат элемент UI.
  • Вторая проблема с пользовательским интерфейсом Unity связана с масштабированием под дисплеи различного размера. В принципе, у объекта холста есть опции масштабирования с некоторыми параметрами. Но организовать их предпросмотр было очень сложно, пришлось несколько раз развертывать приложение на устройстве, пока мы не подобрали нормальную конфигурацию.
  • Кроме того, нас очень озадачила статистическая панель Unity. Реализовав внутриигровой счетчик кадровой частоты, мы сравнили его значение с тем, что выводилось на статистической панели редактора Unity. Эти значения отличались. Поискав в Интернете другие варианты реализации, мы нашли ответ: статистическая панель дает оценку того, сколько кадров промотала бы игра, если бы работала автономно, а не в редакторе. Поэтому логика нашего счетчика кадров была совершенно правильной.

Значения кадровой частоты 37 против 32. В статистической панели Unity видим оценочные данные для автономного приложения, которые не совпадают с реальными

Проект Unreal

Вот как проект выглядит в редакторе Unreal. Здесь есть много специализированных вложенных редакторов, некоторые из которых сравнимы по функционалу с целыми программами

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

Когда настройки были откорректированы, деревья получились лучше, но все равно не так хорошо, как в Unity

Хорошее

  • Пробная версия Unreal совершенно бесплатная. В ней вы получаете полнофункциональный редактор. В Unity также есть бесплатная версия, но переход на Pro обойдется в кругленькую сумму.
  • В Unreal есть мощный редактор, заключающий в себе несколько узкоспециальных редакторов. Если вы знакомы с этими «вложенными» редакторами, то они очень помогут вам в разработке, а зачастую предоставят и такую информацию, которой в Unity вы не увидите. Есть редакторы, которые даже могут послужить полноценной заменой некоторым программам. Взаимодействие всех этих подсистем - просто шедевр.
  • Движок поставляется вместе со всем исходным кодом. Поэтому в нем можно покопаться и понять, как функционируют отдельные детали. Более того, вы даже можете исправлять баги в движке или самостоятельно дополнять его функционал.
  • Визуализация в редакторе великолепна. Просто глаза разбегаются от изобилия опций рендеринга (связанных, например, с освещением или со сложностью шейдеров). Здесь вы найдете массу ультрасовременных шейдеров, которые также поставляются вместе с движком. В принципе, Unreal предлагает наилучший механизм рендеринга на рынке. Можно создавать удивительно красивые сцены.
  • Чертежи (blueprints) удобны для того, чтобы быстро создать что-нибудь простое и реализовать базовую игровую логику. Они превосходно интегрируются с C++, и такое решение принято неслучайно: оно не только открывает широчайшие возможности как для начинающих, так и для опытных разработчиков, но и позволяет им взаимодействовать друг с другом.
  • Общая интеграция с C++ великолепна. Как и горячая перезагрузка.

Чертежи превосходны при решении простых задач, их интеграция с C++ просто фантастическая. Но если задействуется более сложная логика, то они быстро приходят в беспорядок, и разобраться с ними становится непросто.

Плохое

  • При разработке на Unreal Engine сложно набрать темп. Даже если вы отлично знаете C++, потребуется немало времени для изучения различных макросов и функций UE4. Это может быть очень сложно для тех, кто одновременно занимается изучением C++.
  • В чертежах можно очень быстро запутаться. Когда логика включает десятки узлов, в каждом из которых находится чертеж, то ее иногда удается упростить до пары строк кода, написанных на обычном C++. Обычно это не проблема, поскольку вполне можно работать и с C++, но с некоторыми вещами, например, »UMG« (система UI) использовать чертежи необходимо, поэтому и возможна путаница.
  • Мобильный симулятор оказался очень непоследовательным. Он выдавал предупреждения, когда мы пытались использовать шейдерные функции, не используемые в мобильной среде, но даже если шейдер проходил валидацию, то мог не сработать. В принципе, этот симулятор – хорошая вещь, но его визуальные качества оставляют желать лучшего.
  • Хотя Unreal и обладает большим сообществом разработчиков, мы редко получали там ответы на вопросы. Кроме того, почти вся оказанная нам поддержка касалась чертежей. Unreal Engine 4 активно наращивает сообщество, это уже удается неплохо, складывается ощущение, что специалисты стремятся развиваться и помогать. Но сообщество Unity все-таки лучше.

Ужасное

  • Серьезно не хватает документации по C++. Онлайновый справочный материал по классам C++ неудобен. Кроме того, из-за постоянных обновлений многие возможности быстро устаревают. Будьте внимательны, просматривая справочные видеоролики, поскольку там может описываться неактуальная версия движка и функции, которые больше не используются.
  • Работая с GUI, мы использовали инновационную систему »UMG«. Она основана на чертежах и может быть очень полезна. Немного поработав, нам удалось унаследовать класс C++ и немного навести порядок с чертежами. Однако система по-прежнему сырая, в ней недостает некоторых элементов управления, например, кнопок-переключателей. Кроме того, соответствующая документация по C++ практически отсутствует. Редактор несколько раз отваливался, пока мы разрабатывали UI. Неожиданные отказы могут стоить целых часов рабочего времени, они изрядно нервируют. Разработка этой системы продолжается, но пока она далека от совершенства.
  • Мобильная разработка с Unreal медленная. Программа развертывается на устройстве очень долго. В Android возникали некоторые визуальные проблемы - например, там были расплывчатые очертания и неосвещенные деревья. В iOS проблемы были гораздо серьезнее. UE4 поддерживает сборку для устройства с iOS лишь при условии, что ваше приложение состоит только из чертежей. Это вина Apple, но мы проделали весь путь по импорту ключей разработки (можете себе представить), прежде чем столкнулись с этой проблемой. В iOS текстуры деревьев, построенных на основе SpeedTree, не отображались, деревья стояли серые и голые, без листьев. Итак, поддержка мобильной разработки в Unity существенно выигрывает по сравнению с Unreal.

Результаты эталонного тестирования. Кадровая частота

Удивительно, но при тестировании кадровой частоты (FPS) на разных устройствах мы получили очень несхожие результаты. На некоторых устройствах Unity выигрывал при любой конфигурации. В других случаях Unreal обставлял Unity в тех тестах, где было много зданий. В принципе, Unreal выиграл, но дорогой ценой. Качество изображения и согласованность в Unity были существенно лучше. Текстуры Unreal на некоторых устройствах выглядели расплывчато, деревья получались значительно хуже. Разница в качестве была отчасти обусловлена тем, что отображается с одной стороны в редакторе Unreal и мобильном превью, а с другой – на реальном мобильном телефоне. Эта проблема была особенно очевидна, если говорить об освещении сцены. Было очень сложно подобрать настройки так, чтобы правильно настроить свет, весь сеттинг на мобильных устройствах зачастую выглядел затемненно. В этом отношении Unity оказался гораздо последовательнее, изображение на любых смартфонах было таким же, как и при предварительном просмотре в редакторе.

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

В iOS оба движка примерно с одинаковым успехом отображали анимированные модели. Однако тесты с деревьями на этом устройстве оказались безрезультатными, поскольку Unreal не отобразил никаких текстур на моделях деревьев. Мы попытались найти причину этой модели, но не смогли ее разрешить. Кроме того, должны отметить, что при развертывании с применением этих движков у вас под рукой должен быть компьютер Apple. Это очень неудобно, но виновата в такой ситуации сама компания Apple. Заказчики также просили нас выполнить эталонное тестирование на Windows Phone. К сожалению, Unreal пока не поддерживает развертывания на Windows phone, поэтому здесь Unity победил по определению. Поскольку пока Windows Phone занимает очень небольшую долю рынка, развитие Unreal в этом направлении не считается приоритетной задачей.

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

Другие контрольные параметры

Вот еще некоторые интересные результаты, которые удалось выяснить в ходе наших тестов:

  • Оба движка почти не отличались по потреблению памяти. На устройствах с Android немного выигрывал Unity, на устройствах с iOS - Unreal.
  • Проект Unity существенно компактнее (Android: 42 MB / iOS: 100 MB) чем Unreal (Android: 101 MB / iOS: 173 MB).
  • Unity примерно втрое быстрее развертывается на устройстве. Кроме того, в Unity гораздо быстрее компилируется код.
  • Unreal значительно экономнее расходовал батарею. Спустя два часа работы со 150 анимированными моделями на экране Unreal успел разрядить батарею Android на 42 процента и iOS – на 36 процентов. Unity потребил примерно 72 процента на Android и 47 процентов на iOS при такой же настройке и длительности работы.

Выводы

По результатам исследования нам многое понравилось в обоих движках. Кроме того, мы обнаружили много областей, где эти инструменты можно улучшить, чтобы программисту было удобнее работать. Ни один из движков не имел существенного перевеса над другим, учитывая, как быстро изменяются их возможности и поддержка. Тестирование рендеринга показало, что оба продукта выжимают из устройства максимум и, в принципе, вполне сопоставимы. Опять же, в этой ситуации на первый план выходит удобство использования и интуитивная понятность разработки. Учитывая все, что мы узнали об этих движках, и с какими проблемами столкнулись при разработке, мы оказались перед непростым выбором, но в итоге отдали предпочтение Unity.

Несмотря на то, что изначально мы ставили на победу Unreal Engine, в настоящее время Unity все-таки более выигрышный вариант, как минимум, если говорить о разработке мобильных игр.

Вот основные доводы в пользу нашего решения:

  • Unity визуально выглядит более согласованно на всех устройствах, кроме того, быстро развертывается «одним щелчком» на любой платформе.
  • Unity занимает на устройстве гораздо меньше места, меньше сказывается на работе конечного пользователя. Компактный размер особенно важен в Google Play Store, где APK приходится делить на части, если этот файл оказывается крупнее 50mb.
  • Unity гораздо проще изучить и понять. Вооружившись Unity, неопытный пользователь может приступить к работе быстрее и создавать продукты, поддержку которых гарантирует большое сообщество специалистов.
  • Длительность итерации в Unity гораздо меньше (развертывание и компиляция исходного кода происходит быстрее, шейдеры компилируются почти мгновенно)

Мы хотели бы подчеркнуть, что наши результаты следует расценивать в контексте сделанного прототипа. То, что подходит для одной компании, не подходит для другой. Кроме того, существует еще множество игровых движков, некоторые из которых могут лучше соответствовать вашей конкретной задаче. В некоторых компаниях, обладающих достаточным временем и ресурсами, будет целесообразнее даже написать собственный движок. В разработке игр универсального решения не существует. Окажите себе услугу и поэкспериментируйте как следует. Тем более, что многие из них удешевляются или вообще становятся условно бесплатными как Unreal. Мы не удивимся, если Unity также последует примеру Unreal и либерализует ценовую модель.

Заключение

Интересно отметить, что и ребята из Bit Barons до создания прототипа советовали нам взять Unreal Engine для нашего проекта. Учитывая, что и мы в OFM изначально отдавали предпочтение Unreal Engine, возможно, итоговое решение оказалось неоптимальным.

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

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

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

Статьи по теме: