๐ŸฆŠ Fox Fighter โ€” Animation Lab

Canvas playback from the exact sprite sheets the game will use. Click a stage to play/pause, drag the slider to scrub, "mirror" shows the flipped facing. Nothing ships without approval here.

Full fighting animations

The two chains we are working on, played at the game's exact timing โ€” each clip hands over on its final frame, which is pixel-identical to the next clip's first, so a fight is a playlist with no blending. Tune each beat below. "speed" is ms per frame (lower = faster). "trim" cuts frames off the END of a clip โ€” that is how you stop the fox loitering in his guard between beats, since the settle-and-hold tail is where the idle time hides. Nothing is regenerated; both are free. The command at the bottom renders whatever you have dialled in.

ALL โ€” overall speed 1.00×
clipspeed (ms/frame)trim (frames kept)

Taking a hit

The newest generations only โ€” the 4/1 batch (4 seconds holding guard, impact in the final second), each ending on a hit pose you drew. All three are stabilized: Kling adds low-frequency in-frame wander to almost everything, which read as the character stepping forward into the punch. Subtracting it while pinning both boundary frames removed 137px and 185px of false forward motion at no cost.

Chained hits. The guard pose exists so a character taking five blows does not walk all the way back to a full idle between each one. Every clip below starts and ends on a canonical pose, so these chain with no blending โ€” watch the seams.

๐ŸฆŠ The Fox โ€” character sheet

๐Ÿบ The Brother โ€” character sheet

๐Ÿง™ The Mentor โ€” character sheet

The Mean Brother โ€” enemy #1

Built in the same plate geometry as the fox (1920ร—1080, ground y=1020, scale 0.801 of the drawn art), so the 10% height advantage in his artwork carries through on its own: figure 830px against the fox's 754px. They will stand at correct relative scale when they meet, with no per-character fudging. Every clip starts and ends on his idle canonical, so each is self-contained and needs no separate recovery clip โ€” the cheap pattern for enemies. He faces into the open side of the frame; in game he is container-flipped to face the fox, and his crop box is symmetric about frame centre so the flip cannot shift him.

The Mentor

Scaled by the shared 0.801 factor rather than to a target height โ€” his staff inflates his drawn height to 1060px against the fox's 941, so height-matching would have shrunk his body to make room for the stick. Every clip starts and ends on his idle canonical. Known defect: in teach he swings the staff horizontally and it leaves the frame on the left โ€” a prop swung wide needs far more room than its resting position suggests.

Arenas

