Approve Huang Zhong handpainted sprite v2

This commit is contained in:
2026-07-02 03:47:55 +09:00
parent 2c73862c5a
commit 73a57d896a
22 changed files with 127 additions and 64 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 KiB

View File

@@ -0,0 +1,24 @@
# Huang Zhong Handpainted Sprite v2
- source: `handpaint-batch7-huang-zhong-source-v1.png`
- base status: ok
- action status: ok
- base partial alpha: 0, opaque pixels: 2150936
- action partial alpha: 0, opaque pixels: 4732226
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- base bbox width range: 170..227
- base bbox height range: 290..296
- base bottom range: 303..303
- action bbox width range: 170..246
- action bbox height range: 270..296
- action bottom range: 303..303
- contact: `handpaint-batch7-huang-zhong-v2-contact.png`
- animation: `handpaint-batch7-huang-zhong-v2-animation.gif`
- before/after: `handpaint-batch7-huang-zhong-v2-before-after.png`
- scale compare: `handpaint-batch7-huang-zhong-v2-scale-compare.png`
- battle composite: `handpaint-batch7-huang-zhong-v2-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: 49 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: 76
- Approved baseline units: 77
- Pending approval units: 0
- Queued rework units: 15
- Queued rework units: 14
## Checked Rules

View File

@@ -8,6 +8,7 @@
"unit-gong-zhi",
"unit-guan-yu",
"unit-huang-quan",
"unit-huang-zhong",
"unit-liu-bei",
"unit-meng-huo",
"unit-nanman-infantry",
@@ -83,8 +84,8 @@
"pendingApproval": [],
"nextAfterApproval": [],
"stageCounts": {
"approved-baseline": 76,
"queued-rework": 15
"approved-baseline": 77,
"queued-rework": 14
},
"batches": [
{
@@ -1170,24 +1171,10 @@
"label": "Batch 7 unique officers",
"total": 19,
"stageCounts": {
"approved-baseline": 4,
"queued-rework": 15
"approved-baseline": 5,
"queued-rework": 14
},
"units": [
{
"stem": "unit-huang-zhong",
"reviewStage": "queued-rework",
"queueRole": "queued rework",
"baseStatus": "border-hits=64",
"actionStatus": "border-hits=140",
"battleBasePx": [
39.1,
39.3,
44.6,
44.6
],
"spec": null
},
{
"stem": "unit-jiang-wei",
"reviewStage": "queued-rework",
@@ -1439,6 +1426,20 @@
46.3
],
"spec": null
},
{
"stem": "unit-huang-zhong",
"reviewStage": "approved-baseline",
"queueRole": "approved reference",
"baseStatus": "ok",
"actionStatus": "ok",
"battleBasePx": [
27.2,
36.3,
46.3,
47.3
],
"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: 76
- Approved baseline units: 77
- Pending approval units: 0
- Queued rework units: 15
- Queued rework units: 14
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
@@ -157,11 +157,10 @@ No next unit is currently defined.
- Batch key: `batch7-unique-officer`
- Total units: 19
- Stage counts: approved-baseline 4, queued-rework 15
- Stage counts: approved-baseline 5, queued-rework 14
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-huang-zhong` | queued rework | queued-rework | base border-hits=64; actions border-hits=140 | 39.1..39.3 x 44.6..44.6 | |
| `unit-jiang-wei` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.0..40.6 x 44.6..44.6 | |
| `unit-li-yan` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-lu-bu` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 28.8..47.3 x 45.0..46.0 | |
@@ -180,3 +179,4 @@ No next unit is currently defined.
| `unit-fa-zheng` | approved reference | approved-baseline | technical ok | 29.1..35.3 x 46.3..46.3 | |
| `unit-gong-zhi` | approved reference | approved-baseline | technical ok | 33.2..35.5 x 46.3..46.3 | |
| `unit-huang-quan` | approved reference | approved-baseline | technical ok | 28.9..34.8 x 46.3..46.3 | |
| `unit-huang-zhong` | approved reference | approved-baseline | technical ok | 27.2..36.3 x 46.3..47.3 | |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

After

Width:  |  Height:  |  Size: 358 KiB

View File

@@ -0,0 +1,37 @@
# Huang Zhong v2 Approval Packet
- status: approved during continuous production run
- unit: `unit-huang-zhong`
- source art: `handpaint-batch7-huang-zhong-source-v1.png`
- contact sheet: `handpaint-batch7-huang-zhong-v2-contact.png`
- animation GIF: `handpaint-batch7-huang-zhong-v2-animation.gif`
- before/after: `handpaint-batch7-huang-zhong-v2-before-after.png`
- scale compare: `handpaint-batch7-huang-zhong-v2-scale-compare.png`
- battle composite: `handpaint-batch7-huang-zhong-v2-battle-composite.png`
- browser check: `handpaint-batch7-huang-zhong-v2-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-huang-zhong&v=huang-zhong-v2`
## Visual Decision
Approved for the continuous batch run. v2 reads as Huang Zhong through the white beard, veteran posture, golden armor, quiver, and large recurved bow. The silhouette is clearly archer-general rather than Guan Yu's polearm, Zhang Fei's brawler mass, or a generic Shu archer.
## 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: 27.2..36.3 x 46.3..47.3
- action battle scale from audit: 27.2..39.3 x 43.1..47.3
- local build: passed
- Local browser console errors: `0`
- Local browser 404s: `0`
## Notes
v1 had strong idle readability but the action frames were over-shrunk. v2 restores bow-action width so the attack pose remains readable at the tactical scale.

View File

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

After

Width:  |  Height:  |  Size: 726 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 159 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": 76,
"queued-rework": 15
"approved-baseline": 77,
"queued-rework": 14
},
"rows": [
{
@@ -302,7 +302,7 @@
},
{
"batch": "batch7-unique-officer",
"review_stage": "queued-rework",
"review_stage": "approved-baseline",
"stem": "unit-huang-zhong",
"base": {
"key": "unit-huang-zhong",
@@ -312,23 +312,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 1937199,
"border_hits": 64,
"min_width": 245,
"max_width": 246,
"min_height": 279,
"max_height": 279,
"min_bottom": 281,
"max_bottom": 287,
"opaque_pixels": 2150936,
"border_hits": 0,
"min_width": 170,
"max_width": 227,
"min_height": 290,
"max_height": 296,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 1,
"height_swing": 0,
"bottom_swing": 6,
"battle_min_width_px": 39.1,
"battle_max_width_px": 39.3,
"battle_min_height_px": 44.6,
"battle_max_height_px": 44.6,
"status": "border-hits=64"
"width_swing": 57,
"height_swing": 6,
"bottom_swing": 0,
"battle_min_width_px": 27.2,
"battle_max_width_px": 36.3,
"battle_min_height_px": 46.3,
"battle_max_height_px": 47.3,
"status": "ok"
},
"actions": {
"key": "unit-huang-zhong-actions",
@@ -338,23 +338,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 4320862,
"border_hits": 140,
"min_width": 220,
"max_width": 255,
"min_height": 275,
"max_height": 279,
"min_bottom": 274,
"max_bottom": 289,
"opaque_pixels": 4732226,
"border_hits": 0,
"min_width": 170,
"max_width": 246,
"min_height": 270,
"max_height": 296,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 35,
"height_swing": 4,
"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.6,
"status": "border-hits=140"
"width_swing": 76,
"height_swing": 26,
"bottom_swing": 0,
"battle_min_width_px": 27.2,
"battle_max_width_px": 39.3,
"battle_min_height_px": 43.1,
"battle_max_height_px": 47.3,
"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: 76
- queued-rework: 15
- approved-baseline: 77
- queued-rework: 14
## Batch Plan
@@ -57,7 +57,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
| batch7-unique-officer | approved-baseline | `unit-gong-zhi` | ok | ok | 208..222 x 290..290 | 196..287 x 270..290 | 33.2..35.5 x 46.3..46.3 | w14 h0 b0 |
| batch1-approved-core | approved-baseline | `unit-guan-yu` | ok | ok | 190..270 x 276..291 | 172..296 x 171..289 | 30.4..43.1 x 44.1..46.5 | w80 h15 b4 |
| batch7-unique-officer | approved-baseline | `unit-huang-quan` | ok | ok | 181..218 x 290..290 | 176..251 x 284..290 | 28.9..34.8 x 46.3..46.3 | w37 h0 b0 |
| batch7-unique-officer | queued-rework | `unit-huang-zhong` | border-hits=64 | border-hits=140 | 245..246 x 279..279 | 220..255 x 275..279 | 39.1..39.3 x 44.6..44.6 | w1 h0 b6 |
| batch7-unique-officer | approved-baseline | `unit-huang-zhong` | ok | ok | 170..227 x 290..296 | 170..246 x 270..296 | 27.2..36.3 x 46.3..47.3 | w57 h6 b0 |
| batch7-unique-officer | queued-rework | `unit-jiang-wei` | 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-li-yan` | 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 |
| batch1-approved-core | approved-baseline | `unit-liu-bei` | ok | ok | 138..258 x 278..289 | 148..300 x 252..284 | 22.0..41.2 x 44.4..46.2 | w120 h11 b12 |

View File

@@ -16,6 +16,7 @@
"unit-gong-zhi",
"unit-guan-yu",
"unit-huang-quan",
"unit-huang-zhong",
"unit-liu-bei",
"unit-meng-huo",
"unit-nanman-infantry",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 KiB

After

Width:  |  Height:  |  Size: 965 KiB