Blueprint API

Every Blueprint-exposed class, function, property, delegate, structure and enumeration of World State Reset Framework, taken from the shipped public headers.

Generated from the public headers of the WorldStateResetFrameworkRuntime module. Names match the code exactly; Blueprint display names are shown where the code defines one.

Editor tooling is not part of this API

The Inspector, the validator and the World Manifest builder live in WorldStateResetFrameworkEditor as C++ services. They are not exposed as Blueprint nodes.

UWSRFWorldStateSubsystem

UWorldSubsystem. Retrieve it with Get World Subsystem and the WSRF World State Subsystem class.

Registration

FunctionKindSignature
RegisterActorCallable, display name Register Actor(AActor* Actor, FWSRFRegistrationOptions Options) -> FWSRFRegistrationResult
UnregisterActorCallable(AActor* Actor, bool bForgetSnapshot = true) -> bool
RecaptureInitialStateCallable(AActor* Actor) -> bool
IsActorRegisteredPure(AActor* Actor) -> bool
GetRegisteredActorCountPure() -> int32

Reset

FunctionKindSignature
RequestResetCallable(FWSRFResetRequest Request) -> FWSRFResetReport
ResetWorldRegionCallable(FGameplayTag Region, FGameplayTag Reason, UObject* Initiator = nullptr, bool bIncludeChildRegions = true) -> FWSRFResetReport
ResetWorldRegionInContextCallable(FGameplayTag Region, FGameplayTag Reason, const AActor* ContextActor, UObject* Initiator = nullptr, bool bIncludeChildRegions = true) -> FWSRFResetReport
GetResetOperationStatePure() -> EWSRFResetOperationState

Reset requests and direct registration are Game Thread only; an off-thread call is rejected with an explicit error report or result. Region inputs use a Gameplay Tag picker filtered to WSRF.Region, and reasons to WSRF.Reset — editor filters only, existing serialized tags outside those roots remain readable and functional.

Queued resets

A reset requested inside an active reset callback enters a FIFO. The immediate return is a queued placeholder — bWasQueued true, bWasExecuted false — whose OperationId is retained by the eventual completed report. Match that ID in OnWorldResetCompleted or OnRegionResetCompleted and judge the final report with Was WSRF Reset Successful; do not treat Failed == 0 on the placeholder as success. One queue drain executes at most 64 queued resets — beyond that, remaining entries receive explicit aborted reports rather than blocking the Game Thread forever.

Lookup

FunctionKindSignature
FindLoadedActorPure(FWSRFActorId ActorId) -> AActor*
FindLoadedActorInContextPure(FWSRFActorId ActorId, const AActor* ContextActor) -> AActor*
FindLoadedActorByEffectiveIdPure(FWSRFEffectiveActorId EffectiveActorId) -> AActor*
GetActorPresencePure(FWSRFActorId ActorId, out bool bFound) -> EWSRFActorPresence

Persistence

FunctionKindSignature
CapturePersistentWorldStateCallable, display name Capture WSRF Persistent State(out FWSRFWorldStateSnapshot Snapshot, bool bMeasureSerializedSize = false) -> FWSRFPersistenceExportReport
ApplyPersistentWorldStateCallable, display name Apply WSRF Persistent State(FWSRFWorldStateSnapshot Snapshot) -> FWSRFPersistenceImportReport
ApplyPersistentWorldStateWithMigratorCallable, advanced(FWSRFWorldStateSnapshot Snapshot, UWSRFSnapshotMigrator* Migrator) -> FWSRFPersistenceImportReport

The advanced Measure Serialized Size pin is disabled by default, so normal capture does not serialize a second temporary representation just for profiling. With the pin disabled, bSerializedSizeMeasured is false and both approximate byte fields are zero — zero means not measured, not an empty snapshot. ApplyPersistentWorldState automatically migrates WSRF schema-1 and schema-2 snapshots to schema 3; the migrator node stays strict for project-owned legacy formats.

Profiling

