B8 - The Animation Controller

Updated 2 weeks ago

The Animation Controller

Sprites · for creators. The Animation tab is where you find an animated object, watch it frame by frame, and reach every sprite-editing tool for it — without ever typing a Clone name by hand.

You'll be able to: point at a moving thing in the game and select it, browse its animations, see at a glance which are already skinned, and drive the whole edit/extract/compile workflow from one console.

Before you start: the basic dump-edit loop from B1 and a feel for finding sprites. This page is the tour of the tab those pages point you into.

Everything here lives in Graphics → Animation in the Dev Hub.

[image: The Animation tab — left column (object/clip funnel), right column (atlas + sprite previews), bottom console.]

The layout at a glance

The tab is tall and narrow on purpose — it sits beside the game view instead of covering the character you're inspecting. Three regions:

  • Left column — the funnel. First it lists animated objects; pick one and it becomes a list of that object's clips.
  • Right column — previews + playback. The full atlas on top, the current sprite (drawn upright, the way it looks in-game) below with a pivot marker, and the Playback panel directly underneath — the transport lives with the panes it animates. A BG button + slider below the panes sets a black or white backdrop behind the previews (click BG to flip the surface; slide for opacity) so transparent art reads clearly.
  • Bottom — the console. The status line plus two panels of tools for the selected sprite and the whole clip.

Finding your object

Two ways in:

  • Pick object in world — the big button at the top. Click it and the Dev Hub hides; move the mouse over the game and a teal outline highlights whatever animated object is under the cursor, with its name and current clip. Click to select it — right object, right clip. Right-click (or any Stitchwork hotkey) cancels — Esc is deliberately NOT a cancel key, it belongs to the game's pause menu. Tip: pair it with DebugMod's global pause to freeze the exact pose first.
  • The object list — every animated object that has played since the scene loaded, each with a small thumbnail and its current clip. The player (Hornet) is pinned to the top. Objects that have stopped stay in the list, greyed, so you can still inspect them.

[image: World-pick mode — teal outline and name/clip chip over an animated object.]

Browsing an object's clips

Selecting an object switches the left column to its clips. You get:

  • A search box to filter by name.
  • Recently played — the last handful of clips this object ran, pinned above the full list. That's usually "the move I just did."
  • Coverage dots on every row — two small marks that tell you, at a glance, how skinned a clip already is:
    • Teal = shared replacements (normal Sprites/… files).
    • Orange = per-clip art (Appliqué).
    • Each dot is none, some frames, every frame. Hover for the exact counts.

Click a clip to load it. Use the breadcrumb button (top of the column) to go back to the object list.

The reuse lens

When a sprite is used by more than one clip, the console shows a 复用帧 / Reused frames ×N chip. Click it and the clip list filters to exactly the clips that use that sprite — click any of them to jump there, and the previews follow. It's the fast way to see the blast radius of a sprite before you edit it (see reused frames). Dismiss the lens with the ✕ on the chip.

Playback (right column, under the previews)

  • Preview loops the whole clip right in the preview panes. When the object is currently playing that clip, it uses the game's live rate — exact. For every other clip it runs a steady 12 fps browsing rate, deliberately: this game assigns playback speeds in code at play time, so an inactive clip's true speed isn't recoverable from its data (the authored fps field reads wrong for nearly everything). The preview plays even while the game is paused or the object has stopped, never touches the game world, and stops on any manual control.
  • The transport|◀ Prev · ▶/▮▮ Play/Pause · ▶| Next · ❄ Freeze — steps and pauses the live object (Freeze also locks its world position). Each button shows its configured hotkey on a second row in purple; the defaults live in Hotkeys.

The identity line under the status shows the clip's authored fps (clip 12 fps) — and when the game is currently running the clip at a different speed, the live rate too (clip 12 fps → 30 live). That pair is the receipt for the paragraph above: watch how often they disagree. To preview a clip at its true speed, trigger it in-game first, then hit Preview while it's the live clip.

The console

The status line reads clip · frame 4/6 with the reuse chip on the right, over two panels:

  • This SpriteEdit Current Sprite (dumps and opens the current frame's sprite), Detach for This Clip (make this frame's art unique to this clip — Appliqué), and the anchor picker for the current replacement.
  • Whole ClipReady All for Edit (dump every frame of the clip at once) and the Animation Canvas round-trip: Extract Vanilla / Extract As Rendered, then Compile from Workspace / Compile for This Clip (the per-clip variant lands in the Appliqué tier).

[image: The right column with Preview + transport under the panes; the console with This Sprite / Whole Clip panels.]

Reading the previews

  • Atlas (top) — the whole packed sheet, with the current sprite's region highlighted.
  • Sprite (bottom) — just the current frame, drawn upright the way it appears in-game, with a magenta marking the pivot. Step through the frames and watch the pivot: if it stays on the same point of the character, the frame registration is consistent.

Where to go next