Как сделать новый уровень в unreal engine

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

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

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

В этой статье мы поговорим о:

  • Frame per Second. Немного о самом понятном.
  • Объекты в игре, и как с ними стоит работать. Какие есть очевидные и не очевидные подводные камни.
  • Шейдеры, и какие есть нюансы с ними.
  • Draw Calls. Что это такое, зачем оно нужно и почему его нужно бояться (или не бояться).

Самое простое, с чего мы начнем в этой статье - это базовые понятия Frame Per Second и Milliseconds.

Понятно, что Frame Per Second (далее FPS) - это количество кадров в секунду. Так же понятно и то, что количество кадров определяется временем обработки этих кадров, которое измеряется в миллисекундах. Так, например, чтобы добиться 60 кадров в секунду, вам надо, чтобы ваша игра обрабатывалась в среднем за один проход в 16мс (в одной секунде 1000 мс).

Но почему именно 16мс? Почему не 30мс, например? К чему такое стремление? Ведь в фильмах 24-29 кадров используют, и все нормально, а в играх 30 кадров - это плохо.

Это такая очевидная вещь, что до одной из статей о геймдеве я никогда не задумывался, а почему все хотят 60 кадров в секунду, и почему 30 кадров в секунду в играх это не круто, а в кино - этого не замечаешь, и картинка плавная.

Все оказалось очень просто - в фильмах кадр создается с учетом движения. Камера фиксирует не только текущее положение объектов, но и их смещение за время захвата кадра. То есть, кадры на пленке никогда не бывают идеально чистыми - все объекты так или иначе смазаны в движении, и когда это проигрывается - создается ощущение плавности движения даже при 24 кадрах в секунду. А при новых технологиях и 120 кадрах в секунду (фильм "Gemini" был первым, кто показал в таком FPS ) и вовсе кажется, что смотришь какую-то реальную сцену в театре, а не в кино.

В играх же ситуация кардинально другая. Каждый кадр отрисовывается с нуля без учета движений. То есть, все объекты в этом кадре всегда статичны, и кадр не фиксирует движение объектов за отведенное ему время. В итоге 30 игровых кадров в секунду кажутся дерганными, недостаточными для глаза, чтобы довольствоваться картинкой, и отсюда стремления к 60 кадрам и выше.

Да, это очевидная штука, которой мне не хватало когда-то, чтобы прочувствовать саму суть проблемы. Оно было интуитивно понятно, но вот так вот четко я не встречал описания до определенной статьи. Может быть, у вас так же будет и с этой =)

В VR играх требуется 90 кадров в секунду. Тут требование закономерно. Если в 30 кадров в секунду вы играете и видите дергания, и это в целом нормально, то в VR вас не окружает квартира/офис или где вы играете. В VR вас окружает только игра и черный фон. Поэтому чувствительность к количеству кадров возрастает на порядок, а возможность вертеть головой в пространстве создает дополнительный дискомфорт при низком FPS. А некоторых и вовсе выворачивает.

Что касается объектов в игре, то здесь очень много нюансов, но все они сводятся к 2 моментам:

  • Вертексы. Количество вертексов должно быть разумным. Помните, что создавая швы на развертке, окрашивая фейсы по Vertex Color'у, делая модель из жестких граней - вы пропорционально увеличиваете количество вертексов на ровном месте. Все должно быть в меру, взвешено и каждое решение должно быть обдумано.
  • Треугольники. Как мы все знаем - все полигоны (4хугольные n-угольные) все равно делятся видеокартой (а перед ней и самим движком) на треугольники. И если вы не порезали нужные вам полигоны заранее, за вас это сделает движок в рандомном направлении.

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

Если вы делаете модель с учетом запекания фасок в Normal Map, то вы прекрасно должны понимать, что ваши вертексы на жестких гранях будут расщепляться для того, чтобы сохранить в себе информацию о направлении Vertex Normal.

И мы все прекрасно понимаем, что на швах развертки точки так же расщепляются.