FunctionKindSignature
GetApproximateSnapshotMemoryBytesPure() -> int64
GetManifestMemoryBytesPure() -> int64
GetApproximatePersistentSnapshotMemoryBytesPure, advanced(FWSRFWorldStateSnapshot Snapshot) -> int64
GetApproximatePersistentSnapshotSerializedBytesPure, advanced(FWSRFWorldStateSnapshot Snapshot) -> int64

Events

DelegateParameters
OnWorldResetStartedFWSRFResetRequest Request
OnWorldResetCompletedFWSRFResetRequest Request, FWSRFResetReport Report
OnRegionResetStartedFWSRFResetRequest Request
OnRegionResetCompletedFWSRFResetRequest Request, FWSRFResetReport Report
OnActorResetStartedFWSRFActorId ActorId, FWSRFResetRequest Request
OnActorResetCompletedFWSRFActorId ActorId, FWSRFResetRequest Request

Usage

Event: player rested at a checkpoint
  -> Get World Subsystem (WSRF World State Subsystem)
  -> Reset World Region
       Region  = WSRF.Region.Dungeon
       Reason  = WSRF.Reset.Rest
  -> Break FWSRFResetReport
       Restored / Respawned / Removed
       Failed -> log Errors

UWSRFStateComponent

UActorComponent, class group WSRF, Blueprint-spawnable.

FunctionKindSignature
GetStableIdPure() -> FWSRFActorId
IsRegisteredWithWSRFPure() -> bool
RecaptureInitialStateCallable() -> bool
SetResetPolicyCallable(FWSRFResetPolicy InPolicy)
SetRegionMembershipCallable(FGameplayTagContainer InRegions)
ApplyBehaviorPresetCallable, call in editor(EWSRFBehaviorPreset InPreset)

SetResetPolicy changes the current session immediately but does not change authored defaults, and an active reset finishes with the policy selected at its start.

PropertyAccessType
BehaviorPresetEditable, read-only in BlueprintEWSRFBehaviorPreset
RegionsEditableFGameplayTagContainer
ResetPolicyEditableFWSRFResetPolicy
OriginEditable, advancedEWSRFActorOrigin
CaptureTimingEditable, advancedEWSRFInitialCaptureTiming
ResetPriorityEditable, advancedint32
StableGuidVisible per instance, read-onlyFGuid
DelegateParameters
OnOwnerResetStartedFWSRFResetRequest Request
OnOwnerResetCompletedFWSRFResetRequest Request

IWSRFResettable

Blueprint-implementable interface. All four are BlueprintNativeEvent and BlueprintCallable:

EventDisplay nameSignature
WSRFCaptureCustomStateWSRF Capture Custom State(UWSRFStateWriter* Writer)
WSRFPrepareForResetWSRF Prepare For Reset(FWSRFResetRequest Request)
WSRFRestoreCustomStateWSRF Restore Custom State(UWSRFStateReader* Reader)
WSRFResetCompletedWSRF Reset Completed(FWSRFResetRequest Request)

UWSRFStateWriter

FunctionKindSignature
SetVersionCallable(int32 InVersion)
GetVersionPure() -> int32
WriteBoolCallable(FName Key, bool Value) -> bool
WriteIntegerCallable(FName Key, int64 Value) -> bool
WriteFloatCallable(FName Key, float Value) -> bool
WriteDoubleCallable(FName Key, double Value) -> bool
WriteEnumCallable(FName Key, int64 Value, FName EnumType) -> bool
WriteEnumByteCallable(FName Key, uint8 Value, FName EnumType) -> bool
WriteNameCallable(FName Key, FName Value) -> bool
WriteStringCallable(FName Key, FString Value) -> bool
WriteVectorCallable(FName Key, FVector Value) -> bool
WriteRotatorCallable(FName Key, FRotator Value) -> bool
WriteTransformCallable(FName Key, FTransform Value) -> bool
WriteGameplayTagCallable(FName Key, FGameplayTag Value) -> bool
WriteGameplayTagsCallable(FName Key, FGameplayTagContainer Value) -> bool
WriteStableIdCallable(FName Key, FWSRFActorId Value) -> bool

