ppy/osu · error · InvalidDataException
Unknown command type: {commandType}
Error message
Unknown command type: {commandType} What it means
Thrown by LegacyStoryboardDecoder when parsing a storyboard command inside a sprite/animation's command list (depth>0, after the 'T'/'C'/'P' command-group markers) and the command letter doesn't match any recognized case (F, M, S, V, R, C, L, MX, MY, P, E, etc.). The default branch of the inner switch fires for any unrecognized command character.
Source
Thrown at osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs:335
case "A":
currentCommandsGroup?.AddBlendingParameters(easing, startTime, endTime, BlendingParameters.Additive,
startTime == endTime ? BlendingParameters.Additive : BlendingParameters.Inherit);
break;
case "H":
currentCommandsGroup?.AddFlipH(easing, startTime, endTime, true, startTime == endTime);
break;
case "V":
currentCommandsGroup?.AddFlipV(easing, startTime, endTime, true, startTime == endTime);
break;
}
break;
}
default:
throw new InvalidDataException($@"Unknown command type: {commandType}");
}
break;
}
}
}
}
private string parseLayer(string value) => Enum.Parse<LegacyStoryLayer>(value).ToString();
private Anchor parseOrigin(string value)
{
var origin = Enum.Parse<LegacyOrigins>(value);
switch (origin)
{
case LegacyOrigins.TopLeft:
return Anchor.TopLeft;
View on GitHub (pinned to d9c73e12ad)
Solutions
- Inspect the storyboard command shown in the error message and identify the unrecognized command letter.
- Replace it with a valid command letter or remove the offending command line.
- Valid command letters include: F (fade), M (move), MX/MY (move X/Y), S (scale), V (vector scale), R (rotate), C (colour), L (loop), P (parameter), T (trigger), E (event).
- Re-export the storyboard from a compatible editor.
Defensive patterns
Strategy: try-catch
Try / catch
try
{
storyboardDecoder.Decode(reader);
}
catch (InvalidDataException ex) when (ex.Message.Contains("Unknown command type"))
{
Logger.Log($"Unrecognized storyboard command — file may be corrupt: {ex.Message}", LoggingTarget.Database);
} Prevention
- Ensure storyboard command letters match the valid set (F, M, MX, MY, S, V, R, C, L, P, T, E).
- Validate storyboard files from non-standard editors before use.
- Reject or quarantine storyboard files with unknown command types during import.
When it happens
Trigger: Decoding a .osu/.osb storyboard where a sprite's command block contains a command with an unrecognized letter prefix — e.g. '_X,0,1000,0,1' where 'X' is not a valid command. The commandType string is the first field after the leading underscores/spaces in a depth>0 event line.
Common situations: A storyboard created by a non-standard or experimental tool that emits unsupported command types; manual editing introducing a typo in a command letter (e.g. 'G' instead of 'F'); a corrupt storyboard file with garbled command data.
Related errors
- Unknown event type: {split[0]}
- Beat length cannot be NaN in a timing control point
- Color specified in incorrect format (should be R,G,B or R,G,
- Color must be specified with 8-bit integer components
AI-assisted analysis of ppy/osu@d9c73e12ad (2026-08-13).
Data as JSON: /api/errors/b3d8aa4488881dd8.
Report an issue: GitHub.