Skip to content

Documentation

Core concepts

IntroductionPublished

Core concepts

Understand the runtime pipeline, ownership boundaries, result contract, network model, and bounded cost model.

Product
Footstep Studio
Version
Documentation 2.11.2
Content
6 chapters
On this page

01

Runtime pipeline

Every contact crosses ordered gates; the first failure stops work and returns a stable reason.

Contact data flowtext
AnimNotify / project event / existing hit
  -> component request
  -> enablement / world / network / profile / source
  -> movement / listener / rate admission
  -> supplied hit OR one line trace
  -> exact Physical Material / Surface Type / default / event
  -> probability / footwear resolution
  -> immediate channels + transfer acquisition or consumption
  -> surface stage + footwear imprint stage
  -> local and world budgets
  -> local spawn + delegates

Configuration, movement, listener-distance, and rate gates run before a plugin ground trace. Step movement uses the greatest current horizontal motion from the Actor, Root Component, or recent non-teleport Root Component transform updates. A valid caller-supplied blocking hit bypasses the trace while still passing payload, probability, listener, rate, and budget policy.

02

Surface and event resolution

Specific authored identity wins before broader fallback, without first-entry ambiguity.

  1. 1

    Exact Physical Material

    Resolve an override by the exact UPhysicalMaterial identity returned by the hit.

  2. 2

    Physical Surface

    If no exact override matches, resolve the EPhysicalSurface definition.

  3. 3

    Global default

    Fall back to the Surface Data Default Definition.

  4. 4

    Event override

    Within the selected definition, prefer the exact built-in or named Custom event.

  5. 5

    Default payload

    Use the selected definition's Default Payload when no event override matches.

  6. 6

    NoPayload

    Reject when neither a usable immediate channel nor an eligible Surface Transfer route exists.

Transient lookup caches avoid scanning all authored definitions on every accepted event. Data Validation rejects duplicate surface, exact-material, and event keys.

03

Request and result contract

C++ and Blueprint observe the same accepted context and first failure reason.

ResultContract
Return ValueTrue after a valid hit and accepted immediate or transfer route; false at the first failed gate
FootstepResolvedContextOwner, source, event, contact, socket, strength, horizontal speed, hit, Physical Material, Surface Type, footwear profile and source, resolved receiver projection fields, and frozen world-space contact heading
FootstepRejectReasonNone on success or one stable enum value identifying the first failed gate
On Footstep SpawnedFires only when at least one configured channel emitted

Surface Transfer acquisition can resolve successfully without emitting a transferred decal on that source contact. This is why accepted and spawned are intentionally separate observations.

04

Authoring ownership

Ground, footwear, project integration, and runtime each own a deliberately narrow responsibility.

OwnerResponsibilities
Footstep ProfileTrace, admission, sockets, local channel budgets, retained-state capacities, diagnostics, and default footwear fallback
Surface DataExact materials, surfaces, event payloads, immediate effects, transfer source, base decal material, projection placement, receiver filter, lifetime, intensity, and transfer policy
Footwear ProfileGeneric or contact-specific staged imprint textures, per-variant U mirror, optional surface-audio modulation, and optional footwear overlay
Consuming projectContact timing, collision taxonomy, equipment mapping, assets, licensing, authoritative gameplay events, and lifecycle boundaries
Runtime componentOrdered admission, resolution, bounded state, local spawn, counters, and delegates
  • The ground remains authoritative for residue type and receiving presentation.
  • The footwear profile changes contact identity without selecting the ground surface.
  • Gameplay frameworks, inventory, host-project systems, and audio middleware remain optional project concerns, not plugin dependencies.

05

Local cosmetic network model

Replicated actors are supported through a client-local cosmetic model with no per-contact plugin RPC.

  • Dedicated servers reject before trace or spawn and retain no Surface Transfer state.
  • The host project replicates actors, movement, animation state, possession, relevancy, and compact equipment identity.
  • Each client or listen host maps replicated equipment state to a loaded footwear profile and renders locally evaluated contacts.
  • Variant choices and transfer state are not replicated.
  • One contact must use one cosmetic submission route; do not combine a local AnimNotify with a multicast that submits the same request.
  • The 2.11.2 release matrix validates dedicated-server suppression plus autonomous, simulated, respawn, possession-change, and listen-host presentation on UE 5.5.4, 5.6.0, 5.7.4, and 5.8.0.

06

Bounded runtime cost model

The implementation removes permanent polling and bounds retained state, selection history, and effect admissions.

  • No permanent component Tick, transfer timer, or ticking world budget subsystem.
  • Listener-distance and rate admission happen before a plugin ground trace.
  • Audio, Niagara, and footwear-audio anti-repeat histories use profile-bounded least-recently-used storage.
  • Per-contact transfer states, contact routes, stages, and variants are validation-bounded.
  • Niagara one-shots default to AutoRelease pooling.
  • Immediate and transferred imprints share one non-allocating staged texture resolver.
  • An immediate footwear binding reuses the existing decal spawn and budget path without a second decal or transfer-state mutation.
  • Decal dynamic material instances are created only when an enabled runtime contract must write intensity, footwear, receiver-normal filtering, or source-exclusion parameters.
World settingDefaultMeaning
Max World Audio Spawns Per Second256Aggregate one-second audio ceiling; 0 is unlimited
Max World Niagara Spawns Per Second128Aggregate one-second Niagara ceiling; 0 is unlimited
Max World Decal Spawns Per Second64Aggregate one-second decal ceiling; 0 is unlimited
Max World Surface Impression Submissions Per Second128Aggregate one-second submission ceiling; 0 is unlimited
Exempt Locally Controlled PawnsEnabledBypasses only the world layer; profile budgets still apply