Эта функция находится на этапе экспериментального тестирования. Вы можете опробовать её, оставить обратную связь и узнать о планах на её развитие. На данный момент невозможно опубликовать проект, созданный с использованием Scene Graph. Обратите внимание: мы не можем гарантировать обратную совместимость ресурсов, созданных на экспериментальном этапе. API этих функций может меняться, и мы оставляем за собой право полностью удалить экспериментальные функции или отдельные их части по своему усмотрению. Прежде чем приступать к работе с этой функцией, ознакомьтесь со списком известных проблем.
Scene Graph — это единая структура, объединяющая все объекты создаваемого мира. Представьте, что это верстак, в котором хранятся инструменты, необходимые вам для настройки одежды, игровых систем, звука, визуальных эффектов и много другого для ваших произведений в метавселенной.
Со Scene Graph вы сможете быстро перейти от тестирования методом серого ящика и компоновки уровня к полностью готовой игре за несколько простых шагов.
Работа со Scene Graph позволяет выполнять операции с взаимосвязанными объектами в проекте. С его помощью вы также можете копировать и повторять структуры по мере их создания. Вы даже можете превратить свои объекты в многоразовые заготовки и использовать их в других проектах.
Scene Graph — это система, встроенная в язык Verse. Она использует все его преимущества и позволяет делать ваши проекты более уникальными с помощью интерактивных пользовательских объектов и игровых возможностей.
Scene Graph делает проект стабильнее, так как Verse выполняет самые ресурсоёмкие операции в фоновом режиме, обеспечивая бесперебойную работу модулей. Также Verse позволяет глубоко погружаться в любой модуль или компонент сцен, что дает возможность значительно расширить их функционал и разнообразие.
Объекты в метавселенной
Метавселенная — это социальное онлайн-пространство, в котором люди могут в режиме реального времени играть и общаться друг с другом в 3D-мире. По задумке Epic Games Scene Graph для UEFN позволит вам создавать такие миры для метавселенной.
В системе Scene Graph вы можете создавать экземпляры объектов и использовать их снова и снова, не классифицируя их как акторы Unreal Engine. По своей сути Scene Graph — это набор структурных элементов. В нём используются данные и логика для создания игры, отрисовки и симуляции объектов в различных игровых средах.
Акторы и модули не являются взаимозаменяемыми, это разные системы, которые работают в сцене совместно.
Со Scene Graph вы можете создать инфраструктуру для 3D-симуляции ваших творческих задумок в режиме реального времени, а результаты будут отображаться в окне просмотра. Вносите изменения через панель «Сведения» или редактор заготовок.
Импортируйте ресурсы, которые вы создаёте сами или покупаете в магазине, например в Fab, и используйте их со Scene Graph, чтобы делать собственные объекты или заготовки.
Всё, что вы создаёте в Scene Graph, можно использовать повторно с минимальными затратами памяти. Система создания в Scene Graph предназначена для совместного использования сложного контента и совместной симуляции, обеспечивая при этом соблюдение границ между ресурсами.
Модули и компоненты
Модули и компоненты — это основа Scene Graph. Они контролируют и определяют поведение объектов.
Модули — это контейнеры, которые сами по себе не имеют видимых определений и функций. Компоненты — это то, что предоставляет данные и задаёт поведение модулей. Компоненты определяют, что модуль должен делать в сцене.
Компоненты имеют настраиваемые свойства. Они могут быть физическими, как статичная сетка или система частиц, или логическими, как, например, тег игрового процесса или пользовательский код Verse, который определяет движение платформы. По умолчанию все модули имеют компонент преобразования, указывающий, в какой точке мира должен существовать модуль.
Создание модуля в Verse не создаёт Transform Component автоматически.
Scene Graph позволяет быстро объединить несколько элементов и игровую механику, связав данные физики с сетками, звуковыми схемами и другими аспектами игры.
Модуль становится физическим представлением статичной сетки при добавлении к модулю Компонент сетки, когда сетка выбрана в ячейке компонента «Сетка». Это означает, что вы можете быстро составлять здания или отдельные наборы элементов и использовать их прямо в сцене.
Например, в видео ниже модуль становится группой стеблей бамбука, и к нему добавлен аудиокомпонент — звуковую схему перетащили в ячейку Sound Component.
Вы можете сделать заготовку из этой группы стеблей или объединить модули и создать заготовку-лес.
Один модуль (модуль симуляции) размещается в корне проекта, представляя там симуляцию. Сцена считается созданной, когда есть модули, вложенные в модуль симуляции. Добавляя модули на карту, вы автоматически делаете модули дочерними для модуля симуляции.
Верхний модуль заготовки — это корневой модуль этой заготовки, а другие заготовки и модули размещаются под ним. Родительская заготовка определяет внешний вид и поведение дочерних — как они будут взаимодействовать с другими объектами в сцене.
Нажмите на изображение, чтобы увеличить его.
-
Корневой модуль заготовки → WoodenHouse_Tiny_Prefab
-
Дочерняя заготовка → WoodenHouse_RoofSmall_Prefab_C_1
-
Дочерний модуль → Building_WIndowCircle_Bright2
-
Дочерний модуль → Building_WIndowCircle_Bright4
-
Дочерний модуль → Building_WIndowCircle_Dark2
-
Дочерний модуль → Building_WIndowCircle_Dark4
-
Дочерний модуль → WoodenHouse_Floor
-
Дочерний модуль → WoodenHouse_RoofCap2
-
Дочерний модуль → WoodenHouse_RoofCap3
-
Дочерний модуль → WoodenHouse_RoofWindow2
-
-
Дочерняя заготовка → WoodenHouse_SmallFloor_Prefab_C_1
-
Дочерний модуль → WoodenHouse_Floor
-
Дочерний модуль → WoodenHouse_Wall10
-
Дочерний модуль → WoodenHouse_WallDoor_C4
-
-
Дочерняя заготовка → WoodenHouse_Windows_Prefab_C_3
-
Дочерний модуль → Building_WindowPlane_Bright3
-
Дочерний модуль → Building_WindowPlane_Bright4
-
Дочерний модуль → Building_WindowPlane_Dark3
-
Дочерний модуль → Building_WindowPlane_Dark4
-
Дочерний модуль → WoodenHouse_Windoows_10
-
-
Каждая дочерняя заготовка содержит компоненты, определяющие её внешний вид и способы взаимодействия с другими заготовками сцены. Вы можете использовать Verse для работы с отдельными модулями и заготовками, заменяя дочерние заготовки на другие или даже изменяя их цвет, как это сделано для модулей Building_WindowPlane_Bright и Building_WindowPlane_Dark.
Существует множество типов компонентов, определяющих, как действует весь модуль или его часть. Чтобы узнать больше о различных типах компонентов, имеющихся в Scene Graph, см. Компоненты.
Больше информации о модулях и компонентах можно найти в разделе Работа с модулями и компонентами.
Заготовки
Scene Graph создаёт заготовки, упаковывая модули вместе под одним родительским модулем. Все выбранные модули, их иерархические структуры и компоненты мгновенно добавляются в дерево модулей в заготовке. Создав заготовку, вы можете индивидуально настроить каждый её экземпляр в Редакторе заготовок.
Чтобы создать экземпляр заготовки, перетащите её из Каталога ресурсов в окно просмотра. Вы также можете вкладывать одни заготовки в иерархическую структуру других. Пользуйтесь иерархией, чтобы применить изменения ко всем экземплярам и заготовкам, входящим в неё.
Обновив и исправив заготовку, вы экономите время — вам больше не нужно искать каждый экземпляр объекта по отдельности.
Кроме того, вы можете создать множество похожих объектов, выбирая подэлементы в иерархии и переопределяя различные значения компонентов. Вы также можете вращать объекты и добавлять новые значения компонентов в различные экземпляры заготовок в Редакторе заготовок.
Все изменения в редакторе обозначаются на панели «Сведения» значком переключателя переопределения для отдельных атрибутов компонентов. Также на кнопке раскрывающегося меню карточки компонента отображаются значки различных компонентов.
Чтобы вернуть заготовку к исходному состоянию, нажмите на переключатели переопределения отдельных компонентов. Объект автоматически перейдёт в состояние родительской заготовки. Вы также можете нажать на кнопку выпадающего меню карточки компонента и выбрать Сбросить переопределение.
Чтобы узнать больше о модификации заготовок, см. Заготовки и их экземпляры.
На видео ниже показано, как Scene Graph используется для создания двух домиков.
Домик дублируется. Различные элементы домика изменяются путём выбора разных сеток для замены исходных частей оригинала — так создаётся новая заготовка. Можно и дальше копировать и менять части, чтобы быстро составить небольшую деревню. Это работает даже с компонентами, поэтому вы можете задать своё поведение каждому домику в деревне.
Изменение заготовок не влияет на стабильность работы и расход памяти исходного объекта или его копий. То есть, вы можете создавать собственные объекты для своего острова, когда макет уровня, абстрактное проектирование и художественное оформление уже завершены. Система создания Scene Graph позволяет многократно использовать заготовки, которые вы создаёте в проекте, чтобы строить собственную игровую вселенную в Fortnite.
Verse в Scene Graph
Verse — это язык программирования, используемый Scene Graph для создания и удаления модулей из мира, а также для создания собственных компонентов и поведения.
С помощью Verse можно сделать раскачивающийся фонарь для дома, как в предыдущем примере. Verse позволяет задать свойства раскачивания, вращения и длительности, определяющие, как движется фонарь.
Заготовки, которые вы создаёте в своём проекте, представлены как классы Verse в файле Assets.digest.verse вашего проекта. Модули и компоненты, указанные в вашей заготовке, доступны в Verse с помощью вызовов GetEntities()
и GetComponents()
.
Перед тем, как начать пользоваться Verse в Scene Graph, прочитайте раздел Создание собственного компонента в Verse.
Как включить Scene Graph в вашем проекте
Чтобы начать использовать Scene Graph в своём проекте:
-
Нажмите Проект > Настройки проекта на панели инструментов, чтобы открыть окно настроек проекта.
-
В разделе Экспериментальный доступ окна настроек проекта включите Система Scene Graph.
Нажмите на изображение, чтобы увеличить его.
- Чтобы убедиться, что у вас есть доступ к функциям Scene Graph, откройте панель инструментов, выберите Разместить акторы и проверьте наличие пункта Модули в выпадающем меню.

