Reference
Public C++ and Blueprint entry points, Data Assets, delegates, rejection reasons, defaults, and diagnostics.
- Product
- Footstep Studio
- Version
- Documentation 2.11.2
- Content
- 13 chapters
01
Blueprint trigger functions
Focused entry points reduce invalid combinations; the general request remains available for advanced graphs.
| Function | Required source | Contract |
|---|---|---|
| TriggerFootstep / Trigger Footstep | FootstepTriggerRequest | Advanced request including optional one-contact footwear override |
| TriggerFootstepFromSocket / Trigger Footstep From Socket | Skeletal Mesh Component and left/right/custom contact | Uses profile sockets or exact custom socket; MissingSocket never traces from component origin |
| TriggerFootstepAtLocation / Trigger Footstep at Location | World location and optional Scene Component | Supports non-skeletal and non-Character owners |
| TriggerFootstepFromHit / Trigger Footstep From Hit | Valid blocking FHitResult and optional Scene Component | Performs no plugin ground trace; accepted decals can still perform separate bounded placement queries |
- 1
Socket Step
Pass the Skeletal Mesh that owns the socket, choose Left Foot or Right Foot, create a FootstepEventKey of Step, and pass normalized Strength 01. Custom Socket uses the exact non-empty Custom Socket name.
- 2
World-location contact
Pass an optional contextual Scene Component, the computed world contact, a built-in or named Custom FootstepEventKey, and normalized strength. This route still performs the configured plugin ground query.
- 3
Existing-hit landing
From On Landed, preserve a valid blocking hit, create a Land event, derive normalized strength from project-owned pre-impact tuning, and call Trigger Footstep From Hit without a duplicate Land notify.
- 4
Advanced request
Populate Source Component, Contact, Custom Socket when required, Event, Strength 01, optional World Location Override, and optional one-contact Footwear Profile Override, then inspect context and reason.
02
Blueprint control and lifecycle functions
Profile, footwear, enablement, transfer state, and diagnostic controls are explicit.
| Function | Contract |
|---|---|
| SetFootstepProfile / Set Footstep Profile; GetFootstepProfile / Get Footstep Profile | Assigns or reads the active Footstep Profile; replacement resets profile-owned state as required |
| SetFootwearProfileOverride / Set Footwear Profile Override; GetFootwearProfileOverride / Get Footwear Profile Override | Assigns or reads the component override without rewriting an acquired trail snapshot |
| SetFootwearProviderOverride / Set Footwear Provider Override; GetFootwearProviderOverride / Get Footwear Provider Override | Assigns or reads the explicit provider object; null restores deterministic discovery |
| RefreshFootwearProvider / Refresh Footwear Provider | Invalidates cached provider identity or cached no-provider discovery after topology changes |
| SetFootstepsEnabled / Set Footsteps Enabled; AreFootstepsEnabled / Are Footsteps Enabled | Controls request processing without removing the component |
| ClearSurfaceTransfers / Clear Surface Transfers | Removes all shared and per-contact local residue state |
| HasActiveSurfaceTransfer / Has Active Surface Transfer | Reports whether a non-expired transfer state is retained |
| GetActiveSurfaceTransferCount / Get Active Surface Transfer Count | Returns the retained non-expired state count |
| GetRuntimeStats / Get Runtime Stats; ResetRuntimeStats / Reset Runtime Stats | Reads or resets scoped component diagnostics when collection is enabled |
03
Surface Impression receiver functions
The included receiver exposes explicit binding, mapping, reset, and occupancy controls; field creation remains lazy.
| Function | Contract |
|---|---|
| BindPrimitiveComponent / Bind Primitive Component | Binds one rendered primitive and creates ownership-safe dynamic material instances for selected slots |
| BindConfiguredOwnerPrimitives / Bind Configured Owner Primitives | Applies the opt-in owner and component-tag binding policy |
| UnbindAllPrimitiveComponents / Unbind All Primitive Components | Restores only slots that still contain the receiver-owned dynamic instance |
| GetOrCreateInteractionTexture / Get Or Create Interaction Texture | Returns or lazily creates the receiver-owned linear RGBA8 field |
| GetWorldToUVRow0 / Get World To UV Row 0 | Returns the world-to-field U mapping row written to bound materials |
| GetWorldToUVRow1 / Get World To UV Row 1 | Returns the world-to-field V mapping row written to bound materials |
| RefreshMaterialBindings / Refresh Material Bindings | Reapplies the interaction texture and mapping contract |
| ResetImpressions / Reset Impressions | Clears retained stamps and field coverage at a project-owned reset boundary |
| GetActiveStampCount / Get Active Stamp Count | Returns bounded retained-stamp occupancy |
| Advanced subsystem or interface call | Contract |
|---|---|
| RegisterReceiver / UnregisterReceiver — Register Receiver / Unregister Receiver | Adds or removes a custom FootstepSurfaceImpressionReceiver from the non-ticking world registry |
| HasReceiverForRequest / Has Receiver For Request | Reports whether any registered receiver can accept the immutable request |
| DispatchSurfaceImpression / Dispatch Surface Impression | Submits the request to all matching registered receivers |
| GetRegisteredReceiverCount / Get Registered Receiver Count | Returns registry occupancy for diagnostics |
| CanReceiveSurfaceImpression / Can Receive Surface Impression | Custom receiver interface admission check for channel, location, normal, and owned bounds |
| SubmitSurfaceImpression / Submit Surface Impression | Custom receiver interface submission; implementations must retain bounded local state |
04
Public provider and receiver interfaces
Four extension seams integrate equipment, custom decal placement, source-presentation ownership, and project-owned impression backends without transferring gameplay authority.
| Interface | Implement when | Critical contract |
|---|---|---|
| FootstepFootwearProvider.ResolveFootstepFootwearProfile / Resolve Footstep Footwear Profile | Footwear must be derived per eligible contact | Return an already loaded profile; provider identity is cached but its result is queried per eligible contact. Native implementations override ResolveFootstepFootwearProfile_Implementation; Blueprint implements the corresponding event. |
| FootstepDecalProjectionAnchorProvider.ResolveFootstepDecalProjectionAnchor / Resolve Footstep Decal Projection Anchor | A receiver's visible placement surface diverges from its complex collision | Component provider is queried before Actor provider; return Resolved with a finite point inside the envelope, Not Handled, Reject, or Invalid |
| FootstepSourceExclusionProvider.GetFootstepSourceExclusionPrimitives / Get Footstep Source Exclusion Primitives | A character presentation spans actors or same-actor mesh ownership is too broad | The union of provider results replaces automatic same-actor mesh discovery; source is mandatory, receiver is removed, and invalid output fails closed |
| FootstepSurfaceImpressionReceiver | The project owns an RVT, atlas, landscape, or other bounded backend | Register with the world subsystem, accept only owned channels and locations, bound retained state, and never synchronously load or scan the world during submission |
05
C++ module and public headers
Consumers depend only on the FootstepSystem runtime module and the public types they use.
PublicDependencyModuleNames.AddRange(new[]
{
"Core",
"CoreUObject",
"Engine",
"FootstepSystem"
});#include "Movement/Footsteps/FootstepMaterialContract.h"
#include "Movement/Footsteps/UFootstepComponent.h"
#include "Movement/Footsteps/UFootstepFootwearProfile.h"
#include "Movement/Footsteps/UFootstepFootwearProvider.h"
#include "Movement/Footsteps/UFootstepProfile.h"
#include "Movement/Footsteps/UFootstepDecalProjectionAnchorProvider.h"
#include "Movement/Footsteps/UFootstepSourceExclusionProvider.h"
#include "Movement/Footsteps/UFootstepSurfaceImpressionReceiver.h"
#include "Movement/Footsteps/UFootstepSurfaceImpressionReceiverComponent.h"
#include "Movement/Footsteps/UFootstepSurfaceImpressionSubsystem.h"
#include "Movement/Footsteps/UFootstepWorldBudgetSubsystem.h"06
C++ trigger and equipment examples
C++ receives the same resolved context and stable rejection reason as Blueprint.
FFootstepEventKey Event;
Event.Type = EFootstepEventType::Step;
FFootstepResolvedContext Context;
EFootstepRejectReason Reason = EFootstepRejectReason::None;
const bool bAccepted = Footsteps.TriggerFootstepFromSocket(
&Mesh, EFootstepContactType::LeftFoot, NAME_None, Event,
FMath::Clamp(Strength01, 0.0f, 1.0f), Context, Reason);FFootstepEventKey Event;
Event.Type = EFootstepEventType::Pivot;
FFootstepResolvedContext Context;
EFootstepRejectReason Reason = EFootstepRejectReason::None;
const bool bAccepted = Footsteps.TriggerFootstepAtLocation(
&SourceComponent, ContactLocation, Event, 1.0f, Context, Reason);FFootstepEventKey Event;
Event.Type = EFootstepEventType::Land;
FFootstepResolvedContext Context;
EFootstepRejectReason Reason = EFootstepRejectReason::None;
const bool bAccepted = Footsteps.TriggerFootstepFromHit(
GroundHit, &SourceComponent, Event, Strength01, Context, Reason);FFootstepTriggerRequest Request;
Request.SourceComponent = &SourceComponent;
Request.Contact = EFootstepContactType::CustomSocket;
Request.CustomSocket = TEXT("front_paw_l");
Request.Event.Type = EFootstepEventType::Custom;
Request.Event.CustomName = TEXT("Claw");
Request.Strength01 = 0.8f;
Request.bUseWorldLocationOverride = true;
Request.WorldLocationOverride = ContactLocation;
Request.FootwearProfileOverride = ContactProfile;
FFootstepResolvedContext Context;
EFootstepRejectReason Reason = EFootstepRejectReason::None;
const bool bAccepted = Footsteps.TriggerFootstep(Request, Context, Reason);These are separate function-body examples, not one concatenated program. Footsteps is a UFootstepComponent reference, Mesh a USkeletalMeshComponent reference, SourceComponent a USceneComponent reference, ContactLocation an FVector, GroundHit a valid blocking FHitResult, Strength01 a float, and ContactProfile an already loaded UFootstepFootwearProfile pointer. Obtain these from your owning Actor or integration function. TriggerFootstepFromHit performs no plugin ground trace, although accepted decals may perform separate bounded placement queries. A Custom event requires a non-empty name. The world-location override bypasses socket lookup; without it, the socket path requires a real socket on the supplied skeletal mesh. Inspect the returned reason during integration.
07
Data Asset responsibilities
Three asset families separate runtime policy, surface payloads, and optional equipment presentation.
| Asset | Owns | Does not own |
|---|---|---|
| FootstepProfile | Sockets, trace, culling, rate, local budgets, capacities, Surface Data reference, default footwear | Surface payload resources or project collision setup |
| FootstepSurfaceData | Exact materials, surfaces, events, immediate channels, immediate footwear binding, Surface Transfer material, projection placement, receiver filter, and policy | Equipment selection or authoritative gameplay |
| FootstepFootwearProfile | Imprint texture stages, mirror flags, optional audio modulation and overlay | Ground surface, residue, transfer material, projection, lifetime, or budgets |
- Validate every project-owned copy before production use.
- Enabled weighted channels and footwear texture stages require usable non-null positive-weight resources; transfer material stages require a valid Deferred Decal material.
- Duplicate identities and invalid ranges fail with property-specific Data Validation messages.
08
Decal material parameter reference
The two decal masters share one Color, RSM, footwear, filtering, and source-exclusion contract; only the ColorNormalRSM master writes DBuffer Normal.
| Parameter and type | Master default | Owner and behavior |
|---|---|---|
| FSP_ImprintTexture — Texture2D, Color | WhiteSquareTexture | Project or footwear runtime; Color mask sampled with canonical mirrored UV |
| FSP_ImprintNormalTexture — Texture2D, Normal | T_Default_Normal | Project; ColorNormalRSM only, tangent Normal sampler |
| FSP_ImprintORMTexture — Texture2D, Masks | DefaultDiffuse_TC_Masks | Project; Roughness from green and Metallic from blue; AO red unused |
| FSP_ImprintTint — Vector | (0.05, 0.05, 0.05, 1) | Project linear-color multiplier |
| FSP_ImprintOpacity — Scalar | 1.0 | Project base-opacity multiplier in the 0–1 range |
| FSP_ImprintRoughness | 0.2 | Project scalar fallback while packed ORM is disabled |
| FSP_ImprintSpecular | 0.5 | Project scalar in both packed and scalar modes |
| FSP_ImprintMetallic | 0.0 | Project scalar fallback while packed ORM is disabled |
| FSP_ImprintMirrorU | 0.0 | Project or footwear runtime Boolean; mirrors U before Color, Normal, and ORM sampling |
| FSP_ImprintUseRedChannel | 0.0 | Project Boolean; chooses mask red instead of alpha |
| FSP_ImprintUseTextureColor | 0.0 | Project Boolean; multiplies texture RGB into tint |
| FSP_ImprintNormalStrength | 1.0 | Project; ColorNormalRSM only, blends flat to sampled normal but never disables Normal writes |
| FSP_ImprintUsePackedORM | 0.0 | Project Boolean; selects ORM Roughness/Metallic instead of scalar fallbacks |
| FSP_ImprintIntensity | 1.0 | Surface Transfer runtime when bound; multiplies authored opacity without renaming it |
| FSP_ReceiverSurfaceNormalWS | (0, 0, 1, 0) | Receiver-filter runtime; do not author |
| FSP_ReceiverMinimumNormalDot | -1.0 | Receiver-filter runtime; -1 is the no-op material default, payload default is 0.75 when enabled |
| FSP_EnableSourceExclusion | 0.0 | Surface Transfer runtime; do not author |
| FSP_SourceStencil | 0.0 | Surface Transfer runtime non-zero identity; do not author |
| FSP_SourceDepthToleranceCm | 0.25 | Surface Transfer runtime, centimeters in the supported 0–5 range; do not author |
| Starter decal instance | Overrides from master |
|---|---|
| MI_FSP_Decal_ColorRSM_Immediate_Template | Tint (0.035, 0.035, 0.035, 1); Opacity 0.85; Roughness 0.35 |
| MI_FSP_Decal_ColorRSM_SurfaceTransfer_Template | Tint (0.018, 0.025, 0.03, 1); Opacity 0.9; Roughness 0.12; Intensity 1.0 |
| MI_FSP_Decal_ColorNormalRSM_Immediate_Template | Tint (0.035, 0.035, 0.035, 1); Opacity 0.85; Roughness 0.35 |
| MI_FSP_Decal_ColorNormalRSM_SurfaceTransfer_Template | Tint (0.018, 0.025, 0.03, 1); Opacity 0.9; Roughness 0.12; Intensity 1.0 |
09
Surface Impression material parameter reference
Project-authored surface response stays separate from the three receiver-owned field bindings.
| Parameter and type | Master default | Owner and behavior |
|---|---|---|
| FSP_SurfaceBaseColorTexture — Texture2D, Color | WhiteSquareTexture | Project Base Color texture |
| FSP_SurfaceNormalTexture — Texture2D, Normal | T_Default_Normal | Project tangent Normal texture |
| FSP_SurfaceORMTexture — Texture2D, Color | WhiteSquareTexture | Project packed AO, Roughness, Metallic texture; this template intentionally uses Color sampling |
| FSP_SurfaceBaseColorTint | (0.35, 0.35, 0.35, 1) | Project linear multiplier |
| FSP_SurfaceTiling | 1.0 | Project UV0 scale, 0.01–100 |
| FSP_SurfaceNormalStrength | 1.0 | Project surface-normal strength, 0–1 |
| FSP_SurfaceUsePackedORM | 0.0 | Project Boolean selecting packed ORM |
| FSP_SurfaceAmbientOcclusion | 1.0 | Project scalar fallback while packed ORM is disabled |
| FSP_SurfaceRoughness | 0.6 | Project scalar fallback while packed ORM is disabled |
| FSP_SurfaceMetallic | 0.0 | Project scalar fallback while packed ORM is disabled |
| FSP_ImpressionStrength | 1.0 | Project coverage multiplier, 0–4; final coverage saturates |
| FSP_ImpressionTint | (0.55, 0.55, 0.55, 1) | Project linear multiplier |
| FSP_ImpressionNormalFlattening | 0.75 | Project response, 0–1 |
| FSP_ImpressionRoughness | 0.45 | Project response, 0–1 |
| FSP_ImpressionDepthCm | 2.0 | Project visual-only WPO depth, 0–10 cm |
| FSP_SurfaceImpressionTexture | Black | Receiver runtime linear coverage texture; do not author |
| FSP_SurfaceImpressionWorldToUV0 | (1, 0, 0, 0) | Receiver runtime world-to-field U row; do not author |
| FSP_SurfaceImpressionWorldToUV1 | (0, 1, 0, 0) | Receiver runtime world-to-field V row; do not author |
| Starter instance | Overrides from master |
|---|---|
| MI_FSP_SurfaceImpression_Template | Base Color Tint (0.32, 0.30, 0.27, 1); Impression Tint (0.58, 0.55, 0.50, 1); Impression Depth 2 cm; Impression Strength 1.0 |
10
Delegates
Resolved, spawned, and rejected events deliberately represent different points in the presentation pipeline.
| Delegate | Timing | Payload |
|---|---|---|
| On Footstep Resolved | Valid hit and accepted immediate or transfer route, before channel spawn | Resolved context |
| On Footstep Spawned | At least one configured channel emitted | Resolved context |
| On Footstep Rejected | A request failed and rejected-event broadcasting is enabled | Original request and stable reason |
11
Stable rejection reasons
The first failed gate produces one stable reason that can be diagnosed without guessing.
| Reason | Meaning |
|---|---|
| None | Request succeeded |
| ComponentDisabled | Component processing is disabled |
| InvalidWorld | The component has no valid World |
| DedicatedServer | Local cosmetic work is suppressed on a dedicated server |
| MissingProfile | No Footstep Profile is assigned |
| MissingSurfaceData | The assigned profile has no Surface Data |
| InvalidSource | The socket path received a null or non-skeletal source |
| MissingSocket | The resolved profile or custom socket is empty or absent |
| CulledBeforeTrace | Listener policy rejected before a ground query |
| RateLimited | The independent contact/event cooldown is active |
| MovementPolicyRejected | A Step is below Min Speed For Step |
| NoGroundHit | The supplied hit is invalid or the line trace missed |
| SurfaceAngleRejected | Reserved stable value; the current line-trace implementation does not emit it |
| NoPayload | No usable immediate channel or eligible transfer route resolved |
| ProbabilityRejected | The immediate payload failed probability and no Surface Transfer route was eligible. Trigger Probability gates immediate channels, not an eligible Surface Transfer route; transfer acquisition and consumption can still proceed when immediate probability fails. |
12
Documented bounds and defaults
Authoring and runtime containers are intentionally bounded; zero has different meanings at different budget layers.
| Field | Default or valid bound | Contract |
|---|---|---|
| Left / Right Foot Socket | foot_l / foot_r | Profile socket defaults; replace when the runtime mesh uses different names |
| Trace Channel | Visibility | Must be blocked by intended ground receivers |
| Trace Up Offset / Down Distance | 15 / 75 cm | Ground segment around the contact location |
| Max Effect Distance | 3000 cm | Listener-distance pre-trace culling |
| Never Cull Locally Controlled Pawn / Cull When No Local Listener | Enabled / Enabled | Local significance defaults; editor authoring playback has its documented listener exception |
| Min Trigger Interval / Min Speed For Step | 0.05 s / 10 cm/s | Independent contact-event cooldown and Step movement admission |
| RateLimitEntryCapacity | 64; valid 8 to 1024 | Contact/event timestamp keys |
| VariantHistoryEntryCapacity | 64; valid 8 to 1024 | Per-channel audio, Niagara, and footwear-audio history capacity |
| Profile channel ceilings | Audio 48, Niagara 32, decal 16, Surface Impression 24 per second | A profile value of 0 disables that channel |
| Local / Remote Volume Multiplier | 1.0 / 0.85 | Profile audio scaling by pawn role |
| Variant Random Seed / Profile Debug | 1337 / Disabled | Per-component variant stream seed and opt-in diagnostic work |
| Niagara Pooling Policy | AutoRelease | Default one-shot pooling policy |
| MaxSurfaceTransferStates | Default 8; valid 1 to 64 | Per-contact retained transfer states |
| Transfer contact routes | Maximum 64 | Unique left, right, or named custom identities |
| Stages per route | Maximum 8 | First threshold 0; later thresholds strictly increase |
| Variants per stage | Maximum 16 | Usable variants require positive finite weights |
| Transfer emission count | Each endpoint 1 to 64 | Inclusive authored range |
| Max Carry Duration Seconds | Default 8.0 | 0.0 disables time expiry |
| Projection Placement | Surface Anchored | Places contact plus Normal Offset at the nearest fully opaque depth slice; projector center is offset 0.75 × Decal Size X along the projection axis |
| Decal Size | 12 / 12 / 12 cm | Half-extents: X projection depth, Y texture-V forward half-length, Z texture-U lateral half-width |
| Decal Enabled / Attach Mode | Disabled / Auto | Enable a valid material payload; Auto attaches to movable hit components |
| Decal Sort Order / Skip Movable | 0 / Disabled | Default rendering priority and movable-receiver policy |
| Decal lifetime | 8 s life, 6 s fade delay, 2 s fade | Life 0 disables the explicit lifespan, but a non-zero Fade Duration still schedules fade and cleanup; disable both lifespan and fade for a persistent decal |
| Decal Random Yaw / Rotation Offset | 180° / zero | Set Random Yaw to zero for directional footprints; Roll is in-plane correction |
| Normal Offset Cm | 0.1 | Small outward face clearance for newly initialized decal payloads |
| Receiver Normal Filter | Disabled; enabled dot default 0.75 | Runtime writes hit normal and minimum dot only when enabled |
| Area Placement | Central Ray | Footprint Area opt-in uses eight deterministic probes |
| Area support defaults | Scale 0.75; supports 2; extrapolation dot 0.5; group dot 0.965; spread 1 cm | Bounded coherent-support thresholds for footprint-area fallback |
| Maximum Automatic Placement Correction Cm | 10 cm | Project-wide bidirectional placement envelope; receiver override may replace it |
| Maximum Placement Trace Iterations / Queries | 8 / 16 | Per-decal-attempt bounded placement work; not a project-wide trace ceiling |
| Unresolved Decal Placement Policy | Reject Decal | Fails closed when placement cannot be certified |
| SourceExclusionStencilValue | 224; valid 1 to 255 | Temporary identity for sources without existing Custom Stencil state |
| SourceExclusionDepthToleranceCm | 0.25 cm; valid 0 to 5 | Material-side depth comparison; keep the smallest diagnosed value |
| World budgets | Audio 256, Niagara 128, decal 64, Surface Impression 128 per second | 0 means unlimited at the world layer |
| Enable World Effect Budgets / Exempt Locally Controlled Pawns | Enabled / Enabled | Local pawns bypass only the world layer; profile ceilings remain active |
| Enable Surface Transfer Source Exclusion | Enabled | Requires the material and renderer prerequisites documented in the guide |
| Surface Transfer field | Default | Contract |
|---|---|---|
| State Scope | Shared | One owner trail; opt into Per Contact for independent retained states |
| Acquisition Event / Emission Event | Step / Step | Event keys must match the contacts that acquire and consume residue |
| Emission Count Range | 3–4 inclusive | Randomized retained contact count |
| Initial / Final Intensity / Falloff Exponent | 1.0 / 0.2 / 1.0 | Per-emission progression; bind FSP_ImprintIntensity to make it visible |
| Decal channel | Disabled with no materials | Enable and populate a project-owned transfer payload before testing |
| Surface Impression payload field | Default | Contract |
|---|---|---|
| Enabled / Receiver Channel | Disabled / None | Enable the channel; None routes to receivers whose channel is also None |
| Stamp Size Cm / Intensity | 20 × 30 cm / 1.0 | Physical width and forward length; intensity multiplies trigger strength |
| Life Seconds / Fade Duration | 0 / 0 | Persistent until reset, receiver teardown, or capacity eviction |
| Random Yaw / Rotation Offset | 0° / 0° | Preserves the accepted contact heading by default |
| Use Footwear Imprint / Fallback Mask Variants | Enabled / Empty | Supply a usable footwear mask or project-owned fallback mask |
| Surface Impression receiver field | Default | Contract |
|---|---|---|
| Receiver Channel | None | None matches None; all spatially matching receivers on the same channel receive the request |
| Field Extent Cm | 500 / 500 cm | Local XY half-size in world centimeters; Actor and Component scale do not change authored coverage |
| Plane Acceptance Distance Cm | 100 cm | Maximum distance from the receiver's local XY plane |
| Minimum Surface Normal Dot | 0.25 | Rejects opposing or strongly divergent faces |
| Resolution | 512; valid 64–2048 | Linear RGBA8 interaction field |
| Max Active Stamps | 128 | Oldest-first bounded eviction |
| Finite Stamp Update Interval | 0.05 s; valid 0.016–1 | Receiver ticks at this interval while any finite-lifetime stamp remains active |
| Auto Bind Owner Primitives | Disabled | Explicit Bind Primitive Component is the safe default |
- At the profile channel layer, a maximum of 0 disables that channel's emissions.
- Lower retained capacities forget old presentation history sooner but do not invalidate a contact.
- Runtime clamps malformed cooked capacities defensively; valid authored assets must pass Data Validation instead of relying on fallback.
13
Runtime diagnostics
Opt-in counters distinguish admission, ground-query, spawn, transfer, footwear, and budget behavior.
| API or setting | Use |
|---|---|
| Collect Runtime Stats | Enables per-component counters and accumulated game-thread request time |
| Get Runtime Stats | Reads trigger, accepted, rejected, trace, spawn, transfer, footwear, budget, history, and eviction counters |
| Reset Runtime Stats | Clears the scoped component capture |
| GetBudgetStats / Get Budget Stats | Reads world audio, Niagara, decal, and Surface Impression admissions, rejections, and local-pawn bypasses |
| ResetBudgetStats / Reset Budget Stats | Clears the world budget capture |
| Log Rejected Requests | Produces per-request diagnostic logs; keep disabled outside diagnosis |
- Compare Accepted and Spawned when a route resolves but no channel appears.
- Compare Surface Transfer acquisition, consumption, emission, expiration, and clear counters.
- Compare footwear overlay emissions with surface audio emissions before justifying an extra voice.
- Reset counters between capture phases and retain the profile, data assets, engine version, and minimal logs for support.