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.

Prerequisites
A working warp, as built in Quick Start.

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.

RingMeaning
GreyThe band's lower bound. Inside it, a warp is reported as compressed
WhiteWhat the animation travels unassisted - 1.0x, the reference everything scales against
AmberThe band's upper bound. The furthest this attack may ever reach
Pale blue, around the targetThe 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.

The three reach rings, the standoff ring around the target, and a clamped path with its shortfall labelled.
Verify
Your landing point sits on the pale blue standoff ring. If it sits inside the enemy, revisit 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.

TabAnswers
ResolveWhy the last warp came out that way: authored travel, standoff, gap, the band, required versus applied scale, and how far short it fell
Live TargetsWhat is planted right now, checked against the engine's own modifier states
Server vs ClientsWhether every machine agrees, with a per-context distance from the server's answer
The Resolve tab, showing the full derivation behind one warp.
Verify
The Resolve tab reports an 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

OutcomeMeansUsual fix
In RangeThe target sat inside the bandNothing
Compressed Too CloseNearer than the band's lower bound; compressed to reach itNothing, or pick a shorter attack
Clamped Too FarBeyond the upper boundRaise Scale Band, or branch to a gap-closer
Clamped By GeometrySomething blocked the pathNothing - it stopped at the wall on purpose
Already In PlaceAlready at or inside the standoffNothing
No TargetNo provider, or the provider had nothingSee How-To: Get the Building Blocks
No Warp WindowThe montage has no window of that nameFix the name on the profile or the notify
No Root MotionThe window has no meaningful authored travelMove the notify onto the travelling frames
Not Root Motion MontageRoot motion is off on the montageTick Enable Root Motion
BlockedBlock Activation refused an out-of-range targetExpected - 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.

LayerWhen it firesCatches
Blueprint compileCompiling an ability with the nodeThe profile and the montage disagreeing about a name, and a turn cap on a montage with rotation warping off
Asset validationSaving a montage, Validate Asset, or the DataValidation commandletMissing names, wrong modifier class, no root motion, windows in the blend out
Runtime warningA warp window going live with nothing plantedA montage played without the node, or a target that never arrived
The compile check needs literal pins
The node can only compare a profile and a montage it can actually see. If either pin is driven by a variable rather than a literal asset, there is nothing to check at compile time - the runtime path reports it on On Failed instead.
Verify
Rename the montage's warp window and recompile the ability. It should fail to compile with a message naming both the expected name and the names the montage actually has. Put it back and it compiles clean.

See also

  • Concept: Multiplayer Authority - reading the Server vs Clients tab
  • How-To: Tune Reach and Standoff