UWSRFStateReader

FunctionKindSignature
GetVersionPure() -> int32
HasKeyPure(FName Key) -> bool
ReadBoolPure(FName Key, out bool Value) -> bool
ReadIntegerPure(FName Key, out int64 Value) -> bool
ReadFloatPure(FName Key, out float Value) -> bool
ReadDoublePure(FName Key, out double Value) -> bool
ReadEnumPure(FName Key, out int64 Value, out FName EnumType) -> bool
ReadEnumBytePure(FName Key, out uint8 Value, out FName EnumType) -> bool
ReadNamePure(FName Key, out FName Value) -> bool
ReadStringPure(FName Key, out FString Value) -> bool
ReadVectorPure(FName Key, out FVector Value) -> bool
ReadRotatorPure(FName Key, out FRotator Value) -> bool
ReadTransformPure(FName Key, out FTransform Value) -> bool
ReadGameplayTagPure(FName Key, out FGameplayTag Value) -> bool
ReadGameplayTagsPure(FName Key, out FGameplayTagContainer Value) -> bool
ReadStableIdPure(FName Key, out FWSRFActorId Value) -> bool

UWSRFBlueprintLibrary

FunctionKindSignature
WasResetSuccessfulPure, display name Was WSRF Reset Successful(FWSRFResetReport Report) -> bool — true only when bWasExecuted is true and Failed is zero
MigrateSnapshotV1ToV2Callable, advanced, display name Migrate WSRF Snapshot v1 to v2(FWSRFWorldStateSnapshot Source, out FWSRFWorldStateSnapshot Migrated, out FString Message) -> bool — the built-in step, exposed for advanced project migrators; schema 2 is an intermediate format and must not be submitted alone to a schema-3 runtime

UWSRFSnapshotMigrator

Abstract, Blueprintable, EditInlineNew. Derive from it only when your project intentionally supports an additional legacy format of its own — WSRF’s schema-1 and schema-2 saves are migrated automatically by the normal import.

EventKindSignature
MigrateSnapshotBlueprintNativeEvent, Callable(FWSRFWorldStateSnapshot Source, out FWSRFWorldStateSnapshot Migrated, out FString Message) -> bool

UWSRFWorldManifest and UWSRFWorldManifestComponent

UWSRFWorldManifest is a Blueprint-type data asset generated by the editor tooling. Its SchemaVersion, SourceWorld, BuildId, BuiltUtc and Entries are read-only.

UWSRFWorldManifestComponent holds one property, Manifest (TSoftObjectPtr<UWSRFWorldManifest>), and exists so cooking retains the manifest asset.

Rest Site module

WSRF Core uses the World State Subsystem above. Rest Site gameplay uses the WSRF Rest Site Subsystem, a Game Instance Subsystem. Accepted Rest Site operations return an operation ticket immediately and complete through exactly-once events; a rejected request returns a ticket with bAccepted = false and does not emit a Started event. Node names below are the Blueprint display names from the shipped Blueprint API documentation.

Changelog status

The Rest Site / Checkpoint module ships in version 1.0.0. See the release notes.

Handles and state queries

Rest Site handles are pure data. They contain world/container identity and Stable ID data, never an Actor pointer.

  • Get Last Activated Rest Site returns the persistent checkpoint for a local player.
  • Get Current Rest Site returns the transient Current Rest Site, reconstructed from Last Activated Rest Site after load.
  • Get Known Rest Sites, Get Discovered Rest Sites and Get All Discovered Rest Sites enumerate pure-data descriptors.
  • The Rest Site Component exposes Get Rest Site State, Get Rest Site Handle, Get Player Respawn Transform and Get Fast Travel Arrival Transform.

Discovery and Activation

  • Discover Rest Site on the Rest Site Component performs the monotone Undiscovered -> Discovered transition. Automatic proximity discovery calls the same authority.
  • Activate Rest Site on the Rest Site Subsystem is the recommended high-level Blueprint workflow. It validates the site, discovers it first when necessary, activates it, updates Current Rest Site / Last Activated Rest Site, requests presentation, performs optional first Rest and Save, and optionally opens the menu.
  • The component’s own Activate Rest Site node remains the lower-level monotone state primitive for compatibility; normal player workflows should call the subsystem coordinator.

