ОПИСАНИЕ:
Система массового сохранения разрушений для Unreal Engine, реализованная на Blueprints с использованием плагина Destruction State Saver. Во второй части система расширяется для работы сразу с несколькими разрушаемыми объектами на сцене. Каждый объект получает своё уникальное имя, по которому сохраняется и восстанавливается именно его разрушенное состояние.
В ролике показано, как сохранить состояние нескольких Geometry Collection, не перезаписывая данные друг друга. Для этого создаётся отдельная структура, общий массив сохранённых объектов и функции для добавления, поиска и удаления сохранённых данных по уникальному имени объекта.
Также добавляется индивидуальная задержка перед заморозкой обломков, чтобы для каждого разрушаемого объекта можно было отдельно настроить время падения сегментов перед сохранением.
World Partition по-прежнему отвечает за выгрузку и загрузку объектов в открытом мире, а плагин Destruction State Saver сохраняет и восстанавливает состояние каждого разрушенного объекта отдельно.
Подходит для открытых миров, прототипов, обучающих проектов и игровых механик, где нужно сохранять разрушение не одного объекта, а сразу нескольких объектов на сцене.
ИСПОЛЬЗУЕМЫЕ КЛАССЫ, СТРУКТУРЫ И ПЛАГИНЫ:
BP_Saved_Destruction — основной родительский класс разрушаемого объекта с Geometry Collection, логикой разрушения, сохранения и восстановления.
Дочерние классы BP_Saved_Destruction — отдельные разрушаемые объекты на сцене с разными Geometry Collection.
BP_SaveGame — класс сохранения, в котором хранится общий список сохранённых разрушенных объектов.
ST_SavedDestructionObject — структура, в которой хранится уникальное имя объекта и его сохранённые данные Geometry Collection.
BP_FirstPersonCharacter — персонаж от первого лица, который запускает разрушение через трассировку из камеры.
Geometry Collection — разрушаемые объекты, созданные через Fracture Mode.
Destruction State Saver Plugin — плагин, который сохраняет, восстанавливает, замораживает и очищает состояние Geometry Collection.
ПЕРЕМЕННЫЕ В СТРУКТУРЕ ST_SavedDestructionObject:
DestructionID — уникальное имя разрушаемого объекта.
GCStateData — сохранённые данные состояния Geometry Collection для конкретного объекта.
ПЕРЕМЕННЫЕ В КЛАССЕ СОХРАНЕНИЯ:
SavedDestructionObjects — массив структур ST_SavedDestructionObject, в котором хранятся данные всех разрушенных объектов.
ФУНКЦИИ В КЛАССЕ СОХРАНЕНИЯ:
SaveDestructionObject — сохраняет данные разрушенного объекта по его уникальному имени. Если запись уже есть, она обновляется.
GetDestructionObject — ищет сохранённые данные объекта по его уникальному имени и возвращает найденное состояние Geometry Collection.
RemoveDestructionObject — удаляет сохранённые данные конкретного объекта из общего списка.
ПЕРЕМЕННЫЕ В КЛАССЕ РАЗРУШАЕМОГО ОБЪЕКТА:
DestructionID — уникальное имя объекта для поиска его сохранённого состояния.
Destroyed — показывает, был ли объект уже разрушен.
CurrentSave — ссылка на текущий объект сохранения.
TempSaveObject — временная ссылка при загрузке SaveGame.
LoadedGCStateData — временная переменная для найденных данных конкретного объекта.
FreezeDelay — индивидуальное время до заморозки обломков.
GCDestroyed — компонент Geometry Collection, который разрушается и восстанавливается.
ОСНОВНЫЕ СОБЫТИЯ И ФУНКЦИИ:
DestroyObject — запускает разрушение объекта, ждёт заданное время, сохраняет состояние сегментов и записывает данные в общий список сохранённых объектов.
BeginPlay — загружает SaveGame, ищет данные текущего объекта по уникальному имени и восстанавливает его разрушенное состояние.
ShowDestroyedState — подготавливает объект к восстановлению сохранённого разрушенного состояния.
RestoreObject — сбрасывает сохранение конкретного объекта, очищает его состояние и удаляет запись из общего списка.
SaveDestructionObject — добавляет или обновляет сохранённые данные объекта.
GetDestructionObject — получает сохранённые данные объекта по его уникальному имени.
RemoveDestructionObject — удаляет сохранённые данные объекта из сохранения.
В ролике показано, как сохранить состояние нескольких Geometry Collection, не перезаписывая данные друг друга. Для этого создаётся отдельная структура, общий массив сохранённых объектов и функции для добавления, поиска и удаления сохранённых данных по уникальному имени объекта.
Также добавляется индивидуальная задержка перед заморозкой обломков, чтобы для каждого разрушаемого объекта можно было отдельно настроить время падения сегментов перед сохранением.
World Partition по-прежнему отвечает за выгрузку и загрузку объектов в открытом мире, а плагин Destruction State Saver сохраняет и восстанавливает состояние каждого разрушенного объекта отдельно.
Подходит для открытых миров, прототипов, обучающих проектов и игровых механик, где нужно сохранять разрушение не одного объекта, а сразу нескольких объектов на сцене.
ИСПОЛЬЗУЕМЫЕ КЛАССЫ, СТРУКТУРЫ И ПЛАГИНЫ:
BP_Saved_Destruction — основной родительский класс разрушаемого объекта с Geometry Collection, логикой разрушения, сохранения и восстановления.
Дочерние классы BP_Saved_Destruction — отдельные разрушаемые объекты на сцене с разными Geometry Collection.
BP_SaveGame — класс сохранения, в котором хранится общий список сохранённых разрушенных объектов.
ST_SavedDestructionObject — структура, в которой хранится уникальное имя объекта и его сохранённые данные Geometry Collection.
BP_FirstPersonCharacter — персонаж от первого лица, который запускает разрушение через трассировку из камеры.
Geometry Collection — разрушаемые объекты, созданные через Fracture Mode.
Destruction State Saver Plugin — плагин, который сохраняет, восстанавливает, замораживает и очищает состояние Geometry Collection.
ПЕРЕМЕННЫЕ В СТРУКТУРЕ ST_SavedDestructionObject:
DestructionID — уникальное имя разрушаемого объекта.
GCStateData — сохранённые данные состояния Geometry Collection для конкретного объекта.
ПЕРЕМЕННЫЕ В КЛАССЕ СОХРАНЕНИЯ:
SavedDestructionObjects — массив структур ST_SavedDestructionObject, в котором хранятся данные всех разрушенных объектов.
ФУНКЦИИ В КЛАССЕ СОХРАНЕНИЯ:
SaveDestructionObject — сохраняет данные разрушенного объекта по его уникальному имени. Если запись уже есть, она обновляется.
GetDestructionObject — ищет сохранённые данные объекта по его уникальному имени и возвращает найденное состояние Geometry Collection.
RemoveDestructionObject — удаляет сохранённые данные конкретного объекта из общего списка.
ПЕРЕМЕННЫЕ В КЛАССЕ РАЗРУШАЕМОГО ОБЪЕКТА:
DestructionID — уникальное имя объекта для поиска его сохранённого состояния.
Destroyed — показывает, был ли объект уже разрушен.
CurrentSave — ссылка на текущий объект сохранения.
TempSaveObject — временная ссылка при загрузке SaveGame.
LoadedGCStateData — временная переменная для найденных данных конкретного объекта.
FreezeDelay — индивидуальное время до заморозки обломков.
GCDestroyed — компонент Geometry Collection, который разрушается и восстанавливается.
ОСНОВНЫЕ СОБЫТИЯ И ФУНКЦИИ:
DestroyObject — запускает разрушение объекта, ждёт заданное время, сохраняет состояние сегментов и записывает данные в общий список сохранённых объектов.
BeginPlay — загружает SaveGame, ищет данные текущего объекта по уникальному имени и восстанавливает его разрушенное состояние.
ShowDestroyedState — подготавливает объект к восстановлению сохранённого разрушенного состояния.
RestoreObject — сбрасывает сохранение конкретного объекта, очищает его состояние и удаляет запись из общего списка.
SaveDestructionObject — добавляет или обновляет сохранённые данные объекта.
GetDestructionObject — получает сохранённые данные объекта по его уникальному имени.
RemoveDestructionObject — удаляет сохранённые данные объекта из сохранения.
Платформа: UE 5.5+
Формат: .uproject / .uplugin
Производительность: Для прототипов, обучающих проектов и открытых миров
Настройки: Сохранение разрушений, восстановление сегментов, уникальные ID объектов, задержка заморозки обломков