Approve Shu infantry banner handpainted sprite v4

This commit is contained in:
2026-07-01 20:05:26 +09:00
parent 704229d825
commit 694ce5ca04
22 changed files with 617 additions and 536 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 KiB

View File

@@ -0,0 +1,24 @@
# Shu Infantry Banner Hand-Painted v4
- source: `handpaint-batch2-shu-infantry-banner-source-v4.png`
- base status: ok
- action status: ok
- base partial alpha: 0, opaque pixels: 1928388
- action partial alpha: 0, opaque pixels: 4737090
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- base bbox width range: 180..206
- base bbox height range: 277..295
- base bottom range: 303..303
- action bbox width range: 180..300
- action bbox height range: 277..295
- action bottom range: 303..303
- contact: `handpaint-batch2-shu-infantry-banner-v4-contact.png`
- animation: `handpaint-batch2-shu-infantry-banner-v4-animation.gif`
- before/after: `handpaint-batch2-shu-infantry-banner-v4-before-after.png`
- scale compare: `handpaint-batch2-shu-infantry-banner-v4-scale-compare.png`
- battle composite: `handpaint-batch2-shu-infantry-banner-v4-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: 29 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: 42
- Approved baseline units: 43
- Pending approval units: 0
- Queued rework units: 49
- Queued rework units: 48
## Checked Rules

File diff suppressed because it is too large Load Diff

View File

@@ -6,25 +6,15 @@ Use this as the long-running queue for the full hand-painted sprite rework. It i
## Current State
- Approved baseline units: 6
- Pending approval units: 1
- Queued rework units: 84
- Approved baseline units: 43
- Pending approval units: 0
- Queued rework units: 48
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
## Approval Blocker
Do not start the next unit, commit, push, or deploy while these units are pending:
- `unit-shu-infantry`
## Next After Approval
1. `unit-shu-spearman` - spec `unit-sprite-batch2-shu-spearman-spec.md`
2. `unit-shu-archer` - spec `unit-sprite-batch2-shu-archer-spec.md`
3. `unit-shu-cavalry` - spec `unit-sprite-batch2-shu-cavalry-spec.md`
4. `unit-shu-strategist` - spec `unit-sprite-batch2-shu-strategist-spec.md`
5. `unit-shu-officer` - spec `unit-sprite-batch2-shu-officer-spec.md`
No next unit is currently defined.
## Batch Queue
@@ -56,21 +46,10 @@ Do not start the next unit, commit, push, or deploy while these units are pendin
- Batch key: `batch2-shu`
- Total units: 18
- Stage counts: pending-approval 1, queued-rework 17
- Stage counts: approved-baseline 11, queued-rework 7
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-shu-infantry` | current approval sample | pending-approval | technical ok | 25.6..32.9 x 46.3..47.3 | |
| `unit-shu-spearman` | next primary queue | queued-rework | base border-hits=32; actions border-hits=82 | 31.0..40.6 x 44.6..44.6 | `unit-sprite-batch2-shu-spearman-spec.md` |
| `unit-shu-archer` | next primary queue | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | `unit-sprite-batch2-shu-archer-spec.md` |
| `unit-shu-cavalry` | next primary queue | queued-rework | base border-hits=64; actions border-hits=144 | 25.6..46.5 x 45.0..46.2 | `unit-sprite-batch2-shu-cavalry-spec.md` |
| `unit-shu-strategist` | next primary queue | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | `unit-sprite-batch2-shu-strategist-spec.md` |
| `unit-shu-officer` | next primary queue | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | `unit-sprite-batch2-shu-officer-spec.md` |
| `unit-shu-archer-longbow` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | |
| `unit-shu-archer-veteran` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 39.8..39.9 x 45.0..46.0 | |
| `unit-shu-cavalry-scout` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 25.6..46.5 x 45.0..46.2 | |
| `unit-shu-cavalry-white` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 25.6..46.5 x 45.0..46.2 | |
| `unit-shu-infantry-banner` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-shu-infantry-guard` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 31.6..44.7 x 45.0..46.0 | |
| `unit-shu-officer-council` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-shu-officer-vanguard` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 33.2..41.2 x 45.0..46.0 | |
@@ -78,90 +57,101 @@ Do not start the next unit, commit, push, or deploy while these units are pendin
| `unit-shu-spearman-veteran` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 32.3..41.2 x 45.0..46.0 | |
| `unit-shu-strategist-field` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-shu-strategist-white` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-shu-archer` | approved reference | approved-baseline | technical ok | 25.2..41.5 x 45.4..47.1 | `unit-sprite-batch2-shu-archer-spec.md` |
| `unit-shu-archer-longbow` | approved reference | approved-baseline | technical ok | 22.2..38.0 x 45.7..46.0 | |
| `unit-shu-archer-veteran` | approved reference | approved-baseline | technical ok | 24.6..39.9 x 45.7..46.0 | |
| `unit-shu-cavalry` | approved reference | approved-baseline | technical ok | 26.5..39.1 x 46.0..46.3 | `unit-sprite-batch2-shu-cavalry-spec.md` |
| `unit-shu-cavalry-scout` | approved reference | approved-baseline | technical ok | 22.4..41.9 x 44.1..46.3 | |
| `unit-shu-cavalry-white` | approved reference | approved-baseline | technical ok | 27.8..39.0 x 44.1..46.3 | |
| `unit-shu-infantry` | approved reference | approved-baseline | technical ok | 29.2..35.5 x 46.0..46.0 | |
| `unit-shu-infantry-banner` | approved reference | approved-baseline | technical ok | 28.8..32.9 x 44.2..47.1 | |
| `unit-shu-officer` | approved reference | approved-baseline | technical ok | 25.7..32.9 x 46.0..47.1 | `unit-sprite-batch2-shu-officer-spec.md` |
| `unit-shu-spearman` | approved reference | approved-baseline | technical ok | 23.3..42.0 x 43.8..46.3 | `unit-sprite-batch2-shu-spearman-spec.md` |
| `unit-shu-strategist` | approved reference | approved-baseline | technical ok | 24.9..34.2 x 45.0..46.8 | `unit-sprite-batch2-shu-strategist-spec.md` |
### Batch 3 Wei generic units
- Batch key: `batch3-wei`
- Total units: 16
- Stage counts: queued-rework 16
- Stage counts: approved-baseline 5, queued-rework 11
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-wei-archer` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | |
| `unit-wei-archer-crossbow` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 39.1..39.3 x 44.6..44.6 | |
| `unit-wei-archer-veteran` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 39.8..39.9 x 45.0..46.0 | |
| `unit-wei-cavalry` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 25.6..46.5 x 45.0..46.2 | |
| `unit-wei-cavalry-elite` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 26.5..47.3 x 45.0..46.0 | |
| `unit-wei-cavalry-iron` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 26.5..47.3 x 45.0..46.0 | |
| `unit-wei-infantry` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-wei-infantry-shield` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-wei-infantry-veteran` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 31.6..44.7 x 45.0..46.0 | |
| `unit-wei-officer` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-wei-officer-gate` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-wei-officer-iron` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 33.2..41.2 x 45.0..46.0 | |
| `unit-wei-strategist` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-wei-strategist-black` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-wei-strategist-blue` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-wei-yan` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.0..40.6 x 44.6..44.6 | |
| `unit-wei-archer` | approved reference | approved-baseline | technical ok | 30.4..39.1 x 46.0..47.3 | |
| `unit-wei-cavalry` | approved reference | approved-baseline | technical ok | 23.3..42.5 x 46.0..47.1 | |
| `unit-wei-infantry` | approved reference | approved-baseline | technical ok | 27.8..35.6 x 45.0..47.1 | |
| `unit-wei-officer` | approved reference | approved-baseline | technical ok | 25.4..33.1 x 46.0..47.1 | |
| `unit-wei-strategist` | approved reference | approved-baseline | technical ok | 25.6..37.2 x 46.3..46.3 | |
### Batch 4 Wu generic units
- Batch key: `batch4-wu`
- Total units: 16
- Stage counts: queued-rework 16
- Stage counts: approved-baseline 5, queued-rework 11
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-wu-archer` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | |
| `unit-wu-archer-naval` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | |
| `unit-wu-archer-river` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | |
| `unit-wu-cavalry` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 25.6..46.5 x 45.0..46.2 | |
| `unit-wu-cavalry-elite` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 26.5..47.3 x 45.0..46.0 | |
| `unit-wu-cavalry-river` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 25.6..46.5 x 45.0..46.2 | |
| `unit-wu-infantry` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-wu-infantry-marine` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-wu-infantry-river` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-wu-officer` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-wu-officer-harbor` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-wu-officer-river` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-wu-strategist` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-wu-strategist-fire` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `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-cavalry` | approved reference | approved-baseline | technical ok | 28.3..40.3 x 43.8..46.3 | |
| `unit-wu-infantry` | approved reference | approved-baseline | technical ok | 25.2..33.1 x 46.0..46.5 | |
| `unit-wu-officer` | approved reference | approved-baseline | technical ok | 25.4..32.9 x 46.0..46.0 | |
| `unit-wu-strategist` | approved reference | approved-baseline | technical ok | 25.7..40.7 x 46.0..46.3 | |
### Batch 5 remaining rebel/bandit units
- Batch key: `batch5-rebel-other`
- Total units: 6
- Stage counts: queued-rework 6
- Stage counts: approved-baseline 6
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-rebel-archer-fire` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 42.5..42.5 | |
| `unit-rebel-archer-veteran` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.8..39.9 x 44.1..44.2 | |
| `unit-rebel-cavalry-veteran` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 26.5..47.3 x 45.0..46.0 | |
| `unit-rebel-leader` | queued rework | queued-rework | base border-hits=32; actions border-hits=72 | 31.9..40.6 x 42.5..42.5 | |
| `unit-rebel-leader-warlord` | queued rework | queued-rework | base border-hits=32; actions border-hits=78 | 35.8..42.5 x 44.1..44.2 | |
| `unit-rebel-ragged` | queued rework | queued-rework | base border-hits=32; actions border-hits=72 | 30.7..44.2 x 42.5..42.5 | |
| `unit-rebel-archer-fire` | approved reference | approved-baseline | technical ok | 25.7..39.8 x 46.0..47.1 | |
| `unit-rebel-archer-veteran` | approved reference | approved-baseline | technical ok | 29.1..37.2 x 45.7..46.3 | |
| `unit-rebel-cavalry-veteran` | approved reference | approved-baseline | technical ok | 22.5..39.9 x 43.1..46.0 | |
| `unit-rebel-leader` | approved reference | approved-baseline | technical ok | 24.9..32.4 x 46.0..46.3 | |
| `unit-rebel-leader-warlord` | approved reference | approved-baseline | technical ok | 28.8..34.0 x 45.7..46.0 | |
| `unit-rebel-ragged` | approved reference | approved-baseline | technical ok | 25.7..33.5 x 45.7..46.0 | |
### Batch 6 Nanman/special units
- Batch key: `batch6-nanman-special`
- Total units: 10
- Stage counts: queued-rework 10
- Stage counts: approved-baseline 10
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-meng-huo` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 33.2..45.5 x 44.6..44.6 | |
| `unit-nanman-infantry` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-nanman-infantry-jungle` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-nanman-infantry-spear` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 30.7..44.2 x 44.6..44.6 | |
| `unit-nanman-officer` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-nanman-officer-bronze` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 33.2..41.2 x 45.0..46.0 | |
| `unit-nanman-officer-warlord` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 35.8..42.5 x 45.0..46.0 | |
| `unit-nanman-shaman` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-nanman-shaman-ember` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-nanman-shaman-storm` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-meng-huo` | approved reference | approved-baseline | technical ok | 27.8..35.3 x 45.7..46.0 | |
| `unit-nanman-infantry` | approved reference | approved-baseline | technical ok | 24.3..35.0 x 46.0..46.0 | |
| `unit-nanman-infantry-jungle` | approved reference | approved-baseline | technical ok | 27.5..33.4 x 45.7..46.0 | |
| `unit-nanman-infantry-spear` | approved reference | approved-baseline | technical ok | 22.0..35.0 x 45.7..46.0 | |
| `unit-nanman-officer` | approved reference | approved-baseline | technical ok | 26.0..34.3 x 46.0..46.0 | |
| `unit-nanman-officer-bronze` | approved reference | approved-baseline | technical ok | 28.3..34.2 x 45.4..46.0 | |
| `unit-nanman-officer-warlord` | approved reference | approved-baseline | technical ok | 32.6..37.4 x 45.4..46.0 | |
| `unit-nanman-shaman` | approved reference | approved-baseline | technical ok | 30.4..34.2 x 46.0..46.0 | |
| `unit-nanman-shaman-ember` | approved reference | approved-baseline | technical ok | 28.8..33.9 x 46.0..46.3 | |
| `unit-nanman-shaman-storm` | approved reference | approved-baseline | technical ok | 31.2..35.6 x 45.7..46.3 | |
### Batch 7 unique officers

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 360 KiB

