Nanite
Виртуальная геометрия позволяет использовать больше полигонов и должна заменить привычные LOD’ы, делая прозрачным весь процесс замены высококачественных ассетов на более простые. Становится возможным отображать миллионы трианглов без проблем.
Работает с новым внутренним форматом мешей, который сильно сжат и поддерживает потоковую передачу с автоматическим уровнем детализации. LOD’ы самим больше делать не надо.
Контент для Nanite ничем не отличается от обычных статичных мешей, но Nanite может обрабатывать на порядки больше треугольников и инстансов, чем при рендеринге обычной геометрии. Рекомендуется использовать виртуальные текстуры.
Во время импорта меши разбиваются на иерархические кластеры групп треугольников. А уже во время рендеринга кластеры меняются местами на лету с разными уровнями детализации в зависимости от обзора камеры и без разрывов соединяются с соседними кластерами в одном объекте. В памяти находятся только видимые детали. Как следствие, чтобы это всё нормально стримилось, нужен SSD.
Для прокси-мешей можно настроить уровень детализации.
Прокси-меши используются для коллизий на уровне полигонов, трассировки лучей, запекания света и другого. При этом по умолчанию используются авто-генерируемый LOD0, что весьма странно
По крайней мере, есть возможность выбрать кастомный прокси и настроить традиционные LOD’ы.
Независимо от геометрической сложности исходных данных в сцене, количество треугольников в целом пропорционально количеству пикселей, т. к. нет смысла рисовать больше треугольников, чем пикселей на экране.
Могут быть проблемы с occlusion culling. Если есть сложнная геометрия близко друг к другу около самой верхней поверхности, Nanite не сможет определить, какая из них находится сверху или снизу, что приведет к отрисовке обоих. Вблизи Nanite нормально разделяет слои, но при удалении разница в расстоянии между геометрией может быть меньше пикселя, что приводит к лишней отрисовке.
Если верить доке, то у Nanite меша и качество лучше, и размер меньше.
Почему Unreal Engine 4 — один из лучших движков для работы над играми
Есть несколько причин большой популярности UE4.
UE4 поддерживает большое количество функций, благодаря чему в нём можно создать практически любую игру.
В Unreal Engine 4 есть встроенная система визуального скриптинга, которая позволяет без особых препятствий выстраивать игровую логику даже новичкам.
Движком можно пользоваться бесплатно: в лицензионном соглашении Unreal Engine указано, что пока ваша игра не принесёт более $1 000 000 — после этого придётся платить 5% от дохода.
Есть возможность сделать игру, которая запустится на всех популярных платформах: PlayStation, Xbox, Switch, ПК, iOS, Android.
У движка огромное сообщество пользователей, которые создают обучающие материалы, делятся друг с другом опытом и помогают решать проблемы. Дополнительный плюс большого сообщества — множество игровых ассетов, доступных для свободного использования в своём проекте.
Epic Games постоянно устраивает бесплатные раздачи ассетов, которые могут пригодиться при разработке игры
Большое преимущество Unreal Engine 4 в универсальности и доступности — его могут использовать как опытные разработчики, так и новички, которые впервые берутся за создание игры. Всё дело в том, что UE4 по умолчанию поддерживает сразу два языка программирования: текстовый C++, в котором нужно писать строчки кода, и визуальный язык Blueprints, в котором игровая логика выстраивается при помощи связанных между собой блоков. Такой подход помогает сделать программирование более наглядным и понятным для тех, у кого нет опыта.
«Blueprints разработала компания Epic Games, чтобы дать инструменты программирования людям, которые далеки от этого. Поэтому научиться работать с Blueprints очень легко. Конечно, необходимо получить минимальную теоретическую базу, например, разобраться, что такое переменные и как работает функциональное и объектно-ориентированное программирование.
Но и эту теоретическую базу можно изучать, применяя Blueprints. И даже без неё можно сделать что-то интерактивное, например, кнопку, которая открывает дверь. Язык Blueprints крайне прост в освоении, и в нём есть много решений, которые делают его применение удобнее. Например, цветовая индикация различных типов переменных», — Антон Токарев, преподаватель Нетологии, геймдизайнер в Dreamside Interactive.
Пример логики для шарика, который отскакивает от препятствий и теряет скорость после каждого столкновения
Что означает Unreal Engine 5 для художников в геймдеве?
Давайте вкратце разберемся с тем, какие основные фичи Unreal Engine 5 будут самыми важными для художников.
Nanite
Инструмент Nanite — это современный подход к визуализации геометрии.
Он очень неприхотлив к ресурсам несмотря на то, что с его помощью можно размещать на сцене высокодетализованные объекты с миллионами деталей. Nanite позволяет работать с high poly
Детализированная модель без ограничений по полигонам. На таких моделях могут быть сделаны все, даже самые маленькие детали. Такие модели часто производят концептеры, а в видеоиграх такая геометрия нужна для запекания нормала. сценами как никогда раньше. Потенциально это позволяет не заниматься low-poly оптимизацией, мержем сцен и HLods. А это освобождает много времени и сил на более креативные задачи.
Создание высокодетализованных объектов
Megaskans
Megaskans — это бесплатная библиотека фотореалистических ассетов премиального качества.
Фотореалистичный ассет
Разработчики Megaskans взяли на себя всю тяжесть сканирования разнообразных объектов и добавления их в Asset Store. Все ассеты в Megaskans уже готовы к работе с Nanite по умолчанию.
Lumen
Lumen — это инструмент для работы с глобальным освещением, который поддерживает рендеринг в реальном времени, включая трассирование лучей.
С Lumen можно будет не запекать свет. То, что было трудным на объектах окружения высокого качества вручную, теперь делается автоматически.
Возможность не запекать свет с инструментом Lumen
Metahuman
Metahuman — это новый кастомайзер для человекообразных персонажей.
Бесплатный, фотореалистичный, с поддержкой волос и ткани, готовый к применению в UE5 по умолчанию. С таким инструментом очень сложно создать некрасивого персонажа. Также у всех персонажей из Metahuman есть готовый риг и они готовы к анимации.
Красивые человекоподобные персонажи
Почему стиль настолько важен
Выбор стиля оказывает влияние на всех, кто работает над игрой: программисты, художники, дизайнеры, продюсеры.
Стиль помогает:
- отличаться от конкурентов;
- построить узнаваемость бренда;
- создавать уникальный опыт у игрока: стиль усиливает нарративную составляющую и эмоции.
Реалистический стиль быстро эволюционирует. Технологии и методы создания реалистического визуала устаревают быстрее, чем мы успеваем ими овладеть. Среднестатического игрока сегодня не удивишь пиковой графикой десятилетней давности. Просто посмотрите, как устарело сейчас выглядит первый Crysis, и вспомните, насколько прорывным он казался в 2007-м.
Если же говорить о стилизованных играх, они устаревают гораздо медленнее. В них скорее устареют механики, геймлпей, техническая сторона, но не визуал. Хороший стиль никогда не стареет.
Borderlands, Darksiders, Hades, Limbo
Всегда помните один из ключевых принципов геймдизайна: показывайте, не рассказывайте. Хорошая сцена в игре стоит тысячи слов сценария.
Предистория
Году в 2018 я загорелся идеей изучить Unreal Engine 4 и заодно создать на нём свою игру. Я сперва потыкался в редакторе сам, потом прошёлся по обучающим роликам, но никак не мог придумать что именно я хочу сделать, а также где взять ассеты для игры. Сам то я умею только программировать.
И тут мне в рекомендации на ютубе попадается видео с названием навроде «Я перенёс СТАЛКЕР на Unreal Engine 4!!!11». Заголовок звучал громче чем само видео, потому что автор только импортировал одну из мультиплеерных карт оригинальной трилогии, натянул оригинальные текстуры, добавил траву, источники освещения и сказал «Вах как красиво!». Однако, это видео всё равно было очень полезно, потому что оно содержало инструкцию о том, где взять оригинальные ассеты и как их импортировать. А заодно это видео намекнуло мне, что я хочу сделать именно сталкера. Я же как раз фанат этой серии игр!
Как разработать стиль
Итак, что является составной частью стиля и как его создать? Часто стилизованную графику легче создать по сравнению с реалистичной. В большинстве случаев стиль упрощает некоторые элементы вашего творчества. Любой элемент игры может быть упрощен: свет, тени, цвета, формы, частицы (particles). Вспомните, как у Симпсонов было по четыре пальца.
Есть примеры того, как нехватка ресурсов создала стиль. Один из лучших — игра Silent Hill .
Технологии того времени не могли поддержать отражение столь большого уровня — не хватало графической мощности. Разработчики решили добавить туман.
Это сохранило ресурсы консоли и сильно повлияло на атмосферу и стиль игры. Туман Silent Hill стал ключевым элементом стиля для всей франшизы.
Туман Silent Hill стал ключевым элементом стиля игры
Стиль также помогает скрыть слабости проекта. Если ваш моделер не так хорошо рисует лицо, как хотелось бы, пусть по сюжету все в вашей игре носят маски. Это будет гораздо выгоднее, чем нанимать отдельную команду, чтобы моделировать лицо.
Но не стоит забывать о правиле gameplay first. Люди играют в игры, а не смотрят их. Игрок должен иметь хорошее понимание о том, куда смотреть, идти и с чем взаимодействовать. Хорошие примеры здесь — это подсветка нужных объектов в Uncharted и Mirror’s Edge.
Разделите персонажей, отделите фон, сделайте все читабельным, не добавляйте слишком многое на малое пространство, помните о формуле big-mid-small. Вот хорошие примеры такой работы:
Все могут различить и узнать модели и анимации из Fortnite
Mirror’s Edge может хвастаться геймплеем в просторном городе и революционной системой подсветки интерактивных объектов (которую можно отключить, что коренным образом изменит геймплей и его сложность).
Игра Ghost of Tsushima — это отличный пример стилизации реалистической графики. Правильные акценты в кадре и штуки типа palette limitation позволяют думать, что каждый кадр игры выставлен вручную.
Legend of Zelda: Breath of the Wild выделяется простыми текстурами и ярким светом с выделенными акцентами. Что интересно, многие пытались скопировать этот стиль, но мало у кого получилось.
Установка и запуск
Скачать движок можно из лаунчера Epic Games. Достаточно зайти в раздел Unreal Engine и перейти во вкладку «Библиотека» (Library). Клиент уже доступен к установке во вкладке «Версии Unreal Engine» (Engine Versions). По умолчанию он будет установлен в папку /Epic Games на жёстком диске.
Если у вас нет учётной записи Epic Games, следует зарегистрироваться на официальном сайте и скачать лаунчер. После чего запустить его и установить редактор, как указано выше.
Интерфейс раздела Unreal Engine и вкладки «Библиотека» в лаунчере Epic Games. Сверху расположены установленные/доступные к установке версииСкриншот: программа запуска Epic Games для ПК / Skillbox Media
Кроме версий движка в «Библиотеке» есть раздел «Мои проекты» (My Projects). Здесь собраны все ваши проекты на Unreal Engine всех версий. В этом окне с ними можно проводить базовые манипуляции. Щёлкнув правой кнопкой мыши по иконке проекта, его можно открыть, просмотреть содержимое в проводнике Windows, сделать копию, создать ярлык на рабочем столе для быстрого запуска или удалить.
Примечание
Удалённые проекты не отправляются в корзину, как, например, файлы, удалённые в проводнике Windows. Восстановить их невозможно.
«Хранилище» (Vault) содержит все плагины и ассеты, скачанные из «Магазина» (Marketplace). В последний можно зайти, щёлкнув по одноимённой вкладке, расположенной слева от вкладки «Библиотека».
По умолчанию версия 5.0.0 занимает чуть больше 55 Гб на жёстком диске. Но размер легко сокращается до 32–36 Гб, если отключить ненужные сегменты в настройках установки — например, контент для дополнительных платформ.
Чтобы зайти в «Настройки» файлов клиента, нужно кликнуть на стрелку рядом с кнопкой «Установить/Запустить»Скриншот: программа запуска Epic Games для ПК / Skillbox Media
Часть окна параметров установки. Выставляем/убираем галочки напротив необходимых сегментов и нажимаем «Применить». На скриншоте показаны компоненты, которые могут быть необязательными для новичковСкриншот: программа запуска Epic Games для ПК / Skillbox Media
Если нужно запустить сторонний проект (скачанный из Интернета, скопированный с внешнего носителя), важно помнить, что клиент его не распознаёт. Потребуется автономный запуск: в папке с проектом необходимо открыть файл с расширением .uproject
Убедитесь, что на компьютере установлена версия движка, на которой сделан проект. Если её нет, выскочит всплывающее окно с доступными версиями, из которых можно выбрать подходящую.
Скриншот: официальное руководство по Unreal Engine 5 / Skillbox Media
А причём здесь Unreal Engine 5?
В декабре 2021 я решил глянуть как всё это будет работать на новом движке от Epic Games, благо он может запускать проекты для UE4 без дополнительных телодвижений (что намекает на то, что это просто дальнейшее развитие UE4, а цифра 5 в названии ради маркетинга).Ещё стоит упомянуть, что разрабатывал я на Intel Core i7 3-го поколения и Nvidia GeForce 1050ti и соотствественно оптимизировал в первую очередь под них. Для разбирающихся, я в основном полагался на Hierarchical Level of Detail (HLOD), а также пришлось оптимизировать некоторые материалы при помощи вставок на чистом DirectX SM5. При этом я не использовал обычный LOD.А сравнения снизу уже сделаны на AMD Ryzen 9 5900X и Nvidia RTX 3080ti, из-за чего использование того же HLOD не даёт практически никакого прироста производительности.Ну и, в конце концов, оригинальные модели делались для собственного движка студии GSC Game World ещё в нулевые, а используемая в данном сравнении карта Затон была выпущена в 2009 году. Поэтому и количество полигонов и разрешение текстур соотвествующее. К примеру, в наше время моделька одного персонажа может иметь больше полигонов, чем любая из карт Сталкера целиком.Также, чтобы полностью понять сравнения снизу, рекомендую почитать про систему Nanite, которая является главным нововведением в UE5. Грубо говорят, при включенном Nanite движок самостоятельно генерирует LOD и переключается между ними так, чтобы это не было заметно глазу. Также в UE5 добавили систему Lumen, но её в данном посте не будет.
Черный миф: Вуконг
Разработчик: Игровая наука | Ожидаемая дата выхода: 2023, может быть
В 2020 году ни одна игра не произвела такого фурора, как Black Myth: Wukong, приключенческая игра, основанная на Journey to the West, разрабатываемая китайской студией Game Science. Дебютный трейлер Black Myth выглядел невероятно, но на самом деле в то время он работал на Unreal Engine 4; в 2021 году разработчики перешли на Unreal Engine 5, процесс, который они назвали «неожиданно гладким» в интервью в блоге Unreal.
«Nanite значительно снижает сложность оптимизации производительности для сред», — сказал технический директор и соучредитель студии Чжао Вэньонг. «А с помощью Lumen нам больше не нужно запекать карты освещения или использовать точечные источники света для имитации глобального освещения». Game Science не рассчитывает закончить Black Myth как минимум до 2023 года, но мы видели больше, чем любая другая игра Unreal 5 до сих пор.
Анимация
Добавили для анимаций Full body IK solver. Может автоматически подстраиваться под тип пола/земли и высоту. «Детерминированный надёжный и в 10 раз быстрее, чем раньше».
Появился новый фреймворк Game Feature Plugins, который позволяет разбить контент на модули. Может связать экшены, анимации, другие системы.
К примеру, в другом измерении у ГГ меняется абилка. Это всё задаётся на уровне конфига.
Все vfx, звуки, анимации, инпуты, блюпринты, относящиеся к абилке, в виде одного плагина в проекте, что позволяет отделять фичи и сделать проект более модульным и конфигурируемым.
Animation Motion Warping позволяют адаптировать рут анимации под мир. Можно переиспользовать одни и те же элементы.
Позволяет настроить нотификации для реакции на трансформы из блюпринтов.
Система реагирует на высоту препятствий, поворот персонажа и прочее.
Control Rig позволяет редактировать анимации прям в движке.
Full body IK даёт возможность настроить анимацию в ответ на какие-то внешние факторы: позиция противника и т. п. Всё на уровне конфига.
Например, настроить направление и дальность атаки в зависимости от положения ГГ.
С помощью новой системы Meta sounds можно теперь использовать всю мощь редактора материалов для создания сложного процедурного звука.
Что же такое стилизация
Стилизация — это то, о чем мы должны прежде всего думать, если наша цель создать уникальный вид игры. Стилизация может выделяться через авторское видение, период времени, выбранный стиль арта и многие другие переменные — очевидно, для игр в жанрах FPS и симулятора градостроительства нужны разные стили. Графика, тематика, набор технологий и решений, которые мы используем в игре, это стиль нашей игры.
Правильно выстроенный стиль подчеркивает идею игры, усиливает эмоции игрока и помогает лучше доносить нарративную составляющую. Стилизация может родиться из умышленного использования и микса выбранных элементов. Хорошо подобранная стилизация часто приходит после многих итераций. Вот пример игр, которые хорошо выделяются именно из-за уникального стиля визуала:
Unfinished Swan, Sayonara Wildhearts, Remember me, Pathologic 2
Сталкер 2
Разработчик: Игровой мир GSC | Ожидаемая дата выхода: 8 декабря
Stalker 2 едва не удостоилась чести стать первой крупной игрой на Unreal Engine 5, выпущенной в 2022 году, но ее выпуск был перенесен с весны на декабрь. И теперь у разработчика, базирующегося в Киеве, Украина, больше приоритетов. В настоящее время GSC Game World отодвинула Stalker 2 «на второй план», поскольку студия «стремится помочь сотрудникам и их семьям выжить».
Из того, что мы видели в Stalker 2 до сих пор, это может быть хорошей демонстрацией для Nanite, системы «виртуализированной геометрии» UE5, которая позволяет художникам импортировать чрезвычайно подробные модели в игровой мир, не замедляя его. В начале 2021 года GSC Game World продемонстрировала модель персонажа с видимыми «потертостями, царапинами и торчащими нитками», как описал Закар Бочаров из GSC Game World. Разработчики Сталкера даже создали «инструмент для кастомных зубов», чтобы придать каждой уродливой роже уникальную улыбку.
И что же вышло?
Понимая, что полноценная одиночная кампания мне не по силам, я решил сделать мультиплеер. Я опущу 2 года чтения мануалов движка, создания материалов и конечно же написания основного кода игры, так как это не по теме.
В итоге имеем:
-
Портированы Затон из «Зова Припяти» и Бар из «Чистого Неба»
-
Портированы все текстуры и сделаны материалы, которые могут правильно воспользоваться оригинальными текстурами
-
Собственная система погоды, которая может выдать и солнечный день, и туман, и сильный ливень в ночи
-
Собственная система предметов и инвентаря
-
Собственная система стрельбы
-
Реализованы режимы «Battle Royale» и «Deathmatch», в которые можно поиграть на Затоне и в Баре соответственно
-
Внедрены необходимые оптимизации дабы всё это работало на моих тогдашних Intel Core i3 3rd gen и Nvidia 1050ti и выдавало минимум 60 кадров в секунду на максимальных настройках
А можно увидеть своими глазами?
Вы можете увидеть финальную графику здесь:
А геймплей Королевской Битвы здесь (геймплей записывался на старой графике):
Также можете пощупать всё сами, скачав игру отсюда
Игра работает только в мультиплеере и ищет сервера через Steam, поэтому вам нужно сперва пробросить к себе порт , потом запустить сервер через и зайти на него. По умолчанию запустится Королевская Битва и для старта матча нужно минимум 2 игрока. Чтобы поменять настройки сервера вам нужно зайти в папку и переименовать либо в , а также отредактировать настройки в этих файлах как вам угодно.
Правда я забросил всё это летом 2020 года, потому что устал работать в одиночку и не смог набрать достаточно игроков чтобы подталкивать меня к дальнейшей разработке…
Собственно, сравнение
Тестирование проводилось в полностью скомпилированной игре, чтобы интерфейс редактора не влиял на результаты.Сравнивать я буду одни и те же сцены, все на карте «Затон», но в разных сценариях:
-
Изначальная сцена на UE4 со всеми оптимизациями, включая HLOD
-
Та же сцена с теми же оптимизациями, но на UE5. Система Nanite при этом включена, но в сцене нет ни одной модели, которая её использует.
-
Та же сцена с теми же оптимизациями на том же UE5, но с полностью выключенном Nanite ( в консоли)
-
Та же сцена на UE5 с полностью активным Nanite и без HLOD
Я не нашёл как сделать удобное сравнение картинок на хабре (это вообще возможно?), поэтому рекомендую открывать их в отдельной вкладке и сравнивать самостоятельно. Вы можете увидеть частоту кадров справа вверху, а более подробная статистика находится после основных выводов.
Нет, я не перепутал скриншоты. Я ожидал, что Nanite будет посередине между включённом, но не используемом, и полностью выключенном. Но нет, он показал себя хуже всех… И это странно, потому что если убрать HLOD, оставить Nanite включённым, но не используемым, то fps падает всего на 1 на текущем железе (На старом железе разница была большая, но цифр у меня уже нет). Я не знаю что здесь не так.Опять же напомню, что все эти ассеты создавались для игры 2009 года и для совершенно другого движка, и полигонов там по современным меркам мало, а Nanite из UE5 делается для очень многополигональных сцен. Но это всё равно странно!Однако производительность падает даже при выключенном Nanite. Это точно не Lumen, я проверял, это что-то ещё…
Сколько зарабатывают разработчики на Unreal Engine 4
По данным компании Values Value, которая собирает информацию о трудовом рынке в геймдеве, средняя зарплата для разработчиков на Blueprints составляет около $1 550. Для разработчиков на C++ средняя зарплата приближается к $2 500 (здесь учитываются и те специалисты, которые используют C++ вне UE4).
Чтобы оценить востребованность UE4-специалиста на рынке, достаточно взглянуть на количество вакансий в этой сфере. На hh.ru можно найти более 200 предложений о работе для разработчиков на Unreal Engine 4. При этом там встречаются совершенно разные предложения: офис/удалённая работа, VR/мобайл/консоли, вакансии для junior/middle/senior.
Вывод
-
Не переносите старого сталкера на UE5, переносите на UE4 -
Текущая альфа UE5 плохо показывает себя в низкополигональных сценах, что в больших и открытых, что в маленьких закрытых. Производительность падает в среднем до 50% от UE4 в одинаковых условиях.
-
Можно отключить Nanite совсем через команду в консоли, но производительность всё ещё будет хуже — 75% от UE4. Однако, если отключить солнечный свет, то будет около 87% от UE4.
-
Если же убрать HLOD, включить Nanite и активировать его для всех непрозрачных мешей, то производительность упадёт ещё ниже — аж целых 35% от UE4! Частично причина в том, что HLOD упрощает не только модели, но и материалы, а Nanite нет (вроде бы). То есть теперь просчёт пикселей занимает больше времени. Но там явно виновато что-то ещё, и я не знаю что…
-
Если добавить в сцену множество полупрозрачных частиц (дождь), то производительность упадёт везде и очень сильно, но отставание UE5 уменьшится — 80/87/49 процентов от UE4. Это говорит о том, что пиксельные шейдеры в UE5 не трогали, а трогали только вершинные.
-
Собственно, главный вывод — не стоит делать низкополигональные игры на текущей альфе UE5. Надеюсь, это починят в будущем.