Releases
Changelog
Version history for every GreyFox Studio plugin. Each release lists what was added, changed,
fixed or deprecated, together with its engine compatibility.
Souls Destruction Framework
Version 1.0.0 2026-08-25
UE 5.7, 5.8 Release candidate prepared for Fab — one edition per engine version
First non-beta version. The beta flag is removed from the plugin descriptor and every remaining
project-specific reference has been purged: a dependency audit across all plugin content reports
zero references outside the plugin and the engine.
Added
- Runtime glass fracture — a new
Glass destruction mode that bakes nothing: shards are
generated at the moment of impact, around the actual impact point, from a deterministic
radial-and-ring crack pattern with per-hit jitter. Every shard is a simulated rigid body with
convex collision that ignores pawns. Tuned per profile through FSDFGlassFractureSettings
(pattern, shard thickness, physics, cleanup), with persistent Souls-style shards by default.
- Glass composite authoring — committing a multi-material source with the Glass preset splits
it by topological material islands and publishes an
ASDFGlassCompositeActor: structural
islands (stone, metal, lead…) become an unbreakable frame, every glass island becomes an
independently breakable pane with its own destructible component.
- Preserved material slots —
PreservedMaterialSlotNames on the authoring preset, request and
manifest: islands whose material matches a keyword are released whole instead of cut. Ships as
Stone, Metal, Lead, Iron, Frame, Wood on the Glass preset and Cork on Glass Vessel, so a
corked bottle breaks around its stopper.
- Glass Vessel preset — pre-baked Voronoi tuned for curved glass: 24 / 40 / 64 fragments, very
small minimum fragment size, cut faces in the vessel’s own material.
- Max Health in the authoring window and in Batch — “Max Health (0 = Family Default)” on the
Runtime Profile section: a positive value publishes a ready-to-play multi-hit profile
(
bUseHealth on, the value applied, bDestroyOnSingleValidHit off), zero keeps the family
defaults, and the value is recorded in the manifest for faithful regeneration.
- Structure-aware wood preset family — Wooden Crate (convex piece collision, cut faces
re-projected into their board’s UV island), Wooden Barrel (Semantic — strict body/hoops/end-caps
recipe with radial staves and an exposed stave count), Wooden Furniture (members snapped to a
target debris length) and Wooden Coffin (shallow break roughness on wide panels).
- Per-family break cues — the generated runtime templates now ship break sounds:
wood crate/barrel cues,
SC_SDF_CeramicImpact, SC_SDF_StoneImpact and SC_SDF_GlassBreak.
- Showcase map —
/SoulsDestructionFramework/Demo/Maps/L_SDF_Showcase, a complete demo level
with titled stands for every preset family, built exclusively from plugin and engine assets.
- New Geometry Collection profile controls:
GeometryCollectionRadialBias,
GeometryCollectionDistantFragmentScale, linear/angular damping, restitution and friction.
- Pawn-collision breaking on the profile:
bBreakByPawnCollision, PawnCollisionMinimumSpeed,
PawnCollisionPower, plus a MinimumImpactSpeed resistance gate.
- Settled-debris budget:
MaxSettledDebrisActors keeps persistent wreckage bounded, evicting the
oldest pieces first.
Candidate update — 2026-09-15
Added to the 1.0.0 release candidate before publication; no publication date or Fab approval is
claimed.
- Physics-ready intact props — new ordinary generations publish the intact prop as
Simulated
for every preset family, using ASDFPhysicsDestructibleActor. When a destructible support is
destroyed, the simulated bodies resting on it wake and fall. Static remains available for fixed
props; composite glass windows are always Static.
- Simulation collision copies — a source without usable simple collision gets an SDF-owned
SM_SDF_<Name>_Sim copy, rebuilt in place on regeneration; the source mesh is never modified.
- Height-based fall damage — optional per profile (
bEnableFallDamage, MinimumFallHeightCm,
FallDamagePerMeter, FallDestructionPower); enabled on Ceramic and Glass Vessel generations,
off elsewhere. Landing hits carry SDF.Source.Collision.Fall.
- Explicit migration — existing profiles read
Keep Existing and are never converted silently;
the editor command SDF.MigrateToSimulatedPhysics [VerifyOnly] [Root=] [Exit] migrates generated
setups. The shipped demo setups are migrated.
- Blueprint diagnostics —
GetEffectivePhysicsMode, SetPhysicsModeOverride,
GetIntactPhysicsStatus, GetLastSupportWakeCount, GetLastFallHeightCm, GetLastFallDamage,
ComputeFallDamage.
- Packages — two source-only Win64 editions, verified on UE 5.7.4 and 5.8.2. The manifest
schema is version 4.
- Debris settling supervision for persistent Chaos debris, tighter coffin panel collision and fitted
Stone demo collision.
Candidate update — 2026-10-01
Added to the 1.0.0 release candidate; no publication date or Fab approval is claimed.
- Modify Destructible — change how an existing destructible breaks from the level, its
Blueprint or its source mesh: preset, fracture density, cuts along length, collision shape,
fragility, health. Rebuilt in place, so every placed copy updates; same protections as
regeneration; scriptable with
SDF.ModifyDestructible.
- Cuts Along Length for the structure-aware wood presets (0 to 5 cuts per board), recorded in
the manifest as
WoodLengthCuts.
- Collision Shape for Wooden Furniture:
Boxes (default) or Convex, recorded as
PieceCollisionShape.
- Source-look splinters — the wood break effect starts its splinters at the struck point, never
lets them rest on or hang inside debris (they collide on the Camera channel, which SDF debris now
ignores) and gives splinters and chips the broken object’s base colour texture. New user
parameters and
FSDFDestructionVFXRequest fields carry the struck point, burst direction, source
bounds and FSDFDebrisAppearance.
Fixed
- Debris can no longer be frozen in mid-air. The physics engine may put a slow fragment to sleep at
the top of its arc; the debris guardian now wakes apparently-resting debris before trusting the
rest state, so airborne pieces fall and settle on the ground. Applies to every family through the
shared cleanup path, and is covered by an automated Play In Editor test.
Changed
- Plugin descriptor: version
1.0.0, beta flag removed.
- All demo content and automated tests reference plugin-local assets only.
Known issues
- The runtime pane generator handles thin, roughly planar panels; curved shells use the pre-baked
Glass Vessel path.
- Regenerate and Batch Generate remain Geometry Collection–backed operations; Glass-family assets
are generated through the single-asset service.
- Batch processing is sequential and synchronous; one shared preset and option set applies per
batch.
- Chaos simulation is not claimed to be bitwise deterministic.
- Unreal Engine 5.7 and 5.8 are prepared as two separate editions, verified on 5.7.4 and 5.8.2 (the entry originally recorded 5.8.1; the 5.7 package was added on 2026-09-09). Both are source-only and require Unreal’s supported C++ toolchain.
- Intact physics is not a structural support graph, and physics transforms of intact props are not saved.
- Network replication is not implemented or validated.
Version 0.1.0 2026-08-13
UE 5.8 In development — not yet published
Current pre-release state of the framework. The plugin is marked as a beta version in its
descriptor and has not been published on Fab yet.
Added
- Runtime destruction core:
USDFDestructibleComponent, USDFDestructionProfile,
USDFDestructionSubsystem, FSDFDestructionHit and FSDFDestructionResult.
- Health, minimum damage threshold, damage multipliers and a destruction power gate that is
independent from conventional damage.
- Two presentation backends:
GeometryCollection and SwapAndScatter, with an automatic fallback
when a Chaos representation cannot be activated.
- World-level budgets: active Chaos representations, destruction events per frame, built-in audio
events per frame and built-in VFX events per frame, plus read-only diagnostics.
- Melee, collision and projectile hit sender components, each with duplicate suppression and
explicit delivery results.
- Radial destruction with constant and linear falloff and deterministic per-target seeds.
- Opt-in bounded chain propagation with a visited set, depth cap and complete chain diagnostics.
- Audio and Niagara presentation with deterministic weighted variation and middleware-neutral
request delegates.
- Damage stages, impact decals with a per-object limit and non-breaking hit reactions.
- Generic loot behaviour:
Disabled, ExternalOnly, SpawnLoot and RevealExistingActor.
- Editor authoring pipeline: Static Mesh preflight, deterministic Voronoi fracture, interior material
assignment, runtime profile generation and an optional destructible Actor Blueprint.
- Wood, Ceramic, Stone and Generic authoring presets with Low, Medium, High and Custom densities.
- Manifest-based ownership with package fingerprints, drift detection, protected regeneration,
durable backups and rollback.
- Batch Generate, Batch Validate and Batch Regenerate with preflight, sequential execution,
cancellation between assets and CSV reporting.
Changed
- Authoring manifest schema raised to version 3, adding ownership fingerprints for the source mesh,
preset, interior material and every generated output. Manifests created before that revision
require an explicit adoption step before regeneration is allowed.
Fixed
- Nothing to report. This is the first tracked pre-release.
Deprecated
Known issues
- Batch processing is sequential and synchronous. One expensive Geometry Collection fracture can
briefly occupy the editor thread until that asset completes or rolls back.
- One shared preset and option set is applied per batch. Mixed material families should be processed
as separate batches.
- Batch Generate supports the automatic Geometry Collection path only. Automatic extraction of
bespoke
SwapAndScatter fragment meshes is not implemented.
- Ownership fingerprints are package-level. They prove a saved package changed, but do not provide a
property-by-property semantic diff.
- Legacy manifests require explicit adoption; ownership is never guessed.
- Chaos simulation is not claimed to be bitwise deterministic.
- Unreal Engine 5.7 is targeted for the public release but has not been through the regression suite
yet; only 5.8 is validated in this version.
- Network replication is not implemented or validated. See the
FAQ.
World State Reset Framework
Version 1.0.0 2026-09-05
UE 5.7, 5.8 Published on Fab
First non-beta version. The plugin descriptor, save metadata and changelog all read 1.0.0. This
version ships the complete Rest Site / Checkpoint module and closes a full independent code audit —
every audit finding was fixed, independently verified against the current source, and locked by
automated regression tests.
Added — Rest Site / Checkpoint module
- Rest Sites with persistent
Undiscovered -> Discovered -> Activated state, manual/proximity
Discovery, manual/interaction/proximity Activation, and central Current Rest Site / Last
Activated Rest Site events.
- The authoritative Activation coordinator with optional Activation presentation, Rest On First
Activation, Save On Activation, Open Menu After Activation, and duplicate-save coalescing.
- Reusable Rest Site Profiles with live linking, effective-configuration export, preloading, and
seven explicit Local Override groups: Actions, UI Widget Classes, Audio, Activation Presentation,
Rest Presentation, Fast Travel Presentation, and Site Behavior.
- Native Rest, Fast Travel, and Save actions plus arbitrary project Custom Actions, localizable
descriptions, deterministic order, Hidden/Disabled behavior, Gameplay Tag Queries without a GAS
requirement, Project Bridge eligibility, execution context, re-entry protection, and event-driven
menu refresh.
- Default Rest Menu and Fast Travel Widget Blueprints, neutral duplication templates, replaceable
destination rows, device-aware prompts, configurable UI audio, and official Widget Blueprint
fallback.
- Same-world and cross-world Fast Travel with authoritative eligibility, Current-site rejection,
pure project preflight, optional Prepare/Commit/Cancel cost hooks, presentation requests, World
Identity validation, streaming waits, separate arrival placement, and exact-once results.
- Independent Player Respawn Point and Fast Travel Arrival Point transforms, Respawn at
Last Activated Rest Site or a specific Rest Site, Player Death reset semantics, Manual Continue
alias, and project fallback hooks.
- Explicit Thumbnail Capture View, scene-based Capture Thumbnail, automatic framing,
manual-image protection, configurable 1024 x 576 defaults, and Fast Travel thumbnail fallbacks.
- Rest Site SaveGame integration with Disabled, Project Save, WSRF Quick Save, and Both modes;
one-capture payload reuse; multi-world envelopes; Quick Save / Quick Load; and same-/cross-world
return to the saved Last Activated Rest Site without Player Death semantics.
- Activation, Rest, Fast Travel, Respawn, Quick Load, save, action, UI-class, arrival-transform,
Profile, and effective-configuration Health Check diagnostics.
- Optional audio, VFX, Player Montage, Level Sequence, message, and screen-transition presentation
hooks without making any presentation asset mandatory.
Changed — audit hardening
- Streaming and World Partition identity hardened: deferred restores are claimed only by the
owning runtime cell, destroyed Persistent/One Shot Actors stay destroyed across re-streaming,
live Persistent state survives stream-out/stream-in, and embedded Level Instance copies of the
same source Actor keep distinct effective identities.
- Operation lifecycle hardened: a project map change during a latent operation now fails the
operation cleanly instead of blocking the subsystem, completion events fire after the subsystem
returns to Idle so a handler can immediately start the next operation, and prepared Fast Travel
costs follow an exact-once Prepare/Commit/Cancel ownership contract.
- A restored or streamed-in Activated Rest Site re-enables its activation effect actors without
replaying activation gameplay, sounds or menus.
- Custom Fast Travel Widget Blueprints keep their authored destination row class; configuration
overrides and the official fallback resolve in a strict, documented precedence.
- An unscoped full-world reset now requires an explicit opt-in flag; non-fatal restore diagnostics
moved to a dedicated warnings channel.
API
- Added
Migrate WSRF Snapshot To Current, a ticket-returning Fast Travel UI request, a detailed
Profile-copy API with error output, and live Blueprint setters for built-in interaction,
interaction radius and activation effect actors. All additions are additive; the previous APIs
remain available as compatibly deprecated wrappers.
- No save schema, Stable ID, Effective ID or persistent payload format changed. Snapshot schema 3
remains current with automatic migration of schema 1 and 2 data.
Version 0.6.0 2026-08-30
UE 5.7, 5.8 In development — not yet published
Current pre-release state of the framework. The plugin is marked as a beta version in its
descriptor and has not been published on Fab yet.
Added
- World-state subsystem (
UWSRFWorldStateSubsystem) with a deterministic, dependency-aware reset
pipeline: prepare, remove runtime Actors, respawn missing Actors, restore automatic state, restore
attachments, restore custom state, report.
- FIFO nested resets with queued-result correlation, the pure Was WSRF Reset Successful node, a
64-operation queue-drain safety guard and Game Thread validation of reset and registration calls.
UWSRFStateComponent with automatically generated Stable IDs, region membership and reset policy.
- Seven behaviour presets: Enemy, Boss / Elite for permanent defeat, Breakable Prop, Permanent
Shortcut, Unique Pickup, Trap and Runtime Actor, with a preset-first Details panel ordered Quick
Setup, Behavior, Advanced.
- Gameplay Tag regions with optional child-region matching, per-region indexing and editor tag
pickers filtered to the WSRF roots.
- Gameplay Tag reset reasons: Rest, Player Death, Checkpoint, Region, Encounter Restart, Manual.
- Four-axis
FWSRFResetPolicy: reset triggers, persistence mode, restore strategy and runtime-Actor
behaviour.
- Exact-once respawn of genuinely destroyed placed Actors into their original source container, with
the Stable ID preserved.
- Automatic layered component capture for the Scene, Primitive, Static Mesh, Skeletal Mesh, Child
Actor and Audio families, plus an optional Niagara adapter module — alongside Actor transform,
tags, hidden/collision/tick state, attachment metadata and supported Instance Editable properties.
- Versioned Custom State:
UWSRFStateWriter, UWSRFStateReader and the IWSRFResettable
capture/prepare/restore/completed callbacks.
- Stable-ID dependency restoration with attachment-aware topological ordering, reset priority and a
deterministic Stable ID tie-break.
- World State Inspector: statistics, search, filters, validation, Focus Actor, Copy Stable ID,
transactional Assign Missing IDs and Regenerate Selected ID, PIE reset preview and viewport debug
visualization.
- Per-Actor Actor Health Check and one-click right-click setup on level Actors and Actor
Blueprints, batched in a single Undo transaction.
- World Partition support: cookable World Manifest with explicit Build and Validate actions,
effective identity (Stable ID plus container context), StreamedOut classification, Pending
Restore for unloaded or never-loaded Actors, and orphaned-entry detection at validation.
- Level Instances, Data Layers and streamed sublevel support, including independent identities for
repeated Level Instances.
- Persistence adapter: pure-data
FWSRFWorldStateSnapshot export/import at schema 3, automatic
migration of WSRF schema-1 and schema-2 saves, compact Custom State storage, deferred restore for
unloaded content, explicit compatibility checks, optional UWSRFSnapshotMigrator for
project-owned legacy formats, and structured Applied / Deferred / Skipped / Missing / Failed /
VersionMismatch / ConfigurationMismatch reporting.
- Playable demo map
/WorldStateResetFramework/Demo/Maps/L_WSRF_Demo with authored environment
content, a Goblin/Boss/Orc enemy trio (including petrification restored by automatic capture) and
a small demo SaveGame example, in a removable DeveloperTool module.
- Real
SaveGameToMemory persistence benchmarks for 1,000 and 10,000 records, including a
typical-enemy profile.
Changed
- The State Component Details panel was reorganised into Quick Setup, Behavior and collapsed Advanced
sections with plain-language preset descriptions.
- The Inspector gained a green/orange/red World State Status summary.
- Generated World Partition cell identities were normalised so never-loaded manifest records rebind
exactly on first load.
- Persistence export no longer measures serialized size unconditionally; the opt-in Measure
Serialized Size pin replaces it, reducing export time by 94–96% on the measured profiles.
- Niagara moved out of the core Runtime into an optional adapter module; the Demo module became a
removable
DeveloperTool module.
Fixed
- A missing
UStaticMesh definition exposed by the strict-include build in the demo module.
- The Runtime Actor preset initially omitted the Rest trigger.
- Transient runtime Stable-ID generation was logged too aggressively.
- UE 5.8 deprecated the Data Layer API used on UE 5.7; a version-correct compatibility branch was
added so both engines build cleanly.
- Cached importer identifiers retaining a workstation path in the Checkpoint Shrine textures were
sanitised at the binary asset level.
- A 19-item correction pass (completed 2026-08-30) hardened one-shot semantics, callback and record
lifetime, queued-reset correlation, capture timing, module structure, demo content, export
performance and import diagnostics.
Deprecated
Known issues
- Network replication is not implemented or validated.
- SaveGame serialization dominates persistence cost at scale: the worst-case 10,000-record fixture
is about 333 MB uncompressed and 2.3–2.6 s each way on the test machine; measured compression
reduced payload size by roughly 75–85%. Capture at an explicit save boundary.
- Automatic capture excludes object graphs, arbitrary
UObject properties, arrays, maps, sets and
component construction data by design.
- No dedicated customer-facing World Partition showcase map ships yet.
- Final seller metadata and a real-world crash test remain outstanding before a Release Candidate.