Расщепление вертексов - очень интересная тема и при не умелом обращении может создать вам дополнительно х2 точек. Важно помнить всего 1 правило, которое позволит вам чуть лучше управлять моделью:

Вертекс может содержать в себе различные данные одновременно, но данные одного типа может хранить только по 1 штуке.

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

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

Так же помните, что второй и последующие слои развертки так же увеличивают количество вертексов.

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

Я недавно столкнулся с тем, что не все понимают, почему программы и видеокарты обрезают любые n-гоны до треугольников. Поэтому немного помяукаю здесь об этом:
Дело в том, что полигон (поверхность с 4 точками) и n-гон можно погнуть. Вы можете взять любую одну точку и изменить ее положение, и вот полигон уже согнулся пополам, и не понятно, где проходит сгиб, а где должна быть цельная поверхность.
Треугольник вы не сможете погнуть. Как бы не старались - все три точки всегда будут в одной плоскости - в плоскости треугольника. Поэтому треугольник - это самая примитивная форма, с которой начинается приключение в сложный трехмерный мир.
Мяу-Мяу.

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

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

Дело в том, что GPU (графический процессор видеокарты) обрабатывает пиксели вашего монитора группами - по 4 пикселя. То есть, нельзя обработать 1 пиксель для отображения треугольника, если он очень узкий или заканчивается на каком-то пикселе - всегда будет запущен цикл обработки на 4 пикселя.

А теперь представьте, что у вас модель имеет следующую сетку:

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

В конкретно такой ситуации я бы порекомендовал способ, который был описан тут - расширять треугольники и стремиться делать их максимально толстыми:

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

Так же по этой же причине не рекомендуется делать длинные тонкие треугольники, а значит, возникает вопрос о том, что делать с фасками, которые создаются на уровне моделей?

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

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

Но здесь стоит учитывать 2 момента:

  1. Фаски не сводят к одной точке 100 треугольников, а только 2. А значит, это небольшая нагрузка на рендер.
  2. Если количество объектов с фасками в камере очень большое, то на помощь приходят LOD'ы.

LOD расшифровывается, как Levels Of Detail - уровни детализации. Это копии ваших моделей, но с уменьшенным количеством вертексов, которые заменяют вашу модель на отдаленном расстоянии.

Например, у нас есть вот такая красивая лампа, которая сжирает 58 594 вертекса.

И будет издевательством над GPU, если мы оставим такое же количество вертексов на дальней модели лампы.

Мы создали LOD'ы для этой лампы, которые автоматически подменяют модели на менее детализированные. А вы и не заметите, что у лампы на заднем фоне всего 5648 вертексов.

LOD'ы - это то, с чем можно и нужно дружить и всегда учитывать их существование при работе над объектами. То есть, вы всегда можете использовать высоко детализированные объекты, но с расстоянием хорошо порезать их, и никто этого не заметит, а ваша картинка будет при этом на высоте и помещаться в 16мс на обработку.

Владимир Кириченко

Я постараюсь поделиться опытом по базовыми понятиями, и возможно многое опытные люди возможно внесут дополнения. Рассматривать буду 3Д игры. К сожаления я не писатель и это моя первая статья.

И так начнем.
Один из самых частых вопросов и так же самых бесящих.
А может UE4 . ?
- UE4 обладает очень большими возможностями и если он что то не может, значит ваша идея опередила время и ее реализации не возможна, в принципе.
Вопрос следует перефразировать не что может UE4, а сможете ли вы на UE4 сделать? Но на этот вопрос вам не кто не ответит.

Следующий вопрос который как правило волнует. Это графика и производительность. Это можно сказать две вещи, которые исключают друг друга.
Поскольку чем круче графика тем меньше производительность. Как я писал выше UE4 способен на все, но это не значит что ВСЕ нужно вам. Можно создать фильм "аватар" на экране в разрешении 4к то чтоб это запустить вам потребуются сервера Google. Но это не значит что графика должна убогой для этого нужна оптимизация, и хитрые решения которые снизят нагрузку на железо, и позволяют получать хорошую графику. Разумеется о разрешении 4к стоит забыть. И решения не только в коде и моделировании, но и в гейм дизайне.

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

