GreyFox Studio · Unreal Engine
Souls Destruction Framework
Environmental destruction authoring and runtime framework for Unreal Engine.
- Unreal Engine 5.7
- Unreal Engine 5.8
- C++
- Blueprint
- Editor Tools
- Chaos
- Geometry Collection
Designed for souls-like, action RPG, dungeon crawler and melee-focused games.
Overview
Souls Destruction Framework (SDF) covers two distinct layers, and either one can be used on its own.
Destruction authoring
An editor-only pipeline that turns an existing Static Mesh into a complete, ready-to-place destructible setup:
Static Mesh -> Choose Preset -> Generate -> Validate -> Play
The source Static Mesh is never modified. Generation stages everything transiently first, validates the result, and only then publishes the assets it owns.
Runtime framework
A data-driven runtime layer that decides what a hit does and how the object presents its
destruction. Once an object carries an USDFDestructibleComponent and a destruction profile, it can
be destroyed by:
- melee contacts;
- roll, dash or charge collisions;
- projectiles;
- radial events;
- chain propagation from another destructible.
No framework lock-in
SDF does not impose a combat system, a projectile class, an inventory system or an audio
middleware. Gameplay code sends a plain FSDFDestructionHit payload; the framework answers with an
explicit FSDFDestructionResult.
Features
Automatic destruction authoring
- Static Mesh preflight before anything is written
- Geometry Collection generation
- deterministic Voronoi, structure-aware wood and semantic barrel fracture patterns
- interior material assignment on generated internal faces
- collision and cooked simulation data validation
- runtime profile generation, with Max Health exposed directly in the authoring window — a positive value publishes a ready-to-play multi-hit profile
- optional ready-to-place destructible Actor Blueprint
- the source mesh remains untouched
Authoring presets
Ten data-driven presets ship with the plugin, plus a custom path:
| Preset | Intent | Low / Medium / High fragments |
|---|---|---|
| Wood | Structure-aware planar fracture: recovers boards and panels, preserves small hardware, noisy cross-cuts | 14 / 24 / 36 |
| Wooden Crate | Wood recipe with convex piece collision for boards that overlap their posts | 14 / 24 / 36 |
| Wooden Barrel (Semantic) | Strict barrel recipe: body cut into radial staves, hoops and end caps preserved | 14 / 24 / 36 |
| Wooden Furniture | Chairs, tables, benches: every member snapped to a target debris length | 10 / 16 / 26 |
| Wooden Coffin | Wide wooden panels with shallow break roughness so pieces fall apart instead of interlocking | 12 / 20 / 32 |
| Ceramic | More numerous pieces for shells with real thickness | 12 / 20 / 32 |
| Stone | Fewer massive blocks with aggressive micro-fragment control | 14 / 26 / 42 |
| Glass | Thin brittle panels, fractured at runtime around the impact — no baked Geometry Collection | pattern-driven |
| Glass Vessel | Bottles, lanterns, vases: pre-baked Voronoi tuned for glass slivers, preserved cork stoppers | 24 / 40 / 64 |
| Generic | Neutral deterministic Voronoi, no material assumption | 10 / 18 / 30 |
Fracture density is selected as Low, Medium, High or Custom (explicit count, 2 – 150).
The wood presets also take Cuts Along Length — how many times each board breaks, from 0 (boards
stay whole) to 5 — and Wooden Furniture a Collision Shape: boxes for straight boards, convex
hulls for curved and leaning pieces such as pews and thrones.
Structural honesty
The wood presets recover the boards, members and hardware that exist as construction parts in the authored mesh; the semantic barrel recipe additionally resolves body, hoops and end-cap roles and blocks unsupported meshes instead of guessing. No preset infers joints or weak points that the source geometry does not carry.
Physics-ready props
New generations simulate physics by default, so a prop rests on its support and falls when that support breaks:
- smash a crate and the pot resting on it drops to the floor instead of hanging in the air
- optional height-based fall damage per profile: enabled on Ceramic and Glass Vessel generations, off on Stone and wood — a pot can break on landing while a statue survives
- a source mesh without usable simple collision gets an SDF-owned simulation copy; the source is never modified
- existing setups are never converted silently: an explicit editor migration switches them
- composite glass windows stay fixed by design
Runtime glass fracture
The Glass family does not bake a Geometry Collection. Shards are generated at the moment of impact, around the actual impact point, so the crack pattern follows the blow:
- radial-and-ring crack pattern with per-hit jitter, deterministic per seed
- every shard is a real simulated rigid body with convex collision
- persistent shards by default — they settle where they fall, like every other Souls debris
- a multi-material source (a stained glass window with its stone surround and lead tracery) is
split automatically at authoring: the structure becomes an unbreakable frame, every glass island
becomes an independently breakable pane on one
ASDFGlassCompositeActor - preserved material slots: islands whose material matches a preset keyword (a cork stopper on a bottle) drop whole instead of shattering
Batch authoring
- Batch Generate, Batch Validate and Batch Regenerate
- full preflight before the first write
- explicit
Ready/Warning/Blockedstate per mesh - strictly sequential, safe processing on the editor thread
- continue-on-error: a blocked or failed row never stops the queue
- cancellation sampled between assets
- exported CSV report for every execution
Regeneration safety
- manifest-based ownership of every generated asset
- fingerprint-based drift detection on source, preset, interior material and outputs
- explicit confirmation before any regeneration
- second confirmation before replacing manually edited outputs
- durable package backups under
Saved - rollback when replacement, save or validation fails
- generated object paths are preserved, so external references stay valid
Modify Destructible
- change how an existing destructible breaks, right from the level: right-click a placed actor, its Blueprint or its source mesh
- switch preset, fracture density, cuts along length, collision shape, fragility or health
- rebuilt in place: every copy already placed in your levels updates, Blueprint graphs are kept
- debris, projectile, audio and physics choices are preserved
- same backups, confirmations and rollback as regeneration
- scriptable with the
SDF.ModifyDestructibleeditor command
Runtime destruction inputs
- Melee — swing windows with one hit per target per swing
- Roll / collision — externally detected contacts with a minimum speed gate
- Projectile — data-driven impact profiles, no imposed projectile class
- Radial — origin, radius, falloff and deterministic per-target seeds
- Chain reactions — opt-in bounded propagation with cycle prevention
Presentation
- audio events:
LightImpact,HeavyImpact,Break,DebrisImpact - Niagara events: the same four plus
Custom - deterministic weighted variation selection
- wood splinters burst from the struck point, take on the broken object’s own texture and never hang in the air — they ignore the debris and land on the real floor
- middleware-neutral request delegates, emitted even when built-in playback is disabled
- independent per-frame budgets for built-in audio and built-in VFX
Damage presentation
- non-breaking hit reactions with optional bounded physics impulse
- impact decals with a per-object limit
- damage stages driven by remaining health ratio
- Static Mesh replacement per stage
- per-slot material overrides per stage
Performance
- global cap on simultaneously active Chaos representations
- budget on kept, settled debris actors (
MaxSettledDebrisActors), oldest evicted first - per-frame destruction event admission budget
- automatic Geometry Collection to Swap-and-Scatter fallback
- centralised, timer-driven debris cleanup that waits for real physical rest — debris is never frozen in mid-air
- no Actor tick on the destructible Actors; the destructible component ticks only while a profile enables fall damage
Demo content
The plugin ships a complete showcase map, /SoulsDestructionFramework/Demo/Maps/L_SDF_Showcase,
with titled stands for every preset family — crates, barrels, furniture, a coffin, ceramic pots, a
stone gravestone and statue, glass panes, tinted bottles with preserved cork stoppers, a stained
glass window split into frame and panes, and a multi-hit wooden door. All demo content uses only
plugin and engine assets.
Requirements
- Unreal Engine 5.7 — separate edition, verified on 5.7.4 (Win64)
- Unreal Engine 5.8 — separate edition, verified on 5.8.2 (Win64)
- Source-only packages: compiled with Unreal’s supported Visual Studio C++ toolchain, including in Blueprint-only projects
- Epic plugins: Geometry Collection and Fracture (editor), Niagara, Procedural Mesh Component and Enhanced Input — plus Control Rig on the 5.7.4 edition
- Blueprint-only and C++ projects are both supported
Full details are in the installation guide.