How-To: Debug Combos (Dev Tools)
Goal: diagnose why a combo isn't firing using the live combo dev-tools panel.
Open the panel
Console command Crimson.AbilitySystem.DevTools, or Tools -> Crimson Ability System -> Ability Dev Tools. Switch to the Combo tab once PIE is running.
Screenshot pending
Images/CrimsonAbilitySystem/devtools-combo-tab.pngWhat each section shows
| Section | What's in it |
|---|---|
| Live State | Color-coded headline + owner/ASC names: NO ASC BOUND (red), IDLE (gray), WATCHING (amber), IN STEP PRE-WINDOW (cyan), TRANSITION WINDOW OPEN (green), POST-WINDOW (orange), RECENTLY ENDED |
| Active Combo State | Step timeline: phases row (Startup/Active/Recovery) -> acceptance row (amber Input Buffer look-back into green Transition Window) -> white playhead -> cyan input-buffer pips. Per-transition WOULD FIRE / waiting / WRONG DIRECTION badges |
| History Log | Scrolling event log: WATCHER ARMED, STEP ENTERED, TRANSITION FIRED, COMBO RESET, SERVER REJECTED, DYNAMIC GRANT... |
| Manual Controls | Grants manager, Grant Dynamic Combo form, Input Injection (action + direction), Move Input Override, Quick Diagnostics |
| Settings & IMC Catalog | Read-only ComboInputMappingContext + action count + effective tuning defaults |
Diagnosing common issues
| Symptom | Where to look |
|---|---|
| Combo never starts on press | Live State should read WATCHING when the rooting ability fires. If it stays IDLE: the rooting ability has no ComboExtension.DefaultCombos, or its Transition Close is 0. |
| Press captured but no transition fires | Transition Inspector shows each transition's WOULD FIRE NOW / Wrong direction / Cancel window not open badge. Cross-check the Input Buffer for a matches T#N descriptor. |
| Directional handshake won't trigger | Use Move Input Override to set direction and re-press. If it fires with the override but not without, the pawn's SetMoveInputProvider lambda isn't wired, or Move Input Action is unset in Project Settings. |
| Server rejects every transition (MP) | History Log shows SERVER REJECTED: ServerNotInCancelWindow. Likely high ping - server uses min(half-RTT, leniency cap) (default 80 ms). |
| NO ASC BOUND persists past spawn | Click Force Bind ASC. If still red, the pawn doesn't implement IAbilitySystemInterface or its ASC isn't a UCrimsonAbilitySystemComponent. |
Test without a controller
Input Injection fires any catalog action (with a chosen direction) without a real keypress. Combined with Move Override, you can fully exercise directional handshakes from the editor while iterating.