Владимир Кириченко

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

2)Жрут не только полигоны. Другая важная тема это свет.
его можно разделить на 2 типа. Динамический и статический.
Чем больше объектов тем динамический свет жрет больше, и по качеству уступает статическом.
Статический дает максимальное качество, но жрут место на жестком диске и не дает тени от подвижных объектов. Тут надо комбинировать. Здания и т.д. статические тени, а ГГ, НПС и Т.Д. динамические тени.

3)Текстуры. Тут все просто чем меньше они тем меньше памяти они съедят на видео карте. Как и везде нужно найти компромисс между качеством и разрешением. И жесткое правило они должны быть кратные 2.
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096. Большее разрешение избыточно, а и возникнут проблемы с воспроизведением на видео картах.
Тек же есть 2 вида текстур. Это таловые которые если разместить рядом то шва не будет и уникальные.
Преимущество тайловых текстур в их возможности применять во многих местах. Например у много деревянных деталей, забор, деревянные обломки, деревянные столбы. Имеет смысл сделать это все 1 текстурой. А проблему одинаковости решать через декали. (декаль если в 2 словах это текстура поверх текстуры), а вот например меч не получится сделать тайловой, из-за наличия разных узоров тут требуются уникальные текстуры или на ГГ. Это темы мы так же продолжим в дальнейшем когда будем обсуждать моделирование.

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

5)эффекты на основе частиц. Частицы тоже жрут и на фоне материалов не мало. Если то или иное можно сделать через материал, то лучше сделать. Например не стоит делать водопад полностью из частиц. Гораздо производительней, сам водопад смоделировать, с текстурой которая движется в одном направлении, а внизу расставить источники частиц с материал. Где частица не одна капля, а полигон с несколькими нарисованными на нем брызгами через материал. Такой подход сильно уменьшит число создаваемых частиц за 1 сек. И не сильно ухудшит качество. (если сложно понять то не парьтесь делайте игру без эффектов, а когда настанет время и освоите инструментарий эффектов то легко поймете про что я говорю)

Владимир Кириченко

Теперь мы знаем как посчитать примерное количество треугольников на каждый объект. И что влияет на производительность. Это не все пункты. Например, плохо написанный код приведет к лагам, даже на самой простой и оптимизированной графике.

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

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

Правило 3. "Удаление полигонов которых игрок не как не может увидеть.
В качестве примера обратимся к той же лестнице. После вставки цилиндров ступени в направляющие, следует удалить у ступени боковые части цилиндра, ведь игрок не как не увидит что находится внутри направляющей. Ступеньки станут выглядеть в виде трубы.

Владимир Кириченко

Помимо формы, у модели есть UV и нормали.
UV нужно для наложение 2D изображения на трехмерный объект. И как я обещал выше возвращаюсь к текстуре. Как делать уникальную текстуру знают наверное все. А вот зачем нужна тайловые мало кто объясняет, если дело не касается террейна. Но помимо террейна тайловую текстуру можно использовать и на других объектах. Например у вас есть 3 разных домика. Разной формы, но у них на крыше один материал, и сложены они из одного вида камня. Учитывая размеры домиков вам понадобится текстура под 2к. Но можно пойти и другим способом через тайловую текстуру. В этом случии у стен будет материал1, а у крыши материал2. Оба материала с тайловой текстурой, но с разрешением 512 и качество у домиков с уникальной и с тайловой текстурой будет одинаковая. А вот производительность совсем разная давай посчитаем. С уникальной нужно 3 материала и 3 текстуры 2к. А вот с тайловой 2 материала и 2 текстуры 512. А учитывая что 1 текстура 2к =16 текстурам 512. То мы получаем солидную выгоду. И чем больше объектов используют эти текстуры тем выгодней ведь этот материал уже есть в памяти видео карты. И видео карте не надо каждую модель загружать и выгружать свою материал и текстуру.

