Вы можете посмотреть в начале ролика видео из отпуска, а можете увидеть то, как с помощью Unreal Engine 5 создали почти такую же картинку.
Дальше перед вами окажется мило спящая на кровати собачка, разработчика игр Гэри Фримена. На этом демо 10 миллионов полигонов. Чем больше полигонов, тем качественнее, реалистичнее и красивее выглядит модель предмета или персонажа в игре.
И у этой собаки действительно много полигонов! Например, модель Кратоса из новой God of War состоит из 80 тысяч полигонов! Это в 125 раз меньше!
Ну а если клонировать эту собачку скажем, 1000 раз? Мы получим 10 миллиардов полигонов, это уже неплохо. Получаем в 125 000 раз больше полигонов, чем у “бога войны”. Прости.
А если вся обработка будет происходить в реальном времени, а само клонирование происходит за секунды? Это возможно на вполне стандартном железе вашей PS5 или даже ПК? Всё благодаря Unreal Engine 5!
Впечатляющее количество полигонов отрендеренное в реальном времени, это мелочи по сравнению с тем, что может нам продемонстрировать Unreal пятой итерации. Вы наверняка фидели фанатский ремейк SkСкайрим! Не впечатляет? Вот фанатский ремейк ГТА Сан Андреас! И я уж не говорю про очаровательное лицо Киану в «Матрице».
Вы наверняка слышали про этот движок и что очень много студий собираются делать на нём свои игры! Сегодня мы разберёмся, каким образом он достигает таких потрясающих фотореалистичных результатов, какие технологии за этим стоят, какие возможности нам откроются и какую революцию уже вершит этот игровой движок.
Что такое игровой движок?
Но для начала, что вообще такое игровой движок? Если простым языком, это набор инструментов для создания игровых миров. Причем самых разных. Например, для вашей игры требуется реалистичное освещение как в Red Dead Redemption 2, или разрушаемость объектов как в Battlefield. Все эти возможности предоставляет движок. Например, легендарная разрушаемость зданий в Battlefield стала возможной благодаря функционалу движка Frostbite. Ближайший конкурент Call Of Duty, который создан на другом движке, так не умел.
Да, как разработчик, вы можете написать с нуля эти функции. Но не всё так просто.
Тут подойдёт аналогия. Представьте, что вы повар на кухне. Вам поступил заказ. Но прежде чем начать резать мясо и лук, вам нужно вырастить корову и растение. Обычно таким занимаются фермы, а повар просто соединяет ингредиенты в нужном порядке. В данном случае повар это разработчик игры, а ферма — это движок.
Но прежде, чем порезать ингредиенты, вам нужно: вскопать овощную грядку, открыть собственную ферму, 9 месяцев выдерживать пармезан. А еще руками собрать газовую плиту, чтобы поджарить креветочки.
То же самое и в геймдеве. Есть студии, которые пишут движки с нуля, но это либо очень богатые студии такие как RockStar (авторы GTA), либо персонажи с раздутыми амбициями такие как CD Projekt RED. Создатели «Ведьмака» написали свой собственный движок — Red Engine. И если в третьем «Ведьмаке» это выглядело неплохо, то вот в случае с Cyberpunk 2077 это привело к катастрофе. Red Engine не потянул амбиции разработчиков, его инструментарий банально устарел.
Современному разработчику, куда проще взять готовый инструментарий и не отвлекаться на создание сложных технологий, а спокойно пилить игру своей мечты. И именно такой всесторонний функционал даёт движок Unreal Engine.
Это старейший игрок на рынке. Написанный в 1996 году Тимом Суини, основателем легендарной студии Epic Games, Unreal и по сей день предоставляет свой инструментарий. С недавнего времени, движок условно-бесплатный для любого желающего. На нём можно создать игру на любой платформе, от iPhone до PlayStation 5. За свою 26-летнюю историю, на Unreal вышло сотни игр. За это время вышло 4 версии. И наконец вниманию общественности представлена 5 версия, что же она умеет?
Первая презентация
Чем же уникальна именно 5 версия?
14 мая 2020 года, разработчики представили новую версию движка. Две ключевые технологии, которые были представлены это Nanite и Lumen. Эти два решения, перевернут наше восприятие компьютерных играх.
NANITE
Начнём с Nanite. Это новый способ взаимодействия с игровыми моделями. До этого попытки предпринимались, например NVIDIA со своим сеточным шейдером. Но повсеместно внедрить эту технологию не получилось.
Да, это выглядит красиво и свежо, но в чём революция?
Чтобы понять какое нововведение привносит Nanite, нам надо понять как раньше обрабатывались модели в играх.
Первоочередная задача разработчика игр, это оптимизация игры. Создаваемый проект должен запуститься на как можно большем количестве устройств, чтобы разработчик мог заработать больше денег.
Важный этап в этой оптимизации это упрощение моделей в игре.
Сейчас объясню как это происходит. Любая модель предмета в игре, создавалась в нескольких вариациях: с разным количеством полигонов. Низкополигональная модель, чуть лучше, ещё лучше и наконец высокая детализация. Такие модели называются лоды. Обычно таких делают 4 штуки.
Дальше принцип простой: предметы которые находятся рядом с игроком высокополигональные, которые находятся на расстоянии 20 метров уже заменяются на низкополигональные. Например если вы посмотрите в бинокль в игре, то увидите предметы в плохом качестве. Наверняка вы сталкивались с ситуациями в играх, когда объекты перерисовываются у вас на глазах. Это тоже оно.
Такой подход позволял сэкономить ресурсы устройства на котором была запущена игра. Но очень усложняло жизнь разработчикам, вам нужно вручную создать и настроить несколько моделей для одного предмета!
Мы поняли принцип создания раньше, теперь посмотрим что предлагает нам Nanite сейчас. Все модели в игре теперь создаются единожды, в высокополигональном виде! Nanite сам будет подстраивать качество модели, в зависимости от удаления игрока от предмета. Как это работает?
Когда разработчик импортирует модель в движок, эта моделька анализируется и разбирается на полигональные кластеры. Эти кластеры, могут видоизменяться становясь детализирование если это нужно, либо уменьшая своё качество.
Причем фишка в том, что кластер формируется таким образом, чтобы всегда занимать примерно одинаковую площадь на экране. И поскольку в одном кластере фиксировано количество полигонов — 128, выходит, что каждый раз компьютер обрабатывает примерно одинаковое их количество.
Никаких карт нормалей не нужно, Unreal всё делает за вас! Объекты, на которые вы будете смотреть в бинокль, в игре с включённым Nanite, будут всегда в отличном качестве. Технолгия учитывает, что вы смотрите на объект и делает его высокополигональным.
Грубо говоря, Nanite следит за игроком. Куда он смотрит, там и делает красиво. Это сбрасывает нагрузку на ваше устройство, нужно совершать меньше затратных действий.
Но это ещё не всё! Nanite умеет сжимать модели без потерь в качестве.
Дело в том, что в классическом геймдеве, есть ещё один принцип упрощения моделей. Это карта нормалей. Если совсем просто, это псевдо 3D-рисунок, который “запекается” на низкополигональную модель.
Посмотрите на фотографию. Представим что листочек, это наша модель. Мы хотим сделать так, чтобы наша модель воспринималась как трёхмерный объект. Сверху листочка мы рисуем дверь, грамотно расставляя тени. Теперь восприятие уже поменялось, нам кажется, что этот объект трёхмерный и там есть дверь.
Тоже самое в игре. На фотографии низкополигональная стена, на которую сверху прикрутили карту нормалей. Теперь стена ребристая и реалистичная. Хотя по факту, стена осталось такой же плоской. Такой подход используют либо со статичными объектами, либо с теми? которые находятся далеко.
Модель? сделанная классическим способом? включает в себя: полигоны, карту нормалей, лоды. Предположим что в такой модели 1,5 миллиона полигонов, карта нормалей и четыре лода. Модель высокополигональная и она будет весить приблизительно 150 мб.
Nanite же хранит только одну модель, зато в полной детализации. Идентичная модель из первого примера, будет весить примерно 30 мегабайт! Это отличная экономия пространства!
Посмотрим же на первую демоверсию на Unreal Engine 5. Нам показывают статую, подчёркивая, что в ней находится 33 миллиона полигонов — как мы помним, это много. В 500 раз больше, чем у Кратоса из нашего примера.
Потом девушка из демо-игры, продвигается в глубь пещеры, где нам показывают уже 500 таких статуй, а общий объём полигонов достиг 16 миллиардов. (Но мы понимаем, что умный Unreal не просчитывает все их, а распределяет ресурсы. При этом надо держать в голове, что это рендер в реальном времени. И помимо самих статуй, в кадре огромное количество объектов, освещение. А самое главное, это происходит на железе PlayStation 5! То есть вам не нужен ПК за полмиллиона рублей500к чтобы сделать такую графику, достаточно приставки со стандартным железом конца 20 года. Более того, эти функции уже вшиты в движок, разработчику не надо придумывать велосипед.
Сам по себе факт, что такая сложная технология, доступна любому разработчику, а значит и пользователю уже является революционным.
Но не без ложки дёгтя. Nanite пока не справляется с обработкой прозрачных объектов. Стекло и прочие похожие объекты не поддаются рендерингу через Nanite. Epic Games говорят, что вскоре проблему решат, но пока такие объекты рендерят классическим способом. Так же есть проблемы с анимированными или “изменяющимся” объектами, но об этом чуть позже.
Но реалистичные текстуры надо ещё реалистично подать с помощью освещения. И тут нам поможет вторая ключевая технология — Nanite!
LUMEN
Люмен. Все мы знаем про рейтрейсинг. Впечатляющая система динамического освещения, которая рассчитывает траектории лучей света, так, как они бы двигались в реальном мире.
На примере того же Cyberpunk 2077 можно найти сравнение, как это красиво выглядит! Отражения, правильное освещение, создаёт атмосферу и фотореалистичность любому проекту. Но у рейтрейсинга есть две проблемы.
Первая, что для запуска этой технологии нужны видеокарты RTX от NVIDIA или от AMD c технологией RDNA. Они сейчас дефицитные и дорогие.
Вторая, для расчёта глобального освещения требуется очень много лучей, которые надо рассчитать в реальном времени, даже если вы не видите объекты. Это очень сильно отнимает ресурсы у вашей видеокарты.
Lumen упрощает подход к расчету лучей света. Хотя в сути своей, технология тоже представляет собой рейтрейсинг. Но Lumen позволяет обходить затратные действия, проводя рендер лучей света по упрощённой системе. И для работы не требуется аппаратное ускорение по типу RTX.
Для каждой модели, со всех сторон создаются проекции, которые содержат в себе данные о поверхности. Называется такая проекция SDF — Signed Distance Fields.
Эту информацию Lumen использует для того, чтобы рендерить лучи света, в том числе и когда камера не смотрит на эти модельки. Это сделано для того, чтобы луч света, который отражается от объекта в дальнем конце комнаты, правильно отображался на моделях в поле зрения камеры.
Если при классическом рейтрейсинге, приходилось проводить расчёты очень точно, от каждой точки на модели. Даже если камера не смотрит на этот объект, его всё равно приходилось рендерить таким образом.
Lumen хватает вот таких карт, где есть очень упрощённые данные о поверхности. Это позволяет кардинально сбросить нагрузку на вычислительные мощности.
Если обобщить, Lumen — это компромисс между очень затратным динамическим освещением и нереалистичным освещением.
Что ещё умеет Lumen? Вот самые интересные возможности.
Растекание света. Очень интересная штука. Свет от объекта, отражается или отскакивает на другие поверхности, оттуда на другие поверхности и так далее. Но всё это происходит в зоне видимости камеры. На видео, оранжевый манекен, отражает свет на колонну. Возможно это покажется не очень важным, но восприятие мира, где свет ведёт себя так естественно, должно усилится в разы!
Мягкие, непрямые тени. Реалистичные и точные тени. Они слегка размытые и это добавляет естественности картинке. Каждый объект, сделанный на движке Unreal, будет отбрасывать такие тени.
Отражения На старых версиях Unreal, да и на других движках, отражение и освещение были двумя разными функциями. Они обрабатывались отдельно. Теперь же они работают, как единая программа. Это позволяет создать реалистичные отражения, так как обмен данными происходит напрямую.
Как итог, мы получим шикарное освещение, но с куда меньшими требованиями к железу. Lumen по умолчанию уже есть в Unreal Engine 5. А это значит, что разработчикам опять становится намного проще. Создал сцену, прикрутил источник света и получил крутой уровень освещения. Для простых игроков, это означает, что все проекты на Unreal Engine 5 будут выглядеть очень красиво и реалистично, без ультра современного железа.
Тут есть один важный момент. Для хорошей и плавной работы как технологии Nanite, так и Lumen, нужно прогнать большие объёмы данных об объектах. Да, происходит экономия за счёт сжатия. Но вот самих данных получается очень много, так как теперь мало ограничений по возможностям и детализации объектов. Их много и они все высокополигональные!
У консолей нет с этим проблем, как и в PS5 так и в Xbox Series, есть ультрасовременные SSD-накопители, которых с избытком хватит для этих целей. ПК-боярам же, нужно иметь это ввиду. Возможно, понадобится апгрейд.
Уже похоже на революцию. По итогу, мы имеем высокотехнологичный и простой инструментарий, который упростит жизнь как и разработчикам, так и простым геймерам. Автоматизация процессов, как говорят сторонние разработчики позволит сохранять большие деньги и человекочасы. К этому мы ещё вернёмся.
Так как же себя показывает движок, в полевых условиях?
Демо The Matrix Awakens
В декабре 2021 года, Epic Games представили миру “Матрицу”. Эта технодемка в версии для PS5 создавалась с целью показать возможности Unreal Engine 5 в полевых условиях. Получилась ли революция? Судите сами: общая площадь города, где происходит всё действо 15 квадратных километров. Для понимания в Skyrim — 30, в GTA 5 — 80. Город был сгенерирован с помощью Houdini, плагина встроенного в движок, который позволяет, процедурно генерировать уникальные объекты. Затем эти здания были добавлены в демку «Матрицы».
- Почти 7 тысяч зданий.
- В городе 260 км дорог и 512 км тротуаров.
- 35 тысяч пешеходов, каждый из которых с уникальной внешностью.
- 45 тысяч автомобилей, из которых в движении около 17 тысяч.
И вся эта красота рендерится в реальном времени, вся и сразу! На данный момент, нету ни одной игры, которая могла бы повторить этот трюк.
И тут мы подходим к еще одной важной технологии. Модельки персонажей были созданы с помощью MetaHuman. Это ещё один продукт Epic Games, который позволяет создать реалистичных персонажей.
MetaHuman — это редактор персонажа. Как в Skyrim! Серьёзно, вам не нужно обладать навыками программиста, чтобы создать персонажа. Крутите ползунки и настраиваете. Вы даже сами можете сделать своего персонажа, MetaHumna есть в открытом доступе.
Всё это дело будет рендерится в облаке у Epic Games, затем эту модель можно добавить уже в Unreal Engine 5 и делать с ней всё, что угодно. У неё есть даже скелет для motion-capture, что позволит сразу анимировать вашего персонажа с помощью актёра. Ух, я уже предвижу как будут использовать MetaHuman!
Забавный факт, освещение благодаря Lumen настолько реалистичное, что во время крупных планов, напротив персонажа устанавливали виртуальный светоотражатель! Как в настоящем кино.
Демка была написана командой из 100 человек за один год. Не очень впечатляет, но стоит оговориться. Большая часть была занята изучением и написанием кода для игры. Сами разработчики утверждают, что если бы они владели всеми знаниями, которые приобрели при написании демки, то смогли бы управится за 3-4 месяца и командой в два раза меньше.
При разработке технодемки, обнаружилась проблема с технологией Nanite, о которой я упоминал раньше. Оказывается, она не может рендерить деформирующиеся или анимированные объекты. Что это значит? Все машины обрабатываются Nanite, но как только вы как-то повредите автомобиль, то модель будет уже обрабатываться стандартным расчётом физики. Из-за этого происходят подлагивания. Потенциальная проблема, но разрабы утверждают, что это просто вопрос времени. Нужно либо научить Nanite обрабатывать такие объекты, либо сделать переход более плавным.
По итогу, демка вышла отличным примером возможностей движка. Фотореализм, просто зашкаливает и это будущее, которое уже наступило. Но это писали разработчики из Epic Games. А что до остальных студий и разработчиков?
Какие игры выйдут в ближайшее время на движке?
Epic Games утверждают, что графика уровня «Матрицы» станет стандартом уже к окончанию цикла жизни приставок этого поколения. То есть через 3-4 года! Да, крупные проекты на Unreal выходят уже сейчас: Fortnite, Senua’s Saga: Hellblade II. Но о революционной графике как в «Матрице», говорить не приходится. Но технология активно внедряется. Многие проекты переезжают с четвертой версии на пятую.
Перед вами список компаний, которые уже разрабатывают игры на новом движке. От Tencent до Double Fine! И это в расчёт не берутся сотни инди-компаний и разработчиков-одиночек.
Крупные проекты, которые утверждают, что будут использовать все возможности движка:
- S.T.A.L.K.E.R. 2
- ARK 2
- Witcher 4
- Starfield
- Halo
Чувствуется масштаб! Погулять по фотореалистичному Чернобылю или по Восторгу, это ли не счастье? Кстати, все показанные нарезки из трейлеров, сделаны в реальном времени на движке игры.
Получается, ещё пару лет и нас ждёт качественно новый уровень гейминга Это нас подводит к ещё одной революции Unreal Engine 5. Ключевой революции. И это уже не про технологии.
Проблема
В последние годы, крупные игровые студии столкнулись с проблемой раздутых бюджетов. На разработку одной ААА-игры, порой уходит столько же денег, а порой даже больше, чем на блокбастеры от Marvel. Например, на Cyberpunk 2077 ушло 320 миллионов долларов, а на первых «Мстителей» — «всего» 220 миллионов! И у разработчиков нету права на ошибку, один прокол и это слитые сотни миллионов долларов и порушенная репутация.
Именно из-за этого в последние 10-15 лет, мы видим так мало смелых идей, новых механик от крупных разработчиков. Ubisoft придумали концепцию Assassin’s Creed и Far Cry и десятилетиями выпускают одну и ту же игру. Не потому что, они ленятся и закостенели. Потому что вложено очень много денег и совет директоров не пойдёт на риск, если им принесут смелую идею для игры. Это относится практически ко всем студиям, которые выпускают ААА-тайтлы. Компании не хотят рисковать.
Unreal Engine 5 теоретически может решить эту проблему. Движок автоматизирует очень много процессов, тот же город из «Матрицы» сгенерирован без участия человека. Добавим к этому возможности Nanite и Lumen, о которых я уже говорил. Это потенциальная экономия десятков, а может и сотен миллионов долларов.
Да и места для творчества прибавится. Смелые концепции для игр, которые могут не окупиться, будут появляться чаще. Так как инвесторы, теперь будут рисковать намного меньше своими деньгами. А представьте себе какой плюс в карму будет у той же Ubisoft, если они наконец покажут свежую идею игровому сообществу? Сложно предположить, как будут вести себя гиганты, но потенциал здесь огромный.
Вывод
Ну вот мы и изучили Unreal Engine 5. Уже сейчас можно сказать, что будущее наступило. Прямо сейчас, пока мы говорим, сотни компаний трудятся над сотнеями проектов, которые изменят наше представление о том, как должны выглядеть игры. Через пару лет, когда эти проекты начнут выходить, игры в которые мы играем сейчас, покажутся нам отсталым прошлым.