Destruction profiles
Every property of USDFDestructionProfile — health, resistance, presentation mode, debris, audio, VFX, hit reactions, damage stages, decals, loot and propagation.
USDFDestructionProfile is a UPrimaryDataAsset. It holds every decision about how one class of
object behaves, and it is shared by every Actor that uses it. Authoring generates one per object;
you can also create them by hand and reuse a single profile across a whole prop family.
Only properties that exist in the shipped class are listed here.
Health
| Property | Default | Meaning |
|---|---|---|
bUseHealth | false | When false, the object has no health pool and relies entirely on the power gate |
MaxHealth | 1.0 | Starting health |
MinimumDamageThreshold | 0.0 | Minimum conventional damage required to reduce health at all |
DamageMultiplier | 1.0 | Scales incoming Damage |
ImpactDamageMultiplier | 0.0 | Scales the impact-derived damage contribution |
bDestroyOnSingleValidHit | true | Any hit that passes the power gate destroys the object |
MinimumDamageThreshold is what makes an object ignore chip damage. A valid power-only hit can still
produce a reaction, or break a fragile object, without ever reducing health.
bDestroyOnSingleValidHit overrides the health pool
While bDestroyOnSingleValidHit is on, bUseHealth and MaxHealth never get a say: the first
hit that passes the power gate destroys the object. For a multi-hit prop, turn it off and enable
the health pool — or simply set Max Health in the authoring window, which publishes all three
properties correctly in one step.
Resistance
| Property | Default | Meaning |
|---|---|---|
MinimumDestructionPower | VeryLight | Hits below this power are rejected |
MinimumImpactSpeed | 0.0 | Hits carrying an impact speed below this are rejected |
bBreakByPawnCollision | false | Let a pawn walking or rolling into the object break it |
PawnCollisionMinimumSpeed | 200.0 | Pawn speed required for such a break |
PawnCollisionPower | Light | Power assigned to a pawn-collision break |
bAllowPowerOverride | false | Enables the instant-break rule below |
InstantBreakPower | Massive | With the override enabled, a hit at or above this power destroys the object regardless of remaining health |
See Destruction hit for why power and damage are separate.
Physics and fall damage
The Default column is the value of the profile class — what a profile created by hand, or saved before these properties existed, holds. New generations write different values per preset family; those are listed in the second table.
| Property | Default | Unit | Meaning |
|---|---|---|---|
PhysicsMode | KeepExisting | — | KeepExisting leaves the intact mesh’s own physics settings alone; Static switches its simulation off; Simulated puts it under physics with gravity at BeginPlay |
bEnableFallDamage | false | — | Lets a simulating intact prop take damage when it lands after a fall |
MinimumFallHeightCm | 80.0 | cm | Safe distance: how far the intact body’s centre must descend before a landing can hurt it |
FallDamagePerMeter | 50.0 | damage per metre | Damage per metre of drop beyond the safe distance |
FallDestructionPower | VeryLight | — | Power of the landing hit, checked against MinimumDestructionPower like any other hit |
ComputeFallDamage(DropHeightCm) returns
max(0, (DropHeightCm - MinimumFallHeightCm) / 100 * FallDamagePerMeter), or 0 while fall damage
is off. The result is damage, not a chance to break: it still goes through health, power and speed
gates.
Values written by new generations:
| Preset family | PhysicsMode | bEnableFallDamage | MinimumFallHeightCm | FallDamagePerMeter | FallDestructionPower |
|---|---|---|---|---|---|
| Ceramic | Simulated | true | 60 | 50 | VeryLight |
| Glass Vessel | Simulated | true | 80 | 80 | VeryLight |
| Every other family | Simulated | false | — | — | — |
| Composite glass window | Static | false | — | — | — |
A placed instance can override the mode through PhysicsModeOverride on its destructible
component. Collision requirements, the support wake, migration and diagnostics are in
Intact physics and fall damage.
Presentation mode
| Property | Default | Meaning |
|---|---|---|
DestructionMode | None | None, SwapAndScatter, GeometryCollection or Glass |
Glass
Only relevant when DestructionMode is Glass:
| Property | Default | Meaning |
|---|---|---|
GlassSettings | see below | An FSDFGlassFractureSettings struct — the runtime crack pattern, shard physics and cleanup |
The full struct is documented in Runtime glass fracture.
Geometry Collection
Only relevant when DestructionMode is GeometryCollection:
| Property | Default | Meaning |
|---|---|---|
GeometryCollectionAsset | none | The pre-fractured collection to activate |
bFallbackToSwapAndScatter | true | Use the debris path when a Chaos representation cannot be activated |
GeometryCollectionDamageRadius | 100.0 | Radius around the impact inside which fragments are activated. Size it against the prop: a radius shorter than the prop leaves distant fragments standing |
GeometryCollectionRadialBias | 0.55 | Share of each fragment’s launch pointing away from the impact |
GeometryCollectionDistantFragmentScale | 0.35 | Launch scale applied to fragments far from the impact |
GeometryCollectionBreakVelocity | 85.0 | Velocity given to newly breaking pieces along the resolved attack direction |
GeometryCollectionLinearDamping | 2.0 | Linear damping of the broken pieces |
GeometryCollectionAngularDamping | 4.0 | Angular damping of the broken pieces |
GeometryCollectionRestitution | 0.0 | Bounciness of the broken pieces |
GeometryCollectionFriction | 0.8 | Friction of the broken pieces |
Why the asset is a soft UObject reference
The property is typed as a soft UObject reference with an editor filter that accepts only
Geometry Collection assets. That keeps Chaos implementation types out of the plugin’s public API
while still giving you a correct asset picker.
Swap and Scatter
Used both as a primary mode and as the fallback:
| Property | Default | Meaning |
|---|---|---|
Debris | empty | Array of FSDFDebrisEntry fragment definitions |
MaximumDebrisPieces | 12 | Hard cap on spawned pieces (0–64) |
SpawnRadius | 25.0 | Scatter radius around the impact |
DefaultImpulseStrength | 500.0 | Impulse used when the hit carries none |
DirectionalImpulseWeight | 0.75 | Share of impulse along the attack direction |
RandomImpulseWeight | 0.15 | Share of random deviation |
UpwardImpulseWeight | 0.2 | Share of upward lift |
Each FSDFDebrisEntry carries a soft UStaticMesh reference, a minimum and maximum count, a minimum
and maximum scale, and a local spawn offset.
Cleanup
| Property | Default | Meaning |
|---|---|---|
bRemoveDebrisAfterLifetime | false | Destroy debris after the lifetime instead of keeping it settled |
DebrisLifetime | 2.0 | Seconds before the subsystem’s centralised cleanup considers the debris |
bDisableCollisionAfterSettling | true | Once settled, debris stops colliding with pawns and weapon sweeps |
bWaitForDebrisToRest | true | Wait for real physical rest before freezing kept debris |
DebrisSettleTimeout | 4.0 | Extra seconds granted past the lifetime for debris to come to rest |
With the default settings, debris is Souls-persistent: it settles where it fell, is frozen asleep, and stays until the settled-debris budget evicts it or a reset restores the prop. The subsystem never freezes a piece that is still moving — and because the physics engine can put a slow fragment to sleep in mid-air, it wakes apparently-resting debris a couple of times before trusting the rest state, so airborne pieces fall instead of hanging where they were.
Audio
| Property | Default | Meaning |
|---|---|---|
bEnableAudioRequests | true | Emit middleware-neutral audio requests |
bEnableBuiltInAudioPlayback | true | Also play through UGameplayStatics |
SoundAttenuation | none | Optional attenuation asset applied to built-in playback |
SoundConcurrency | none | Optional concurrency asset applied to built-in playback |
HeavyImpactMinimumPower | Heavy | Power at which an impact counts as heavy |
HeavyImpactMinimumImpulse | 600.0 | Impulse at which an impact counts as heavy |
LightImpactSounds | empty | Weighted variations |
HeavyImpactSounds | empty | Weighted variations |
BreakSounds | empty | Weighted variations |
DebrisImpactSounds | empty | Weighted variations |
MinimumDebrisImpactSpeed | 150.0 | Below this, a debris collision is silent |
DebrisImpactCooldown | 0.12 | Seconds between debris sounds |
MaximumDebrisImpactSoundsPerDebrisActor | 1 | Cap per debris piece (0–32) |
See Audio.
VFX
| Property | Default | Meaning |
|---|---|---|
bEnableVFXRequests | true | Emit middleware-neutral VFX requests |
bEnableBuiltInVFXSpawning | true | Also spawn Niagara systems directly |
HeavyImpactVFXMinimumPower | Heavy | Power threshold for the heavy impact event |
HeavyImpactVFXMinimumImpulse | 600.0 | Impulse threshold for the heavy impact event |
LightImpactEffects | empty | Weighted Niagara variations |
HeavyImpactEffects | empty | Weighted Niagara variations |
BreakEffects | empty | Weighted Niagara variations |
DebrisImpactEffects | empty | Weighted Niagara variations |
CustomEffects | empty | Weighted variations for Custom events |
MinimumDebrisImpactVFXSpeed | 200.0 | Below this, a debris collision spawns nothing |
DebrisImpactVFXCooldown | 0.15 | Seconds between debris effects |
MaximumDebrisImpactVFXPerDebrisActor | 1 | Cap per debris piece (0–32) |
See Niagara and VFX.
Hit reactions
| Property | Default | Meaning |
|---|---|---|
bEnableHitReactions | false | Emit a reaction request for valid non-destroying hits |
MinimumHitReactionPower | VeryLight | Power gate for reactions |
bApplyBuiltInPhysicsReaction | true | Apply a bounded impulse when the intact component already simulates physics |
HitReactionImpulseMultiplier | 0.2 | Fraction of the incoming impulse used |
MaximumHitReactionImpulse | 250.0 | Hard cap |
Damage stages
| Property | Default | Meaning |
|---|---|---|
DamageStages | empty | Array of FSDFDamageStage |
Thresholds are evaluated by value, so the array order is not gameplay-significant. See Damage stages.
Decals
| Property | Default | Meaning |
|---|---|---|
bEnableImpactDecals | false | Decals are opt-in |
bEnableBuiltInDecalSpawning | true | Disable when an external listener owns decal presentation |
MinimumDecalPower | VeryLight | Power gate |
MaximumImpactDecals | 3 | Per-object limit (0–32) |
ImpactDecals | empty | Weighted FSDFWeightedDecal variations |
Loot
Generic post-destruction behaviour, independent from any inventory system:
| Property | Default | Meaning |
|---|---|---|
LootMode | Disabled | Disabled, ExternalOnly, SpawnLoot or RevealExistingActor |
LootActors | empty | Weighted candidates used by SpawnLoot |
LootSpawnOffset | zero | Offset from the owner or the assigned loot spawn component |
| Mode | Behaviour |
|---|---|
Disabled | Nothing happens |
ExternalOnly | A loot request is emitted; your own systems decide what to do |
SpawnLoot | Exactly one weighted candidate can be selected per destruction, then its SpawnChance, quantity and scatter are applied |
RevealExistingActor | Level-placed Actors registered with AddActorToReveal are activated |
Each FSDFWeightedLootActor carries a soft Actor class, a weight, a SpawnChance evaluated after
selection, minimum and maximum quantity, a horizontal ScatterRadius and a symmetric
VerticalScatter. The outcome is reported through OnLootRequested as an FSDFLootRequest.
Propagation
| Property | Default | Meaning |
|---|---|---|
bAllowDestructionPropagation | false | Enable chain reactions from this object |
PropagationRadius | 250.0 | Neighbour search radius |
PropagationDamage | 100.0 | Damage delivered to each neighbour |
PropagationPower | Light | Power of the propagated hit |
PropagationImpulse | 600.0 | Impulse of the propagated hit |
MaxPropagationDepth | 2 | Hard depth cap for chains this profile starts (0–32) |
See Chain reactions.
Two worked profiles
Fragile ceramic pot
bUseHealth = true
MaxHealth = 20
MinimumDestructionPower = VeryLight
bDestroyOnSingleValidHit = true
DestructionMode = GeometryCollection
bFallbackToSwapAndScatter = true
DebrisLifetime = 4.0
Resistant wooden crate
bUseHealth = true
MaxHealth = 100
MinimumDamageThreshold = 5
MinimumDestructionPower = Light
bAllowPowerOverride = true
InstantBreakPower = Massive
DestructionMode = GeometryCollection
DamageStages = [ 0.66 cracked mesh, 0.33 heavily damaged mesh ] Last updated: 2026-09-15