Approve Cao Cao handpainted sprite v2

This commit is contained in:
2026-07-02 02:50:10 +09:00
parent b42939f423
commit ac0b9e2e7d
22 changed files with 126 additions and 62 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 KiB

View File

@@ -0,0 +1,24 @@
# Cao Cao Handpainted Sprite v2
- source: `handpaint-batch7-cao-cao-source-v1.png`
- base status: ok
- action status: ok
- base partial alpha: 0, opaque pixels: 2319008
- action partial alpha: 0, opaque pixels: 5617892
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- base bbox width range: 206..228
- base bbox height range: 290..296
- base bottom range: 303..303
- action bbox width range: 186..252
- action bbox height range: 270..296
- action bottom range: 303..303
- contact: `handpaint-batch7-cao-cao-v2-contact.png`
- animation: `handpaint-batch7-cao-cao-v2-animation.gif`
- before/after: `handpaint-batch7-cao-cao-v2-before-after.png`
- scale compare: `handpaint-batch7-cao-cao-v2-scale-compare.png`
- battle composite: `handpaint-batch7-cao-cao-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: 47 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: 72
- Approved baseline units: 73
- Pending approval units: 0
- Queued rework units: 19
- Queued rework units: 18
## Checked Rules

View File

@@ -3,6 +3,7 @@
"manifest": "docs/unit-sprite-rework-manifest.json",
"audit": "docs/unit-sprite-rework-audit.json",
"approvedBaseline": [
"unit-cao-cao",
"unit-guan-yu",
"unit-liu-bei",
"unit-meng-huo",
@@ -79,8 +80,8 @@
"pendingApproval": [],
"nextAfterApproval": [],
"stageCounts": {
"approved-baseline": 72,
"queued-rework": 19
"approved-baseline": 73,
"queued-rework": 18
},
"batches": [
{
@@ -1166,23 +1167,10 @@
"label": "Batch 7 unique officers",
"total": 19,
"stageCounts": {
"queued-rework": 19
"approved-baseline": 1,
"queued-rework": 18
},
"units": [
{
"stem": "unit-cao-cao",
"reviewStage": "queued-rework",
"queueRole": "queued rework",
"baseStatus": "border-hits=64",
"actionStatus": "border-hits=144",
"battleBasePx": [
33.2,
43.3,
45.0,
46.0
],
"spec": null
},
{
"stem": "unit-fa-zheng",
"reviewStage": "queued-rework",
@@ -1434,6 +1422,20 @@
44.9
],
"spec": null
},
{
"stem": "unit-cao-cao",
"reviewStage": "approved-baseline",
"queueRole": "approved reference",
"baseStatus": "ok",
"actionStatus": "ok",
"battleBasePx": [
32.9,
36.4,
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: 72
- Approved baseline units: 73
- Pending approval units: 0
- Queued rework units: 19
- Queued rework units: 18
- 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: queued-rework 19
- Stage counts: approved-baseline 1, queued-rework 18
| unit | role | stage | status | battle base px | spec |
| --- | --- | --- | --- | --- | --- |
| `unit-cao-cao` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 33.2..43.3 x 45.0..46.0 | |
| `unit-fa-zheng` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-gong-zhi` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
| `unit-huang-quan` | queued rework | queued-rework | base border-hits=32; actions border-hits=82 | 31.9..40.6 x 44.6..44.6 | |
@@ -180,3 +179,4 @@ No next unit is currently defined.
| `unit-yi-ji` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-zhao-yun` | queued rework | queued-rework | base border-hits=64; actions border-hits=144 | 26.5..47.3 x 45.0..46.0 | |
| `unit-zhuge-liang` | queued rework | queued-rework | base border-hits=32; actions border-hits=98 | 38.8..39.3 x 44.7..44.9 | |
| `unit-cao-cao` | approved reference | approved-baseline | technical ok | 32.9..36.4 x 46.3..47.3 | |

View File

@@ -0,0 +1,37 @@
# Cao Cao v2 Approval Packet
- status: approved during continuous production run
- unit: `unit-cao-cao`
- source art: `handpaint-batch7-cao-cao-source-v1.png`
- contact sheet: `handpaint-batch7-cao-cao-v2-contact.png`
- animation GIF: `handpaint-batch7-cao-cao-v2-animation.gif`
- before/after: `handpaint-batch7-cao-cao-v2-before-after.png`
- scale compare: `handpaint-batch7-cao-cao-v2-scale-compare.png`
- battle composite: `handpaint-batch7-cao-cao-v2-battle-composite.png`
- browser check: `handpaint-batch7-cao-cao-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-cao-cao&v=cao-cao-v2`
## Visual Decision
Approved for the continuous batch run. v2 reads as Cao Cao through dark iron armor, gold trim, a crimson cloak, and a compact command-sword silhouette. It is visually heavier than the generic Wei officer without borrowing Liu Bei's yellow robe, Guan Yu's polearm shape, or Zhang Fei's broad red-brown brawler profile.
## 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: 32.9..36.4 x 46.3..47.3
- action battle scale from audit: 29.7..40.3 x 43.1..47.3
- local build: passed
- Local browser console errors: `0`
- Local browser 404s: `0`
## Notes
v1 was rejected because the battle-scale body width was too narrow for a boss unit. v2 keeps the same source art but widens the assembled silhouette so the cloak and sword read clearly inside the 50px tactical tile.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 KiB

After

Width:  |  Height:  |  Size: 362 KiB

View File

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

After

Width:  |  Height:  |  Size: 687 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -11,13 +11,13 @@
"batch7-unique-officer": 19
},
"stage_counts": {
"approved-baseline": 72,
"queued-rework": 19
"approved-baseline": 73,
"queued-rework": 18
},
"rows": [
{
"batch": "batch7-unique-officer",
"review_stage": "queued-rework",
"review_stage": "approved-baseline",
"stem": "unit-cao-cao",
"base": {
"key": "unit-cao-cao",
@@ -27,23 +27,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 2291395,
"border_hits": 64,
"min_width": 208,
"max_width": 271,
"min_height": 282,
"max_height": 288,
"min_bottom": 281,
"max_bottom": 287,
"opaque_pixels": 2319008,
"border_hits": 0,
"min_width": 206,
"max_width": 228,
"min_height": 290,
"max_height": 296,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 63,
"width_swing": 22,
"height_swing": 6,
"bottom_swing": 6,
"battle_min_width_px": 33.2,
"battle_max_width_px": 43.3,
"battle_min_height_px": 45.0,
"battle_max_height_px": 46.0,
"status": "border-hits=64"
"bottom_swing": 0,
"battle_min_width_px": 32.9,
"battle_max_width_px": 36.4,
"battle_min_height_px": 46.3,
"battle_max_height_px": 47.3,
"status": "ok"
},
"actions": {
"key": "unit-cao-cao-actions",
@@ -53,23 +53,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 5125963,
"border_hits": 144,
"min_width": 208,
"max_width": 280,
"min_height": 275,
"max_height": 290,
"min_bottom": 274,
"max_bottom": 289,
"opaque_pixels": 5617892,
"border_hits": 0,
"min_width": 186,
"max_width": 252,
"min_height": 270,
"max_height": 296,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 72,
"height_swing": 15,
"bottom_swing": 15,
"battle_min_width_px": 33.2,
"battle_max_width_px": 44.7,
"battle_min_height_px": 43.9,
"battle_max_height_px": 46.3,
"status": "border-hits=144"
"width_swing": 66,
"height_swing": 26,
"bottom_swing": 0,
"battle_min_width_px": 29.7,
"battle_max_width_px": 40.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: 72
- queued-rework: 19
- approved-baseline: 73
- queued-rework: 18
## Batch Plan
@@ -52,7 +52,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
| batch | stage | stem | base | actions | base bbox | action bbox | battle base px | motion swing |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| batch7-unique-officer | queued-rework | `unit-cao-cao` | border-hits=64 | border-hits=144 | 208..271 x 282..288 | 208..280 x 275..290 | 33.2..43.3 x 45.0..46.0 | w63 h6 b6 |
| batch7-unique-officer | approved-baseline | `unit-cao-cao` | ok | ok | 206..228 x 290..296 | 186..252 x 270..296 | 32.9..36.4 x 46.3..47.3 | w22 h6 b0 |
| batch7-unique-officer | queued-rework | `unit-fa-zheng` | 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 |
| batch7-unique-officer | queued-rework | `unit-gong-zhi` | 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-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 |

View File

@@ -11,6 +11,7 @@
]
},
"approvedBaseline": [
"unit-cao-cao",
"unit-guan-yu",
"unit-liu-bei",
"unit-meng-huo",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 623 KiB

After

Width:  |  Height:  |  Size: 980 KiB