feat: animate tutorial battle characters
@@ -0,0 +1,19 @@
|
||||
# Phase 9.0R2 Character Animation Generation
|
||||
|
||||
Task ceiling: four API Mart image calls and USD 5 equivalent total. Intended
|
||||
calls are one six-frame battle-motion row each for Wayrunner, Farstring and
|
||||
Kindhand, with one call reserved for retry. The Phase 7 profession anchors are
|
||||
the identity authority. Generated rows own pose and timing only.
|
||||
|
||||
The six positions in every row are curated into two runtime groups:
|
||||
|
||||
- frames 0-2: ready and two locomotion contacts;
|
||||
- frames 3-5: profession action anticipation, impact and recovery/hold.
|
||||
|
||||
Hearthguard and Riftblade use the already accepted Phase 6 cycles and require
|
||||
no paid generation. Runtime VFX remain separate from character frames.
|
||||
|
||||
The initial Wayrunner row is retained as rejected because the evade pose gained
|
||||
a second blade fragment and the counter pose lost its held dagger. The fourth
|
||||
and final authorized call is `wayrunner-r2`; no additional retry is allowed in
|
||||
this task.
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact bow-ready stance facing screen-right; first forward step with bow held low and cloak trailing; second forward step with clearly exchanged leg contact; planted archer stance raising the bow and reaching to the quiver; full bow draw aimed horizontally to screen-right with string hand beside the cheek; arrow-release follow-through with bow arm extended and draw arm moving back. Every pose changes arms, legs, torso and body weight. The arrow may remain touching the bow only; no detached projectile, enemy, trail, VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"cell": {
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"style": "match the attached Farstring identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, red-brown hair, teal scarf, navy-and-white archer coat, quiver, belts, boots and recurved bow, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact lantern-ready stance facing screen-right; first forward step with lantern kept low and free arm counter-swinging; second forward step with clearly exchanged leg contact; planted casting stance lifting the lantern to chest height and opening the free hand toward the ally; healing invocation with lantern raised above shoulder height, knees braced and free hand extended; controlled recovery lowering the lantern toward the original ready stance. Every pose changes arms, legs, torso and body weight. Lantern light stays inside the lantern; no detached glow, particles, ally, VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"cell": {
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"style": "match the attached Kindhand identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, braided dark hair, white-and-navy healer coat with teal ornaments, satchel, boots and teal lantern, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion with torso leaning back and knees bent; decisive counter-thrust toward screen-right; balanced recovery into the original ready stance. The same single curved dagger from the identity anchor stays held in the same dominant hand and visibly connected to that hand in all six poses, including evade, thrust and recovery. Never add a second weapon and never detach the dagger, blade, handle, sheath or any clothing fragment. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"cell": {
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and exactly one curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion crouch with torso leaning away and dagger drawn back; decisive counter-lunge with dagger arm extended toward screen-right and rear leg braced; balanced recovery into the original ready stance. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"cell": {
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 50 KiB |
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"engine_revision": "7cf852184bff",
|
||||
"extract_args": {
|
||||
"segmentation": "projection"
|
||||
},
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frames": 6,
|
||||
"method": "components",
|
||||
"files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"frame_records": [
|
||||
{
|
||||
"index": 0,
|
||||
"nontransparent_pixels": 14302,
|
||||
"bbox": [
|
||||
59,
|
||||
20,
|
||||
185,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"nontransparent_pixels": 14144,
|
||||
"bbox": [
|
||||
36,
|
||||
20,
|
||||
179,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"nontransparent_pixels": 14771,
|
||||
"bbox": [
|
||||
73,
|
||||
20,
|
||||
217,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"nontransparent_pixels": 13527,
|
||||
"bbox": [
|
||||
50,
|
||||
20,
|
||||
190,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"nontransparent_pixels": 11505,
|
||||
"bbox": [
|
||||
76,
|
||||
20,
|
||||
183,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"nontransparent_pixels": 15557,
|
||||
"bbox": [
|
||||
44,
|
||||
20,
|
||||
209,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
}
|
||||
],
|
||||
"ok": true,
|
||||
"engine_revision": "7cf852184bff"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"characterId": "farstring-p9-0r2",
|
||||
"engine": "component-row",
|
||||
"game_input": "sprite-sheet-alpha.png",
|
||||
"degraded_static_fallback": false,
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"sprite_sheet_alpha": "sprite-sheet-alpha.png",
|
||||
"sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json",
|
||||
"base_image": "base-source.png",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"animation": {
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"columns": 6,
|
||||
"rows": {
|
||||
"battle_motion": {
|
||||
"row": 0,
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"durations_ms": [
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125
|
||||
],
|
||||
"loop": false,
|
||||
"frame_variant": "pixel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
Create a single horizontal sprite strip for the game character `farstring-p9-0r2` in the state `battle_motion`.
|
||||
|
||||
If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action.
|
||||
|
||||
Character: farstring-p9-0r2.
|
||||
Style contract: match the attached Farstring identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, red-brown hair, teal scarf, navy-and-white archer coat, quiver, belts, boots and recurved bow, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX.
|
||||
|
||||
Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork.
|
||||
|
||||
Animation action: six readable full-body key poses from left to right: exact bow-ready stance facing screen-right; first forward step with bow held low and cloak trailing; second forward step with clearly exchanged leg contact; planted archer stance raising the bow and reaching to the quiver; full bow draw aimed horizontally to screen-right with string hand beside the cheek; arrow-release follow-through with bow arm extended and draw arm moving back. Every pose changes arms, legs, torso and body weight. The arrow may remain touching the bow only; no detached projectile, enemy, trail, VFX, shadow, text or scenery.
|
||||
|
||||
Anchor lock:
|
||||
- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows.
|
||||
- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row.
|
||||
- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity.
|
||||
- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors.
|
||||
- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row.
|
||||
- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor.
|
||||
- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts.
|
||||
- Prefer a subtler animation over any change that mutates the character identity.
|
||||
|
||||
|
||||
|
||||
Transparency and artifact rules:
|
||||
- Prefer pose, expression, and silhouette changes over decorative effects.
|
||||
- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette.
|
||||
- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels.
|
||||
- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts.
|
||||
- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds.
|
||||
- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character.
|
||||
|
||||
Layout requirements:
|
||||
- Exactly 6 full-body frames, left to right, in one horizontal row.
|
||||
- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing.
|
||||
- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output.
|
||||
- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose.
|
||||
- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses.
|
||||
- Center one complete pose in each slot. No pose may cross into the neighboring slot.
|
||||
- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image.
|
||||
- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects.
|
||||
- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it.
|
||||
- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot.
|
||||
- Avoid motion blur. Use clear pose changes readable at 256x256.
|
||||
- Preserve the same silhouette, face, proportions, palette, material, and props across every frame.
|
||||
|
||||
Output only the sprite strip image.
|
||||
|
After Width: | Height: | Size: 225 KiB |
|
After Width: | Height: | Size: 225 KiB |
|
After Width: | Height: | Size: 97 KiB |
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"mode": "dry-run",
|
||||
"model": "gpt-image-2",
|
||||
"size": "16:9",
|
||||
"resolution": "2k",
|
||||
"output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png",
|
||||
"local_references": [
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png",
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png"
|
||||
],
|
||||
"remote_reference_count": 0,
|
||||
"prompt_chars": 6323
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"mode": "execute",
|
||||
"model": "gpt-image-2",
|
||||
"size": "16:9",
|
||||
"resolution": "2k",
|
||||
"output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png",
|
||||
"local_references": [
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png",
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png"
|
||||
],
|
||||
"remote_reference_count": 0,
|
||||
"prompt_chars": 6323,
|
||||
"task_id": "task_01KZV3FRNSMSRPQA7A5CCRCTAM",
|
||||
"status": "completed",
|
||||
"bytes": 2697868,
|
||||
"cost": 0.014,
|
||||
"credits_cost": 0.14
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"kind": "sprite-gen-inspect-report",
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring",
|
||||
"states": [
|
||||
"battle_motion"
|
||||
],
|
||||
"thresholds": {
|
||||
"histogram_min": 0.0,
|
||||
"dhash_min": 0.55,
|
||||
"motion_min": 0.01
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"source": "frames",
|
||||
"expected_frames": 6,
|
||||
"found_frames": 6,
|
||||
"natural_pose_count": 6,
|
||||
"frame_files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"metrics": {
|
||||
"histogram_intersection": {
|
||||
"min": 0.9030313276206934,
|
||||
"mean": 0.9402975935239378
|
||||
},
|
||||
"dhash_similarity": {
|
||||
"min": 0.5625,
|
||||
"mean": 0.8020833333333334
|
||||
},
|
||||
"motion_presence": 0.08065396178002451,
|
||||
"centroid_sigma": {
|
||||
"x": 11.205703521896254,
|
||||
"y": 5.292666799306076
|
||||
}
|
||||
},
|
||||
"ok": true,
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"version": 1,
|
||||
"kind": "sprite-gen-request",
|
||||
"engine": "component-row",
|
||||
"character": {
|
||||
"id": "farstring-p9-0r2",
|
||||
"description": "",
|
||||
"base_image": "base-source.png"
|
||||
},
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact bow-ready stance facing screen-right; first forward step with bow held low and cloak trailing; second forward step with clearly exchanged leg contact; planted archer stance raising the bow and reaching to the quiver; full bow draw aimed horizontally to screen-right with string hand beside the cheek; arrow-release follow-through with bow arm extended and draw arm moving back. Every pose changes arms, legs, torso and body weight. The arrow may remain touching the bow only; no detached projectile, enemy, trail, VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"style": "match the attached Farstring identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, red-brown hair, teal scarf, navy-and-white archer coat, quiver, belts, boots and recurved bow, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"motion_phase_guides": false,
|
||||
"layout": "taxonomy/v1",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 264 KiB |
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"errors": [],
|
||||
"atlas": "sprite-sheet-alpha.png",
|
||||
"manifest": "manifest.json",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"states": [
|
||||
"battle_motion"
|
||||
],
|
||||
"cells": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 0,
|
||||
"nontransparent_pixels": 14302,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 1,
|
||||
"nontransparent_pixels": 14144,
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 2,
|
||||
"nontransparent_pixels": 14771,
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 3,
|
||||
"nontransparent_pixels": 13527,
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 4,
|
||||
"nontransparent_pixels": 11505,
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 5,
|
||||
"nontransparent_pixels": 15557,
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
],
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 143 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"engine_revision": "7cf852184bff",
|
||||
"extract_args": {},
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frames": 6,
|
||||
"method": "components",
|
||||
"files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"frame_records": [
|
||||
{
|
||||
"index": 0,
|
||||
"nontransparent_pixels": 13219,
|
||||
"bbox": [
|
||||
87,
|
||||
20,
|
||||
179,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"nontransparent_pixels": 14360,
|
||||
"bbox": [
|
||||
74,
|
||||
20,
|
||||
186,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"nontransparent_pixels": 14972,
|
||||
"bbox": [
|
||||
73,
|
||||
20,
|
||||
189,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"nontransparent_pixels": 14199,
|
||||
"bbox": [
|
||||
71,
|
||||
20,
|
||||
191,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"nontransparent_pixels": 12135,
|
||||
"bbox": [
|
||||
81,
|
||||
20,
|
||||
182,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"nontransparent_pixels": 13190,
|
||||
"bbox": [
|
||||
86,
|
||||
20,
|
||||
179,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
}
|
||||
],
|
||||
"ok": true,
|
||||
"engine_revision": "7cf852184bff"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"characterId": "kindhand-p9-0r2",
|
||||
"engine": "component-row",
|
||||
"game_input": "sprite-sheet-alpha.png",
|
||||
"degraded_static_fallback": false,
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"sprite_sheet_alpha": "sprite-sheet-alpha.png",
|
||||
"sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json",
|
||||
"base_image": "base-source.png",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"animation": {
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"columns": 6,
|
||||
"rows": {
|
||||
"battle_motion": {
|
||||
"row": 0,
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"durations_ms": [
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125
|
||||
],
|
||||
"loop": false,
|
||||
"frame_variant": "pixel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
Create a single horizontal sprite strip for the game character `kindhand-p9-0r2` in the state `battle_motion`.
|
||||
|
||||
If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action.
|
||||
|
||||
Character: kindhand-p9-0r2.
|
||||
Style contract: match the attached Kindhand identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, braided dark hair, white-and-navy healer coat with teal ornaments, satchel, boots and teal lantern, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX.
|
||||
|
||||
Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork.
|
||||
|
||||
Animation action: six readable full-body key poses from left to right: exact lantern-ready stance facing screen-right; first forward step with lantern kept low and free arm counter-swinging; second forward step with clearly exchanged leg contact; planted casting stance lifting the lantern to chest height and opening the free hand toward the ally; healing invocation with lantern raised above shoulder height, knees braced and free hand extended; controlled recovery lowering the lantern toward the original ready stance. Every pose changes arms, legs, torso and body weight. Lantern light stays inside the lantern; no detached glow, particles, ally, VFX, shadow, text or scenery.
|
||||
|
||||
Anchor lock:
|
||||
- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows.
|
||||
- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row.
|
||||
- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity.
|
||||
- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors.
|
||||
- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row.
|
||||
- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor.
|
||||
- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts.
|
||||
- Prefer a subtler animation over any change that mutates the character identity.
|
||||
|
||||
|
||||
|
||||
Transparency and artifact rules:
|
||||
- Prefer pose, expression, and silhouette changes over decorative effects.
|
||||
- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette.
|
||||
- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels.
|
||||
- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts.
|
||||
- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds.
|
||||
- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character.
|
||||
|
||||
Layout requirements:
|
||||
- Exactly 6 full-body frames, left to right, in one horizontal row.
|
||||
- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing.
|
||||
- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output.
|
||||
- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose.
|
||||
- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses.
|
||||
- Center one complete pose in each slot. No pose may cross into the neighboring slot.
|
||||
- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image.
|
||||
- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects.
|
||||
- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it.
|
||||
- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot.
|
||||
- Avoid motion blur. Use clear pose changes readable at 256x256.
|
||||
- Preserve the same silhouette, face, proportions, palette, material, and props across every frame.
|
||||
|
||||
Output only the sprite strip image.
|
||||
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 100 KiB |
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"mode": "dry-run",
|
||||
"model": "gpt-image-2",
|
||||
"size": "16:9",
|
||||
"resolution": "2k",
|
||||
"output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png",
|
||||
"local_references": [
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png",
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png"
|
||||
],
|
||||
"remote_reference_count": 0,
|
||||
"prompt_chars": 6386
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"mode": "execute",
|
||||
"model": "gpt-image-2",
|
||||
"size": "16:9",
|
||||
"resolution": "2k",
|
||||
"output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png",
|
||||
"local_references": [
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png",
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png"
|
||||
],
|
||||
"remote_reference_count": 0,
|
||||
"prompt_chars": 6386,
|
||||
"task_id": "task_01KZV3FS97ACAN816CQ9759PHC",
|
||||
"status": "completed",
|
||||
"bytes": 2980744,
|
||||
"cost": 0.014,
|
||||
"credits_cost": 0.14
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"kind": "sprite-gen-inspect-report",
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand",
|
||||
"states": [
|
||||
"battle_motion"
|
||||
],
|
||||
"thresholds": {
|
||||
"histogram_min": 0.0,
|
||||
"dhash_min": 0.55,
|
||||
"motion_min": 0.01
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"source": "frames",
|
||||
"expected_frames": 6,
|
||||
"found_frames": 6,
|
||||
"natural_pose_count": 6,
|
||||
"frame_files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"metrics": {
|
||||
"histogram_intersection": {
|
||||
"min": 0.9099098027554764,
|
||||
"mean": 0.9387761506313932
|
||||
},
|
||||
"dhash_similarity": {
|
||||
"min": 0.875,
|
||||
"mean": 0.9135416666666667
|
||||
},
|
||||
"motion_presence": 0.06173651003370098,
|
||||
"centroid_sigma": {
|
||||
"x": 1.1887552883033723,
|
||||
"y": 1.7503021164440575
|
||||
}
|
||||
},
|
||||
"ok": true,
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"version": 1,
|
||||
"kind": "sprite-gen-request",
|
||||
"engine": "component-row",
|
||||
"character": {
|
||||
"id": "kindhand-p9-0r2",
|
||||
"description": "",
|
||||
"base_image": "base-source.png"
|
||||
},
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact lantern-ready stance facing screen-right; first forward step with lantern kept low and free arm counter-swinging; second forward step with clearly exchanged leg contact; planted casting stance lifting the lantern to chest height and opening the free hand toward the ally; healing invocation with lantern raised above shoulder height, knees braced and free hand extended; controlled recovery lowering the lantern toward the original ready stance. Every pose changes arms, legs, torso and body weight. Lantern light stays inside the lantern; no detached glow, particles, ally, VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"style": "match the attached Kindhand identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, braided dark hair, white-and-navy healer coat with teal ornaments, satchel, boots and teal lantern, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"motion_phase_guides": false,
|
||||
"layout": "taxonomy/v1",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 260 KiB |
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"errors": [],
|
||||
"atlas": "sprite-sheet-alpha.png",
|
||||
"manifest": "manifest.json",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"states": [
|
||||
"battle_motion"
|
||||
],
|
||||
"cells": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 0,
|
||||
"nontransparent_pixels": 13219,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 1,
|
||||
"nontransparent_pixels": 14360,
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 2,
|
||||
"nontransparent_pixels": 14972,
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 3,
|
||||
"nontransparent_pixels": 14199,
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 4,
|
||||
"nontransparent_pixels": 12135,
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 5,
|
||||
"nontransparent_pixels": 13190,
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
],
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 454 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 41 KiB |
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"engine_revision": "7cf852184bff",
|
||||
"extract_args": {
|
||||
"segmentation": "projection"
|
||||
},
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frames": 6,
|
||||
"method": "components",
|
||||
"files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"frame_records": [
|
||||
{
|
||||
"index": 0,
|
||||
"nontransparent_pixels": 11901,
|
||||
"bbox": [
|
||||
58,
|
||||
20,
|
||||
181,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"nontransparent_pixels": 13545,
|
||||
"bbox": [
|
||||
86,
|
||||
20,
|
||||
228,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"nontransparent_pixels": 12866,
|
||||
"bbox": [
|
||||
68,
|
||||
20,
|
||||
199,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"nontransparent_pixels": 20379,
|
||||
"bbox": [
|
||||
0,
|
||||
20,
|
||||
185,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 37,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"nontransparent_pixels": 14865,
|
||||
"bbox": [
|
||||
55,
|
||||
20,
|
||||
217,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"nontransparent_pixels": 12432,
|
||||
"bbox": [
|
||||
56,
|
||||
20,
|
||||
189,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
}
|
||||
],
|
||||
"ok": true,
|
||||
"engine_revision": "7cf852184bff"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": [
|
||||
"battle_motion: frame 03 has 37 non-transparent edge pixels"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"characterId": "wayrunner-p9-0r2-r2",
|
||||
"engine": "component-row",
|
||||
"game_input": "sprite-sheet-alpha.png",
|
||||
"degraded_static_fallback": false,
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"sprite_sheet_alpha": "sprite-sheet-alpha.png",
|
||||
"sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json",
|
||||
"base_image": "base-source.png",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"animation": {
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"columns": 6,
|
||||
"rows": {
|
||||
"battle_motion": {
|
||||
"row": 0,
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"durations_ms": [
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125
|
||||
],
|
||||
"loop": false,
|
||||
"frame_variant": "pixel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
Create a single horizontal sprite strip for the game character `wayrunner-p9-0r2-r2` in the state `battle_motion`.
|
||||
|
||||
If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action.
|
||||
|
||||
Character: wayrunner-p9-0r2-r2.
|
||||
Style contract: match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and exactly one curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX.
|
||||
|
||||
Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork.
|
||||
|
||||
Animation action: six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion with torso leaning back and knees bent; decisive counter-thrust toward screen-right; balanced recovery into the original ready stance. The same single curved dagger from the identity anchor stays held in the same dominant hand and visibly connected to that hand in all six poses, including evade, thrust and recovery. Never add a second weapon and never detach the dagger, blade, handle, sheath or any clothing fragment. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery.
|
||||
|
||||
Anchor lock:
|
||||
- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows.
|
||||
- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row.
|
||||
- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity.
|
||||
- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors.
|
||||
- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row.
|
||||
- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor.
|
||||
- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts.
|
||||
- Prefer a subtler animation over any change that mutates the character identity.
|
||||
|
||||
|
||||
|
||||
Transparency and artifact rules:
|
||||
- Prefer pose, expression, and silhouette changes over decorative effects.
|
||||
- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette.
|
||||
- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels.
|
||||
- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts.
|
||||
- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds.
|
||||
- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character.
|
||||
|
||||
Layout requirements:
|
||||
- Exactly 6 full-body frames, left to right, in one horizontal row.
|
||||
- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing.
|
||||
- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output.
|
||||
- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose.
|
||||
- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses.
|
||||
- Center one complete pose in each slot. No pose may cross into the neighboring slot.
|
||||
- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image.
|
||||
- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects.
|
||||
- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it.
|
||||
- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot.
|
||||
- Avoid motion blur. Use clear pose changes readable at 256x256.
|
||||
- Preserve the same silhouette, face, proportions, palette, material, and props across every frame.
|
||||
|
||||
Output only the sprite strip image.
|
||||
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 99 KiB |
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"mode": "dry-run",
|
||||
"model": "gpt-image-2",
|
||||
"size": "16:9",
|
||||
"resolution": "2k",
|
||||
"output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png",
|
||||
"local_references": [
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png",
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png"
|
||||
],
|
||||
"remote_reference_count": 0,
|
||||
"prompt_chars": 6474
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"mode": "execute",
|
||||
"model": "gpt-image-2",
|
||||
"size": "16:9",
|
||||
"resolution": "2k",
|
||||
"output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png",
|
||||
"local_references": [
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png",
|
||||
"docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png"
|
||||
],
|
||||
"remote_reference_count": 0,
|
||||
"prompt_chars": 6474,
|
||||
"task_id": "task_01KZV3X3Q3WZ178AC8MXNEDXZG",
|
||||
"status": "completed",
|
||||
"bytes": 2647860,
|
||||
"cost": 0.014,
|
||||
"credits_cost": 0.14
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"kind": "sprite-gen-inspect-report",
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2",
|
||||
"states": [
|
||||
"battle_motion"
|
||||
],
|
||||
"thresholds": {
|
||||
"histogram_min": 0.0,
|
||||
"dhash_min": 0.55,
|
||||
"motion_min": 0.01
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"source": "frames",
|
||||
"expected_frames": 6,
|
||||
"found_frames": 6,
|
||||
"natural_pose_count": 6,
|
||||
"frame_files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"metrics": {
|
||||
"histogram_intersection": {
|
||||
"min": 0.8931689880888273,
|
||||
"mean": 0.9415338242405802
|
||||
},
|
||||
"dhash_similarity": {
|
||||
"min": 0.5625,
|
||||
"mean": 0.7239583333333334
|
||||
},
|
||||
"motion_presence": 0.1282040824142157,
|
||||
"centroid_sigma": {
|
||||
"x": 18.61100372100719,
|
||||
"y": 3.5107240174891396
|
||||
}
|
||||
},
|
||||
"ok": true,
|
||||
"errors": [],
|
||||
"warnings": [
|
||||
"battle_motion: frame 03 has 37 non-transparent edge pixels"
|
||||
]
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": [
|
||||
"battle_motion: frame 03 has 37 non-transparent edge pixels"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"version": 1,
|
||||
"kind": "sprite-gen-request",
|
||||
"engine": "component-row",
|
||||
"character": {
|
||||
"id": "wayrunner-p9-0r2-r2",
|
||||
"description": "",
|
||||
"base_image": "base-source.png"
|
||||
},
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"states": {
|
||||
"battle_motion": {
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"loop": false,
|
||||
"action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion with torso leaning back and knees bent; decisive counter-thrust toward screen-right; balanced recovery into the original ready stance. The same single curved dagger from the identity anchor stays held in the same dominant hand and visibly connected to that hand in all six poses, including evade, thrust and recovery. Never add a second weapon and never detach the dagger, blade, handle, sheath or any clothing fragment. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery"
|
||||
}
|
||||
},
|
||||
"style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and exactly one curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX",
|
||||
"motion_phase_guides": false,
|
||||
"layout": "taxonomy/v1",
|
||||
"fit": {
|
||||
"resample": "lanczos",
|
||||
"align_x": "foot-centroid",
|
||||
"align_y": "bottom",
|
||||
"pixel_perfect": false
|
||||
},
|
||||
"chroma": {
|
||||
"mode": "rgb",
|
||||
"unmix_reach": 4,
|
||||
"spill_max_fraction": 0.005
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 268 KiB |
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"errors": [],
|
||||
"atlas": "sprite-sheet-alpha.png",
|
||||
"manifest": "manifest.json",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"states": [
|
||||
"battle_motion"
|
||||
],
|
||||
"cells": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 0,
|
||||
"nontransparent_pixels": 11901,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 1,
|
||||
"nontransparent_pixels": 13545,
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 2,
|
||||
"nontransparent_pixels": 12866,
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 3,
|
||||
"nontransparent_pixels": 20379,
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 4,
|
||||
"nontransparent_pixels": 14865,
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frame": 5,
|
||||
"nontransparent_pixels": 12432,
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
],
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"ok": true,
|
||||
"engine": "component-row",
|
||||
"engine_revision": "7cf852184bff",
|
||||
"extract_args": {
|
||||
"segmentation": "projection"
|
||||
},
|
||||
"run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"state": "battle_motion",
|
||||
"frames": 6,
|
||||
"method": "components",
|
||||
"files": [
|
||||
"frames/battle_motion/frame-0.png",
|
||||
"frames/battle_motion/frame-1.png",
|
||||
"frames/battle_motion/frame-2.png",
|
||||
"frames/battle_motion/frame-3.png",
|
||||
"frames/battle_motion/frame-4.png",
|
||||
"frames/battle_motion/frame-5.png"
|
||||
],
|
||||
"frame_records": [
|
||||
{
|
||||
"index": 0,
|
||||
"nontransparent_pixels": 12304,
|
||||
"bbox": [
|
||||
55,
|
||||
20,
|
||||
191,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"nontransparent_pixels": 12605,
|
||||
"bbox": [
|
||||
92,
|
||||
20,
|
||||
219,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"nontransparent_pixels": 11795,
|
||||
"bbox": [
|
||||
51,
|
||||
20,
|
||||
163,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"nontransparent_pixels": 22113,
|
||||
"bbox": [
|
||||
25,
|
||||
20,
|
||||
217,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"nontransparent_pixels": 14657,
|
||||
"bbox": [
|
||||
10,
|
||||
20,
|
||||
184,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"nontransparent_pixels": 12745,
|
||||
"bbox": [
|
||||
53,
|
||||
20,
|
||||
189,
|
||||
236
|
||||
],
|
||||
"edge_pixels": 0,
|
||||
"chroma_adjacent_pixels": 0
|
||||
}
|
||||
],
|
||||
"ok": true,
|
||||
"engine_revision": "7cf852184bff"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"characterId": "wayrunner-p9-0r2",
|
||||
"engine": "component-row",
|
||||
"game_input": "sprite-sheet-alpha.png",
|
||||
"degraded_static_fallback": false,
|
||||
"curation_applied": false,
|
||||
"frame_variant": "pixel",
|
||||
"sprite_sheet_alpha": "sprite-sheet-alpha.png",
|
||||
"sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json",
|
||||
"base_image": "base-source.png",
|
||||
"cell": {
|
||||
"shape": "square",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"safe_margin_x": 24,
|
||||
"safe_margin_y": 20
|
||||
},
|
||||
"chroma_key": {
|
||||
"name": "magenta",
|
||||
"hex": "#FF00FF",
|
||||
"rgb": [
|
||||
255,
|
||||
0,
|
||||
255
|
||||
],
|
||||
"selection": "manual"
|
||||
},
|
||||
"animation": {
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"columns": 6,
|
||||
"rows": {
|
||||
"battle_motion": {
|
||||
"row": 0,
|
||||
"frames": 6,
|
||||
"fps": 8,
|
||||
"durations_ms": [
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125,
|
||||
125
|
||||
],
|
||||
"loop": false,
|
||||
"frame_variant": "pixel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"frame_layout": {
|
||||
"sheetWidth": 1536,
|
||||
"sheetHeight": 256,
|
||||
"cellWidth": 256,
|
||||
"cellHeight": 256,
|
||||
"rows": {
|
||||
"battle_motion": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 256,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 512,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 768,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1024,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
},
|
||||
{
|
||||
"x": 1280,
|
||||
"y": 0,
|
||||
"w": 256,
|
||||
"h": 256
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
Create a single horizontal sprite strip for the game character `wayrunner-p9-0r2` in the state `battle_motion`.
|
||||
|
||||
If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action.
|
||||
|
||||
Character: wayrunner-p9-0r2.
|
||||
Style contract: match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX.
|
||||
|
||||
Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork.
|
||||
|
||||
Animation action: six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion crouch with torso leaning away and dagger drawn back; decisive counter-lunge with dagger arm extended toward screen-right and rear leg braced; balanced recovery into the original ready stance. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery.
|
||||
|
||||
Anchor lock:
|
||||
- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows.
|
||||
- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row.
|
||||
- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity.
|
||||
- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors.
|
||||
- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row.
|
||||
- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor.
|
||||
- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts.
|
||||
- Prefer a subtler animation over any change that mutates the character identity.
|
||||
|
||||
|
||||
|
||||
Transparency and artifact rules:
|
||||
- Prefer pose, expression, and silhouette changes over decorative effects.
|
||||
- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette.
|
||||
- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels.
|
||||
- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts.
|
||||
- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds.
|
||||
- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character.
|
||||
|
||||
Layout requirements:
|
||||
- Exactly 6 full-body frames, left to right, in one horizontal row.
|
||||
- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing.
|
||||
- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output.
|
||||
- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose.
|
||||
- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses.
|
||||
- Center one complete pose in each slot. No pose may cross into the neighboring slot.
|
||||
- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image.
|
||||
- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects.
|
||||
- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it.
|
||||
- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot.
|
||||
- Avoid motion blur. Use clear pose changes readable at 256x256.
|
||||
- Preserve the same silhouette, face, proportions, palette, material, and props across every frame.
|
||||
|
||||
Output only the sprite strip image.
|
||||
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 232 KiB |
|
After Width: | Height: | Size: 102 KiB |