All three approved. The dojo (B) is the main stage; the courtyard (A) and the mountain platform (C) are held for later levels. Deliberately empty and uncluttered across the middle where the fighters stand. Ground line (where a character's feet go) is marked in red โ€” characters' feet sit ~97% down their sprite frame, not at the bottom, because the crop box carries a ground margin.

๐ŸฆŠ Fox โ€” timing & hitboxes

The fox's tuning workbench. Pick a clip on the left; set its pace with the ms slider; trim with "start here" / "end here". For strikes AND reactions, scrub to the contact frame and click on the sprite to mark the hit point โ€” strike marks and reaction marks are aligned onto the same tick by the Fight stage and, later, the game. The list is grouped: strikes and reactions (the clips that take a contact mark) sit on top, recovery & connectors below them, then stance, movement and fixtures. A โš  marks a contact clip with no hit point yet โ€” the section header counts them, and the flag clears the moment you mark it (or the moment an apply lands it in the contract). Everything saves locally as you click; Copy JSON โ€” this clip only hands Claude just the clip you are working on (one paste, one clip that can change), and the small everything button next to it sends the whole batch for a deliberate full pass. Applied marks are cleared from the browser automatically on load, from the apply receipt.

๐Ÿบ Brother โ€” timing & hitboxes

The brother's tuning workbench. Same tools, his clips only. His reaction clips (idle2-to-hit-rev, idle3-to-hit, the stronghit pair) are the ones that want contact marks โ€” the fox's strikes align to them.

๐Ÿง™ Mentor โ€” timing & hitboxes

The mentor's tuning workbench. He currently ships nothing (parked by verdict) โ€” his archive clips live on his character sheet and in History. The moment a clip of his enters ready.json it appears here.

Use / don't use

The verdict pass: every clip, one decision each. use ships in ready.json, don't use comes out of it, later stays archived but out of the game. Clips already shipping are marked use unless you say otherwise; experiments and superseded takes are also listed here so nothing needs hunting down. Verdicts save locally as you click; Copy JSON (here or on the Timing tab โ€” it's one payload) and hand it to Claude to apply. The two dead fox coordinate systems (fox/*, fox-wide/*) are not listed โ€” they can never ship.

show:

A/B bench. Two takes side by side, started on the same tick โ€” for calls like the claw denoise, where the difference is shimmer you can only see in motion. Pick any two clips; โ–ถ restarts both together.

vs

Fight stage

Pick a fox technique, watch the brother take it. The fox plays the technique's full clip chain; at each strike clip's impact frame (your workbench mark if you made one, the sim's 50% guess otherwise) the brother reacts according to the agreed choreography (reaction_flow: first hit from idle2 into the guard, further hits fought in the guard, exchange end back to idle2, killing blow through strong-hit to KO). Your workbench ms + trim annotations apply live โ€” retune there, replay here. Everything below the stage is a toggle; tell Claude which ones to add next.

juice:
combo

Chain builder

Build any legal clip sequence and watch it. The buttons only ever offer clips whose from pose matches where the chain currently stands โ€” the ready.json pose graph is the rulebook, so anything you can build here the game can play, seam-free. New clips appear automatically when the asset side ships them. Workbench ms + trim annotations apply live, same as the Fight stage. A chain that returns to its starting pose can loop forever; a KO ends it (that clip's last frame does not snap anywhere).

standing at pose
legal next clips from here:

UI โ€” tag icons

The first non-character art. Per TAG, not per skill โ€” there are ~13 moves and ~20 skills and growing, but only ten tags, and the upgrade text already names them literally, so ten marks do the work of 33 and scale for free. Every icon is a white alpha mask, not coloured art: the game tints it at draw time, so one asset covers live / inactive / per-rarity states instead of one generation each. The row below is tinted in code โ€” drag the colour picker and watch all ten follow. Cost: 5 credits each (a Kling clip is ~70).

20px is the size that matters โ€” it must read next to text.

๐ŸŽฎ Game

A miniature of the real loop: fight โ†’ skill offer โ†’ edit your ROUTINE โ†’ fight. The brother's HP grows every round; your fox chews through it one routine (turn) at a time until the killing blow throws him โ€” the score is how many turns each round took. And HE FIGHTS BACK: after your routine he answers with 1 + โŒŠ(roundโˆ’1)/2โŒ‹ punches at his ATK โ€” evade, DEF, thorns, riposte and stun are all live against them. Your fox heals to full between fights โ€” but lose all HP inside one and the run ends. You start empty-handed: the first offer is three attack actions; from then on each round offers a move copy, a skill, or a STAT (+HP, +damage, +evade, +DEF, damage shaving, luck โ€” stats stack forever). Damage numbers here are Lab placeholders for feeling the loop โ€” the real sim belongs to the game side. Everything plays with the shipped clips, contact marks, pushback curves and juice.

๐ŸŽฌ Hit + recovery

The reaction pair as ONE animation, with per-frame position control. Pick a pair; the timeline runs hit โ†’ recovery as a single strip. The โ†/โ†’ buttons move the wolf from this frame onward โ€” a nudge is a step in his POSITION that persists through everything after it, including the locked final frame (that is the standing rule: position edits live outside the sprite as a rootCurve; the frames themselves never change, so every chain through them stays intact. Pixel repair for a single badly-drawn frame stays in the timing tabs' x-nudge.) The curve strip below the scrubber shows the whole path; it starts prefilled with what ships today. Edits preview live in the Fight stage and Attack bench, and copy JSON exports the pair.

๐Ÿฅ‹ Attack bench

One mini dojo per attack โ€” press โ–ถ and watch just that strike land, close up. Nothing plays until you ask it to. Each card stands the two fighters at the solved contact distance (the same marks the Fight stage uses), plays the whole technique once, and lands the defender's reaction on the contact tick. The sliders are per attack: strike pace writes into the same workbench store as the timing tabs (so it exports with copy JSON and applies for real), reaction pace is a stage beat. Numbers under each card are that attack's actual milliseconds.

๐ŸŽ“ Skills

The game's full skill pool, read LIVE from the game source (game/src/content/slice2.ts + combos.ts โ€” the CEO's side owns those files; this page only reads them, so it is always current and never edits). Icons where they exist: the five mythics have their own art; everything else shows the tag its text keys off (white mask icons, tinted by rarity). Combos and their mastery unlocks are listed at the bottom โ€” playing with combinations comes later.

Idle animations (review me)

Two candidate fighting idles, one per stance. Both loop-snapped: first and last frame are pixel-identical to the canonical pose (diff 0.000), so the loop seam is physically incapable of flickering โ€” judge the motion itself: amplitude, personality, anything theatrical.

Combat actions (review me)

Attacks live in the side stance: each starts AND ends on the idle-A canonical frame, so idle โ†’ attack โ†’ idle chains with zero seam. Played at 2ร— (subsample 2, 33ms) for snap.

Stance transitions (review me)

The hub pair. Each conditions its FIRST frame on one canonical pose and its LAST on the other, then both ends are snapped โ€” so side-idle โ†’ transition โ†’ front-idle is seamless in both directions and no turn-around clip is ever needed (ยง1, ยง8). Played at 2ร— (33ms) โ‰ˆ 1s, the transition tempo from the previous project. Judge: does he keep his guard up, does the head stay level, and does he pivot in place rather than travelling? Compare against the "hard cut" button in the next tab โ€” that pop is what these remove.

Re-framed candidate โ€” a wider plate

A test of a new coordinate system, not a clip for the current fox โ€” it cannot chain with anything above and must not be judged against it. The shipping fox stands 999px into a 1440px video frame because his tail needs 812px to his left, leaving only 441px to his right; the drawn punches reach 513โ€“1214px, so their fists fall off the canvas and no prompt can recover a pixel outside the frame. This is the same character rebuilt on a 16:9 1920ร—1080 plate (figure 865px, ground y=1010) sized around the most extended pose we have, so the frame holds the tail and the fist. It ends airborne โ€” the one pose the feet-on-baseline rule does not apply to. If it works, the fox is regenerated in this system and everything above is re-shot; if not, we have paid one clip to find out.

Geometry v2 โ€” one frame that holds every drawn pose

Canvas 1920ร—1080, ground y=1020, figure 754px, stance x=628 โ€” solved so that all seven drawn poses fit at once (idle, punch-a/b/c, kick-jump, uppercut, uppercut_jump). The binding constraint is uppercut_jump at 125% of the idle's height, which alone costs 13% of character size; width has 26% slack. Airborne poses sit ON the baseline here: altitude is the game translating the sprite, not something baked into the clip. Frames are picked by cumulative motion rather than by the clock, so a four-second wind-up compresses ~7:1 while the strike keeps every frame.

Sequence & seam tests

Switches happen exactly on loop boundaries (the player hands over on the last frame, never mid-frame). The facing flip is the game's turn mechanic โ€” flipped pixels land on the mirrored canonical frame. The side โ†” front hard cut shows why transition clips are the next thing to generate.

A/B โ€” both stances side by side

Same character, same scale, same feet baseline. Which stance becomes THE canonical combat idle that every future clip snaps to?

Sprites & plates (the pipeline, visually)

contact strip โ€” idle-side-a (12 of 61 frames)
contact strip โ€” idle-front-a (12 of 61 frames)

Status โ€” what exists, and what the spec says comes next

This page is not the plan. docs/animation-spec.md is the authority on which clips exist and why; docs/decisions.md records how each call was made. An earlier version of this table listed a speculative clip roadmap drafted before the game design existed, and it got read as direction โ€” about 140 credits of stance transitions nobody had asked for. Mirror the spec here, never the reverse.

Current scope is a pilot: the fox and one enemy, before any roster spend. Battles are auto-fights, units advance and clash, fights are side-on โ€” so each character has one canonical pose and no stance graph. The fox's attacks are its techniques, and the technique list is the game's content: it grows for the life of the project.

clippurposestatus
idle-side-aside-stance combat idle โ€” THE canonical pose (ref "side")APPROVED Aug 1 โ€” canonical
attack-punch-btechnique: right straight punch (+12px reach)REVIEW ME
attack-kick-atechnique: front snap kick (+10px reach)REVIEW ME
attack-punch-atechnique: "1-2 jab" โ€” measures at +4px reach against an idle that breathes at 13. Barely two breaths of motionlikely dead โ€” A/B vs punch-b
walk-in / walk-loop / walk-outlocomotion โ€” units advance and clash, so this is required, not optionalpilot, not yet generated
hitflinch. Tier A only โ€” common enemies get a code-side flash insteadpilot, not yet generated
deathends free โ€” the only clip that does not snap its last framepilot, not yet generated
victoryend-of-fight flourishpilot, not yet generated
enemy #1 โ€” all 6 tier-B clipsthe other half of the pilot; needs source art firstnot started
idle-front-a, trans-side-front, trans-front-side(-r)built under an earlier stance-graph assumption. No job under the current specHELD โ€” not deleted, awaiting a call