Events: On Rest Site Discovered, On Rest Site Activated, On Rest Site Became Current, On Rest Site State Changed, On Activation Presentation Requested.

Rest

  • Rest At Rest Site starts the authoritative Rest sequence.
  • On Rest Started identifies the accepted operation; On Rest Effects Requested is a notification around the project-effects phase; On Rest Completed returns the final structured result exactly once.
  • Override Apply Rest Effects in the configured Project Bridge to heal, refill, advance time, or apply other project-owned gameplay synchronously.
  • Continue Rest Transition releases a Manual Continue transition barrier.

The normal order is validation, transition, region reset, Project Rest Effects, WSRF persistence capture, optional save, completion. The Rest pipeline is the only authority for those steps.

Death and Respawn

WSRF does not detect death. The project calls Respawn At Last Rest Site for the normal death flow, Respawn At Rest Site for an explicit Activated destination, and Continue Respawn Transition to release a Manual Continue barrier. Bind On Respawn Started and On Respawn Completed. Respawn uses the Player Respawn Point and the Player Death reset reason; it never substitutes the Fast Travel Arrival Point.

Fast Travel

  • Evaluate Fast Travel Destination and Evaluate Fast Travel Destinations return the authoritative, side-effect-free availability result used by UI and execution.
  • Request Fast Travel accepts an explicit Activated destination and supports same-world and cross-world travel; Request Same World Fast Travel explicitly restricts the operation to the current world.
  • Continue Fast Travel Transition releases a Manual Continue barrier.

Project Bridge hooks: Can Fast Travel To Destination is a pure preflight for combat, quest, item, currency or other project rules; Prepare Fast Travel Destination lets the project make required Data Layers available; Prepare Fast Travel Cost, Commit Fast Travel Cost and Cancel Fast Travel Cost implement an optional project-owned reservation lifecycle; Handle Travel Failure provides an explicit project fallback seam — WSRF never falls back to World Origin and never automatically travels back to the source.

Events: On Fast Travel Started, On Fast Travel Presentation Requested, On Fast Travel Completed.

Rest Site Save / Load

  • Capture Rest Site Quick State updates the in-memory multi-world envelope without writing a slot.
  • Build Rest Site Save Data produces a pure-data envelope for a project-owned USaveGame; Apply Rest Site Save Data imports that envelope and can apply the current world’s compatible snapshot.
  • Save Rest Site Quick State writes the configurable WSRF-only Quick Save slot.
  • Load Rest Site Quick State is the synchronous import/apply primitive. It does not open another world or move the player.
  • Load Rest Site Quick State And Return To Checkpoint restores WSRF data, opens the saved destination world when required, and places the player at the saved Last Activated Rest Site’s Player Respawn Point.
  • On Quick Load Started and On Quick Load Completed bracket the accepted high-level Quick Load exactly once.

Override Request Project Save on the Project Bridge when Save Mode is Project Save or Both.

  • Open Rest Site Menu opens the configured Presenter and Widget Blueprint; Close Rest Site Menu closes the current menu session; Refresh Rest Site Menu rebuilds the existing model after project-owned tags or state change — it does not poll.
  • Evaluate Rest Action returns authoritative capability, tag-query, busy-state and project-eligibility results.
  • Execute Rest Action on the subsystem routes native and Custom Action IDs through their authoritative pipelines. Execute Rest Site Action on the default UI facade sends a displayed Action ID through the same subsystem-owned evaluation and execution path; it is not a second action implementation.

Native Action IDs are Rest, FastTravel and Save. FastTravel requires destination selection; direct execution returns Requires Destination Selection instead of selecting a destination arbitrarily.

