Batch authoring

Preflight, generate, validate and regenerate destructible setups across a multi-selection of Static Meshes, with per-item states and CSV reporting.

Batch authoring runs the same single-asset services across a selection. It adds no separate fracture or regeneration logic: every eligible row delegates to FSDFDestructionAuthoringService or FSDFDestructionRegenerationService.

Workflow

Select multiple Static Meshes
    ↓
Souls Destruction -> Batch Generate / Validate / Regenerate
    ↓
Preflight All
    ↓
Review Ready / Warning / Blocked
    ↓
Explicit confirmation
    ↓
Sequential processing
    ↓
Exported CSV report

Selecting meshes

Select any number of Static Meshes in the Content Browser, right-click, open Souls Destruction and choose a batch operation. The batch tab opens with the selection loaded.

The selection is deduplicated and sorted by stable object path before anything else happens, so the same selection always produces the same processing order.

The three operations

OperationWhat it doesRequires an existing manifest
Batch GeneratePublishes new setups using one shared preset and option setNo — an existing manifest blocks the row
Batch ValidateValidates managed setups, writes no assetsYes
Batch RegenerateRe-runs protected regeneration with per-setup backupsYes

Shared options

One preset and option set applies to the whole batch:

  • authoring preset;
  • interior material override;
  • fracture density;
  • destruction mode;
  • output folder policy and custom folder;
  • custom fragment count;
  • create destructible Actor;
  • fragile runtime profile;
  • Max Health (0 = Family Default) — applied to every profile the batch publishes: a positive value ships each one with Use Health on, that value, and single-hit destruction off; hidden while the fragile profile is checked;
  • whether rows with warnings are allowed to run.

Physics is not a separate option of the batch window: every setup Batch Generate publishes takes its preset family’s default — Simulated, with an SDF-owned simulation collision copy when a source cannot simulate as it stands, and fall damage on Ceramic and Glass Vessel profiles. Generate a prop that must stay fixed individually with Create Destructible… and Physics set to Static. The physics fields are part of the request signature. See Intact physics and fall damage.

One preset per batch

Mixed material families should be processed as separate batches, or with a custom preset that suits all of them. There is no semantic per-mesh auto-classification, and none is claimed.

Preflight All

Preflight is mandatory and read-only. It runs before the first write and produces an FSDFBatchReport with the total selected count and the number of Ready, Warning and Blocked rows, plus one FSDFBatchItemReport per mesh containing its status, summary, resolved output folder, manifest path and issue list.

Per-item states

StateMeaning
ReadyEligible with no issues
WarningEligible, but preflight raised non-blocking issues
BlockedNot eligible; the row will be skipped
RunningCurrently processing
SuccessCompleted successfully
FailedAttempted and failed; other rows continue
SkippedNot attempted (blocked, or excluded by the warning policy)
CancelledNot attempted because the batch was cancelled

Common blocking issues

CodeMeaning
SDF-BATCH-GLOBAL-001No authoring preset is selected
SDF-BATCH-GLOBAL-002The preset has no interior material and no batch override was supplied
SDF-BATCH-GEN-001The mesh already has an SDF manifest — use Batch Regenerate
SDF-BATCH-GEN-002The resolved backend is not supported by automatic batch generation
SDF-BATCH-GEN-003A planned output package already exists
SDF-BATCH-GEN-004Several selected meshes resolve to the same output path
SDF-BATCH-MANIFEST-001No SDF authoring manifest references this mesh

Blocked rows can be synchronised directly in the Content Browser from the batch tab, so you can inspect the offending asset without losing the batch.

Stale preflight

The report stores a RequestSignature: a stable hash of the selection and every shared option. Changing the operation, preset, density, output policy, material override or selection invalidates the approved preflight, and execution is refused until you preflight again.

This is deliberate: the confirmation you gave applies to the batch you reviewed, not to a different one.

Output collisions

Before writing, the planned Geometry Collection, profile, Blueprint and manifest paths of every row are compared against each other and against existing packages. Any row colliding with another selected row, or with an existing asset, is blocked.

Two meshes named SM_Crate in different folders can resolve to the same output when the output policy is Project Default Folder. Switch to the source-sibling policy or rename the sources.

Progress and cancellation

Processing is strictly sequential on the editor thread. There is no parallel UObject or Chaos mutation.

Progress is displayed as current / total — mesh — processing stage. Cancellation is sampled between assets: the current single-asset staged transaction always completes or rolls back before the queue stops, so cancelling never leaves a half-written setup.

Editor responsiveness

One expensive Geometry Collection fracture can occupy the editor thread until that asset finishes. Progress and cancellation are responsive between assets, not inside a single fracture.

Reports

Every execution exports a CSV to:

Saved/SoulsDestructionFramework/BatchReports/SDF_Batch_<timestamp>_<GUID>.csv

Each row contains the source path, final status, summary, output folder, manifest path, issue codes and the actionable issue messages. That makes a partial failure inspectable without reading the Message Log line by line.

The completion dialog reports success, warning, failure, skipped and cancelled totals, and the exported report path.

  1. Group meshes by material family — process wood props, then ceramics, then stone.
  2. Run Batch Generate on a small pilot selection (5–10 meshes) with Low density.
  3. Open two or three generated setups in Play In Editor and confirm the break reads correctly.
  4. Adjust the preset in your own project content, not the shipped asset.
  5. Run the full family batch.
  6. Keep the CSV report with the commit that introduced the assets.
  7. Use Batch Validate after a source-art update to find which setups drifted.
  8. Use Batch Regenerate only on the rows that Validate flagged.

Note

Batch processing is sequential and synchronous by design in this version. That is a deliberate safety trade-off: no parallel mutation of UObjects or Geometry Collections.

Last updated: 2026-09-15

Type to search titles, sections and keywords.