An MMO character team cannot hand-author a graph per character. It needs one system that survives a spectrum of rigs, and a way to know a change did not quietly break the eleventh one. MotionTerminal is that shape, built end to end.

The architecture

MotionTerminal architecture: one Template AnimBP drives a rig roster; authoring is composed from existing MCP tools while the shipped plugin holds the verification and introspection layer, gated per commit and per milestone.

The motion

Grounded locomotion. Idle, locomotion and airborne states on one Template, with ground-adaptive foot IK that plants contact and settles weight across slopes and stairs, gated off automatically in the air.

Layered actions that do not fight the gait. Upper-body montages blend from the spine up while the locomotion weights hold steady, and a test proves that per rig rather than leaving it to the eye.

One anim set, N rigs. The same clips drive every roster member. Compatible rigs join with zero retargeting, and a 198-bone Paragon character comes in through the IK Retargeter, carrying the same motion onto a genuinely different skeleton.

The contract

Clips are instance-editable variables rather than hard-wired assets, so the Template stays the single source of truth and characters override data, never structure. Per-character variation hangs off an Animation Layer Interface seam. The entire animator-to-engineer interface is three variables: Speed, IsFalling, UpperBodyState.

Verified per rig, per commit

Every rig's graph serializes to canonical JSON and is diffed against a reviewed baseline, so regenerating one is a deliberate, code-reviewed act. Break a graph and the gate names exactly what changed. The topology tier runs headless in under two minutes on every commit; PIE assertions run against a real RHI per milestone, checking that states are reached, weights are correct and IK gating fires. Every clip entering the roster also passes a motion-varies check, so a silently frozen bake fails a test instead of surviving an eyeballed frame.

Live per-node introspection

When a graph misbehaves the useful question is how much of this pose is coming from where. The strongest MCP tooling in this space defers per-node weights as having no public getter. There is no single getter, but there are four mechanisms, all reachable from ordinary engine-API C++ without patching the engine. On hardware this returns the full weight tree live over MCP: root through Control Rig, slot, nested state machines, cached pose and sequence player, every node weighted, GUID-keyed back to the authored graph.

Authoring itself composes existing tools, monolith (MIT) and Epic's first-party toolsets, and ran agentically over MCP with the transcripts committed, so the project rebuilds from them.

Ken Faiman · Applied AI, agent & evaluation systems · faiman.com