Но как быть когда игрок например входит в здание? Снаружи стены есть, а внутри стены прозрачные. Очень просто сделать у стен толщину все логично, где вы видели стены в 1 мм толщины ну если это не бумажный домик))

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

Владимир Кириченко

В каких же программах это все лучше делать?
Первое что нужно это движок. Учитывая группу это конечно UE4)). Но если вы делаете мобильную игру стоит рассмотреть и UNITY 3D

Второе это 3Д редакторы. Их довольна много.
1)3D MAX - один из самых старых 3Д редакторов. По этой причине он и популярен. Но него есть просто тонна уроков. Но это и его минус. Управлении, инструменты, стабильность все оставляет желать лучшего. Если вы уже работали с ним то можно продолжать, но если начинаете изучать стоит рассмотреть другие программы.

2)MAYA - можно сказать замена 3D MAX. От того же разработчика. Огромным плюсом является анимация. Если вы ей будите заниматься это идеальный вариант. Удобство и скорость работы, стабильность все на хорошем уровне (мой выбор не исключено что когда то тоже сделаю статью). Минус только 1 это цена. Да можно скачать с торрента, но после выпуска игры придется покупать. Недавно выпустили версию для разработчиков игр, с функциями для игр (убрали кино функции). Гораздо по меньшей цене.

3)Blender 3D - По стабильности, скорости работы, удобству не чуть не уступает Maya. И имеет огромный плюс в виде цены. Он БЕСПЛАТНЫЙ!))

4)zbrush - идеален для органике и создания хай пол моделлий. Но для быстрой работы требует шаблонов которые удобней создавать в сторонних 3Д редакторах. Так же оптимизировать сетку в нем не реально. Но для качественной работы не обходим.

5)3D COAT - это смесь zbrush, MAYA или Blender 3D. Вполне интересный редактор. наверное самый универсальный. Но по нему маловато уроков по причине того что он относительно новый.

Такие редакторы как mudbox это клон zbrush и нечем примечательным не выделяется. может про какие то редакторы забыл. Если вспомню добавлю позже.

2D редакторы - они нужны для создание интерфейса и текстурирования моделлий.

1)Photoshop - самый популярных. Много возможностей, но это его и минус, с 0 некоторым довольна трудно разобраться, как в нем надо работать.

2)Gimp - по проще Photoshop, но зато бесплатный. Но советую начать с Photoshop, если не выходит освоить то можно задуматься о Gimp

Так же еще еще целая куча 2Д редакторов. но я в них не работал по этому не берусь судить.

Идеальные программы для текстурирования по модели.
Текстурировать по модели можно почти во всех 3D редакторах и даже в Photoshop. Но из всей массы выделяется Substance Painter программа которая заточена только под 1 задачу, и в этой задачи (текстурировании по модели) ей нет равных. так же цена довольна бюджетная и она стоит своих денег.

Тек же стоит отметить SpeedTree - программа для создания деревьев.

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

Александр Мансарлийский

Данила Ефремов

Дмитрий Луханин

DELETED

Всем привет. По факту. Не могу настроить анимацию прицеливания.
У меня перс с fuse 48 костный (вроде бы). Есть 1 проблема. Т.к. там нету поз прицеливания пришлось взять с анимации unreal (выглядит коряво, но получилось).
И проблемы по коду. Хотел попробовать через контролер, но вышло еще хуже. Кто может помоч. Материал скинуть почитать или видео урок, или скайп напишите .
P.S. Хотел еще попробовать через 2 spring arma разницу между ними взять, но не получилось

Евгений Лычаный

Михаил Знобищев

Спасибо, тот момент когда раньше читал про все по отдельности, но потом нашел про все и сразу) Автору лойс

Владимир Кириченко

