This Tutorial is a breakdown of the 2025 GDC Tech Talk Dynamic Destruction in UE5 with the Chaos Destruction System. Click on the link below to watch.
You can find a column asset that you can use to follow along in this tutorial in UE 5.6 Content Example. You don't have to use a column, you can use any asset object to explore these features. The columns used in this Tech Talk are not currently on Fab.
Launch Unreal Engine.
Go to Window > Fab, this will launch the Fab marketplace within the editor.
Search for Content Examples and download to your Library.
Open the Content Examples project, in the Content Drawer go to All > Content > ExampleContent > Destruction > Modules > ChaosProps > Column > Meshes.
Chaos Destruction in UE5 - Tips to Improve Simulation Quality and Performance
This tutorial starts in the middle of the production pipeline. We will discuss how to best optimize your destruction assets after you have already fractured, clustered, and set up your collisions.
The assets presented in this tutorial were created using Dataflow, which allows you to iterate on them using a node-based, non-destructive workflow. If you want to learn more about how to use Dataflow, see the links below:
https://dev.epicgames.com/documentation/en-us/unreal-engine/dataflow-graph
https://dev.epicgames.com/documentation/en-us/unreal-engine/dataflow-for-destruction-quickstart
In Unreal Engine, you can work with high-fidelity assets in a real-time production environment (this example is a 3D scan from ZBrush).
Nanite and Root Mesh Proxies
Dramatically improve rendering with two minor changes using Nanite and Root Mesh Proxies.
Using Nanite
Nanite is automatically set on the Geometry Collection asset if the source static meshes have it enabled
You can also select/deselect on the Geometry Collection asset directly
Benefits:
Auto-LOD with Nanite clustering (by default, Geometry Collection does not support LOD)
Reduced Geometry Collection asset size on disk and in memory
Geometry attributes can be stripped out during cooking (reduces file size by 95%)
Supports Nanite fallback
Using Root Mesh Proxies
A Root Proxy is one, or multiple, static meshes that can be used for rendering until a Geometry Collection is broken.
The Geometry Collection asset is referenced by the Root Proxy Data property
Supports ISM rendering:
Change Custom Renderer Type to
GeometryCollectionRootProxyRendererInstanced across all Geometry Collections
Supports LODs, Nanite, Lumen
Renders in Editor
Useful for glass-like materials
Removal Settings
Removal Settings are game-wide time-multiplier settings:
Useful when it is late in the project and you don’t want to return all assets
Can be set in your game files
.ini: p.Chaos.GC.RemovalTimerMultiplier
You can place flags on the components:
Turn it on or off without having to touch any of the asset settings
Remove on Sleep
Get rid of unwanted geometry after they break from their parent and settle:
Per asset settings (e.g., after 3 seconds of sleep the asset will disappear)
Option to scale pieces down
Removal notification allows for crumbling
Slow-Moving Velocity Threshold can be set per asset
Remove on Break
Get rid of unwanted geometry after they break off from their parent:
Tool is available in the Utility section
Settings per bone/cluster
Timing control (min/max timer) for time after break and removal time
Compatible with removal scaling option
Option to crumble clusters in smaller pieces instead of removing them
Works with the scaler feature so that pieces eventually scale down to nothing
Usage:
Reduces number of active rigid-bodies
Unclutters gameplay space
To effect like instant removal
Enable the checkbox for Cluster Crumbling if you have large pieces sitting on the ground and another round of crumbling needs to be applied. | Set Remove Icon in the Utilities menu. |
One-Way Interaction
One-way interaction simplifies interaction between rigid bodies for improved performance and better control.
One-way objects do not further the destruction (no strain on collision)
One-way objects will not affect two-way objects
When two one-way objects collide, they are using cheap sphere-to-sphere collision
Per Component setting:
Defines at which level rigid bodies start to use the one-way interaction behavior
Throttling Mechanisms
In some scenarios, many clusters can break per frame, releasing a lot of new physics particles per frame. It is desirable to control how many of those clusters can be broken and how many rigid bodies are released per frame. Here is the list of console variables to control this:
Control the number of cluster breaks
p.Chaos.Clustering.PerAdvanceBreaksAllowed<count>p.Chaos.Clustering.PerAdvanceBreaksRescheduleLimit<number of frame>
Ability to throttle (or restrict) the number of released rigid bodies
p.Clustering.ParticleReleaseThrottlingMinCount<count>p.Clustering.ParticleReleaseThrottlingMaxCount<count>
Damage Propagation
This was designed to emulate how energy is absorbed by a material.
Break Damage Propagation: If you have a wall that is 100 strong, and it gets hit by a ball with 200 strength, after the impact when the ball looses 100 to break the wall, there will still be 100 left over to impact the remaining pieces. Damage will be further propagated. After a break, this is a factor of the remaining strain that propagates to the connected pieces.
Shock Damage Propagation: This can be useful for larger pieces. It can affect how much impact a larger piece will take before absorbing enough shock damage that a smaller piece breaks off. It's another artistic-design factor in how your objects behave. This is a factor of the original impact strain propagated to connected pieces (recommended to be used for size-specific damage thresholds).
Tiny Geo Tool
Objects that break into very small pieces present a number of problems. Not only do very small pieces not contribute to the overall breakage-effect of a large object, but the pieces can have strange individual behaviors. The small particles will stay internal to your Geometry Collection.
Select small pieces and merge them onto their larger neighbor
|
Anchored vs. Kinematic
In the past, Geometry Collection anchoring required a manual connection to an Anchor Field actor.
Anchors are difficult to set up on varied terrain, and it is difficult to maintain connectivity over a large group of assets.
It is difficult to activate the entire actor. The connected pieces are always stuck in place.
The field becomes an extra object that needs to be managed.
Now, individual Geometry Collection bones can be set to Anchored or Kinematic in Fracture Mode.
Applied to the asset, accessed through the right-click menu
Anchors can be broken and the entire Geometry Collection is activated
Kinematic pieces remain in place
Physical Materials
Control the behavior of every physics asset in your game with Physical Materials.
Density ranges can be found for most real world materials
Can be set/changed via asset, actor, or Blueprint
Hooks for Audio and Niagara interaction
This example uses projectiles with different Physical Materials to further control the simulation:
These three objects with varying densities all behave the same with no air resistance applied and with gravity affecting everything the same way. | Speaker note: Many artists will make mistakes on their density, keep a close eye on typos. This video's objects are still not quite right! |
Use Friction and Restitution to dial in the look. Friction is air friction, restitution controls whether things bounce. Be aware that the more forces you apply, the more compound effects you may need to tease out to get your desired outcome.
The Damage Threshold Multiplier is applied uniformly across all assets, on top of any unique asset settings.
Working with Projectiles
The next video uses projectiles with different Physical Materials to further control the simulation.
Using Fields
Using Fields allows you to have very specific control over how things break.
Fields have traditionally been the easiest way to destroy Geometry Collections in Unreal Engine
Extremely powerful
Complex fields are often too expensive in a production environment, if a destruction takes milliseconds it could begin to produce lag when the amount of objects receiving destruction is large
Trace and External Strain
You can use this new node to improve control without the overhead of using a field. Trace and External Strain are lighter weight features than fields, you get the general effect without a large effort. This would be more appropriate for simple interactions like projectiles in a shooting game.
Inexpensive method of forcing a break
Can be used without projectile to simulate destruction caused by bullets or laser beams
Add Apply Breaking Linear Velocity for effect
Collisions
Using nothing but collisions to cause destruction satisfies the impact, and is efficient. It works very well without using trace breakage or fields, but it's a little overly consistent. Everything breaks the same, over and over.
You must enable Damage Propagation Data and Enable Damage from Collision.
Collision & External Strain
The best solution is to combine these two methods. In the video below, you can see that the projectiles start out bouncing off, and with increased strain and velocity forces as the video continues, the projectiles increase speed and apply more and more damage.
Adjust settings to compensate for high velocity projectiles
Impact size can be adapted by projectile type of velocity
Niagara Data Channels
Niagara Data Channels facilitate communication between Chaos Events and Niagara Systems.
Chaos Events trigger Write to Niagara Data Channel via Blueprint
Variables can be passed to Niagara emitters
Unreal Engine 5.5 can show you interesting data that you can use to optimize simulations
In the example video below, particles are generated by a Chaos break event
We immediately remove them on break using Remove on Break settings on the asset. Rigid bodies are deleted and replaced with Niagara meshes
Large pieces remain
Larger Niagara meshes fill the approximate volume of the deleted body and only spawn if within a given size threshold.
Smoke and small debris emit normally.
All small debris is rendered by Niagara on the GPU
Blueprint attributes can be adjusted as needed for performance
Final Results
105 statues, frames per second is above 30 throughout (40-45 FPS in the video), this example applies all of the effects that are covered in this section.
Animated Geometry Collections
These were developed for Lego Fortnite.
Creates transform arrays for the beginning and end positions
Lerp between transforms via Timeline node
Not fast, but works nicely for quick effects that are difficult to simulate
A Get/Set Initial Local Rest Transforms node has been added, it gives you a list of all your transforms for every piece in your Geometry Collection.
First used to create a stacked-building-effect when assets are placed in the world
Not a simulation, but moves the pieces, and can be used for interesting effects
Once you know the position of each bone, the bones can be animated over time using a timeline curve and the Set Local Rest Transformations node.
This is an example of using Sequencer, where an animated volume controls the location of the deformation:
This example uses Collision Events to simulate non-breaking damage and emit particles:
Deforms geometry without causing an actual break
Similar to creating a 3D decal
This is an example of an animated field deforming a kinematic Geometry Collection. It is moving the sphere through the volume, pushing the pieces down, and rotating them.
This is an example of a dynamic ball deforming a kinematic Geometry Collection. Through the use of a field under the Geometry Collection, it increases the damping on the ground pieces, which forces the ball to roll to a stop.