Approve Nanman bronze officer handpainted sprite v2

This commit is contained in:
2026-07-01 18:22:08 +09:00
parent 202bfaad29
commit 363b89b0e2
22 changed files with 107 additions and 47 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 KiB

View File

@@ -0,0 +1,24 @@
# Nanman Bronze Officer Hand-Painted v2
- source: `handpaint-batch6-nanman-officer-bronze-source-v2.png`
- base status: ok
- action status: ok
- base partial alpha: 0, opaque pixels: 1969466
- action partial alpha: 0, opaque pixels: 4342513
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- base bbox width range: 177..214
- base bbox height range: 284..288
- base bottom range: 303..303
- action bbox width range: 155..264
- action bbox height range: 238..295
- action bottom range: 303..303
- contact: `handpaint-batch6-nanman-officer-bronze-v2-contact.png`
- animation: `handpaint-batch6-nanman-officer-bronze-v2-animation.gif`
- before/after: `handpaint-batch6-nanman-officer-bronze-v2-before-after.png`
- scale compare: `handpaint-batch6-nanman-officer-bronze-v2-scale-compare.png`
- battle composite: `handpaint-batch6-nanman-officer-bronze-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: 30 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: 33
- Approved baseline units: 34
- Pending approval units: 0
- Queued rework units: 58
- Queued rework units: 57
## Checked Rules

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 364 KiB

View File

@@ -0,0 +1,36 @@
# Unit Sprite Approval Packet: unit-nanman-officer-bronze v2
- Status: approved during continuous production run
- Source art: `docs/handpaint-batch6-nanman-officer-bronze-source-v2.png`
- Contact sheet: `docs/handpaint-batch6-nanman-officer-bronze-v2-contact.png`
- Animation GIF: `docs/handpaint-batch6-nanman-officer-bronze-v2-animation.gif`
- Before/after: `docs/handpaint-batch6-nanman-officer-bronze-v2-before-after.png`
- Scale compare: `docs/handpaint-batch6-nanman-officer-bronze-v2-scale-compare.png`
- Browser check: `docs/handpaint-batch6-nanman-officer-bronze-v2-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-nanman-officer-bronze&v=nanman-officer-bronze-v2-console-clean`
## Visual Decision
Nanman bronze officer v2 is accepted as an elite bronze-armored southern commander. v1 was rejected because the source grid did not match the assembler layout and produced sliced frames. v2 uses the correct 6x2 source layout, reads heavier than the regular Nanman officer, and remains below Meng Huo's boss-scale silhouette.
## 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: `177..214`
- Base bbox height range: `284..288`
- Base bottom range: `303..303`
- Action bbox width range: `155..264`
- Action bbox height range: `238..295`
- Action bottom range: `303..303`
- Local build: `passed`
- Local browser console errors: `0`
## Notes
The unit remains fully opaque and readable at desktop battle scale without relying on bases, rings, or external badges. A small project favicon was added during this check to remove unrelated browser `/favicon.ico` 404 noise from console verification.

View File

@@ -4,9 +4,9 @@ This file is generated by `scripts/write-unit-sprite-next-steps.py`.
## Current Gate
- Approved baseline units: 33
- Approved baseline units: 34
- Pending approval units: 0
- Queued rework units: 58
- Queued rework units: 57
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
- Current approval board: not generated until the next pending sample.
@@ -14,11 +14,10 @@ This file is generated by `scripts/write-unit-sprite-next-steps.py`.
## Next Unit Queue
1. `unit-nanman-officer-bronze` - queued-rework, base `border-hits=64`, actions `border-hits=144`
2. `unit-nanman-officer-warlord` - queued-rework, base `border-hits=64`, actions `border-hits=144`
3. `unit-nanman-shaman` - queued-rework, base `border-hits=32`, actions `border-hits=98`
4. `unit-nanman-shaman-ember` - queued-rework, base `border-hits=32`, actions `border-hits=98`
5. `unit-nanman-shaman-storm` - queued-rework, base `border-hits=32`, actions `border-hits=98`
1. `unit-nanman-officer-warlord` - queued-rework, base `border-hits=64`, actions `border-hits=144`
2. `unit-nanman-shaman` - queued-rework, base `border-hits=32`, actions `border-hits=98`
3. `unit-nanman-shaman-ember` - queued-rework, base `border-hits=32`, actions `border-hits=98`
4. `unit-nanman-shaman-storm` - queued-rework, base `border-hits=32`, actions `border-hits=98`
## Commands Before Approval
@@ -45,5 +44,5 @@ pnpm build
## First Task After Current Approval
- Start with `unit-nanman-officer-bronze`.
- Start with `unit-nanman-officer-warlord`.
- Generate source art, assemble sheets, produce contact/GIF/before-after/scale/battle screenshots, then rerun the gates.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -11,8 +11,8 @@
"batch7-unique-officer": 19
},
"stage_counts": {
"approved-baseline": 33,
"queued-rework": 58
"approved-baseline": 34,
"queued-rework": 57
},
"rows": [
{
@@ -1100,7 +1100,7 @@
},
{
"batch": "batch6-nanman-special",
"review_stage": "queued-rework",
"review_stage": "approved-baseline",
"stem": "unit-nanman-officer-bronze",
"base": {
"key": "unit-nanman-officer-bronze",
@@ -1110,23 +1110,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 2138098,
"border_hits": 64,
"min_width": 208,
"max_width": 258,
"min_height": 282,
"opaque_pixels": 1969466,
"border_hits": 0,
"min_width": 177,
"max_width": 214,
"min_height": 284,
"max_height": 288,
"min_bottom": 281,
"max_bottom": 287,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 50,
"height_swing": 6,
"bottom_swing": 6,
"battle_min_width_px": 33.2,
"battle_max_width_px": 41.2,
"battle_min_height_px": 45.0,
"width_swing": 37,
"height_swing": 4,
"bottom_swing": 0,
"battle_min_width_px": 28.3,
"battle_max_width_px": 34.2,
"battle_min_height_px": 45.4,
"battle_max_height_px": 46.0,
"status": "border-hits=64"
"status": "ok"
},
"actions": {
"key": "unit-nanman-officer-bronze-actions",
@@ -1136,23 +1136,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 4783362,
"border_hits": 144,
"min_width": 208,
"max_width": 267,
"min_height": 275,
"max_height": 290,
"min_bottom": 274,
"max_bottom": 289,
"opaque_pixels": 4342513,
"border_hits": 0,
"min_width": 155,
"max_width": 264,
"min_height": 238,
"max_height": 295,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 59,
"height_swing": 15,
"bottom_swing": 15,
"battle_min_width_px": 33.2,
"battle_max_width_px": 42.7,
"battle_min_height_px": 43.9,
"battle_max_height_px": 46.3,
"status": "border-hits=144"
"width_swing": 109,
"height_swing": 57,
"bottom_swing": 0,
"battle_min_width_px": 24.8,
"battle_max_width_px": 42.2,
"battle_min_height_px": 38.0,
"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: 33
- queued-rework: 58
- approved-baseline: 34
- queued-rework: 57
## Batch Plan
@@ -71,7 +71,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
| batch6-nanman-special | approved-baseline | `unit-nanman-infantry-jungle` | ok | ok | 172..209 x 286..288 | 158..247 x 282..288 | 27.5..33.4 x 45.7..46.0 | w37 h2 b0 |
| batch6-nanman-special | approved-baseline | `unit-nanman-infantry-spear` | ok | ok | 138..219 x 286..288 | 137..263 x 277..289 | 22.0..35.0 x 45.7..46.0 | w81 h2 b0 |
| batch6-nanman-special | approved-baseline | `unit-nanman-officer` | ok | ok | 163..215 x 288..288 | 159..238 x 280..288 | 26.0..34.3 x 46.0..46.0 | w52 h0 b0 |
| batch6-nanman-special | queued-rework | `unit-nanman-officer-bronze` | border-hits=64 | border-hits=144 | 208..258 x 282..288 | 208..267 x 275..290 | 33.2..41.2 x 45.0..46.0 | w50 h6 b6 |
| batch6-nanman-special | approved-baseline | `unit-nanman-officer-bronze` | ok | ok | 177..214 x 284..288 | 155..264 x 238..295 | 28.3..34.2 x 45.4..46.0 | w37 h4 b0 |
| batch6-nanman-special | queued-rework | `unit-nanman-officer-warlord` | border-hits=64 | border-hits=144 | 224..266 x 282..288 | 224..275 x 275..290 | 35.8..42.5 x 45.0..46.0 | w42 h6 b6 |
| batch6-nanman-special | queued-rework | `unit-nanman-shaman` | 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 |
| batch6-nanman-special | queued-rework | `unit-nanman-shaman-ember` | 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

@@ -18,6 +18,7 @@
"unit-nanman-infantry-jungle",
"unit-nanman-infantry-spear",
"unit-nanman-officer",
"unit-nanman-officer-bronze",
"unit-rebel",
"unit-rebel-archer",
"unit-rebel-archer-fire",
@@ -48,7 +49,6 @@
"pendingApproval": [],
"currentApprovalCandidate": {},
"nextAfterApproval": [
"unit-nanman-officer-bronze",
"unit-nanman-officer-warlord",
"unit-nanman-shaman",
"unit-nanman-shaman-ember",

View File

@@ -3,6 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="/heros_web/favicon.ico" />
<title>삼국지: 세 형제의 맹세</title>
</head>
<body>

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 KiB

After

Width:  |  Height:  |  Size: 908 KiB