How-To: Diagnose a Warp
Goal: find out why an attack did not go where you expected - and catch the authoring mistakes that stock Motion Warping reports nowhere at all.
1. Draw the range model in the world
Run Crimson.MotionWarping.Debug 1. Three rings are drawn from where the character will stand when the warp window opens, and together they are the whole range model.
| Ring | Meaning |
|---|---|
| Grey | The band's lower bound. Inside it, a warp is reported as compressed |
| White | What the animation travels unassisted - 1.0x, the reference everything scales against |
| Amber | The band's upper bound. The furthest this attack may ever reach |
| Pale blue, around the target | The standoff ring the character is trying to stop on |
The path taken is drawn from the predicted start to the landing point and coloured by outcome. When the warp was clamped, a red segment continues to where it wanted to go, labelled with exactly how far short the attack will fall.
Contact Offset in How-To: Tune Reach and Standoff.2. Read the numbers behind it
Run Crimson.MotionWarping.DevTools during Play In Editor. Pick a net context and a character, then use the three tabs.
| Tab | Answers |
|---|---|
| Resolve | Why the last warp came out that way: authored travel, standoff, gap, the band, required versus applied scale, and how far short it fell |
| Live Targets | What is planted right now, checked against the engine's own modifier states |
| Server vs Clients | Whether every machine agrees, with a per-context distance from the server's answer |
Outcome other than Not resolved after an attack. If it never changes, the node is not running - check that the ability actually reaches Crimson Warp To Target.3. Read the outcome
| Outcome | Means | Usual fix |
|---|---|---|
In Range | The target sat inside the band | Nothing |
Compressed Too Close | Nearer than the band's lower bound; compressed to reach it | Nothing, or pick a shorter attack |
Clamped Too Far | Beyond the upper bound | Raise Scale Band, or branch to a gap-closer |
Clamped By Geometry | Something blocked the path | Nothing - it stopped at the wall on purpose |
Already In Place | Already at or inside the standoff | Nothing |
No Target | No provider, or the provider had nothing | See How-To: Get the Building Blocks |
No Warp Window | The montage has no window of that name | Fix the name on the profile or the notify |
No Root Motion | The window has no meaningful authored travel | Move the notify onto the travelling frames |
Not Root Motion Montage | Root motion is off on the montage | Tick Enable Root Motion |
Blocked | Block Activation refused an out-of-range target | Expected - handle On Failed |
4. Catch authoring mistakes before you play
A mistyped warp target name is invisible in stock Motion Warping: the modifier disables itself, the animation plays completely unwarped, nothing is logged above Verbose, and it never re-enables. Three layers catch it here.
| Layer | When it fires | Catches |
|---|---|---|
| Blueprint compile | Compiling an ability with the node | The profile and the montage disagreeing about a name, and a turn cap on a montage with rotation warping off |
| Asset validation | Saving a montage, Validate Asset, or the DataValidation commandlet | Missing names, wrong modifier class, no root motion, windows in the blend out |
| Runtime warning | A warp window going live with nothing planted | A montage played without the node, or a target that never arrived |
On Failed instead.See also
- Concept: Multiplayer Authority - reading the Server vs Clients tab
- How-To: Tune Reach and Standoff