Как собраться с друзьями и сделать игру в Unreal Engine на одной сцене

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

Senior Unreal Engine Developer в District Zero

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

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

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

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

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

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

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

f082eea0fa0693ef468f9653fc4f4851.png

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

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

34a41d38d1de022d9c91394fdb975a6c.png

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

dedf74b18cf008e5d4f082efdd0ee111.png

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

fd20b209a9178e2866ce2487dbc9eee3.png

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

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

08f76c99d3264e98fdb5c2287b50b247.png

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

d2718b0d736514e28d7c009f29e880e3.png

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

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

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

Пример в Blueprint:

f0ce14f92c062287e50ef5a0d867dc9c.png

Пример в 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».

© Habrahabr.ru