This page explains the high-level logic behind the building destruction system.
If you want the authoring workflow, see Tutorial: Sample Building. That page shows how to prepare modules, import them as building elements, assemble the final structure, and run the builder.
A gameplay building is not treated as one large voxel object. Instead, it is built from many voxel modules, and those modules are connected together with joints.
This setup gives the game two important pieces of information:
In practice, the runtime logic is driven by BuildingDestructionBuilder
BuildingDestructionBuilder works with one or more Buildings, and each building contains a list of Levels.
At a high level:
VoxelVolume modules under those roots.This is why the sample building workflow asks you to create level roots first, then assign them to the builder before clicking Build Destruction Joints.
The generated joints define how separate modules stay connected as one building. Attachment points are created between nearby pieces so the destruction system knows where structural connections exist.
Because of this, a building can:
The builder also tracks structural load by level.
The core idea in BuildingDestructionBuilder is:
This is why level organization matters. If modules are grouped into clear floors or structural sections, the collapse behavior is much more predictable.
When making a destructible building:
Joint Data asset on BuildingDestructionBuilder100 pieces when possibleThe sample page Tutorial: Sample Building is the reference workflow for setting this up in content.