Что проще unity или unreal engine 4
Перейти к содержимому

Что проще unity или unreal engine 4

  • автор:

ВЫБОР МЕЖДУ UNITY3D ИЛИ UNREAL ENGINE 4 Текст научной статьи по специальности «Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Лазарев Андрей Игоревич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Лазарев Андрей Игоревич

Разработка мультиплеерной игры на платформе Unity 3D

ОБЗОР ПРЕИМУЩЕСТВ И НЕДОСТАТКОВ ИГРОВЫХ ДВИЖКОВ. ОБОСНОВАНИЕ ВЫБОРА ИНСТРУМЕНТОВ И ТЕХНОЛОГИЙ РАЗРАБОТКИ КЛИЕНТСКОЙ ЧАСТИ ИГРОВЫХ ПРИЛОЖЕНИЙ

Обзор трехмерных графических движков для создания виртуального тренажера
Процесс разработки движка для 2D игр и интерфейсов Sad Lion Engine
Современные игровые движки
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ВЫБОР МЕЖДУ UNITY3D ИЛИ UNREAL ENGINE 4»

ВЕСТНИК НАУКИ И ТВОРЧЕСТВА

ВЫБОР МЕЖДУ UNITY3D ИЛИ UNREAL ENGINE 4

Лазарев Андрей Игоревич, Новосибирский университет экономики и управления, г. Новосибирск

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

Ключевые слова: программирование, Unity3d , Unreal Engine 4

В то время, как многие студии-разработчики игр используют собственные игровые движки, есть еще огромный рынок инди-разработчиков и даже крупных студий, нуждающихся в игровом движке, который поможет создать свою игру за краткие сроки. Unity3d и Unreal Engine 4 — это одни из самых популярных игровых движков, доступных на сегодняшний день. Хотя оба — отличные игровые движки, в зависимости от того, что вы собираетесь сделать, каждый может стать для вас оптимальным вариантом. Возможно, вы предпочитаете простой удобный интерфейс, или, может быть, язык программирования для вас более приоритетен — независимо от тех или иных обстоятельств, давайте посмотрим на различия, а также на сильные и слабые стороны каждого движка. Тогда вы и сможете решить, какой из них будет соответствовать вашим потребностям.

Какой тип игр вы собираетесь создавать?

Что выбрать unity3d или unreal engine 4 Первый вопрос, который вы должны задать себе — как вы собираетесь использовать движок и какие игры вы хотите создать? Вы хотите создать 2d платформер или 3d шутер от первого лица? Может, гибрид 2d и 3d? Возможно, вы хотите начать с первой небольшой игры и разработать простой пазл с базовой физикой, или предпочитаете запустить игру в веб-браузере, или на мобильных платформах? А может, игровые консоли?

ВЕСТНИК НАУКИ И ТВОРЧЕСТВА

Кстати, как вы собираетесь зарабатывать деньги на своей игре? Внутренние покупки, реклама или просто сделать игру платной?

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

Если вы хотите делать мобильные игры — Unity будет идеальным решением. Это подтверждается доминированием Unity среди разработчиков мобильных игр, а также большим количеством плагинов для использования нативных возможностей мобильных платформ: реклама, внутренние покупки, аналитика, игровые центры и т. д. — все это интегрируется в игру за считанные минуты. Если вы нацелены на разработку 2d игры, Unity тоже будет прекрасным выбором, потому что именно у него есть прекрасные возможности для создания 2d игр. Хотя Unreal Engine 4 в последнее время пытается заманить разработчиков мобильных приложений, обещая не меньшие, а даже большие возможности для 2d игр.

Если вы хотите создавать 3d игры, Unity также очень мощный инструмент для разработки 3d игр. Хотя графически он далеко не на том уровне, что Unreal Engine 4. При необходимости использовать next-gen графику лучшим решением будет Unreal Engine 4.

В Unreal Engine 4 используется язык программирования C++. В Unity3d в основном C# . Какая программа лучше с точки зрения языков программирования — действительно сводится к личным предпочтениям. Если вы предпочитаете какой-либо из этих языков, то выбор движка для вас может быть довольно очевидным.

ВЕСТНИК НАУКИ И ТВОРЧЕСТВА

1 Construction ticnpt

fJfort о ua^CofttWpfl » » »