View File

@@ -4,9 +4,9 @@ This file is generated by `scripts/write-unit-sprite-next-steps.py`.
## Current Gate
- Approved baseline units: 42
- Approved baseline units: 43
- Pending approval units: 0
- Queued rework units: 49
- Queued rework units: 48
- 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: 398 KiB

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -11,8 +11,8 @@
"batch7-unique-officer": 19
},
"stage_counts": {
"approved-baseline": 42,
"queued-rework": 49
"approved-baseline": 43,
"queued-rework": 48
},
"rows": [
{
@@ -2354,7 +2354,7 @@
},
{
"batch": "batch2-shu",
"review_stage": "queued-rework",
"review_stage": "approved-baseline",
"stem": "unit-shu-infantry-banner",
"base": {
"key": "unit-shu-infantry-banner",
@@ -2364,23 +2364,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 2209353,
"border_hits": 32,
"min_width": 192,
"max_width": 277,
"min_height": 279,
"max_height": 279,
"min_bottom": 281,
"max_bottom": 287,
"opaque_pixels": 1928388,
"border_hits": 0,
"min_width": 180,
"max_width": 206,
"min_height": 277,
"max_height": 295,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 85,
"height_swing": 0,
"bottom_swing": 6,
"battle_min_width_px": 30.7,
"battle_max_width_px": 44.2,
"battle_min_height_px": 44.6,
"battle_max_height_px": 44.6,
"status": "border-hits=32"
"width_swing": 26,
"height_swing": 18,
"bottom_swing": 0,
"battle_min_width_px": 28.8,
"battle_max_width_px": 32.9,
"battle_min_height_px": 44.2,
"battle_max_height_px": 47.1,
"status": "ok"
},
"actions": {
"key": "unit-shu-infantry-banner-actions",
@@ -2390,23 +2390,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 4948071,
"border_hits": 82,
"min_width": 192,
"max_width": 286,
"min_height": 275,
"max_height": 279,
"min_bottom": 274,
"max_bottom": 289,
"opaque_pixels": 4737090,
"border_hits": 0,
"min_width": 180,
"max_width": 300,
"min_height": 277,
"max_height": 295,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 94,
"height_swing": 4,
"bottom_swing": 15,
"battle_min_width_px": 30.7,
"battle_max_width_px": 45.7,
"battle_min_height_px": 43.9,
"battle_max_height_px": 44.6,
"status": "border-hits=82"
"width_swing": 120,
"height_swing": 18,
"bottom_swing": 0,
"battle_min_width_px": 28.8,
"battle_max_width_px": 47.9,
"battle_min_height_px": 44.2,
"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: 42
- queued-rework: 49
- approved-baseline: 43
- queued-rework: 48
## Batch Plan
@@ -93,7 +93,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
| batch2-shu | approved-baseline | `unit-shu-cavalry-scout` | ok | ok | 140..262 x 276..290 | 140..300 x 276..295 | 22.4..41.9 x 44.1..46.3 | w122 h14 b0 |
| batch2-shu | approved-baseline | `unit-shu-cavalry-white` | ok | ok | 174..244 x 276..290 | 171..267 x 276..295 | 27.8..39.0 x 44.1..46.3 | w70 h14 b0 |
| batch2-shu | approved-baseline | `unit-shu-infantry` | ok | ok | 183..222 x 288..288 | 181..255 x 280..288 | 29.2..35.5 x 46.0..46.0 | w39 h0 b0 |
| batch2-shu | queued-rework | `unit-shu-infantry-banner` | border-hits=32 | border-hits=82 | 192..277 x 279..279 | 192..286 x 275..279 | 30.7..44.2 x 44.6..44.6 | w85 h0 b6 |
| batch2-shu | approved-baseline | `unit-shu-infantry-banner` | ok | ok | 180..206 x 277..295 | 180..300 x 277..295 | 28.8..32.9 x 44.2..47.1 | w26 h18 b0 |
| batch2-shu | queued-rework | `unit-shu-infantry-guard` | border-hits=64 | border-hits=144 | 198..280 x 282..288 | 198..289 x 275..290 | 31.6..44.7 x 45.0..46.0 | w82 h6 b6 |
| batch2-shu | approved-baseline | `unit-shu-officer` | ok | ok | 161..206 x 288..295 | 161..238 x 282..295 | 25.7..32.9 x 46.0..47.1 | w45 h7 b0 |
| batch2-shu | queued-rework | `unit-shu-officer-council` | 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 |

View File

@@ -39,6 +39,7 @@
"unit-shu-cavalry-scout",
"unit-shu-cavalry-white",
"unit-shu-infantry",
"unit-shu-infantry-banner",
"unit-shu-officer",
"unit-shu-spearman",
"unit-shu-strategist",

View File

@@ -0,0 +1,36 @@
# Unit Sprite Approval Packet: unit-shu-infantry-banner v4
- Status: approved during continuous production run
- Source art: `docs/handpaint-batch2-shu-infantry-banner-source-v4.png`
- Contact sheet: `docs/handpaint-batch2-shu-infantry-banner-v4-contact.png`
- Animation GIF: `docs/handpaint-batch2-shu-infantry-banner-v4-animation.gif`
- Before/after: `docs/handpaint-batch2-shu-infantry-banner-v4-before-after.png`
- Scale compare: `docs/handpaint-batch2-shu-infantry-banner-v4-scale-compare.png`
- Browser check: `docs/handpaint-batch2-shu-infantry-banner-v4-debug-preview-battle-check.png`
- Current approval board: `docs/unit-sprite-current-approval-board.png`
- Debug preview URL: `http://127.0.0.1:4173/heros_web/?debug&debugSpritePreview=unit-shu-infantry-banner&v=shu-infantry-banner-v4-console-clean`
## Visual Decision
Shu infantry banner v4 is accepted as a distinct standard-bearing foot unit. The green armor, round shield, and tall banner read clearly at battle scale without turning into a hero silhouette or resembling Guan Yu.
## Technical Checks
- 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`
- Base bbox width range: `180..206`
- Base bbox height range: `277..295`
- Base bottom range: `303..303`
- Action bbox width range: `180..300`
- Action bbox height range: `277..295`
- Action bottom range: `303..303`
- Local build: `passed`
- Local browser console errors: `0`
## Notes
v4 keeps the v3 widened silhouette while tightening idle height swing to the release gate. The banner remains readable at 50px scale, and the body stays opaque and visually ahead of the map without external bases or rings.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB

After

Width:  |  Height:  |  Size: 835 KiB