For Custom Actions, override Execute Custom Rest Action With Context on the Project Bridge. The context includes the Action, the Rest Site handle, the PlayerController, the local-player index and aggregated Gameplay Tags. The legacy Execute Custom Rest Action remains supported through default forwarding. On Custom Rest Action Requested is notification-only — do not execute gameplay from that multicast event.

The action presentation model exposes Icon, Display Name, Description, Action ID, availability, Disabled Reason, visibility, evaluation status and the computed Native / Custom kind. Rest Action Gameplay Tag Queries work without GAS; the project only needs to provide a tag source when its rules require one.

Operation control

  • Is Rest Site Operation In Progress reports the single active Rest Site operation.
  • Get Active Rest Site Operation ID returns its ID.
  • Cancel Rest Site Operation cancels the matching cancellable operation.

Every accepted operation emits its matching Completed event exactly once.

Project-owned systems stay project-owned

WSRF does not implement Health, Inventory, Currency, Equipment, Quests, Leveling, Skills, Spells, Crafting, Combat or Enemy AI. Use the Project Bridge hooks and Custom State to integrate those systems in Blueprint.

Enumerations

EnumValues
EWSRFPersistenceModeResettable, Persistent, OneShot
EWSRFRestoreStrategyAutomatic, AutomaticThenInterface, InterfaceOnly
EWSRFRuntimeActorBehaviorRemoveOnMatchingReset, Preserve, RestoreToCapturedState, Ignore
EWSRFActorOriginAuto, Placed, RuntimeSpawned
EWSRFActorPresenceLoaded, Destroyed, StreamedOut, Removed
EWSRFInitialCaptureTimingDeferredAfterOwnerBeginPlay, ImmediateAtComponentBeginPlay, Manual
EWSRFBehaviorPresetCustom, Enemy, BreakableProp, PersistentShortcut (Permanent Shortcut), UniquePickup, Trap, RuntimeActor, Boss (Boss / Elite)
EWSRFResetOperationStateIdle, Preparing, RemovingRuntimeActors, RespawningMissingActors, RestoringAutomaticState, RestoringAttachments, RestoringCustomState, Finalizing
EWSRFCustomValueTypeBool, Integer, Float, Double, Enum, Name, String, Vector, Rotator, Transform, GameplayTag, GameplayTagContainer, StableId
EWSRFSnapshotCompatibilityCompatible, TooOld, TooNew, WrongWorld, Invalid

Structures

StructurePurpose
FWSRFActorIdA Stable ID: one FGuid
FWSRFContainerIdentityLevel/container identity for a placed Actor
FWSRFEffectiveActorIdStable ID scoped by container context
FWSRFResetPolicyTriggers, persistence mode, restore strategy, runtime behaviour
FWSRFRegistrationOptionsExplicit registration input
FWSRFRegistrationResultExplicit registration answer
FWSRFResetRequestReason, region, initiator, context, child regions, container context
FWSRFResetReportScheduled, restored, respawned, removed, skipped, pending, failed, duration, errors
FWSRFActorStateThe automatic snapshot of one Actor, with explicit section-presence metadata
FWSRFSceneComponentState / FWSRFPrimitiveComponentState / FWSRFStaticMeshComponentState / FWSRFSkeletalMeshComponentState / FWSRFChildActorComponentState / FWSRFAudioComponentStatePer-component-family snapshots — see Automatic component capture
FWSRFAttachmentStateAttachment parent, socket and relative transform
FWSRFInstancePropertyStateOne captured Instance Editable property
FWSRFCustomState / FWSRFCustomStateEntryVersioned typed key/value payload
FWSRFPersistentActorStateOne exported Persistent or One Shot record
FWSRFWorldStateSnapshotThe versioned snapshot stored in your SaveGame
FWSRFPersistenceExportReportExport result
FWSRFPersistenceImportReportImport result, including compatibility
FWSRFWorldManifestEntryOne authored Actor in the World Manifest

Field-by-field descriptions are on the topic pages: the request and report in Regions and reset requests, the policy in Reset policies and persistence, the snapshot in Persistence adapter.

Last updated: 2026-09-04

Type to search titles, sections and keywords.