Я очень раз что моя статья многим помогла и собрала много откликов, значит не зря я потратил время.
За орфографию извиняюсь, но какая есть.
Сегодня я решил дополнить статью некоторыми вещами которые часто задают.
Будет это частью 2.

Первое что хотелось бы осветить это текстурные атласы. Многие увидев эту технология сразу считают что она идеальна и советуют ее. Но как у любой технологии у нее есть минусы и варианты когда ее не стоит использовать.
Начнем в принципа работы.
Шина видео карты передает быстрей 1 большую текстуру чем много маленьких. Для этого некоторые текстуры объединяют в 1 большую.
Но тут и кроется подвох. Скажем у вас есть заснеженная бочка и ящик по 2 вида и вы знаете что они будут стоять в одной локации и все время рядом и делаете для них текстуру 1024. Выходит когда игрок входит в локацию на видео карту приходит 1 текстура и она использует на 100%. Но если вы в атлас поместили заснеженную. бочку и ящик, и покрытые мхом ящик и бочку. И они стоят в разных локациях. То выходит при вхождению в локации на видео карту отправляется текстура с разрешением 1024, но используется от этой текстуры только 50%, а другие 50% лежат мертвым грузом и не как не используются только загружают память. А когда в атласе не 4 объекта как у нас сейчас, а больше то ситуации становятся еще болие критичные. Не исключена ситуация когда вы в атлас решили запихнуть все болтики у вас их 100 шт. Но на сцене есть только 1 из них. И выходит видео карта держит в памяти текстуру, но использует от нее только 1%. Думаю вам будет не сложно посчитать сколько ресурсов вы впустую выкинете если у вас таких атласов будет 10 и болие. Хотя если болтик делать отдельной текстурой то там будет совсем маленькая текстурка, которая погрузится за доли секунды и будет использоваться на 100%.

Еще один момент по текстурам это кратность. Про это я писал выше. Но текстура не должна быть обязательно квадратной. например она может быть 512 на 1024. Это применяется только с тайловами текстурами. например у деревьев у них высота сильно больше окружности. И чтоб меньше тайлить текстуру по высоте применяют такие текстуры, просто из-за частого повторения он становится виден. Но тут есть ограничения один размер не должен быть больше другого больше чем в 2 раза. И не квадратные текстуры нельзя примерять в мобильных играх (они просто не поддерживают такие текстуры и будут выдавать ошибки). У этих текстур производительность будет ниже чем у квадратных, но если нужно то можно использовать.

Теперь хотелось бы дополнить тему материалы.
Как вы уже знаете в Ue4 есть свой редактор материалов в котором вы можите написать свою логико обработки текстур.
Так вот кроме каналов, Color и normal все остальные каналы черно белые. А модуль входа текстур самый прожорливый.
Разберем немного систему RGB. По сути текстура состоит из 3 слоев которые черно белые. + некоторые форматы такие как TGA поддерживают четвертый слой. И вместо того чтоб подключать во вход металик, рофнес и т.д. отдельные карты можно записать их всех в 1 текстуру. И если у вас на текстуре не используете альфа канал (в Ue4 это 4 слой) вы спокойно можете туда записать скажем карту металик или Ао или еще какую то другую. Тем самым уменьшив количество модулей с новыми текстурами. Но если вы используете альфа канал. То все остальные карты вы можите запихнуть в 1 текстуру. Раскидав их по каналам RGB + альфа. Больше 4 каналов не форматы не двиг не поддерживает. Используйте по максимому все доступные слои.(если не понятно объяснил значит вы не работали с редактором материалов. Если работали и не понятно дайте знать в комментариях)

Чтобы собрать игру, нужна некая среда с определёнными техническими условиями и необходимыми инструментами. В качестве такой среды выступает игровой движок. Unreal Engine 4 — один из самых популярных движков, который используют как крупные компании, так и небольшие инди-студии. К примеру, на UE4 созданы Final Fantasy VII Remake, Returnal, Gears 5, Borderlands 3, Fortnite, Abzû, Observer и многие другие.

