World Partition открывает авторам путь к созданию больших и сложных островов, экономя при этом память и обеспечивая бесперебойную работу на разных платформах.
Два важных компонента, на которых основана система World Partition, — это подгрузка и HLOD (иерархические уровни детализации).
Подгрузка
World Partition использует подгрузку для загрузки и выгрузки из памяти ячеек решётки вокруг игрока или триггера подгрузки. Это позволяет держать в памяти машины только данные ячеек вокруг персонажа игрока.
Если остров превышает 1 км по самой длинной оси, вы увидите всплывающее окно с предложением включить подгрузку.
Если установлен флажок Включить подгрузку, при определении Текущего расхода оперативной памяти учитываются только ячейки вокруг текущего местоположения игрока, с некоторыми исключениями.
Нажмите Окно > Параметры мира, чтобы проверить, включён ли параметр Включить подгрузку.
При установке флажка в первый раз вам нужно будет подтвердить выбор.
Теперь в вашем проекте включена подгрузка.
Чтобы визуализировать решётку для вашего острова, установите флажок Решётки предпросмотра в параметрах мира.
Вы можете изменять размер каждой ячейки и диапазон загрузки, но учитывайте, что настройки по умолчанию оптимизированы для островов, совпадающих по размеру с островами в Королевской битве Fortnite.
Для получения более подробной информации см. страницу World Partition в документации Unreal Engine 5.
Иерархические уровни детализации
Иерархический уровень детализации, или HLOD, — это оптимизированная группировка близлежащих акторов, при которой группа упрощается до одной статичной сетки, как только она оказывается достаточно далеко от триггера подгрузки.
HLOD генерируются исходя из уровня детализации (LOD) ресурса с самым низким качеством. Если для пользовательских ресурсов не заданы уровни детализации, HLOD будет потреблять очень много памяти, поскольку он будет генерироваться по ресурсам с полным разрешением.
LOD0 — ресурс с самым высоким качеством. LOD1 — сетка со средним качеством. По мере увеличения номера уровня детализации качество снижается.
На изображении слева представлены ресурсы с максимальной детализацией, а ресурс справа — это ресурс HLOD, сгенерированный по этой ячейке решётки.
Создание HLOD добавляет новые ресурсы в проект, что увеличивает общее потребление памяти островом.
В зависимости от того, какой вариант использования подгрузки и HLOD выбран, на потребление памяти влияют следующие факторы:
Подгрузка ОТКЛ. | Ресурсы не выгружаются из памяти, и HLOD не используются. | Максимальное использование памяти |
Подгрузка ВКЛ. и HLOD генерируются | Ресурсы по-прежнему отображаются на расстоянии, но с уменьшением детализации по мере удаления камеры. | Умеренное использование памяти |
Подгрузка ВКЛ. и HLOD не генерируются | Ресурсы исчезают по мере удаления от камеры. | Минимальное использование памяти |
Создание HLOD
Чтобы создать HLOD, убедитесь, что в проекте включена функция Подгрузка, затем выберите на панели инструментов Создать > Создать элементы HLOD.
Время генерирования HLOD зависит от производительности вашего компьютера и сложности созданного вами мира. Однако при повторном запуске этого процесса HLOD создаются только для измененных регионов мира, так что вся процедура занимает гораздо меньше времени.
Чтобы больше узнать о том, как работают HLOD, см. страницу World Partition — иерархический уровень детализации в документации по Unreal Engine 5.
Исключение ресурсов при создании HLOD
Для некоторых ресурсов HLOD не требуются. Вот несколько примеров ресурсов, которые можно исключить:
Объекты окружения в помещениях и ресурсы для строительства | Любой ресурс, который не видно на расстоянии, не требует HLOD. Это могут быть предметы мебели, внутренние стены и полы и прочее. |
Подземные ресурсы | Любая часть острова, которая находится под землёй и которую игрок никогда не увидит. Это могут быть подвалы, пещеры, траншеи, бункеры и прочее. |
Маленькие акторы | Маленькие акторы, которые не занимают много места на экране игрока, не требуют HLOD. Это могут быть ящики, растения и фонари. |
Крупные акторы | Любые большие акторы на заднем плане, к примеру небоскрёбы или горы, не требуют HLOD. Если вы исключите их из HLOD, не забудьте сделать так, чтобы они всегда оставались загруженными, сняв флажок Пространственно загружаемый на панели Сведения. |
Выберите любой ресурс, который не требует HLOD. В зависимости от типа ресурса снимите флажок Включить актор в HLOD или Включить компонент в HLOD на панели Сведения.
Отличный способ принять решение о включении ресурса в HLOD — уменьшить масштаб в редакторе и посмотреть, имеет ли смысл исключить какие-либо неважные ресурсы из генерирования HLOD.
Изменение диапазона загрузки
Качество HLOD привязано к их предполагаемой дальности прорисовки. При использовании подгрузки минимальное расстояние, на котором будут видны HLOD, — это диапазон загрузки, который вы настроили для решётки World Partition.
Если HLOD загружаются только тогда, когда уже имеют небольшой размер на экране игрока, они будут занимать меньше места в памяти.
Чтобы изменить диапазон загрузки:
Выберите вкладку Настройка World Partition.
Разверните Настройки среды выполнения > Решётки.
Измените диапазон загрузки, нажав левую кнопку мыши и перетащив числовое значение влево или вправо, или введите точное значение в поле.
Использование загружаемых регионов для повышения производительности в редакторе
Во время работы над большими проектами в UEFN могут возникнуть проблемы с производительностью при достижении островом определённого размера. По умолчанию в память загружается весь остров. Чтобы повысить частоту кадров и улучшить отклик в окне просмотра, вы можете загружать и выгружать регионы во время работы над разными частями острова.
Во время работы над большим островом или островом с большим количеством объектов в редакторе UEFN используйте мини-карту World Partition, чтобы загружать и выгружать секции острова — это позволит значительно сократить время загрузки.
Чтобы это сделать:
Проверьте, чтобы на уровне была включена подгрузка.
Выберите в строке меню Редактировать, а затем Настройки редактора…
Перейдите в раздел World Partition и снимите флажок «Отключить загрузку в редакторе».
Перезагрузите проект. Эта настройка вступает в силу только после перезагрузки.
На вкладке World Partition нажмите левой кнопкой мыши и выделите область, которую вы хотите выгрузить.
Нажмите правой кнопкой мыши на выделенную область и выберите Выгрузить выбранные регионы.
Чтобы снова загрузить регион, выделите его, нажав левой кнопкой мыши, а затем выберите Загрузить выделенный регион.
Обратите внимание, что загрузка и выгрузка не затрагивают ландшафт и устройства. То же самое относится к любому ресурсу, у которого в Пользовательских настройках снят флажок «Пространственно загружаемый».
Слои данных в UEFN
Слои данных — это система в UEFN, которая позволяет размещать акторы в разных слоях. Эти слои можно загружать и выгружать, чтобы организовать мир, управлять сложными уровнями и создавать уникальный игровой процесс. Представьте себе игру со случайно генерируемыми уровнями. Настроив разные компоновки уровней в разных слоях и случайным образом выбирая один из них при запуске игры, можно здорово разнообразить игровой процесс. Вы можете использовать слои данных и для более серьёзных изменений, к примеру для смены сезона на уровне с лета на зиму или для добавления разрушений замка после битвы.
Для получения более подробной информации о создании слоёв данных и управлении ими см. соответствующие страницы в документации по Unreal Engine
Управление слоями данных с помощью последовательности внутриигрового видео
Вы можете использовать последовательность внутриигрового видео в UEFN для загрузки, активации и выгрузки слоёв данных в среде выполнения и в ответ на события.
На вкладке Sequencer нажмите на кнопку Дорожка и выберите Слой данных, чтобы добавить существующий слой данных к дорожке Sequencer.
Настроив дорожку, нажмите правой кнопкой мыши на дорожке Слой данных и выберите Редактировать секцию. Затем нажмите на Добавить элемент на вкладке Ресурсы слоя данных и выберите слой данных, который вы хотите использовать с последовательностью внутриигрового видео.
Если нажать правой кнопкой мыши на слое данных на временной шкале, можно просмотреть его свойства. Здесь вы можете выбрать Желаемое состояние — состояние, в котором должен оказаться слой при движении по временной шкале. Вы также можете изменить Состояние перед началом. Состояние перед началом — это состояние слоя до начала воспроизведения дорожки, а Состояние после завершения — это состояние слоя после завершения воспроизведения дорожки. Например, если нужно активировать слой данных, установите желаемое состояние Активировано и состояние перед началом Загружено. Установка состояния Загружено перед началом и увеличение количества кадров перед началом воспроизведения дают слою больше времени для загрузки перед его активацией и могут способствовать более плавному воспроизведению.
Перемещая указатель воспроизведения, вы можете предварительно просмотреть состояние, в котором окажется слой при движении по временной шкале.
Чтобы больше узнать об использовании устройства «Последовательность внутриигрового видео», см. страницу устройства «Последовательность внутриигрового видео».
Создание мини-карты для редактора
Вы также можете создать мини-карту высокого разрешения для использования во время сеанса редактирования. Она поможет быстро находить различные области уровня, над которыми вы хотите поработать.
Выберите Создать в строке меню, а затем Создать мини-карту World Partition для редактора.
На экране появится диалоговое окно Статус сборки. Наберитесь терпения, поскольку этот процесс может занять несколько минут — всё зависит от сложности вашего острова.
Теперь ваша мини-карта соответствует изображению в окне просмотра. Вы по-прежнему можете загружать и выгружать регионы, как обычно.
Устранение неполадок
Вопрос: почему после создания HLOD они не отображаются?
Ответ: акторы HLOD не загружаются в редакторе по умолчанию. Чтобы проверить их, найдите и закрепите их на панели Структура.
Вопрос: почему ресурсы генерируют HLOD, когда акторы находятся далеко друг от друга?
Ответ: проверьте, не прикреплены ли акторы к родительскому актору и не вложены ли они в него. Нажмите на актор и выберите Прикрепление: нет, чтобы открепить его.
Вопрос: некоторые из важных ресурсов исчезают, когда ячейки выгружаются.
Ответ: для некоторых готовых ресурсов UEFN по умолчанию не установлен флажок Включать актор в HLOD. Если вы столкнулись с такой проблемой, проверьте свойства ресурса.
Вопрос: почему появляется запрос на подгрузку, хотя мой остров не превышает 1 км?
Ответ: этот запрос может появляться, если ваш ландшафт превышает 1 км по самой длинной оси или если какой-либо актор находится более чем в 1 км от исходной точки на уровне.
Вопрос: почему большой актор не заменяется на HLOD на расстоянии?
Ответ: возможно, один или несколько акторов в иерархии готовых элементов были скопированы и перемещены так далеко, что система World Partition рассматривает их как сетки, которые должны быть всегда загружены. Чтобы решить эту проблему, удалите далёкие акторы из иерархии.