Эта страница является дополнением к шаблону Talisman: Environment, который содержит лучшие рекомендации по созданию высокодетализированного, реалистичного окружения. Talisman создан с использованием лучших методов модульной конструкции и оптимизации в Unreal Editor для Fortnite (UEFN).
Шаблон находится в разделе Примеры функций в Каталоге проектов.
Вы можете протестировать среду Talisman, представленную на Конференции разработчиков игр (GDC) 2024 года, открыв Fortnite и введя код острова 7100-3544-3074.
Расположение шаблона Talisman: Environment в Каталоге проектов.
В этом обзоре вы узнаете о трудностях оптимизации, с которыми столкнулась команда при создании проекта Talisman, и о том, как они были преодолены:
Управление проектом и ограничениями памяти в среде выполнения
Создание материалов с помощью управления динамическими материалами
Поскольку шаблон предназначен для работы на всех доступных платформах, ресурсы и стиль Talisman должны соответствовать требованиям к объёму памяти и размеру проекта в UEFN. Это создаёт ряд проблем для проектов, разработанных в более детализированном художественном стиле:
Размер проекта: ресурсы с высокой детализацией в играх могут быть большими, а для проектов UEFN установлено ограничение в 400 Мбайт.
Ограничения памяти в среде выполнения: в UEFN есть ограничение на память подгрузки в 100 000 единиц памяти, что ограничивает количество ресурсов, пользовательских ландшафтов и устройств, которые могут одновременно отображаться на экране.
Качество на всех поддерживаемых платформах: эти ограничения гарантируют, что ваша игра в UEFN будет доступна всем игрокам на всех платформах, которые поддерживают Fortnite.
UEFN поддерживает различные способы удовлетворения этих требований, в том числе уровни детализации (LOD), иерархические уровни детализации (HLOD), World Partition, создание экземпляров уровней и слои данных.
Лучшие рекомендации
Шаблон Talisman: Environment предназначен для демонстрации множества лучших методов и процессов, позволяющих привнести реализм AAA-игр в Unreal Editor для Fortnite. В этом шаблоне используются следующие рекомендации по управлению проектом и памятью подгрузки для оптимизации производительности:
Создание пользовательского контента, который является модульным и компактным.
Улучшение внешнего вида геометрии твёрдой поверхности с помощью нормалей, взвешенных по граням.
Добавление деталей в сетки с помощью декалей сеток.
Создание собственной игры для самой низкопроизводительной целевой платформы и последующее добавление функций.
Сокращение команд отрисовки на сетках, созданных не в Nanite.
Создание пользовательского контента, который является модульным и компактным
Среда Talisman была создана с использованием технологии модульного моделирования «китбашинг», которая использует уже существующие сетки из модульной среды и переориентирует их для создания новых ресурсов. При повторном использовании ресурсов художники смогли уменьшить размер проекта за счёт сокращения количества одноразовых сеток.
Этот ресурс состоит из шести разных статичных сеток.
Обычно художники создают среду такого типа, накладывая высокодетализированную полигональную сетку на низкополигональную сетку, используя уникальные прописанные карты нормалей, чтобы сохранить детализацию между ними. Этот метод требует дополнительных карт текстур, которые могут увеличить размер вашего проекта, потребляют слишком много ресурсов памяти в среде выполнения и плохо масштабируются в процессе китбашинга.
Для экономии памяти использовались сетки со средним количеством полигонов с нормалями, взвешенными по граням, а для добавления мелких деталей использовались декали сеток.
Более подробно об этом рассказано в разделе Разработка и создание сеток.
Создание игры для всех целевых платформ
Fortnite создана для запуска на различных платформах. Чтобы ваша игра воспроизводилась на каждом из этих устройств максимально идеально, важно разрабатывать её с учётом требований каждой платформы, а затем в процессе разработки добавлять дополнительные функции для высокопроизводительных платформ.
Например, виртуализированная геометрия Nanite помогает платформам отображать высокодетализированные сетки и повышать производительность, но она доступна только для некоторых высокопроизводительных устройств, таких как ПК с DirectX 12. Из-за этого по-прежнему важно оптимизировать свою игру таким образом, чтобы она должным образом воспроизводилась на всех платформах.
На следующих изображениях показаны LOD сетки при эпической/высокой/средней/низкой производительности
Подробную информацию о создании пользовательских ресурсов для UEFN см. в разделе Разработка и создание сеток.
Сокращение команд отрисовки на сетках, созданных не в Nanite
Команды отрисовки — это процесс сообщения графическому API, что и как отрисовывать в каждом кадре. Nanite обходит стандартные команды отрисовки, подгружая геометрию в сцену по мере необходимости. Для сеток, созданных не в Nanite, каждый из следующих элементов инициирует команду отрисовки в сцене:
Каждая отдельная сетка.
Каждый материал на сетке.
Каждый источник света.
Каждая отбрасываемая тень.
Шаблон Talisman: Environment использует как сетки, созданные в Nanite, так и сетки, созданные не в Nanite. Для оптимизации производительности при использовании сеток, созданных не в Nanite, количество команд отрисовки в сцене было сведено к минимуму за счёт:
Удаление сеток, не имеющих критического значения.
Удаление декалей сетки, не имеющих критического значения.
Удаление источников света, создающих отбрасываемые тени, и их добавления с помощью функций освещения.
Управление проектом и ограничениями памяти в среде выполнения
Управление памятью в среде выполнения и управление размером проекта — это ключевые компоненты любого проекта в UEFN. В Talisman: Environment эти задачи решаются следующим образом:
За счёт уменьшения масштаба проекта.
За счёт повторного использования пользовательских ресурсов.
За счёт управления памятью в среде выполнения.
Уменьшение масштаба проекта
Чтобы уложить проект в 400 Мбайт, мы перенесли персонаж MetaHuman в шаблон Talisman: MetaHuman. Этот шаблон находится в разделе Демонстрация возможностей в Каталоге проектов. Подробнее о MetaHuman в UEFN: шаблон Talisman: MetaHuman.
Уровни детализации
Каждая сетка, используемая для создания Talisman, использует три уровня детализации (LOD), чтобы уложиться в 100 000 единиц памяти для подгрузки.
Автоматические настройки LOD находятся в браузере статичных сеток.
Сетки LOD автоматически генерируются с помощью автоматических инструментов LOD в UEFN и назначаются определённым уровням качества. Подробнее об использовании уровней детализации в UEFN см. в разделе Настройка уровня детализации.
Управление памятью в среде выполнения
В шаблоне Talisman: Environment используется пользовательское решение для подгрузки, созданное с помощью слоёв данных и Sequencer, чтобы память, используемая для подгрузки, не вышла за пределы 100 000 единиц памяти. Вертикальный размер таких помещений, как грузовой отсек, и длина коридоров говорили о том, что корабль не помещался в решётку подгрузки World Partition.
Каждый слой данных соответствует отдельному помещению на Talisman.
Чтобы преодолеть это ограничение, слои данных были объединены с помощью Sequencer для загрузки и выгрузки областей корабля в зависимости от местоположения игрока.
Зоны модификаторов запускают события загрузки в видеоряде.
К каждой комнате привязан отдельный слой данных и зоны модификаторов, разбросанные по всему кораблю, которые запускают события в видеоряде. Эти события загружают и выгружают секции корабля по мере прохождения игроком уровня. Зоны модификаторов стратегически расположены в разных частях корабля, чтобы скрыть их от игрока.
Это решение несовместимо с многопользовательскими играми. Слои данных и видеоряд были включены, но зоны модификаторов были удалены, чтобы шаблон был совместим с многопользовательской игрой.
Использование настраиваемых элементов интерфейса
В этом шаблоне используется Verse для отображения пользовательского виджета со значком задания и воспроизведения звука, когда игрок взаимодействует с консолью в начальной комнате.
Настраиваемая эмблема задания активируется сценарием Verse.
Когда игрок использует устройство «Звуковая кнопка помещения экипажа», запускается файл сценария starting_sequence_device.verse:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/Diagnostics }
Отмените воспроизведение звука приветствия, если звуковое сообщение всё ещё воспроизводится.
Включите мини-карту корабля, чтобы помочь игрокам исследовать Talisman.
Отобразите пользовательскую схему создания виджетов интерфейса quest_icon_widget.
Воспроизведите звуковой клип.
Подробнее об использовании Verse для настройки проектов в UEFN: Руководство по азам программирования на Verse.
Освещение больших пространств
В Talisman используется технология Глобального освещения Lumen, которая позволяет осветить окружение, создавая тени и точное косвенное освещение по всему кораблю.
В этом коридоре продемонстрированы все описанные здесь техники.
Lumen позволяет настроить фоновое затенение и глобальное освещение объектов, которые не освещаются напрямую. Несмотря на то, что Lumen является мощным инструментом для создания решений освещения, для достижения максимальной производительности по-прежнему важно оптимизировать среду окружения. В шаблоне Talisman: Environment используется несколько способов оптимизации Lumen.
Отбрасывание теней отключено на всех статичных сетках, которые освещаются косвенно по всему уровню. Lumen настраивает идеальные тени для этих сеток, поэтому отключение свойства Отбрасывание теней повышает производительность без ущерба для качества изображения.
Для большинства источников освещения в шаблоне параметр «Отбрасывание теней» отключён.
Отбрасывание теней также дополняют функции освещения и полосатая текстура с несколькими источниками верхнего освещения.
Шум и мерцание Lumen на излучающих световых панелях уменьшаются за счёт подключения к каждой из них источника направленного света, не отбрасывающего тени.
Этот направленный источник усиливает свет, исходящий от данной панели
Масштаб излучения каждой панели уменьшен и дополняется источником направленного света, не отбрасывающего тени. Каждый направленный источник имеет небольшой радиус действия и обеспечивает дополнительный свет. При этом создаётся впечатление, что свет по-прежнему исходит от световой панели.
Освещение среды окружения было дополнительно оптимизировано за счёт настройки наименьшей из максимально возможной дальности прорисовки для источника освещения. Эта настройка удаляет из поля зрения все источники освещения, которые не нужно отрисовывать.
Для настройки освещения Talisman также использовался визуализатор Сложности освещения.
Визуализатор сложности освещения можно переключать комбинацией клавиш Alt+7
В этом режиме просмотра через окно просмотра ряд нестатичных источников освещения, влияющих на геометрию уровня, представлен в виде цветовых оттенков, что помогает отслеживать расходы памяти на освещение. Этот визуализатор помогает свести к минимуму перекрытие источников освещения на уровне, чтобы снизить расходы памяти на производительность.
Разработка и создание сеток
Для создания детализированного интерьера Talisman был использован метод китбашинга, а также сетки со средним количеством полигонов. Китбашинг — это мощная технология, которая помогает свести к минимуму количество ресурсов, необходимых для проекта, но которая то же время даёт вам возможность повторно использовать и комбинировать сетки для создания новой геометрии.
Каждая сетка в проекте использует множество различных методов для улучшения внешнего вида ресурса без добавления дополнительной геометрии.
Нормали, взвешенные по граням, — это метод, который выравнивает нормали вершин модели с более крупными плоскими гранями для улучшения вида теней без снижения производительности.
Нормали вершин (зелёные линии) выравниваются с более крупными плоскими гранями для улучшения вида теней.
Такие детали, как болты, маркировка и повреждения, были добавлены с помощью Декалей сеток. Эти декали используют пользовательскую UV-развёртку для проецирования сложной геометрии на поверхности и могут огибать углы или растягиваться вдоль сплайнов, сохраняя при этом свой внешний вид.
Создание материалов с помощью управления динамическими материалами
Текстуры и материалы часто являются самой важной частью любого проекта UEFN. Чтобы ещё больше уменьшить размер проекта, в шаблоне используется динамический подход к текстурам и материалам, который позволяет избежать использования уникальных текстурных карт. Для получения такого конечного результата был использован процедурный рабочий процесс, который сохраняет данные о фоновом затенении, кривизне и маске на сетке с использованием цветов вершин. После этого сохранённые данные были использованы для применения и смешивания материалов.
Данные о цветах вершин
Советуем избегать использования уникальных текстурных карт для каждого ресурса и упаковывать данные о фоновом затенении, кривизне и маске текстур в каждую сетку с помощью Цветов вершин. Сетки для Talisman были разработаны с помощью поддерживающей геометрии и плотности сетки (количество полигонов на квадратный дюйм), что позволило обеспечить плавную градацию между цветами вершин. Это помогает создавать чёткие переходы между материалами.
Данные сохраняются следующим способом:
| Ассоциативный массив | Цветовой канал |
|---|---|
Фоновое затенение | Красный |
Искривление | Зелёный |
Маска идентификатора материала | Синий |
Более подробную информацию о заливке цвета вершины можно найти в разделе Материалы для цветов вершин.
Ячейки материала на каждой сетке используются для определения того, на какую часть сетки накладывается конкретный материал. Подробнее о ячейках материала см. в разделе Конвейер материалов FBX.
У этого стула есть ячейки для следующих материалов: металла и резины.
Управление динамическими материалами
В сетках Talisman используется комбинация из пяти основных типов материалов:
Металл
* Крашеный металл
Пластик
Резина
Ткани
Каждый материал использует один основной материал, который в свою очередь использует выровненные по решётке мира плиточные текстуры и заданные пользователем параметры для получения результата. Так можно снизить общие объём памяти, расходуемой на материалы, за счёт повторного использования, что позволяет художникам использовать одни и те же материалы по всему кораблю.
Одна часть основного материала Talisman: Environment
Пыль, царапины и другие следы износа также входят в состав основного материала и наносятся на сетки с помощью масок с настраиваемыми параметрами. Эти параметры хранятся в сетке с помощью пользовательских примитивных данных.
Использование устройства «Вращающаяся камера»
Устройство «Вращающаяся камера» демонстрирует окружение, которое следует за игровым персонажем, и игрок может поворачивать эту камеру, чтобы свободно оглядываться по сторонам. Шаблон использует это устройство, чтобы дать игроку возможность переключаться между видом при съёмке от третьего лица и симулируемым видом при съёмке от первого лица.
Игроки могут переключать виды с помощью устройства «Вращающаяся камера»
Это обеспечивается благодаря сценарию Verse camera_switch_mode_device.
# This file handles swapping between different cameras when an input is pressed.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
Код Verse следит за игроком, чтобы активировать Целевое действие ввода творческого режима режима, которое по умолчанию привязано к правой кнопке мыши или левому триггеру на контроллере. Далее код делает следующее:
Удаляет текущую камеру из стека камер.
Получает следующую камеру из массива камер.
Добавляет камеру агенту.
Скрывает персонажа игрока (при необходимости).
Отображает персонажа игрока (при необходимости).