Автор статьи: Ростислав Мусиенко

Senior Unreal Engine Developer в District Zero

Раньше, когда я ещё учился, мы любили собираться с друзьями и пробовать создать игры на выходных или в течение месяца. Каждый из нас был занят чем-то одним: кто-то создавал сцены, кто-то делал модели, а я программировал логику. И с тех времён была главная сложность: как работать с одной сценой нескольким людям одновременно? Ответ — почти никак. Но есть одна хитрость, называемая саблевел.

Саблевелы в Unreal Engine

Саблевелы в Unreal Engine 5 представляют собой совокупность инструментов и технологий, которые позволяют разработчикам создавать и управлять подуровнями внутри основного уровня игры. Это означает, что вместо традиционного одноразового подхода к построению уровня, разработчики могут декомпозировать свои проекты на более мелкие сегменты, называемые саблевелами, и более эффективно управлять их детализацией и загрузкой в процессе игры.

Саблевелы предоставляют возможность внедрения более высокой степени гибкости в уровень дизайна. Они могут быть использованы для создания динамических изменений в игровых мирах, управления детализации в зависимости от расстояния к камере, а также для оптимизации применения ресурсов, что особо важно при работе с огромными и сложными проектами. Другими словами, каждый из вас может заниматься своим делом на своём саблевеле: один — работать с моделями и статичными объектами, а другой — расставлять интерактивные элементы и прочие Blueprints на другом саблевеле.

Процесс создания саблевелов в редакторе уровней

Разберем процесс создания соблевелов

В основном меню выберите "Window" (Окно) выбираем пункт  "Levels" (Уровни).

После чего через это меню мы можем создать новый уровень.

Для этого в редакторе уровней выберите "Levels" (Уровни) -> "Create New Level" (Создать новый уровень).

Выберите тип уровня, который вам необходим (например, "Default Level" или "Persistent Level"). Он сразу же добавится как саблевел.

Настройте параметры саблевела — для этого выберите уровень и нажмите на кнопку “Summons level details”

Там требуется выставить галочки Loaded и Visible.

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

В самом редакторе уровней начните добавлять объекты в ваш новый саблевел.
Активный саблевел выбирается в вьюпорте (нижнем правом углу) или в окне уровней.
Изменения сохраняются на том уровне, в который вы добавляете объекты.

Управление загрузкой и выгрузкой саблевелов во время игры

Управление загрузкой и выгрузкой саблевелов в процессе игры осуществляется с помощью сценариев и событий. Разработчики могут использовать Blueprint скрипты или код на C++ для определения условий, при которых саблевелы должны быть загружены или выгружены. Например, это может быть осуществлено при приближении игрока к определенной зоне, в зависимости от текущей сцены, или на основе других параметров игрового процесса.

Ранее мы сделали так, чтобы на уровне был выгружен автоматически, но можно сделать это и самостоятельно, для этого в вашем коде Blueprint или C++ добавьте логику для динамического добавления и удаления уровней во время выполнения.

Пример в Blueprint:

Пример в C++:

ULevelStreamingDynamic* LevelStreamingObject = UGameplayStatics::OpenLevel(UGameplayStatics::GetPlayerController(this, 0), *LevelName);
// Убедитесь, что открытие уровня прошло успешно
if (LevelStreamingObject) {
  
 // Добавьте саблевел в стриминг
    LevelStreamingObject->SetShouldBeLoaded(true);  LevelStreamingObject->SetShouldBeVisible(true);
}

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

Эффективное использование саблевелов в различных типах проектов и примеры успешного применения:

Поскольку саблевелы являются мощным инструментом в разработке игр, позволяя динамически управлять загрузкой и выгрузкой уровней для достижения баланса между детализацией и производительностью. В играх с крупными открытыми мирами, такими как "Assassin's Creed Valhalla", саблевелы активно используются для создания огромных миров с различными ландшафтами и детализированными городами. Это обеспечивает плавные переходы между областями и свободное перемещение игроков по огромному игровому миру.

В динамичных сценариях, как в "The Witcher 3: Wild Hunt", саблевелы динамически изменяют окружение в ответ на игровые события. Это позволяет создателям игры добавлять или убирать элементы, обогащая опыт игроков и создавая динамичные игровые миры.

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

Заключение

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

В завершение приглашаем на открытый урок, на котором завершим создание простейшего шутера от третьего лица на Unreal Engine 5. А именно:

— Реализуем механику стрельбы и урона, свяжем их с созданным UI.
— Создадим бота-противника и разработаем для него простейший AI, который будет искать нас и при обнаружении — нападать.
— Разработаем систему подбираемых предметов (патроны, оружие).

Записаться можно на странице курса "Unreal Engine Game Developer. Basic".

Комментарии (1)


  1. manifekc
    17.11.2023 05:51

    Здесь немного описана основная концепция этой технологии. Sub Levels применяют (или лучше сказать применяли) в качестве составных частей одного большого уровня, где загрузка/выгрузка уровней контролтровались через World Composition (Sub Levels и создавались для работы в World Composition). Сейчас же эта технология в 5 версии UE заменяется постепенно на World Partition (более гибкая и автоматизированная загрузка/выгрузка уровней). А так для работы над одним проектом существуют системы контроля версий (Git,SVN,Perforce). Грубо говоря, работая через Sub Levels в одном уровне вы не сможете соединить логику на уровне с левел-дизайнером и артовиком