Начало работы
Откройте Шаблон заготовки, чтобы узнать больше о Scene Graph. Этот шаблон знакомит вас с основными концепциями Scene Graph и строится на базовых рабочих процессах, демонстрируя возможности создания проекта с использованием заготовок и Verse.
Известные проблемы
Ниже перечислены известные проблемы при работе со Scene Graph в проекте. Если у вас есть какие-либо [отзывы или проблемы] (https://forums.unrealengine.com/t/scene-graph-feedback-thread/1901696), которые не отражены в списке ниже, сообщите о них на форуме.
-
Так как это экспериментальная функция, вы можете столкнуться с критическими ошибками и нестабильной работой.
-
Невозможно использовать привязки к решётке, вращению и масштабированию в редакторе заготовок.
-
Невозможно выбирать несколько элементов в редакторе заготовок.
-
Невозможно копировать и вставлять или перетаскивать дубликаты с нажатой клавишей ALT в редакторе заготовок.
-
Невозможно копировать и вставлять компоненты.
-
Невозможно сбросить сразу все переопределения экземпляра заготовки. Придётся делать это для каждого переопределения по отдельности.
-
Модули не сохраняются по принципу «один файл — один актор», а сохраняются целиком как файл UMAP asset. Если вы используете в своём проекте Unreal Revision Control, основной уровень будет заблокирован, а возможность совместной работы над проектом будет отключена.
-
На данный момент невозможно сохранить экземпляры заготовки с переопределениями в виде ресурса заготовки.
-
Названия дубликатов модулей в редакторе модулей назначаются некорректно.
-
Функции Развернуть всё и Свернуть всё для компонентов не работают.
-
На данный момент удалить переопределения с заготовки невозможно.
-
Щелчок правой кнопкой мыши по значку переопределения должен действовать так же, как щелчок левой кнопкой.
-
Невозможно отсоединить дочерний модуль, перетащив его на родительский.
-
Прокрутка Вращение Static Mesh Component по оси Y вызывает непредвиденное движение.
-
Возникает непредвиденное поведение игрока при столкновении с объектами графа сцены.
-
Если модуль был переименован вручную, его название больше нельзя изменить.
-
Уменьшение масштаба может вызвать необычное взаимодействие дочерних модулей при вращении.
-
Перетаскивание Значений преобразования (Transform values) в редакторе заготовок выполняется медленнее и с меньшими затратами памяти, чем изменение значений в виджете.
-
Окно Создать компонент Verse не отображает шаблоны в Настройках редактора.
-
Не всегда удаётся выбрать модули в редакторе заготовок.
-
После удаления заготовки во время сеанса редактирования по сети остаётся «призрачная» заготовка.
-
Не отображаются миниатюры ресурсов заготовок.
-
Логика компонента запускается одновременно и в режиме редактирования, и в режиме игры.
-
Инициализация компонентов происходит намного раньше, чем у устройств творческого режима, а это значит, что попытка извлечь устройства из
component.OnBeginSimulation
илиcomponent.OnSimulate
ни к чему не приведёт. Чтобы обойти проблему, вы можете использовать цикл и режим сна, пока компоненты не будут найдены или пока заготовки не смогут быть созданы вызовом OnBegin от устройства творческого режима. -
Вызов
Dispose()
для модуля, размещённого непосредственно на уровне, не приводит к удалению видимых эффектов сетки и т. п., они продолжают отображаться на клиенте. ВызовDispose()
для модулей, созданных с помощью кода Verse, работает более корректно. -
Не удаётся скрыть выбранные модули в редакторе уровней (нажатием горячей клавиши H) и в редакторе заготовок.
-
Изменения, внесённые в редакторе заготовок, не распространяются на размещённые экземпляры заготовки, пока такие изменения не будут сохранены.
-
Если сохранить проект, пока код Verse ещё не скомпилирован, то данные заготовки будут повреждены.