Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
B8 - The Animation Controller
Updated 2 weeks agoThe 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
Clonename 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.
- Teal = shared replacements (normal
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 Sprite — Edit 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 Clip — Ready 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
- Finding Any Sprite — names, collections, and the lookup discipline.
- Anchors — placing an enlarged replacement.
- Animation Canvas Workflow — the extract/paint/compile round-trip the console's Whole Clip panel drives.
- Reused Frames — sharing art across clips, and detaching it per-clip with Appliqué.
Pages
- A-0 Wikis
- A1 - Getting Started
- A2 - Installing Packs
- A3 - The Pack Manager
- A4 - How Stitchwork Works
- A5 - When Something Looks Wrong
- AEx1 - Conditional Activation
- B0 - Choosing a Workflow
- B1 - Starting a Skin Pack
- B2 - Finding Any Sprite
- B3 - Porting Prior Work — Spritesheets & CKC
- B4 - Texture2D (T2D) Sprites
- B5 - Bigger Art — Anchors
- B6 - Animation Canvas Workflow
- B7 - Sprite Paths Reference
- B8 - The Animation Controller
- BEx1 - Reused frames — one sprite, many animations
- BEx2 - Instance-specific paths — same name, different art
- BEx3 - Appliqué: Per-Clip Art
- C1 - Text & Dialogue
- D1 - Audio
- E1 - Video
- F1 - Priority & Conflicts
- F2 - Distributing Your Pack
- G1 - Dumping & Full Dump
- G2 - Companion Mods
- G3 - Hotkeys
- G4 - Pack Folder Structure
- G5 - Testing With Savestates (DebugMod)
- G6 - Troubleshooting