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