Getting started
Install the plugin, create project-owned data, and validate the first surface-aware contact.
- Product
- Footstep Studio
- Version
- Documentation 2.11.2
- Content
- 7 chapters
01
Install or replace the plugin cleanly
Keep one FootstepSystem root, rebuild source consumers, and preserve project-owned authoring outside the plugin mount.
- 1
Close Unreal Editor
Do not replace a source plugin while its modules or assets are loaded.
- 2
Install one plugin root
Place the descriptor at Project/Plugins/FootstepSystem/FootstepSystem.uplugin, or use the equivalent engine-plugin installation managed by Fab. Avoid a nested FootstepSystem/FootstepSystem directory.
- 3
Replace the complete previous plugin
Do not merge new and old plugin folders. When replacing a project source copy, remove only that copied plugin's stale Binaries and Intermediate directories.
- 4
Regenerate and rebuild
Regenerate project files for a C++ project, build its Editor target, open the project, enable Footstep Studio, and restart when prompted.
- 5
Validate before migration
Verify the fourteen plugin assets, compile the material templates on the target RHI, and validate project-owned Data Assets before changing production content.
02
Know what the package contains
Footstep Studio is a production plugin, not a template project or a presentation-asset library.
Version 2.11.2 contains one production Runtime module, configuration, customer documentation, three neutral Starter Data Assets, three Material Functions, three master material templates, and five ready-to-duplicate Material Instances. Host projects, caches, tests, internal tooling, presentation media, and project artwork are outside the customer payload.
- Included Data Assets: DA_FSP_SurfaceData_Starter, DA_FSP_Profile_Starter, and the valid no-op DA_FSP_Footwear_Starter.
- Included material library: MF_FSP_SourceExclusion, MF_FSP_DecalReceiverNormalFilter, MF_FSP_SurfaceImpressionCoverage, three canonical masters, and five neutral starting instances.
- All bundled code, documentation, and product assets are original product work. The package includes no third-party code or presentation asset; Unreal Engine, Niagara, and Data Validation remain Epic technology supplied under the customer's Unreal Engine installation and agreements.
- Not included: demo map, character, animation, sound, Niagara System, customer texture, Physical Material, Blueprint, or authored footwear presentation.
- Project teams supply every presentation asset and retain responsibility for its licensing and redistribution rights.
| Class | Plugin content path |
|---|---|
| Surface Data | /FootstepSystem/Data/DA_FSP_SurfaceData_Starter |
| Footstep Profile | /FootstepSystem/Data/DA_FSP_Profile_Starter |
| Footwear Profile | /FootstepSystem/Data/DA_FSP_Footwear_Starter |
| Material Function | /FootstepSystem/Materials/MF_FSP_SourceExclusion |
| Material Function | /FootstepSystem/Materials/Functions/MF_FSP_DecalReceiverNormalFilter |
| Material Function | /FootstepSystem/Materials/Functions/MF_FSP_SurfaceImpressionCoverage |
| Material | /FootstepSystem/Materials/Templates/M_FSP_Decal_ColorRSM_Template |
| Material | /FootstepSystem/Materials/Templates/M_FSP_Decal_ColorNormalRSM_Template |
| Material | /FootstepSystem/Materials/Templates/M_FSP_SurfaceImpression_Template |
| Material Instance | /FootstepSystem/Materials/Instances/MI_FSP_Decal_ColorRSM_Immediate_Template |
| Material Instance | /FootstepSystem/Materials/Instances/MI_FSP_Decal_ColorRSM_SurfaceTransfer_Template |
| Material Instance | /FootstepSystem/Materials/Instances/MI_FSP_Decal_ColorNormalRSM_Immediate_Template |
| Material Instance | /FootstepSystem/Materials/Instances/MI_FSP_Decal_ColorNormalRSM_SurfaceTransfer_Template |
| Material Instance | /FootstepSystem/Materials/Instances/MI_FSP_SurfaceImpression_Template |
03
Enable the plugin and create project-owned copies
Start from the neutral scaffolds, then keep all production tuning inside the consuming project.
- 1
Enable Footstep Studio
Open Edit > Plugins, search for Footstep Studio, enable it, and restart the editor when requested. Niagara and Data Validation are declared plugin dependencies.
- 2
Show plugin content
Enable Show Plugin Content in the Content Browser and open FootstepSystem/Content/Data.
- 3
Duplicate all three Starter assets
Copy DA_FSP_SurfaceData_Starter, DA_FSP_Profile_Starter, and DA_FSP_Footwear_Starter into a project-owned /Game folder and rename them for the production set.
- 4
Repair project-owned references
Assign the copied Surface Data to the copied Footstep Profile. Assign the copied Footwear Profile as Default Footwear Profile only when an explicit neutral fallback is wanted; null preserves surface-only behavior.
- 5
Duplicate the required material instances
For each immediate or transferred decal, choose MI_FSP_Decal_ColorRSM_* when it must not write DBuffer Normal or MI_FSP_Decal_ColorNormalRSM_* when it must. Copy the matching Immediate or SurfaceTransfer instance and MI_FSP_SurfaceImpression_Template as needed, then replace neutral textures and tune project-owned values.
- 6
Copy a master only for a custom graph
The bundled masters already wire receiver-normal filtering, source exclusion, and Surface Impression coverage. Preserve the documented runtime parameter names if a project-owned master replaces them.
04
Connect Unreal collision data to surface definitions
The plugin reads project-owned Physical Materials and Physical Surfaces; it never invents or overwrites the project taxonomy.
Name the required Physical Surface slots under Edit > Project Settings > Physics > Physical Surface. Create one Physical Material per floor family, set its Surface Type, and assign it through the floor material or material instance.
- 1
Name the slots
Assign project terms such as Stone, Dirt, Wood, or Water to the required Surface Type slots.
- 2
Author Physical Materials
Set the correct Surface Type on each project Physical Material and connect it to collision-relevant floor materials.
- 3
Add exact overrides when needed
When two Physical Materials share a Surface Type but require different feedback, add an Exact Physical Material Override to Surface Data.
05
Author a valid surface payload
Configure the payload that the test contact actually resolves; explicit surface definitions and event overrides take precedence over broader defaults, even when their channels are disabled.
- 1
Choose the test floor's definition
Read the Physical Material assigned to the test floor and its Physical Surface Type, then edit the matching exact-material or Physical Surface definition. After configuring the component and triggering the first contact below, confirm that Out Context reports this same identity; do not assume the global default was selected.
- 2
Make the resolved Step usable
For the resolved Default or Surface Type definition, enable Default Payload > Audio and add at least one non-null sound with a finite positive weight. The Starter's default payload is the Step payload.
- 3
Keep unfinished channels disabled
Leave Niagara and Decal disabled until each channel has a valid project-owned asset.
- 4
Remove unused neutral definitions
Delete Starter Surface Type entries the project does not use. A matching explicit surface owns resolution ahead of the global Default Definition.
- 5
Author deliberate event overrides
The Starter includes a disabled Land override on every definition. Enable and populate that exact Land override, or remove it when Land should inherit the definition's Default Payload. The same matching-key rule applies to authored Step, Pivot, Slide, Jump, and named Custom overrides.
- An intentionally disabled channel is valid and emits nothing.
- An enabled channel without a usable positive-weight asset is invalid.
- An explicit disabled event payload is not skipped in favor of a louder default; it is an intentional no-op for that event.
- The Starter Surface Type 1 through 9 definitions can shadow the global Default Definition when the ground resolves one of those types; their disabled Default Payload is used for Step and their disabled Land override is used for Land.
- Duplicate Surface Type, exact Physical Material, or event keys fail Data Validation instead of resolving ambiguously.
06
Configure the profile and component
The Footstep Profile owns designer tuning; the Footstep Component owns event-driven runtime admission and presentation.
- 1
Review the copied profile
Verify Surface Data, left and right sockets, Trace Channel, Trace Up Offset, Trace Down Distance, Min Speed For Step, Max Effect Distance, channel budgets, retained-state capacities, and optional Default Footwear Profile.
- 2
Review world budgets
Under Project Settings > Studio > Footstep Studio, set aggregate audio, Niagara, decal, and Surface Impression ceilings for the target scene and platform.
- 3
Add FootstepComponent
Add the component to the character, pawn, or actor Blueprint and assign the project-owned Footstep Profile.
- 4
Keep diagnostics off by default
Collect Runtime Stats, Broadcast Rejected Events, and Log Rejected Requests are scoped diagnostic controls, not normal production settings.
- The component has no permanent Tick.
- Designer-owned values stay in Data Assets rather than an Animation Blueprint or character Tick.
- A moving non-Character actor is supported because Step movement policy reads horizontal owner velocity.
07
Trigger and validate the first contact
Use the entry point that matches the source data, then prove both success and intentional rejection paths.
| Entry point | Use it when | Ground query |
|---|---|---|
| Trigger Footstep From Socket | A skeletal mesh owns the left, right, or custom socket | At most one plugin line trace |
| Trigger Footstep at Location | The project already owns a world-space contact position | At most one plugin line trace |
| Trigger Footstep From Hit | Collision code already owns a valid blocking hit | No plugin ground trace; accepted decals can still perform separate bounded receiver-placement queries |
| Trigger Footstep | Advanced code builds the complete request | Depends on request data |
- 1
Place skeletal contacts correctly
Put the Footstep AnimNotify at the first weight-bearing frame, select Left Foot or Right Foot, use Step, and author a normalized Strength 01.
- 2
Reuse the landing hit
From On Landed, derive project-owned normalized impact strength and call Trigger Footstep From Hit. Do not add a duplicate Land notify.
- 3
Validate assets
Run Validate Assets on the copied Surface Data, Footstep Profile, and any Footwear Profile. Resolve every error before saving the production set.
- 4
Check observable results
Confirm left and right contacts resolve the intended surface, an absent socket returns MissingSocket without a trace, and the Output Log remains quiet with diagnostics disabled.