# Sprite guide: one continuous body on one stage Characters walk, stop, speak and act on the same quarter-view RPG stage. Scaling or mesh deformation must not hide missing motion. See [ART_WORKFLOW.md](ART_WORKFLOW.md) for production and [HANDOFF.md](HANDOFF.md) for the active episode history. Read [WALKING_STANDARD.md](WALKING_STANDARD.md) before walk generation or review. It records the user's approved motion and original-style/whole-body requirements. ## 1. Viewpoint, identity and size - Standard art has front `downRight` and back `upRight` quarter views. Left uses horizontal mirroring. Redraw inconsistent camera heights or unrelated frontal/ profile poses inside a walk, idle or speech family. - A body may turn during an action if its preparation and recovery connect. The current compact style uses front/back quarters and complete-body mirrors, pivoting around the same foot midpoint; it does not require profile or intermediate yaw drawings. Preserve gait phase and equipment. Legacy families with authored intermediate turns must record actual viewpoints in `turnAngles`, and show that art only while turning. Do not substitute skew, width compression or crossfade for missing rotation drawings. - Keep one line style, palette and head/body ratio. Murim uses small, crisp RPG characters; portraits carry large expressions, bodies convey readable actions. - Inspect faces enlarged and at play size. Avoid broad red cheeks/eye patches. A small bridge, tip, underside and profile contour should make the nose legible. Apply the approved face to idle, walk, speech, turns, combat and held-prop art. - Import a whole source family at one scale. Never resize per frame or per line. `height` means upright body height, independent of an overhead sword's canvas. - Require transparent background, complete feet/weapons/hair and clear cell gaps. Do not bake lighting flashes, trails, motion lines or ground shadows into sprites. ## 1-1. One family of bodies Murim's Hongran/Cheongha/Soha reference family has roughly 2.6-head proportions, large eyes, short solid limbs, dark brown outlines, clean cel shading and one quarter-view camera. Tall realistic six-head anatomy or unusually thin bodies must be redrawn. Age/weight comes from shoulders, beard and posture within the same proportion system. | Role | Character | World height | | --- | --- | --- | | Lead adult men | Jin Baekun, Heukgyeom | 48 | | Adult men | Han Cheolsan 46; Baek Mujeok and crowd guards 45 | 45–46 | | Adult women | Jin Cheongha, Jin Hongran | 40 | | Sisters in the prologue | sister3 39, sister4 38, sister5 37, sister6 36, sister7 35, sister8 34 | 34–39 | | Teenagers, 15 | Geum Dohyeon 39; Jin Soha 38 | 38–39 | | Child, 7 | Young Soha | 28 | These are authored role targets; the active manifest is the final import record. The middle sisters appear eight years earlier, before being sent as hostages. The order is child < younger sister < older sister ≤ adult woman < adult man ≤ lead man. Sisters descend in one-pixel steps, not giant jumps. Hair/props/face convey age more strongly than exaggerated height differences. Reducing height cannot repair a swollen silhouette; redraw shoulder/sleeve volume from the reference. Grainy, muddy old shading reads as blur beside clean cel art even at equal resolution. Compare a lineup and an actual scene. Recheck silhouette widths outside about 0.7–1.4 times a neighbor's. Stride usually scales with height (~1.1×); incorrect ratios produce hopping or frantic legs. Mobile atlases stay below 4MP; lower atlas import density without changing world size. For new art, attach both a body/style reference and the character's clothing/ color reference. Request identical scale and baseline, recipe-exact cell layout, no edge contact and complete weapons. Preserve transparency including enclosed holes. Use `refShare` for sheets without an upright reference (e.g. 0.97). Then rebuild → lineup → audit/puppet/lab → actual scene. Retain provenance and prompts. ## 2. Check both legs The October19 approval is of the walking poses only. Keep the original painted character, garment silhouette and cloth construction. Colored tracing and the temporary 3D rig do not permit capsule limbs, spherical knees, joint rings or segmented robot legs. Recoloring those shapes is insufficient: restore natural continuous cloth and folds while retaining the approved pose. Generate whole bodies together; no separate upper/lower generation or limb assembly. This supersedes the older lower-half mirroring workflow for new selected art. A full eight-frame gait is contact A → down → passing → up → **opposite leg B** contact → down → passing → up. The same anatomical leg leading in frames 1 and 5 is a failure. Different arm or foot spacing alone does not prove alternation. For the later calm/minimum-image request, four complete distinct keys can cover contact A → opposite-leg passing → contact B → other-leg passing. Keep both actual passing drawings, not A→neutral→B→the same neutral. Use four actual distance-selected frames and four matching landing choices rather than packing duplicate intermediate files. Inspect normal cadence and planted feet; fewer drawings alone do not establish gentle or natural motion. `NO_ALTERNATION` (`scripts/art/gait-check.ts`) detects each sole and identifies which leg leads: lower/nearer in front view, higher/farther in back view. A valid cycle changes left→right→left once (`lead RRRLLLLR`). Failures include one foot always leading, half-cycle pairs repeating the same foot and more than two changes per cycle. Passing frames or depth differences below 3% of height are undecided (`·`). Profile or fully occluded feet require visual inspection. Yellow bars in `audit --out` move to the other foot each half cycle. All product walks run this test in `walks-take-turns.test.ts`. On the first audit, only Soha's front walk passed among 23 cases: generation often repeated half a gait twice. Use WALKING_STANDARD §4 for current repair and selection; ART_WORKFLOW §6-1 documents historical provenance only. This is a necessary check, not visual approval: 1. Follow each hip → knee → ankle → shoe, not only screen-left/right shoe position. Use leg-colored reference poses if clothing hides the anatomy. 2. The planted foot supports weight while the other passes under the pelvis. Legs/shoes never disappear, merge, smear or drag through the whole cycle. **Both toes follow the body's axis**: front feet, including the lifted rear foot, face southeast; back feet face northeast. A leg-mirrored preparation can pass alternation while reversing toe and heel. Trace both ankles/heels/toes, inspect all eight cells with props, then actual mirrored normal-speed motion. 3. A foot edit must not relight the head/clothes. `EXPOSURE_POP` compares opaque upper-body brightness with neighboring cells and flags >8% jumps; it excludes feet, transparency and soft edges. The real front frame-6 defect had a 10.9–14.6% pop. Fixed-30fps evidence alone does not rule out flashing: capture variable-rate native Vega remote play too. 4. Preserve face, torso, clothing volume and camera angle. Distinguish anchor errors from source anatomy before adjusting offsets. 5. Connect gathered feet into departure and the remaining actual gait into rest. Keep `core/gait.ts` distance-based progression. Never force a slow drawing onto excessive travel speed. 6. Held equipment remains in the same hand. Use `locomotion: true` or matching carry sheets; a sheathed walk must not interrupt drawn-sword footwork. A frozen `glide` is not an acceptable substitute for lifting/planting feet. Complete drawn series use `motion: drawn` and `retarget: false`, showing authored phases in order. Legacy puppet compatibility must not conceal broken legs. For drawn gait, `strideAt(..., drawn)` preserves drawn stride and raises cadence (up to 2.5 cycles/sec), rather than stretching the stride. Default stride is 1.15×body height; explicitly set a drawing-matched value. A useful speed relation is `stride × fps / frameCount × (1–1.3)`. Soha's stride42, eight frames and12fps imply63 units/sec; control speed78 gives about1.9 cycles/sec. The old100 speed stretched stride toward67 and visibly slid/hopped. Scripted walks and action board movement must respect the same body speed. Inspect lab footprint plots and actual input. ### 2-1. Lock the body and verify one opposite-contact pair first For Little Lantern Lodge, the October18 user direction requires complete full-body native poses, including held objects. Do not combine a fixed upper body with separately generated legs or repair the body with colour masks. Check uninterrupted sleeves, hands, jacket hem, waist and trousers enlarged before checking the gait. Keep every new whole-body pose pending user review; the earlier assembled passing/carry art is rejected as a production method. All28 selected Riley assembled walking cells were removed on October19:16 front/rear cells were replaced, and12 north cells retired with that unwanted cardinal view. Use front/back quarter art and horizontal mirrors only. The series' `body-integrity.json` and `art-src/whole-body/README.md` record complete sources and retired hashes; `art:check` and `rebuild-active` enforce that record. The provenance gate is separate from visual anatomy, gait and user acceptance. Use [ART_WORKFLOW §3-1](ART_WORKFLOW.md#3-1-contact-pair-first) before generation or repair. A user's positive feedback on one cell locks that cell's pose; it does not approve the other cells. Preserve its actual source pixels and record the source/cell/hash. Use that body angle, proportions, narrow stride, palette and shoe/paw design as the comparison for the opposite step. **Left/right names are anatomical, belonging to the character.** Label the hips in an authoring guide and trace each hip → knee → ankle → heel → toe. Screen-left and screen-right shoe positions alone cannot identify which leg advances. | View | Travel and toes | Ahead foot | Trailing foot | | --- | --- | --- | --- | | Front `downRight` | Southeast, lower right | Farther along travel and lower in projected depth | Behind along the same travel axis, higher | | Back `upRight` | Northeast, upper right | Farther along travel and higher in projected depth | Behind along the same travel axis, lower | In contact A one anatomical leg advances; in contact B the other advances. Switch the legs' forward/back roles while preserving the body's heading and the reference's narrow foot lanes. In particular, a rear right-forward contact must advance that leg northeast while the other trails southwest. Spreading the feet sideways to make the right foot higher is a different, incorrect pose. - Knees pass close beneath the pelvis. Shins must not exchange hip lanes into an X. Limited perspective overlap is natural when the anatomical paths still read; do not remove it by opening the legs into a V. - The passing phase gathers the feet beneath the hips. Idle separately rests on two supported feet. Do not hold a lifted contact as idle or repeat one contact as the passing phase three quarters of a short cycle. - Keep the reference's step length and low lift. A forward foot is not a high kick, sideways skip or marching knee. Both heel/toe axes follow travel, including the partly occluded foot. Rear heel/toe-off exposure may be natural; two large soles facing the viewer are not required for readability. - Check the shoe itself before judging the pose. Riley's boot has one toe and one lace panel at the front, with a plain heel counter at the opposite end. A lifted boot with a second toe/lace panel at its heel is malformed source art. Reject it and its derivatives as references; changing its size or sole exposure cannot repair that topology. - A far foot may be partly occluded. Trace it across the neighboring phases; reject a leg that disappears for the entire half-cycle. Never spread, lower or enlarge feet just to cross the detector's depth/separation thresholds. - `L·R·`, `RRRLLLLR` and zero audit issues are diagnostic evidence, not visual approval. `····` means unresolved by the detector, not a pass for alternation. Record that limitation and inspect anatomical roles in source and actual normal-speed mirrored motion. Do not weaken the gate or claim numerical proof. Compare the pair enlarged and at equal **world scale**, then join idle → A → passing → B → passing → stop in the renderer. Check head size, torso volume, exposure, planted foot and toe direction before adding more phases, characters or equipment variants. A sole-direction fix does not establish knee trajectory; a depth fix does not establish a natural stride. The agent completes these checks before presenting the result for user feedback. ## 3. Preparation → action → recovery Speech connects idle, small preparation, gesture and the same idle. No per-line body bounce, zoom, roll or automatic pan. `dialogueCamera: stage` keeps authored framing. Return from pointing before another person's line; loop only actions such as knitting that truly repeat. Attacks connect ready, contact, follow-through and ready. `hitFrame` is zero-based actual contact; damage/sound/effects cannot precede it. Draw falling and getting up separately: lying → hand support → knee → stand → idle. Lying/death uses `still: true`; airborne fall uses `shadow: false`. Draw weapon draw/sheath and prop pickup/give/throw transitions. Match hand coordinates. `hand: null` places a prop down but does not draw the action. Equipment idle/walk must match the current state throughout. Memories use the same stage's sprites with `ghost`/`grade`. Inserts emphasize an action immediately after its matching pose, not replace it. Body direction, up/down face and occupied hand must agree. A face-up backward fall needs `teeter` → `fall_back`, not a face-down `limp_fall`. Redraw missing matching poses. The later removal of an exhaustion insert does not remove this consistency rule. ## 4. Stage and shots Walk into position before speaking and walk to an exit before removal. Keep connected exits and permanent ids. Named heads/feet stay outside HUD, dialogue, film bars and frame edges. Measure quarter-view distances with `sim.gdist`. ### 4-1. Bodies must not overlap Standing or passing bodies that read as one body fail review. Require zero `overlap --crowd` findings across all beats, including extras. - Measure formation neighbors in **screen space**. Quarter-view `col + row` can stack bodies vertically: old `(26,-10)+(-28,-15)=(-2,-25)` overlapped ~40%. Separate every side/back/diagonal neighbor by body width (~0.45H) horizontally or0.75H vertically. The march uses row `(-46,-25)`. - Scatter `gap` is ground distance. On a shallow tilt, use staggered rows for archers on a narrow ridge instead of apparently well-spaced ground scatter. - A single doorway needs single-file entry, filling far positions first. Route around already standing people with waypoints. - Place falling front-rank bodies one step ahead and keep retreat paths clear. - Teaching or confrontation still needs at least a body-width separation. - Check combat-film start, yields/rushes, knockback landing, paths and finish. Finish anchors must clear the opponent's **initial** position too (e.g.24px). Rushers must stay apart while within55 ground units of the hit. Rear arrivals must not cross through an occupied front line. Precompute positions with the same ~0.44H body-width/intersection formula, then verify actual playback. ### 4-2. Move the camera; do not cut a visible shot Use `time:650ms, ease:inout, wait:true` (900ms for a large pullback). `snap:true` belongs under black. Camera bounds clamp at stage size; lower zoom near an edge to include both action and witness. Include a whole observer or exclude them, not a half body. Check `shots --dump` through transitions as well as stable shots. Combat obeys the same rules. Count falling bodies toward corpse limits, vary landing side/position and keep fire away from heads. A stable readable shot shows allies, enemies and the direction of advance/retreat. ## 5. Finish one character before the next ```sh bun run toonpg art reanchor bun run toonpg art audit --out bun run puppet --out bun run lab --out bun run motion --clips all --out bun run turns --out # Recovery: --recover ko:wipe; equipment: --carry bucket; back view: --facing up bun run shots --dump --out bun run shots --beat --video --fps 30 --strict --out bun run overlap --crowd ``` `motion` records actual30fps renderer video/trace through four directions, stops, speech, actions and recovery. Without a recovery clip, a prone pose remains prone. `turns` checks equipment, planted reference, fixed scale, intermediate views, reversal mid-turn, pause and duplicate props. It must not delay contact or KO with idle turns. `BODY_X` compares equal turn angles; feet/height/clipping remain checked across angles. Completion requires human inspection of anatomy, alternation, perspective, identity, foot contact, hands/weapons, transition endpoints and actual HUD coverage. Zero audit counts, index coverage or passing tests alone cannot approve art. Record the actual movie and observed/fixed/remaining issues. Keep only approved sources/recipes/prompts in active art; archive failed attempts separately.