Разработчик игр на Unreal Engine 4: что умеет, сколько зарабатывает и почему UE4 — отличный выбор для начинающего специалиста

Владимир Семыкин

Энтузиаст геймдизайна, автор Нетологии

Почему Unreal Engine 4 — один из лучших движков для работы над играми

Есть несколько причин большой популярности UE4.

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

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

Движком можно пользоваться бесплатно: в лицензионном соглашении Unreal Engine указано, что пока ваша игра не принесёт более $1 000 000 — после этого придётся платить 5% от дохода.

Есть возможность сделать игру, которая запустится на всех популярных платформах: PlayStation, Xbox, Switch, ПК, iOS, Android.

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

Разработчик игр на Unreal Engine 4: что умеет, сколько зарабатывает и почему UE4 — отличный выбор для начинающего специалиста

Epic Games постоянно устраивает бесплатные раздачи ассетов, которые могут пригодиться при разработке игры

Большое преимущество Unreal Engine 4 в универсальности и доступности — его могут использовать как опытные разработчики, так и новички, которые впервые берутся за создание игры. Всё дело в том, что UE4 по умолчанию поддерживает сразу два языка программирования: текстовый C++, в котором нужно писать строчки кода, и визуальный язык Blueprints, в котором игровая логика выстраивается при помощи связанных между собой блоков. Такой подход помогает сделать программирование более наглядным и понятным для тех, у кого нет опыта.

«Blueprints разработала компания Epic Games, чтобы дать инструменты программирования людям, которые далеки от этого. Поэтому научиться работать с Blueprints очень легко. Конечно, необходимо получить минимальную теоретическую базу, например, разобраться, что такое переменные и как работает функциональное и объектно-ориентированное программирование.

Разработчик игр на Unreal Engine 4: что умеет, сколько зарабатывает и почему UE4 — отличный выбор для начинающего специалиста

Пример логики для шарика, который отскакивает от препятствий и теряет скорость после каждого столкновения

Большое преимущество Blueprints в том, что с его помощью можно быстро собрать базовый геймплей для игры.

Чего ждать от Unreal Engine 5 и что он умеет в сравнении с UE4

История Unreal Engine: от Unreal до Gears of War

Unreal (1998) вышла спустя два года после Quake, первого полностью трехмерного шутера. Игра базировалась на движке Unreal Engine. Его написал Тим Суини, основатель и глава Epic Games. Сейчас Суини знают по бесплатным раздачам игр в Epic Store и судебному разбирательству с Apple. И сейчас, и на заре карьеры Суини программирует движок самостоятельно. Миллиарды долларов, заработанные на Fortnite, и почтенный возраст (50 лет) ему ничуть не мешают.

Чем же удивила первая версия Unreal Engine? В Unreal поражало красивое небо, прозрачная вода, хитрый искусственный интеллект. Радовала динамическая смена музыки — композиторы позаботились о вариациях тем для разных ситуаций. Текстуры не ужасали при приближении. Еще можно вспомнить порталы и зеркальные отражения.

Unreal

Были и проблемы. Так, с рендерером Glide на видеокартах 3dfx движок взаимодействовал без нареканий. С OpenGL и Direct3D — увы, нет. Шутер Unreal ценили за графику, однако на слабых и средних компьютерах он работал плохо.

Epic исправила недостатки в Unreal Tournament (1999) и заодно причесала сетевой код, иначе в мультиплеерный FPS никто бы не стал играть. Кстати, UT99 основана на UE1.5 — промежуточной версии движка. Впоследствии выпуск подобных итераций с небольшими правками (с поддержкой текстур почетче и последних технологий) превратился для американской студии в норму.

Unreal Tournament

UE задумывался как продукт для лицензирования. Суини встроил в него удобный редактор UnrealEd и язык программирования UnrealScript. От UnrealScript он отказался только к выходу UE4.