■ ф Tif[J« . New Bnghln«5

5*1 Soira Radius

Рис. 1 Blueprint в Unreal Engine 4

Но Unreal Engine 4 имеет решение для людей, которые боятся высокого порога вхождения в C++. Это Blueprint — редактор визуального скриптинга. Технически вам не нужно писать ни одной строки кода. Это очень удобно для создания быстрых прототипов, и вы даже можете создавать целые игры с помощью Blueprint. Если вы не мастер программирования, Unreal Engine 4 будет для вас отличным вариантом. К слову, в Unity есть похожее решение. В Unity Asset Store можно приобрести расширение для редактора под названием Playmaker, которое так же позволяет разрабатывать прототипы игр без написания кода.

Оба движка Unreal Engine 4 и Unity3d имеют свой магазин ассетов: из них можно загрузить готовые 3d модели персонажей и окружения, текстуры и даже такие вещи, как звуки и системы частиц. Тем не менее, Unity3d однозначно выходит на первое место с точки зрения количества ассетов в магазине. В нем имеется все — от анимаций и генераторов GUI до расширений редактора для управления ИИ. Там есть все, что нужно для создания игры.

ВЕСТНИК НАУКИ И ТВОРЧЕСТВА

Рис. 2 Asset Store в Unity3d

Unreal Engine 4 и Unity3d являются условно бесплатными. Полная версия Unreal Engine 4 будет бесплатной для вас, пока доход от игры составляет меньше $ 3 000 в квартал, если же больше — вам придется делиться 5% от своих доходов.

С Unity3d все сложнее. Если доходы вашей компании составляют меньше $ 100 000 в год, вы можете использовать бесплатную версию, но она не полная. Хоть и бесплатной версии вполне достаточно для написания полноценной игры, в ней отсутствуют некоторые важные возможности: такие, как замена стандартного splash screen или создание Asset Bundle. На профессиональную версию Unity3d нужно потратить один раз $1 500 или купить подписку за $75 в месяц. Если вы разрабатываете мобильные игры, тогда на этом ваши затраты не заканчиваются. Придется расстаться с $1 500 ($75 в месяц) за iOS лицензию и столько же за Android.

ВЕСТНИК НАУКИ И ТВОРЧЕСТВА

Рис. 3 Сайт Unity3d информация о расширенной версии

В отличие от Unity3d, в Unreal Engine 4 есть еще один большой плюс для программистов — это открытый код. Выбор остается за вами.

Орёл или решка: сравнение Unity и Unreal Engine

Орёл или решка: сравнение Unity и Unreal Engine

Первая область сравнения — 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# и UnityScript. 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? Поделитесь в комментариях.

Итак, вы решили перейти с Unity на Unreal Engine

Наверно, произошло что-то плохое, и теперь вы читаете эту статью. Сочувствую! Давайте начнём по порядку.

Меня зовут Джо Уинтергрин, я генералист Unreal Engine. Можете взглянуть на все мои ресурсы. В статье я приведу полезную информацию для новичков в Unreal, имевших опыт работы с Unity.

С чего начать?

  • Прочитайте документацию по Gameplay Framework. Всю целиком! У Unreal есть Gameplay Framework. Прочитайте документацию и освойтесь в ней. Это правильное решение при разработке любого типа игры. Не пропускайте её. Держите её под рукой, чтобы перечитывать.
  • Влейтесь в сообщество. Это учетверит вашу скорость обучения. Есть Discord для бывших Unity-разработчиков Алекса Роуза и есть мой Discord.
  • Почитайте Epic Online Learning Library. Вот она. Делайте упор на статьи, написанные Epic Games.
  • Скачайте последнюю версию Unreal Engine из Epic Games Launcher. На данный момент это 5.3. В общем случае всегда стоит начинать проект на самой новой версии. Кроме того, нет никаких причин больше пользоваться UE4 — UE5 лучше и имеет все возможности UE4.
  • Изучите документацию «Unreal Engine for Unity Developers» компании Epic. Это хороший способ начать. Вот она.
  • Прочитайте статью целиком. Я знаю, здесь много текста, но не ничего не пропускайте! Всё это очень важная и точная информация! В Интернете много некачественных сведений об Unreal, но не здесь. Здесь всё правильно.

«Просто дай мне советы!»

Ну ладно! Вот двадцать минут сжатых советов и видео о Class Viewer (включите Class Viewer). И видео Криса Мёрфи о фишках, которые вы, возможно не знаете. Советую сразу же внимательно посмотреть эти видео, хотя они довольно насыщенные информацией; так вы получите общее представление о возможностях движка, а после, когда освоитесь, сможете вернуться, чтобы непосредственно использовать эти функции.

«У меня так много вопросов!»

Ниже представлены ответы на самые часто задаваемые вопросы.

1. Меня беспокоит вся эта ситуация в целом!

1.1. Epic не обманет меня?

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

И раньше, и сейчас Epic обычно не делает резких действий. Например, когда она сменила взимаемую Unreal Marketplace долю доходов с 30% до 12%, она сделала это ретроактивно и вернула каждому разработчику в Marketplace разницу за каждую его продажу.

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

1.2. Какова ситуация с оплатой? 5% от общей выручки — это не так уж здорово!

Её нет, пока вы не заработаете миллион долларов США, и только после этого она составляет 5% от общей выручки; при этом считаются только те кварталы, в которые вы заработали больше $10000. Поэтому в конечном итоге большинство разработчиков никогда ничего не будут платить. Нет никакой стоимости подписки или чего-то другого. Уточню: если вы заработаете миллион баксов, а потом ещё один доллар, то будете должны компании пять центов.

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

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

Если вы делаете «линейный контент» наподобие фильмов, сериалов и так далее, то Unreal в буквальном смысле бесплатен для вас.

1.3. Какова ситуация с платформами? Консолями? Epic Launcher?

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

1.4. Обязан ли я помещать в свой продукт логотип Unreal?

Нет, на самом деле, чтобы использовать его, нужно заполнить форму, и вам ещё даже могут отказать. Но вам всё равно нужно будет указать в титрах «используется Unreal Engine, права принадлежат бла-бла-бла. ».

1.5. Разве компанией Epic владеет не Tencent?

У Tencent есть неконтролирующая доля акций. Мне объяснили это так: большинством владеет Тим Суини, и никто другой больше не имеет права голоса. Впрочем, Tencent действительно инвестировала в компанию и владеет её частью.

1.6. Платит ли тебе Unreal за твою полезную информацию?

Хотелось бы, конечно. Честно говоря, не знаю, что заставляет меня этим заниматься.

Но если хотите, можете отправить мне денег, а ещё у меня есть Patreon.

2. В чём концептуальное отличие Unreal?

2.1. Unreal и Unity нельзя назвать игровыми движками в одном смысле этого термина.

Unreal, idTech, Cryengine, Source, Snowdrop и так далее — это игровые движки, возникшие в процессе разработки игр. С Unity и Godot произошло иначе; это вполне нормально, но используются они фундаментально иначе.

Если вы используете движок Half-Life, то у вас есть все преимущества работы с инструментами, позволившими выпустить Half-Life; вы не пишете собственную систему оружия, сетевой игры или системы сохранений игр.

То же самое относится и к Unreal, только вы не получаете «то, что создала Epic в процессе разработки Gears of War» — Epic 25 лет занималась поддержкой AAA-лицензиатов и созданием систем, выполнявших для них достаточно большой объём работы; вот, что вы получаете. Если вы инди-разработчик, то движок имеет излишнюю для вас мощь, но это хорошо.

2.2. Не изобретайте велосипед.

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

Тем не менее, не во всём Unreal превосходен. Мне не нравятся Behaviour Trees движка Unreal, они кажутся мне очень плохими. Я создал вместо них собственную ИИ-систему, которая, на мой взгляд, очень хороша. Возможно, и вам удастся сделать что-то подобное!

2.3. Но я хочу изобрести свой велосипед!

Я уважаю ваше желание, но вам нужно преодолеть его. Это стоит делать где-то в другом месте.

2.4. Портирование на консоли здесь — это не работа на аутсорс.

Разумеется, оно может ею быть, но Unreal проектируется так, чтобы целевыми для одного проекта были все платформы. Fortnite есть на Switch, Android, iOS, Xbox, Playstation, PC, а может, и где-то ещё, и всё это собирается из одного проекта. И вы можете сделать так же. Чаще всего это «просто работает». Фокусы наподобие «снижать разрешение текстур на Switch в зависимости от ассета» встроены в движок и легко реализуются. Я сделал порт Adios для Switch за неделю.

Помните, что вам придётся пройти процесс подписания на консоли, чтобы получить секретный исходный код, который необходим для компиляции движка под них. Обычно это не сложно. Кстати, весь движок выложен на Github.

2.5. Вы не так часто будете использовать Asset Store.

Здесь он называется Unreal Engine Marketplace, и в нём много как качественных, так и плохих вещей. В общем случае он пригождается реже, чем в Unity. Например, вам не понадобится Rewired; системы ввода Unreal надёжны и работают на всех платформах. И подобного будет много.

2.6. Апгрейд до последней версии не вызывает особых проблем.

Чаще всего при апгрейде до следующей версии Unreal вы не столкнётесь ни с какими проблемами. Кто-то любит не торопиться, чтобы быть уверенными. Разработка Psychonauts 2 началась на 4.11, а выпущена игра была на 4.26. Здесь поддержание актуальности движка — это хорошо.

2.7. Unreal не удаляет внезапно важные функции.

Когда Epic прекращает поддержку масштабной фичи, она обычно остаётся в движке достаточно долго перед удалением, после чего вам предоставят возможность апгрейда.

Например, сейчас используется редактор частиц Niagara. До Niagara много лет был Cascade. Cascade всё ещё есть в движке, но стоит использовать Niagara, и есть автоматический преобразователь систем частиц Cascade в Niagara.

Аналогично, инструмент анимации Matinee (на котором делали катсцены в Gears of War, Mirror’s Edge, Batman, Xcom и так далее) был удалён из движка годы спустя после завершения поддержки и замены на Sequencer. При этом даже если вы сегодня откроете уровень, в котором есть Matinee, он идеально преобразуется в Sequencer.

2.8. Unreal вводит новые системы аккуратно.

Если в Unreal появляется что-то новое, то это обычно помечается как Experimental. Такая пометка значит, что Epic не рекомендует использовать это в продакшене. Со временем эту пометку убирают, после чего фичу можно безопасно использовать в игре.

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

Кроме того, все новые фичи опциональны, они не заменяют старые. Lumen и Nanite новы и круты, но всё равно опциональны. Освещение по-прежнему можно запекать, и всё по-прежнему будет с этим совместимо.

2.9. В Unreal нет множества конвейеров рендеринга, у каждого из которых свои требования к ассетам.

В Unreal есть разные рендереры с разными фичами — есть отложенный и прямой рендереры для десктопа и мобильных платформ со своими особенностями (например, MSAA есть только в прямом). Но графическим ассетам это неважно — все рендереры выглядят одинаково и между ними можно переключаться, чтобы понять, какой из них больше подходит вашему проекту.

2.10. Это движок, на котором сделана та любимая вами игра.

Помните, как в Batman Arkham Asylum иногда нужно ждать перед дверью, пока вас просканирует система безопасности? На самом деле это грузится следующий уровень, и на медленных машинах сканирование происходит дольше. Эту фишку придумала не Rocksteady, это просто система потоковой загрузки уровней Unreal, которая использовалась в Gears of War. Вы можете просто использовать её.

Если в какой-то игре на Unreal есть что-то, что вам понравилось, то существует вероятность, что в движке в буквальном смысле уже есть соответствующий код.

3. Разные слухи

3.1. Я слышал, что его сложно изучать!

Возможно! Он огромный и мощный, но плохо справляется с обучением. UI сделан «простым», и это значит, что важные функции вы просто не обнаружите, если вам кто-нибудь о них не скажет.

Форумы далеки от идеала, а Интернет заполнен дезинформацией, излагаемой с уверенным видом. Гугление до этого года помогало, но уже не сейчас.

Если вы не справляетесь, то не надо изучать его в одиночку. Присоединитесь к какому-нибудь сообществу изучающих Unreal, например, к Discord для бывших Unity-разработчиков Алекса Роуза, и задавайте вопросы. Я видел, как люди в моём Discord проходили путь от абсолютного нуля до отличного специалиста (которого в результате нанимали на работу).

3.2. Я слышал, что C++ — отстой!

Возможно, но C++ движка Unreal достаточно сильно отличается от остальных C++. Он проще. Дайте ему шанс, даже если он вас пугает.

Однако для большинства игр не требуется или почти не требуется никакого C++ — можно создать и выпустить полную поддерживаемую производительную сложную игру на одних блюпринтах.

Изучите Complete Guide to Unreal C++ Тома Лумана, этот парень знает, о чём говорит.

Самое важное — не быть догматичным. И у C++, и у блюпринтов есть своя сфера использования. Если окажется, что вы настаиваете на необходимости переписать всё с блюпринтов на C++ «ради производительности», то это вредит проекту. Нативизация и оптимизация — разные вещи.

3.3. Я слышал, что блюпринты — отстой!

На самом деле, блюпринты — это вещь. Да, я понимаю: с чего бы это визуальному скриптингу быть чем-то хорошим? Это же фигня! Соглашусь.

Но с блюпринтами всё иначе. Они потрясающие. Они даже помогут вам изучать движок. Всё, что вы делаете на них, будет применимо и к C++. Кем бы вы ни были, вам нужно начать с блюпринтов. Абсолютно верно то, что на блюпринтах можно создать игру целиком. Да, с мультиплеером. Да, с высокой производительностью. Да, с удобной поддержкой. Они нужны не только для быстрого прототипирования.

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

3.4. Я слышал, что Unreal рассчитан на шутеры от первого лица, а в моём жанре делать на нём что-то очень сложно!

Это неправда. Это было частично правдой в первой половине эпохи развития UE3. К моменту выпуска UE4 это не было правдой ни в каком смысле. Кто-то вам врёт.

Вы одинаково легко можете создать что угодно в любом жанре. Если сомневаетесь, посмотрите в Википедии список игр на Unreal Engine. Никому из их разработчиков не приходилось сходить со своего пути (или выходить за пределы Gameplay Framework), чтобы выпустить свой продукт.

3.5. Что если мне не нужны графические изыски и навороты? Что, если я делаю игру не в реалистичном стиле?

Это нормально. Изощрённые графические функции в Unreal легко отключить, сохранив при этом доступ ко всему сложному инструментарию.

Кроме того, Unreal не ограничивает типы стилей, которые вы можете выбрать. Вы можете делать, что угодно. «Physically based rendering» не означает, что вам нужно работать в реалистичном стиле.

3.6. Можно ли на нём сделать 2D-игру?

Разумеется. Просто делайте игру, как обычно, но с ортографической камерой. Если вам нужны спрайты вместо анимированных мешей, то есть система Paper2D для работы со спрайтами, у неё появляется не так много апдейтов, а функции работы с анимацией достаточно ограничены, но есть также и система под названием PaperZD (в маркетплейсе), способная на много большее. В версии 5.3 все самые новые функции освещения работают с ортографической камерой: lumen, virtual shadowmaps и так далее.

3.7. Можно ли сделать игру, которая будет работать в браузере?

Едва ли! Раньше в движке была поддержка HTML5, но её поддержку прекратили несколько лет назад. За исключением Pixel Streaming, обратиться за помощью здесь особо не к чему, если только реализовать что-то самостоятельно. Так что увы.

3.8. Я слышал, что на движке нельзя создать сборку меньше, чем миллиард мегабайтов!

В стандартном UE5.3 при отключении всех необязательных плагинов пакет почти пустого проекта занимает около 120 МБ. В UE4 он занимал примерно 75 МБ. Можно проделать ещё множество действий для уменьшения размера файла — я занимался этом лично. Если поискать, то найдёте полезные советы.

3.9. Я слышал, что инструменты дизайна уровней плохи!

Вероятно, вы слышали это от меня. До совершенства ещё далеко, но всё стало гораздо лучше. особенно в 5.3. По ссылке есть советы о превосходных инструментах CubeGrid и MeshTool, хорошо взаимодействующих друг с другом.

3.10. Я слышал, что разработка в/для Linux и Mac очень трудна!

Едва ли! До недавнего времени некоторые CPU Mac не имели полной поддержки, но теперь она уже есть. Можно скачать редактор для Mac в Epic Launcher точно так же, как для PC, а для Linux его можно взять здесь.

Unreal Engine vs Unity vs GoDot. Что нужно знать, если ты не программист

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

Кто-то говорит, что мне (и любому начинающему игроделу) не дают покоя лавры инди-разработчиков, которые в соло склепали игру на коленке за две недели под пивко и заработали на ней миллионы.

Нет, и вот почему:

  • Во-первых, создать игру за две недели без долгих лет обучения и практики — задача почти невозможная (жду в комментариях тру-хард гд-соло, которые написали свою игру на С# за одну ночь после двухнедельных курсов с нуля до про 😉 ).
  • Во-вторых, миллионы на своих играх и крупные студии не всегда могут заработать. Это называется ошибка выжившего — мы слышим историю успеха одного человека, но даже не представляем, с какими трудностями и легкостями он столкнулся на самом деле. А о сотнях его коллег, которые проходили тот же путь, но ничего не добились, мы никогда не услышим.
  • И, в-третьих (хотя надо было сказать это в начале), мне не нужны лавры. Конечно, было бы приятно получить хоть какое-то признание, пусть и в узких кругах, и монетизировать свое творчество в этом ключе, но главное для меня — рассказать пару историй. Для кого-то они будут интересны, для кого-то непонятны, кто-то (обязательно найдется такой человек) скажет, что это было у Шекспира/Шелли/Никитина/сына маминой подруги (нужное подчеркнуть). Впрочем, полностью оригинального творчества не существует, а осознанно плагиатить кого-то я не буду.
И… тут вы поймете, что вся работа, проведенная до этого, это не половина и даже не четверть от того, что вам предстоит сделать. (Повторюсь, для НЕ-программиста. Для программиста схема обычно обратная — дизайн и история доставит куда больше боли.)

Здесь вас встретят три глобальные проблемы:

  • Выбор движка под ваши нужды
  • Программирование
  • Добавление ваших ассетов в игру
  • Менеджемент времени
  • Тест-плей
  • Компиляция/оптимизация/реализация и т. п.

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

Движок

Первоначально эта статья должна была выходить в двух-трех частях. Но в процессе написания случилось непредвиденное.

В прошлых статьях я немного говорила про юнити, и, соответственно, какое-то количество тестовых сцен с пресетами (предварительно настроенными параметрами, моделями, сценариями и физикой) были сделаны в Юнити. Но… это было на старом компе. На новый, естественно, весь обвес в виде программ, библиотек, пресетов, конвертеров и прочего пришлось устанавливать заново. И, само собой, версии я выбирала поновее, чем те, которые кушал ноутбук.

Минутка предыстории

Последние несколько лет я работала исключительно на ноутбуке. Стареньком, не слишком мощном, по современным меркам — вообще картошка, но зато привычном. На нем были все необходимые для работы с 3D-движками модификации вроде специальных драйверов, библиотек C++ и Python, конвертеров со скриптами и плагинами. Причем часть из этих плагинов тоже с кастомными пресетами, пускай эти модификации и заключались в изменении одного-двух параметров с единственной строчке кода. А еще на нем были установлены три движка для игр и целый ряд программ для 3D-моделирования и рисования.

Но в один прекрасный день после возвращения из больницы лидера стаи, собака решила показать свою крутость, и посреди ночи услышав шум возле машин под окном, ломанулась к окну. На стол. На котором стоял ноутбук на охлаждающей подставке. Летело все, включая ноутбук с помявшейся подставкой, а наутро компьютер попросту не включился. С неспокойной душой я оставила этот вопрос до вечера, а позже при попытке запустить средство восстановления компьютер ушел в вечный цикл рестартов и восстановлений. Запуск безопасного режима через командную строку тоже не дал результатов, как и откат системы. Сбрасывать до заводских и ставить винду с нуля я не хотела — на ЖД (жестком диске) еще было много моих файлов, моделей, рисунков, разработок и, в конце концов, рабочих документов.

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

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

Для ноутбука, кстати, позже приехал новый винчестер, хотя и по объему, и по скорости хуже, чем тот, что был, и при замене и установке винды никаких проблем не возникло. Так что да, поврежденным был именно ЖД. Вывод — не покупайте ноутбуки в пластиковых корпусах, если дома дети или домашние животные!

И при запуске Unity выскочило такое предупреждение:

Что-то я уже не уверена, что ноутбук помер от физического повреждения…

В версии Windows 11, которая стоит у меня, большая часть движков (да и в десятке тоже такое было) запускается только от имени администратора. Поэтому предупреждение о том, что библиотеки Юнити в таком режиме могут повредить функциональные части системы, меня насторожило. Немного посерфив по форумам на тему «юньки», я прочитала, что это, в принципе, обычное дело, и, мол, нечего беспокоиться. Но позже я наткнулась и на комментарии, что после работы в юнити и неправильно сохраненных неочевидных файлов пришлось чуть ли не чистить реестр и откатывать винду. И это в 2020 году!

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

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

Я поняла, что мне придется не просто вспоминать, а учиться заново. В таком случае лучше перейти сразу к тому, с чем я планировала работать дальше — к движкам посложнее, чем осваивать минибазу. Поэтому я сразу перешла в лагерь Unreal Engine. Но не в расхайпленную пятерку, а в четверку.

Но перейдем к главному вопросу: как выбрать движок?

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

Вот наш главный герой:

Знакомьтесь, КНОПК-А, карманный персональный робот-навигатор (KNOPK-A). Со времен этой тестовой анимации моделька претерпела некоторые изменения.

Сюжет крутится вокруг маленького немного сломанного робота, который потерял хозяйку во время неудачной посадки летательного аппарата (спойлеры, спойлеры, спойлеры) и теперь должен отыскать ее и уцелевшие части аппарата. Попутно КНОПК-А должен будет встречаться с местной агрессивной флорой и фауной, находить детали для себя и запчасти для остатков аппаратуры, а также развлекать игрока намеками на жизнь, быль и гибель некой высокоразвитой цивилизации.

Визуальный стиль будет умеренно-упрощенным (за гиперреализмом мы не погонимся, как и за упрощением до состояния аниме начала 2000-х). В процессе игры, как и в процессе создания, компьютер не должен сильно нагружаться, а свобода действий игрока должна быть ограничена (все-таки играем за робота, хоть и с искусственным интеллектом). Ну, и некоторая камерность должна создавать у игрока ощущение, что он — маленькое и почти беспомощное существо, которое легко загнать в угол. А значит, нужны рамки действий.

Исходя из этого, составляем список сущностных характеристик, которые будут важны для разработки нашей игры:

  1. По пространству, доступному для игрока, мы делаем 2D-игру. В двух измерениях игрока зажать куда проще, и сбежать от вражеской гусеницы уворотом вбок не получится — либо дерись и рискуй быть сломанным, либо думай, как избежать угрозы заранее. Да и технически это намного проще, не говоря уже о производительности.
  2. По типу геймплея у нас будет платформер-адвенчура с элементами шутера и эпизодическими головоломками: робот сможет бегать, прыгать, взбираться на некоторые предметы и одновременно с этим атаковать противников ближним и дальним оружием. Битемап, пулевой ад, тру хард метроидвания (это когда весь экран заполняют эффекты-партиклы от нескончаемых вражеских атак) ни мне, ни моей сестре не нравятся. А чистокровный шутер или платформер мало того, что скучны, так еще и не вписываются в концепцию и задумку игры. Адвенчура же — универсальное название игр, где большую часть времени вам нужно куда-то идти, карабкаться, искать приключения на свою… на свой корпус. Головоломки позволят отдохнуть от прыжков по полочкам и пострелушек, да и в задумке имеют куда больше смысла, чем шутерные механики.
  3. По жанру, очевидно, научная фантастика, хотя в некоторые моменты по ходу прохождения появятся сомнения, а только ли это фантастика или в происходящем замешаны не только законы физики и биологии. И дизайн многих уровней, кроме внутренностей летательного аппарата, будет всеми силами отвлекать вас от вылизанного сай-фай антуража.
  4. По поджанру/подтипу геймплея — роуг-лайт (rogue-lite). Умирая… то есть, ломаясь, робот перезапускается с контрольной точки. Поначалу это будет лишь материнская коробка рядом с пультом управления аппарата, потом добавятся чекпоинты в других местах. Потому что рогалики нам нравятся. И потому что это подходит по задумке. Ну и дополнительный дискомфорт игроку, который вынужден будет опять пилить до босса качалки своими маленькими ножками.
  5. По стилистике и дизайну — полуреализм. Эдакий немного прилизанный, но достаточно проработанный рисунок с более-менее адекватными пропорциями и без целлшейдинга (cell shader — это то, благодаря чему существуют 3D-аниме игры, имитация эффекта рисунка на целлулоиде со сплошной заливкой цвета и простыми тенями). Это позволит сэкономить производительность на мегасканах (зачем нам овердокучи полигонов и 8к текстуры, когда можно обойтись четырехполигональным плоскатиком?) и время на проработке текстур.
  6. Вариативность прохождения. Фича платформеров в том, что некоторые места можно обойти, если у тебя прямые руки и ты научился точно прыгать с маневрированием в воздухе. Но далеко не все игроделы ее используют, оставляя варианты на перепрохождение или только в виде срезов к точке сохранения, как в GRIME. Мы же попытаемся сделать так, чтобы у игрока был выбор: переть напролом, игнорируя возможные последствия боестолкновения, или обойти, филигранно попрыгав по платформам или просто выбрав другое направление, как в Hollow Knight. Другими словами, карта локаций должна быть обширной и иметь возможность обойти целые куски с опасными зонами. Конечно, без обязательных «кишочных» коридоров не обойдется, как и без приснопамятного «с этой стороны не открыть». Да и некоторые зоны потребуют определенных предметов или условий для доступа.
  7. RPG-элементы. Хотя настоящего деления по классам и дерева навыков не предусмотрено (какие классы? Это стандартный робот-компаньон серийной модели!), всё же элементы прокачки и развития в игре планируются. Так, разрешено будет подбирать определенные предметы и встраивать их в свой корпус для получения новых характеристик. Скажем, панцирь каменного краба увеличит вашу защиту и снизит заметность, хотя будет мешать прыжкам, а клешня увеличит урон в ближнем бою. Плюс в ключевых местах ваш выбор будет влиять на состояние робота и на концовку игры. По крайней мере, по задумке.
  8. 3D-графика. Возможно, некоторые посчитают, что спрайтами или плоскатиками (плоскими фигурами с рисунком) было бы проще реализовать подобное, но нам больше нравится 3D. (Да, привыкайте, многое из того, что упоминается, добавлено потому что оно нравится авторам.) Плюс, лично на мой субъективный вкус и с точки зрения моих личных навыков, проще один раз сделать модель и десяток анимаций для нее, чем нарисовать сотню спрайтов и написать к ним один единственный переключатель атласа (утрировано, но все же). Плюс изменять анимацию проще, чем перерисовывать спрайты. При этом фон частично будет плоским (непосредственно фоновое изображение дальнего плана и фоновые элементы наподобие растений в виде плоскатиков).
  9. Все это должно выглядеть красиво, но идти на не слишком мощных компах, вроде моего ноутбука, а в перспективе иметь шансы быть адаптированным под мобилки. Это, конечно, сверхзадача, но оптимизация действительно должна быть высокой. Хотя бы для того, чтобы потом знать, как оптимизировать полновесный проект, чтобы не получилось, гм, новых «павших лордов».

Что обновленный GoDot, что Unity, что Unreal Engine вроде бы отвечают всем запросам

  • 2д-строительство игры — чек;
  • роуг-лайт механики — чек;
  • полуреализм — чек;
  • вариативность — зависит от прямоты ваших рук, но чек;
  • RPG-элементы — чек (тоже проверяем руки);
  • 3D-графоний — чек (но с оговорками, об этом дальше);
  • оптимизация для слабых устройств — как будто бы чек, но тоже с оговорками.
Unity — крепкий движок со своей историей, но в сети его часто называют морально устаревшим. И действительно, даже окно рабочего пространства выглядит так, будто пришло прямиком с Windows 98 (вот это ничего себе претензия, да?).

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

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

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

Зато усиленно нахваливаемый анрил с загрузкой ядер справляется отлично. Я бы даже сказала, с запасом. Попробуйте запустить какого-нибудь Алана Вейка или Lords of the Fallen на компьютере чуть старше пары лет — лаги, фризы, и комнату зимой можно не отапливать. И начинающие игроделы, впервые его запуская и загружая тестовые ассеты из библиотеки, молча офигевают с того, как оно виснет уже в окне предпросмотра. Зато на мощных ПК рендеры выглядят не хуже тизеров высокобюджетных голливудских фильмов (а некоторые на нем и создавались). А почему такая разница?

ИСТОРИЯ UE и U

Некоторые считают, что движок Unity проще и легче, потому что старше и реже обновляется. Однако первая игра на Юнити вышла в 2005 году, тогда как начало Unreal Engine было положено аж в 1998 году. Да и обновления на движок Юнити выходят ежегодно. С чего тогда такая разница?

Дело в том, что Юнити в принципе создавался как «компактный» движок. Настолько компактный, что даже внешние библиотеки ресурсов приходится прикручивать болтами. В Анрил Энжн же большая часть модулей поддержки уже встроена, благодаря чему, с одной стороны, пользователю не приходится шерстить интернет, а с другой, приходится мириться с увеличенным весом. Но поскольку в Юнити для базового функционирования не нужны внешние модули, не нужны и дополнительные мощности. Отсюда и главный минус Unity — неспособность в базовой версии работать с многопоточными вычислениями и сложными иерархическими сценами.

Поскольку нам важна простота и оптимизация, мы должны бы остановить свой выбор на юнити. Но здесь возникает другая беда, о которой я тоже упоминала ранее — создатели Unity намеренно удалили из своего движка поддержку почти всех языков программирования. Ранее я немного пыталась кодить на Python и Java, но и их безжалостно выпилили, так что все наработки по коду идут в топку, а ты, дорогой разработчик, иди учи новый язык или городи огороды с костылями. Да еще и новость о том, что политика монетизации изменяется, оптимизма не добавляет.

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

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

Файловая система и навигация

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

В плане удобства люди хвалят годот за простоту интерфейса и архитектуры файлов игры. Нативные импортированные FBX-файлы (самый распространенный формат для моделей с костями и анимациями) хранятся в своем же FBX-формате и там, куда вы их поместили. С одной стороны, круто — сам положил, сам запомнил. С другой, в годоте нет автоматической индексации файлов.То есть вы сами должны запомнить, где у вас модели, где текстуры, где элементы окружения и т. п., или сами создавать метки и систематизировать свои ресурсы. Но если вы работаете над проектом долго или затрудняетесь в классификации при работе с чужими файлами, можно запутаться. Юнити хранит все модели вместе с текстурами в формате Unity asset file (.uasset), а действующие модели персонажей скрыты глубоко в недрах файлов.

Вот, например, путь до файлов моделей из игры Arena of Valor:

Большая часть известных MOBA (мобильных многопользовательских онлайн-арен), включая Arena of Valor, Mobile Legends Bang Bang и других, сделаны на базе Unity

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

Файлы AoV. Такая организация файлов иногда называется вертикальной: часть игровых элементов находится в «неглубоких» папках, а по мере снижения важности для базового функционирования «погружаются» вглубь в подпапки. Так, опциональные ресурсы высокодетализированных моделек в Arena of Valor находятся в папке com.ngame.allstar.eu\files\Extra\AssetBundle\Show\Hero

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

Но даже на мобилках проблема однопоточности и длинного пути проявляется. Вы никогда не задумывались, почему в MOBA-играх почти всегда участвуют не более 10 человек одновременно? Это не только дань уважения, но и ограничения движка. Новые телефоны неплохо справляются с отрисовкой десяти цветастых фигурок вместе со сценой, по которой они бегают, скайдома (купола или сферы вокруг арены), какого-то количества маркеров взаимодействия и эффектов от навыков.

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

Содержимое папки Binaries. В подпапке Third party хранятся ресурсы, не критичные для запуска игры, либо вспомогательные ресурсы других систем и движков, интегрированные в игру. Например, дополнительная система физики разрушения, ресурсы для трассировки лучей, файлы поддержки игровых магазинов Steam, EGS и GOG и т. п.

Организация файлов в Unreal может показаться странной. Вот в первом приближении у нас есть две папки: Binaries и именная папка игры. В папке Binaries хранятся скрипты, важные для распознавания и запуска игры (в папке Engine) и другие вспомогательные файлы. В именной в подпапке Content находятся файлы движка, таинственные блюпринты, звуки, текстуры, модели и скрипты.

Файловая система Agony — игры на Unreal engine

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

Вес безобразия

Одной из главных претензий к постоянно обновляющимся версиям Unreal и играм на ней — большой вес движка и сделанных на нем играх. Шутка ли, базовый Unity весит около 200 мегабайт без набора шейдеров, когда Unreal Engine 4 — от 40 до 60 гигабайт.

В принципе, это справедливо: посмотрите на объем, занимаемый Lords of the Fallen — больше 45 Гб при объеме локаций, сравнимом с Dark Souls PtDE, который весил немногим больше десяти гигабайт. Но тут есть нюанс. Даже два. Или три.

Первый нюанс: текстуры высокого разрешения. Например, базовая версия игры Century: Age of Ashes, разработанной на Unreal Engine 4, занимает около 12-14 Гб. При этом версия для Xbox занимает около 60Гб, будучи разработанной на том же движке. Отчего такая большая разница?

Дело в текстурах. Текстуры драконов steam-версии в среднем имеют разрешение 1024×1024, а в версии для Xbox — около 4096х4096. Текстуры эффектов, окружения тоже в среднем в 2-4 раза больше. Модели и все внутреннее наполнение абсолютно то же. Да, только большие текстуры могут увеличить объем игры в шесть раз.

Особенно ощутимо это с нынешними «стандартами», когда в AAA-играх «хорошим тоном» считаются текстуры не меньше 4к. Зачем? Да просто так красивее играть на ультрашироких мониторах и экранах телевизоров. Хотя при запуске той же стим-версии Century с подключением к телевизору я особого дискомфорта не испытала. Возможно, я просто не так избалована высокой четкостью. А может мой телик старый и ненамного лучше обычного моника.

Еще одна причина высококачественных тяжелых текстур — инновационные системы, встроенные в Unreal Engine. Их аж несколько, но на слуху самая новая — позволяющая сжимать текстуры и модели прямо во время игры, адаптируя под мощности компьютера. Действительно, зачем делать дополнительный набор текстур и моделей более низкого качества, когда сам движок способен сжимать их в режиме real-time.

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

Кстати, в Elden Ring и других соулсах от основателей поджанра есть дополнительные текстуры низкого разрешения для почти всех объектов, включая волосы, доспехи и тело персонажа:

Одна из декомпрессованных текстур Elden Ring. Слева — версия с высоким разрешением, справа — с пониженным. Кроме разрешения в пикселях, такая текстура меньше по цветовой палитре, хотя это почти незаметно глазу.

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

Текстуры и модели в Lords of the Fallen живут своей жизнью. Все окружение более-менее прилично загрузилось, а одежда героя и статуя превратились в мыло. И при приближении не исправились.

Третья причина излишнего веса игр на UE (особенно UE5) — оптимизация. Мы уже сказали про разрешение текстур, однако то же самое относится и к моделям. Но не только к ним, хотя модели в последнее время в играх грешны излишком полигонов там, где это не нужно (здесь могла быть шутка про полигоны на филейной части леди Димитреску, но это совсем не шутка, особенно в последних играх Final Fantasy). Не моделями едиными — очень многие разработчики (не только на Анрил, но на нем заметнее всего) оставляют после себя много мусора в управляющих директориях игр.

Это и загруженные, но не востребованные блюпринты, неиспользованные скрипты, невошедшие в игру объекты и карты и прочее. Думаю, вы не раз слышали о том, что датамайнеры в той или иной игре нашли вырезанный контент размером с DLC. Но если в видосиках фигурируют в основном единичные модельки противников и боссов, редко с анимациями, то геймдизайнеры могут найти еще пару килограмм (вернее, гигабайтов) мусорных элементов движка. Иногда попадаются добросовестные разработчики (как Playwing, создатели Century), которые вычищают за собой все лишнее. Иногда нет.

Промежуточный итог

Конечно, привести все аргументы за и против даже с моей дилетантской позиции, очень сложно в одном тексте. Поэтому самое сложное — управляющие факторы — я оставлю на другую часть.

Пока что можно остановиться на том, что Unreal Engine — движок для тех, кто не хочет пилить вспомогательные элементы сам, но может взять тяжеловесные заготовки из бесплатных и платных пакетов. Можно сказать, для ленивых и бесталанных (как я). А Unity — «дистиллированная» версия движка, где можно прикрутить все что угодно, воспользовавшись напильником и смекалкой.

С вами была Людмила Хигерович. На сегодня у меня все. Всего хорошего и не болейте!

НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *