Approve Wu river strategist handpainted sprite v1

This commit is contained in:
2026-07-02 02:18:32 +09:00
parent 0c3b323f2c
commit 0d5e427157
22 changed files with 126 additions and 64 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 KiB

View File

@@ -0,0 +1,24 @@
# Wu River Strategist Hand-Painted v1
- source: `handpaint-batch4-wu-strategist-river-source-v1.png`
- base status: ok
- action status: ok
- base partial alpha: 0, opaque pixels: 2154448
- action partial alpha: 0, opaque pixels: 5059004
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- base bbox width range: 164..249
- base bbox height range: 286..294
- base bottom range: 303..303
- action bbox width range: 159..244
- action bbox height range: 286..295
- action bottom range: 303..303
- contact: `handpaint-batch4-wu-strategist-river-v1-contact.png`
- animation: `handpaint-batch4-wu-strategist-river-v1-animation.gif`
- before/after: `handpaint-batch4-wu-strategist-river-v1-before-after.png`
- scale compare: `handpaint-batch4-wu-strategist-river-v1-scale-compare.png`
- battle composite: `handpaint-batch4-wu-strategist-river-v1-battle-composite.png`
- manual checks: run build and local browser verification after generation
- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -6,9 +6,9 @@ This gate catches obvious sprite-art failures before user approval. It does not
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
- Approved baseline units: 70
- Approved baseline units: 71
- Pending approval units: 0
- Queued rework units: 21
- Queued rework units: 20
## Checked Rules

View File

@@ -72,13 +72,14 @@
"unit-wu-officer-river",
"unit-wu-strategist",
"unit-wu-strategist-fire",
"unit-wu-strategist-river",
"unit-zhang-fei"
],
"pendingApproval": [],
"nextAfterApproval": [],
"stageCounts": {
"approved-baseline": 70,
"queued-rework": 21
"approved-baseline": 71,
"queued-rework": 20
},
"batches": [
{
@@ -686,24 +687,10 @@
"label": "Batch 4 Wu generic units",
"total": 16,
"stageCounts": {
"approved-baseline": 14,
"queued-rework": 2
"approved-baseline": 15,
"queued-rework": 1
},
"units": [
{
"stem": "unit-wu-strategist-river",
"reviewStage": "queued-rework",
"queueRole": "queued rework",
"baseStatus": "border-hits=32",
"actionStatus": "border-hits=98",
"battleBasePx": [
38.8,
39.3,
44.7,
44.9
],
"spec": null
},
{
"stem": "unit-wu-yi",
"reviewStage": "queued-rework",
@@ -913,6 +900,20 @@
46.3
],
"spec": null
},
{
"stem": "unit-wu-strategist-river",
"reviewStage": "approved-baseline",
"queueRole": "approved reference",
"baseStatus": "ok",
"actionStatus": "ok",
"battleBasePx": [
26.2,
39.8,
45.7,
47.0
],
"spec": null
}
]
},

View File

@@ -6,9 +6,9 @@ Use this as the long-running queue for the full hand-painted sprite rework. It i
## Current State
- Approved baseline units: 70
- Approved baseline units: 71
- Pending approval units: 0
- Queued rework units: 21
- Queued rework units: 20
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
@@ -98,11 +98,10 @@ No next unit is currently defined.
- Batch key: `batch4-wu`
- Total units: 16
- Stage counts: approved-baseline 14, queued-rework 2
- Stage counts: approved-baseline 15, queued-rework 1
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-wu-strategist-river` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-wu-yi` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-wu-archer` | approved reference | approved-baseline | technical ok | 28.3..34.3 x 46.0..46.0 | |
| `unit-wu-archer-naval` | approved reference | approved-baseline | technical ok | 33.9..36.6 x 44.2..46.0 | |
@@ -118,6 +117,7 @@ No next unit is currently defined.
| `unit-wu-officer-river` | approved reference | approved-baseline | technical ok | 26.2..42.5 x 43.6..45.7 | |
| `unit-wu-strategist` | approved reference | approved-baseline | technical ok | 25.7..40.7 x 46.0..46.3 | |
| `unit-wu-strategist-fire` | approved reference | approved-baseline | technical ok | 27.2..33.1 x 45.7..46.3 | |
| `unit-wu-strategist-river` | approved reference | approved-baseline | technical ok | 26.2..39.8 x 45.7..47.0 | |
### Batch 5 remaining rebel/bandit units

Binary file not shown.

Before

Width:  |  Height:  |  Size: 644 KiB

After

Width:  |  Height:  |  Size: 646 KiB

View File

@@ -4,9 +4,9 @@ This file is generated by `scripts/write-unit-sprite-next-steps.py`.
## Current Gate
- Approved baseline units: 70
- Approved baseline units: 71
- Pending approval units: 0
- Queued rework units: 21
- Queued rework units: 20
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
- Current approval board: not generated until the next pending sample.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 658 KiB

After

Width:  |  Height:  |  Size: 668 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -11,8 +11,8 @@
"batch7-unique-officer": 19
},
"stage_counts": {
"approved-baseline": 70,
"queued-rework": 21
"approved-baseline": 71,
"queued-rework": 20
},
"rows": [
{
@@ -4805,7 +4805,7 @@
},
{
"batch": "batch4-wu",
"review_stage": "queued-rework",
"review_stage": "approved-baseline",
"stem": "unit-wu-strategist-river",
"base": {
"key": "unit-wu-strategist-river",
@@ -4815,23 +4815,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 1999925,
"border_hits": 32,
"min_width": 243,
"max_width": 246,
"min_height": 280,
"max_height": 281,
"min_bottom": 281,
"max_bottom": 287,
"opaque_pixels": 2154448,
"border_hits": 0,
"min_width": 164,
"max_width": 249,
"min_height": 286,
"max_height": 294,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 3,
"height_swing": 1,
"bottom_swing": 6,
"battle_min_width_px": 38.8,
"battle_max_width_px": 39.3,
"battle_min_height_px": 44.7,
"battle_max_height_px": 44.9,
"status": "border-hits=32"
"width_swing": 85,
"height_swing": 8,
"bottom_swing": 0,
"battle_min_width_px": 26.2,
"battle_max_width_px": 39.8,
"battle_min_height_px": 45.7,
"battle_max_height_px": 47.0,
"status": "ok"
},
"actions": {
"key": "unit-wu-strategist-river-actions",
@@ -4841,23 +4841,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 4453376,
"border_hits": 98,
"min_width": 220,
"max_width": 255,
"min_height": 275,
"max_height": 281,
"min_bottom": 274,
"max_bottom": 289,
"opaque_pixels": 5059004,
"border_hits": 0,
"min_width": 159,
"max_width": 244,
"min_height": 286,
"max_height": 295,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 35,
"height_swing": 6,
"bottom_swing": 15,
"battle_min_width_px": 35.1,
"battle_max_width_px": 40.7,
"battle_min_height_px": 43.9,
"battle_max_height_px": 44.9,
"status": "border-hits=98"
"width_swing": 85,
"height_swing": 9,
"bottom_swing": 0,
"battle_min_width_px": 25.4,
"battle_max_width_px": 39.0,
"battle_min_height_px": 45.7,
"battle_max_height_px": 47.1,
"status": "ok"
}
},
{

View File

@@ -29,8 +29,8 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
## Review Stage Counts
- approved-baseline: 70
- queued-rework: 21
- approved-baseline: 71
- queued-rework: 20
## Batch Plan
@@ -136,7 +136,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
| batch4-wu | approved-baseline | `unit-wu-officer-river` | ok | ok | 164..266 x 273..286 | 161..286 x 272..293 | 26.2..42.5 x 43.6..45.7 | w102 h13 b0 |
| batch4-wu | approved-baseline | `unit-wu-strategist` | ok | ok | 161..255 x 288..290 | 161..265 x 288..290 | 25.7..40.7 x 46.0..46.3 | w94 h2 b0 |
| batch4-wu | approved-baseline | `unit-wu-strategist-fire` | ok | ok | 170..207 x 286..290 | 163..248 x 286..295 | 27.2..33.1 x 45.7..46.3 | w37 h4 b0 |
| batch4-wu | queued-rework | `unit-wu-strategist-river` | border-hits=32 | border-hits=98 | 243..246 x 280..281 | 220..255 x 275..281 | 38.8..39.3 x 44.7..44.9 | w3 h1 b6 |
| batch4-wu | approved-baseline | `unit-wu-strategist-river` | ok | ok | 164..249 x 286..294 | 159..244 x 286..295 | 26.2..39.8 x 45.7..47.0 | w85 h8 b0 |
| batch4-wu | queued-rework | `unit-wu-yi` | border-hits=32 | border-hits=82 | 200..254 x 279..279 | 200..263 x 275..279 | 31.9..40.6 x 44.6..44.6 | w54 h0 b6 |
| batch7-unique-officer | queued-rework | `unit-yan-yan` | border-hits=32 | border-hits=82 | 194..254 x 279..279 | 194..263 x 275..279 | 31.0..40.6 x 44.6..44.6 | w60 h0 b6 |
| batch7-unique-officer | queued-rework | `unit-yi-ji` | border-hits=32 | border-hits=98 | 243..246 x 280..281 | 220..255 x 275..281 | 38.8..39.3 x 44.7..44.9 | w3 h1 b6 |

View File

@@ -80,6 +80,7 @@
"unit-wu-officer-river",
"unit-wu-strategist",
"unit-wu-strategist-fire",
"unit-wu-strategist-river",
"unit-zhang-fei"
],
"pendingApproval": [],

View File

@@ -0,0 +1,36 @@
# Wu River Strategist v1 Approval Packet
- status: approved during continuous production run
- unit: `unit-wu-strategist-river`
- source art: `handpaint-batch4-wu-strategist-river-source-v1.png`
- contact sheet: `handpaint-batch4-wu-strategist-river-v1-contact.png`
- animation GIF: `handpaint-batch4-wu-strategist-river-v1-animation.gif`
- before/after: `handpaint-batch4-wu-strategist-river-v1-before-after.png`
- scale compare: `handpaint-batch4-wu-strategist-river-v1-scale-compare.png`
- battle composite: `handpaint-batch4-wu-strategist-river-v1-battle-composite.png`
- browser check: `handpaint-batch4-wu-strategist-river-v1-debug-preview-battle-check.png`
- current board: `unit-sprite-current-approval-board.png`
- debug URL: `http://127.0.0.1:4173/heros_web/?debug&debugSpritePreview=unit-wu-strategist-river&v=wu-strategist-river-v1`
## Visual Decision
Approved for the continuous batch run. v1 reads as a Wu strategist through the fan, scroll, scholar robe, and headpiece, while the river-blue inner robe and wave embroidery distinguish it from the fire and baseline strategist variants.
## Technical Checks
- base status: ok
- action status: ok
- base partial alpha: 0
- action partial alpha: 0
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- battle scale from sample gate: 26.2..39.8 x 45.7..47.0
- local build: passed
- Local browser console errors: `0`
- Local browser 404s: `0`
## Notes
The v1 sheet keeps the river theme on the robe and talisman instead of using detached water effects, preserving tactical readability and fully opaque unit pixels at battle scale.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 630 KiB

After

Width:  |  Height:  |  Size: 926 KiB