И действительно — Unreal Engine покупали крупные компании. В 2000 году свет увидели Deus Ex и Rune, взращенные как раз на UE. В наши дни UE лицензируют для десятков проектов, но в 1990-е и 2000-е годы разработчики зачастую сами писали движок для конкретной игры, универсальных инструментов на рынке не наблюдалось. UE попытался предстать универсальным. Он подавался как мультиплатформенная технология и даже позволял наладить кроссплатформенный мультиплеер.

UE2 помнят по Unreal Tournament 2003 (2002), Splinter Cell (2002), Postal 2 (2003) и другим играм. Среди его новшеств — поддержка VoIP (голосовой связи в многопользовательских матчах), неплохая физика транспорта (помните режим Onslaught в Unreal Tournament 2004?), скелетная анимация и, конечно, физический движок Karma. Он гарантировал, что тело врага после попадания отлетит эффектно, на манер тряпичной куклы.

Unreal Tournament 2004

С UE2 изменения пробрались не только на компьютеры, но и на консоли. Так, Unreal Championship (2002) вошла в историю как одна из первых консольных игр, что получила патч по интернету.

Gears of War

К UE3 в Mortal Kombat vs. DC Universe (2008) обратился Эд Бун. Вы удивитесь, но недавняя Mortal Kombat 11 тоже использует UE3, пусть и за долгие годы серьезно переписанный программистами NetherRealm Studios!

UE3 расширил список привычных платформ. Он покинул пределы PC и консолей и обосновался на iOS и Android, взять небезызвестную Infinity Blade (2010). За движок охотно садились независимые разработчики — в итоге мы имеем, к примеру, The Vanishing of Ethan Carter (2014) и Life Is Strange (2015).

Life Is Strange

Популярности движка на инди-сцене поспособствовало появление в 2009 году бесплатной версии под названием Unreal Development Kit. Возиться с UDK разрешалось даром, а при условии выплаты в 99 $ — еще и продавать игры. Перечислять роялти в пользу Epic нужно было лишь тогда, когда прибыль проекта переваливала за 50 тысяч $.

Особенности Unreal Engine 4

Unreal Engine 4

Технология, придуманная Тимом Суини, шагнула за пределы игровой индустрии. На 2023 год, например, запланирована премьера мультфильма Gilgamesh от аргентинского режиссера Томаса Липгота. Картина о герое Древней Месопотамии примечательна тем, что целиком снята в программной среде Unreal Engine.

Unreal Engine и Unity

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

Исходный код UE4 открыт. Unity Technologies на такую щедрость не отважилась.

В Unreal Marketplace хватает бесплатных материалов для создания игр. Магазин с моделями и материалами для конкурирующего движка называется Unity Asset Store. Тут тоже присутствуют халявные ассеты, но их часто ругают за низкое качество.

В итоге нельзя однозначно сказать, какой из движков лучше. Исторически сложилось так, что UE4, как правило, берут для AAA-игр, Unity — для мобильных и инди-проектов.

Что нового в Unreal Engine 5

Lumen in the Land of Nanite

Lumen in the Land of Nanite

Lumen in the Land of Nanite

Ресницы персонажа, вылепленного The Coalition на UE5, содержат 3500 полигонов, то есть примерно столько же, сколько в целом было в модели героя эпохи Xbox 360.

Unreal Engine 5 распространяется по программе раннего доступа с мая 2021 года. Масштабный запуск намечен на начало следующего года. Движок заточен под PC, PS5 и Xbox Series, но готовить в нем можно будет и проекты для консолей предыдущего поколения, а также для мобильных устройств.

Какие игры выйдут на UE5? Пока известно о Senua's Saga: Hellblade 2, Dragon Quest XII: The Flames of Fate, ArcheAge 2 и Fortnite. UE5 держит курс на фотореализм уровня голливудских блокбастеров. Пожалуй, уже Hellblade 2 даст понять, так ли это на самом деле.

Читайте также: