diff --git a/docs/unique-officer-50px-identity-qa-v2.png b/docs/unique-officer-50px-identity-qa-v2.png new file mode 100644 index 0000000..29b6249 Binary files /dev/null and b/docs/unique-officer-50px-identity-qa-v2.png differ diff --git a/docs/unique-officer-50px-identity-qa-v3-report.md b/docs/unique-officer-50px-identity-qa-v3-report.md new file mode 100644 index 0000000..9a9118d --- /dev/null +++ b/docs/unique-officer-50px-identity-qa-v3-report.md @@ -0,0 +1,34 @@ +# Unique Officer 50px Identity QA v3 + +## Scope + +Reviewed named-officer silhouettes at 72px and 50px battle scale, with extra attention on civil officials, Yizhou officers, and commanders that could visually overlap. + +## Initial Weak Reads + +- `unit-ma-liang`: white-eyebrow identity was too subtle at battle scale. +- `unit-yi-ji`: envoy/letter-carrier identity was weaker than the generic civil-official read. +- `unit-gong-zhi`: route-guide/local-officer role read too close to a generic armored officer. + +## Rework Results + +- `unit-ma-liang`: olive/sage civil robes, document props, and stronger white eyebrows; no large white feather fan. +- `unit-yi-ji`: sealed letter, document tube, scrolls, and travel cloak to emphasize envoy silhouette. +- `unit-gong-zhi`: olive route cloak, guide staff, route map, and surrender token to separate him from Li Yan and Wu Yi. + +## QA Boards + +- Before board: `unique-officer-50px-identity-qa-v2.png` +- After board: `unique-officer-50px-identity-qa-v3.png` +- Batch board: `unit-sprite-review-batch7-unique-officer.png` + +## Verification + +- Sprite release gate: passed +- Art quality gate: passed +- Workflow consistency gate: passed +- `pnpm build`: passed +- `pnpm deploy:nas`: passed +- Local browser debug previews: console errors 0 for Ma Liang, Yi Ji, and Gong Zhi +- Deployed browser debug previews: console errors 0 for Ma Liang, Yi Ji, and Gong Zhi +- NAS deployment target: `/volume1/web/heros_web` diff --git a/docs/unique-officer-50px-identity-qa-v3.png b/docs/unique-officer-50px-identity-qa-v3.png new file mode 100644 index 0000000..b63cdc5 Binary files /dev/null and b/docs/unique-officer-50px-identity-qa-v3.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-animation.gif b/docs/unique-officer-qa-gong-zhi-v3-animation.gif new file mode 100644 index 0000000..dc2b7d4 Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-animation.gif differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-battle-browser-check.png b/docs/unique-officer-qa-gong-zhi-v3-battle-browser-check.png new file mode 100644 index 0000000..d36516d Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-battle-browser-check.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-battle-composite.png b/docs/unique-officer-qa-gong-zhi-v3-battle-composite.png new file mode 100644 index 0000000..b031034 Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-battle-composite.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-before-after.png b/docs/unique-officer-qa-gong-zhi-v3-before-after.png new file mode 100644 index 0000000..4f1ac4e Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-before-after.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-contact.png b/docs/unique-officer-qa-gong-zhi-v3-contact.png new file mode 100644 index 0000000..813b25a Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-contact.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-prod-browser-check.png b/docs/unique-officer-qa-gong-zhi-v3-prod-browser-check.png new file mode 100644 index 0000000..331de9a Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-prod-browser-check.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-report.md b/docs/unique-officer-qa-gong-zhi-v3-report.md new file mode 100644 index 0000000..ca60cf2 --- /dev/null +++ b/docs/unique-officer-qa-gong-zhi-v3-report.md @@ -0,0 +1,30 @@ +# Gong Zhi Route Guide v3 report + +- source: `unique-officer-qa-gong-zhi-v3-source.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 1742744 +- action partial alpha: 0, opaque pixels: 3442299 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 148..176 +- base bbox height range: 290..290 +- base bottom range: 303..303 +- action bbox width range: 118..157 +- action bbox height range: 284..290 +- action bottom range: 303..303 +- contact: `unique-officer-qa-gong-zhi-v3-contact.png` +- animation: `unique-officer-qa-gong-zhi-v3-animation.gif` +- before/after: `unique-officer-qa-gong-zhi-v3-before-after.png` +- scale compare: `unique-officer-qa-gong-zhi-v3-scale-compare.png` +- battle composite: `unique-officer-qa-gong-zhi-v3-battle-composite.png` +- local browser check: `unique-officer-qa-gong-zhi-v3-battle-browser-check.png` +- deployed browser check: `unique-officer-qa-gong-zhi-v3-prod-browser-check.png` +- identity QA board: `unique-officer-50px-identity-qa-v3.png` +- identity change: reframes Gong Zhi as a Yizhou route guide/local officer with map, staff, cloak, and surrender token instead of a generic armored general. +- validation: sprite release gate passed, art quality gate passed, workflow consistency gate passed +- build/deploy: `pnpm build` passed; `pnpm deploy:nas` passed and deployed to `/volume1/web/heros_web` +- browser verification: local debug preview console errors 0; deployed debug preview console errors 0 +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/unique-officer-qa-gong-zhi-v3-scale-compare.png b/docs/unique-officer-qa-gong-zhi-v3-scale-compare.png new file mode 100644 index 0000000..0914d36 Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-scale-compare.png differ diff --git a/docs/unique-officer-qa-gong-zhi-v3-source.png b/docs/unique-officer-qa-gong-zhi-v3-source.png new file mode 100644 index 0000000..c1f9ae9 Binary files /dev/null and b/docs/unique-officer-qa-gong-zhi-v3-source.png differ diff --git a/docs/unique-officer-qa-ma-liang-v3-battle-browser-check.png b/docs/unique-officer-qa-ma-liang-v3-battle-browser-check.png new file mode 100644 index 0000000..301e648 Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v3-battle-browser-check.png differ diff --git a/docs/unique-officer-qa-ma-liang-v3-prod-browser-check.png b/docs/unique-officer-qa-ma-liang-v3-prod-browser-check.png new file mode 100644 index 0000000..63ee5af Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v3-prod-browser-check.png differ diff --git a/docs/unique-officer-qa-ma-liang-v7-animation.gif b/docs/unique-officer-qa-ma-liang-v7-animation.gif new file mode 100644 index 0000000..f09e980 Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v7-animation.gif differ diff --git a/docs/unique-officer-qa-ma-liang-v7-battle-composite.png b/docs/unique-officer-qa-ma-liang-v7-battle-composite.png new file mode 100644 index 0000000..eba85ff Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v7-battle-composite.png differ diff --git a/docs/unique-officer-qa-ma-liang-v7-before-after.png b/docs/unique-officer-qa-ma-liang-v7-before-after.png new file mode 100644 index 0000000..4023b10 Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v7-before-after.png differ diff --git a/docs/unique-officer-qa-ma-liang-v7-contact.png b/docs/unique-officer-qa-ma-liang-v7-contact.png new file mode 100644 index 0000000..2bfaab3 Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v7-contact.png differ diff --git a/docs/unique-officer-qa-ma-liang-v7-report.md b/docs/unique-officer-qa-ma-liang-v7-report.md new file mode 100644 index 0000000..91fc90e --- /dev/null +++ b/docs/unique-officer-qa-ma-liang-v7-report.md @@ -0,0 +1,30 @@ +# Ma Liang White Eyebrow v7 report + +- source: `unique-officer-qa-ma-liang-v7-source.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 1890712 +- action partial alpha: 0, opaque pixels: 4010732 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 147..206 +- base bbox height range: 290..290 +- base bottom range: 303..303 +- action bbox width range: 126..177 +- action bbox height range: 284..290 +- action bottom range: 303..303 +- contact: `unique-officer-qa-ma-liang-v7-contact.png` +- animation: `unique-officer-qa-ma-liang-v7-animation.gif` +- before/after: `unique-officer-qa-ma-liang-v7-before-after.png` +- scale compare: `unique-officer-qa-ma-liang-v7-scale-compare.png` +- battle composite: `unique-officer-qa-ma-liang-v7-battle-composite.png` +- local browser check: `unique-officer-qa-ma-liang-v3-battle-browser-check.png` +- deployed browser check: `unique-officer-qa-ma-liang-v3-prod-browser-check.png` +- identity QA board: `unique-officer-50px-identity-qa-v3.png` +- identity change: strengthens Ma Liang's white-eyebrow read while avoiding Zhuge Liang's white-robed sage silhouette and large white feather fan. +- validation: sprite release gate passed, art quality gate passed, workflow consistency gate passed +- build/deploy: `pnpm build` passed; `pnpm deploy:nas` passed and deployed to `/volume1/web/heros_web` +- browser verification: local debug preview console errors 0; deployed debug preview console errors 0 +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/unique-officer-qa-ma-liang-v7-scale-compare.png b/docs/unique-officer-qa-ma-liang-v7-scale-compare.png new file mode 100644 index 0000000..183c3f6 Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v7-scale-compare.png differ diff --git a/docs/unique-officer-qa-ma-liang-v7-source.png b/docs/unique-officer-qa-ma-liang-v7-source.png new file mode 100644 index 0000000..9f8a549 Binary files /dev/null and b/docs/unique-officer-qa-ma-liang-v7-source.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-animation.gif b/docs/unique-officer-qa-yi-ji-v3-animation.gif new file mode 100644 index 0000000..fb73040 Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-animation.gif differ diff --git a/docs/unique-officer-qa-yi-ji-v3-battle-browser-check.png b/docs/unique-officer-qa-yi-ji-v3-battle-browser-check.png new file mode 100644 index 0000000..23a1bec Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-battle-browser-check.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-battle-composite.png b/docs/unique-officer-qa-yi-ji-v3-battle-composite.png new file mode 100644 index 0000000..10c8d1d Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-battle-composite.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-before-after.png b/docs/unique-officer-qa-yi-ji-v3-before-after.png new file mode 100644 index 0000000..2c9dddc Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-before-after.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-contact.png b/docs/unique-officer-qa-yi-ji-v3-contact.png new file mode 100644 index 0000000..c2aa08f Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-contact.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-prod-browser-check.png b/docs/unique-officer-qa-yi-ji-v3-prod-browser-check.png new file mode 100644 index 0000000..fa3ee77 Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-prod-browser-check.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-report.md b/docs/unique-officer-qa-yi-ji-v3-report.md new file mode 100644 index 0000000..ebc92ba --- /dev/null +++ b/docs/unique-officer-qa-yi-ji-v3-report.md @@ -0,0 +1,30 @@ +# Yi Ji Envoy v3 report + +- source: `unique-officer-qa-yi-ji-v3-source.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 1900560 +- action partial alpha: 0, opaque pixels: 3873341 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 153..193 +- base bbox height range: 288..290 +- base bottom range: 303..303 +- action bbox width range: 122..175 +- action bbox height range: 282..290 +- action bottom range: 303..303 +- contact: `unique-officer-qa-yi-ji-v3-contact.png` +- animation: `unique-officer-qa-yi-ji-v3-animation.gif` +- before/after: `unique-officer-qa-yi-ji-v3-before-after.png` +- scale compare: `unique-officer-qa-yi-ji-v3-scale-compare.png` +- battle composite: `unique-officer-qa-yi-ji-v3-battle-composite.png` +- local browser check: `unique-officer-qa-yi-ji-v3-battle-browser-check.png` +- deployed browser check: `unique-officer-qa-yi-ji-v3-prod-browser-check.png` +- identity QA board: `unique-officer-50px-identity-qa-v3.png` +- identity change: reframes Yi Ji as a letter-carrying envoy with scrolls, sealed letter, document tube, and travel cloak instead of a generic sage strategist. +- validation: sprite release gate passed, art quality gate passed, workflow consistency gate passed +- build/deploy: `pnpm build` passed; `pnpm deploy:nas` passed and deployed to `/volume1/web/heros_web` +- browser verification: local debug preview console errors 0; deployed debug preview console errors 0 +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/unique-officer-qa-yi-ji-v3-scale-compare.png b/docs/unique-officer-qa-yi-ji-v3-scale-compare.png new file mode 100644 index 0000000..964b239 Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-scale-compare.png differ diff --git a/docs/unique-officer-qa-yi-ji-v3-source.png b/docs/unique-officer-qa-yi-ji-v3-source.png new file mode 100644 index 0000000..71733ca Binary files /dev/null and b/docs/unique-officer-qa-yi-ji-v3-source.png differ diff --git a/docs/unit-sprite-batch-queue.json b/docs/unit-sprite-batch-queue.json index 9593819..3c4dcbf 100644 --- a/docs/unit-sprite-batch-queue.json +++ b/docs/unit-sprite-batch-queue.json @@ -1222,8 +1222,8 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 33.2, - 35.5, + 23.6, + 28.1, 46.3, 46.3 ], @@ -1348,9 +1348,9 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 26.5, - 35.8, - 45.0, + 23.5, + 32.9, + 46.3, 46.3 ], "spec": null @@ -1418,10 +1418,10 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 27.8, - 33.9, - 45.7, - 46.0 + 24.4, + 30.8, + 46.0, + 46.3 ], "spec": null }, diff --git a/docs/unit-sprite-batch-queue.md b/docs/unit-sprite-batch-queue.md index 2141a42..a5e1277 100644 --- a/docs/unit-sprite-batch-queue.md +++ b/docs/unit-sprite-batch-queue.md @@ -163,7 +163,7 @@ No next unit is currently defined. | --- | --- | --- | --- | --- | --- | | `unit-cao-cao` | approved reference | approved-baseline | technical ok | 32.9..36.4 x 46.3..47.3 | | | `unit-fa-zheng` | approved reference | approved-baseline | technical ok | 24.3..39.9 x 45.0..47.0 | | -| `unit-gong-zhi` | approved reference | approved-baseline | technical ok | 33.2..35.5 x 46.3..46.3 | | +| `unit-gong-zhi` | approved reference | approved-baseline | technical ok | 23.6..28.1 x 46.3..46.3 | | | `unit-huang-quan` | approved reference | approved-baseline | technical ok | 28.6..31.9 x 45.0..46.0 | | | `unit-huang-zhong` | approved reference | approved-baseline | technical ok | 27.2..36.3 x 46.3..47.3 | | | `unit-jiang-wei` | approved reference | approved-baseline | technical ok | 23.2..42.5 x 45.4..46.5 | | @@ -172,11 +172,11 @@ No next unit is currently defined. | `unit-lu-meng` | approved reference | approved-baseline | technical ok | 27.0..40.4 x 46.0..46.3 | | | `unit-ma-chao` | approved reference | approved-baseline | technical ok | 26.5..42.0 x 46.0..47.3 | | | `unit-ma-dai` | approved reference | approved-baseline | technical ok | 27.0..39.8 x 46.0..46.3 | | -| `unit-ma-liang` | approved reference | approved-baseline | technical ok | 26.5..35.8 x 45.0..46.3 | | +| `unit-ma-liang` | approved reference | approved-baseline | technical ok | 23.5..32.9 x 46.3..46.3 | | | `unit-pang-tong` | approved reference | approved-baseline | technical ok | 24.3..32.7 x 45.0..46.3 | | | `unit-sima-yi` | approved reference | approved-baseline | technical ok | 21.7..29.7 x 45.0..46.3 | | | `unit-wang-ping` | approved reference | approved-baseline | technical ok | 28.0..33.7 x 45.7..46.0 | | | `unit-yan-yan` | approved reference | approved-baseline | technical ok | 30.4..37.5 x 45.7..46.0 | | -| `unit-yi-ji` | approved reference | approved-baseline | technical ok | 27.8..33.9 x 45.7..46.0 | | +| `unit-yi-ji` | approved reference | approved-baseline | technical ok | 24.4..30.8 x 46.0..46.3 | | | `unit-zhao-yun` | approved reference | approved-baseline | technical ok | 22.5..42.5 x 45.0..46.3 | | | `unit-zhuge-liang` | approved reference | approved-baseline | technical ok | 24.0..39.9 x 44.2..46.0 | | diff --git a/docs/unit-sprite-review-approved-and-pending.png b/docs/unit-sprite-review-approved-and-pending.png index 103438e..4fa3640 100644 Binary files a/docs/unit-sprite-review-approved-and-pending.png and b/docs/unit-sprite-review-approved-and-pending.png differ diff --git a/docs/unit-sprite-review-batch7-unique-officer.png b/docs/unit-sprite-review-batch7-unique-officer.png index a4930f0..6398722 100644 Binary files a/docs/unit-sprite-review-batch7-unique-officer.png and b/docs/unit-sprite-review-batch7-unique-officer.png differ diff --git a/docs/unit-sprite-review-index.png b/docs/unit-sprite-review-index.png index 29e4ec5..ec78229 100644 Binary files a/docs/unit-sprite-review-index.png and b/docs/unit-sprite-review-index.png differ diff --git a/docs/unit-sprite-rework-audit.json b/docs/unit-sprite-rework-audit.json index 7cb22f6..2266446 100644 --- a/docs/unit-sprite-rework-audit.json +++ b/docs/unit-sprite-rework-audit.json @@ -140,20 +140,20 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2314898, + "opaque_pixels": 1742744, "border_hits": 0, - "min_width": 208, - "max_width": 222, + "min_width": 148, + "max_width": 176, "min_height": 290, "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 14, + "width_swing": 28, "height_swing": 0, "bottom_swing": 0, - "battle_min_width_px": 33.2, - "battle_max_width_px": 35.5, + "battle_min_width_px": 23.6, + "battle_max_width_px": 28.1, "battle_min_height_px": 46.3, "battle_max_height_px": 46.3, "status": "ok" @@ -166,21 +166,21 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 5687163, + "opaque_pixels": 3442299, "border_hits": 0, - "min_width": 196, - "max_width": 287, - "min_height": 270, + "min_width": 118, + "max_width": 157, + "min_height": 284, "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 91, - "height_swing": 20, + "width_swing": 39, + "height_swing": 6, "bottom_swing": 0, - "battle_min_width_px": 31.3, - "battle_max_width_px": 45.8, - "battle_min_height_px": 43.1, + "battle_min_width_px": 18.8, + "battle_max_width_px": 25.1, + "battle_min_height_px": 45.4, "battle_max_height_px": 46.3, "status": "ok" } @@ -767,21 +767,21 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2087558, + "opaque_pixels": 1890712, "border_hits": 0, - "min_width": 166, - "max_width": 224, - "min_height": 282, + "min_width": 147, + "max_width": 206, + "min_height": 290, "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 58, - "height_swing": 8, + "width_swing": 59, + "height_swing": 0, "bottom_swing": 0, - "battle_min_width_px": 26.5, - "battle_max_width_px": 35.8, - "battle_min_height_px": 45.0, + "battle_min_width_px": 23.5, + "battle_max_width_px": 32.9, + "battle_min_height_px": 46.3, "battle_max_height_px": 46.3, "status": "ok" }, @@ -793,22 +793,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 4261312, + "opaque_pixels": 4010732, "border_hits": 0, - "min_width": 139, - "max_width": 212, - "min_height": 282, - "max_height": 291, + "min_width": 126, + "max_width": 177, + "min_height": 284, + "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 73, - "height_swing": 9, + "width_swing": 51, + "height_swing": 6, "bottom_swing": 0, - "battle_min_width_px": 22.2, - "battle_max_width_px": 33.9, - "battle_min_height_px": 45.0, - "battle_max_height_px": 46.5, + "battle_min_width_px": 20.1, + "battle_max_width_px": 28.3, + "battle_min_height_px": 45.4, + "battle_max_height_px": 46.3, "status": "ok" } }, @@ -4985,22 +4985,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2272400, + "opaque_pixels": 1900560, "border_hits": 0, - "min_width": 174, - "max_width": 212, - "min_height": 286, - "max_height": 288, + "min_width": 153, + "max_width": 193, + "min_height": 288, + "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 38, + "width_swing": 40, "height_swing": 2, "bottom_swing": 0, - "battle_min_width_px": 27.8, - "battle_max_width_px": 33.9, - "battle_min_height_px": 45.7, - "battle_max_height_px": 46.0, + "battle_min_width_px": 24.4, + "battle_max_width_px": 30.8, + "battle_min_height_px": 46.0, + "battle_max_height_px": 46.3, "status": "ok" }, "actions": { @@ -5011,22 +5011,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 5642111, + "opaque_pixels": 3873341, "border_hits": 0, - "min_width": 167, - "max_width": 273, - "min_height": 286, - "max_height": 295, + "min_width": 122, + "max_width": 175, + "min_height": 282, + "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 106, - "height_swing": 9, + "width_swing": 53, + "height_swing": 8, "bottom_swing": 0, - "battle_min_width_px": 26.7, - "battle_max_width_px": 43.6, - "battle_min_height_px": 45.7, - "battle_max_height_px": 47.1, + "battle_min_width_px": 19.5, + "battle_max_width_px": 28.0, + "battle_min_height_px": 45.0, + "battle_max_height_px": 46.3, "status": "ok" } }, diff --git a/docs/unit-sprite-rework-audit.md b/docs/unit-sprite-rework-audit.md index 755fb54..fef23c1 100644 --- a/docs/unit-sprite-rework-audit.md +++ b/docs/unit-sprite-rework-audit.md @@ -53,7 +53,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 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 | approved-baseline | `unit-fa-zheng` | ok | ok | 152..250 x 282..294 | 131..231 x 282..294 | 24.3..39.9 x 45.0..47.0 | w98 h12 b0 | -| 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 | +| batch7-unique-officer | approved-baseline | `unit-gong-zhi` | ok | ok | 148..176 x 290..290 | 118..157 x 284..290 | 23.6..28.1 x 46.3..46.3 | w28 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 | 179..200 x 282..288 | 147..211 x 282..290 | 28.6..31.9 x 45.0..46.0 | w21 h6 b0 | | 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 | @@ -64,7 +64,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | batch7-unique-officer | approved-baseline | `unit-lu-meng` | ok | ok | 169..253 x 288..290 | 153..238 x 286..290 | 27.0..40.4 x 46.0..46.3 | w84 h2 b0 | | batch7-unique-officer | approved-baseline | `unit-ma-chao` | ok | ok | 166..263 x 288..296 | 166..263 x 284..296 | 26.5..42.0 x 46.0..47.3 | w97 h8 b0 | | batch7-unique-officer | approved-baseline | `unit-ma-dai` | ok | ok | 169..249 x 288..290 | 162..239 x 284..290 | 27.0..39.8 x 46.0..46.3 | w80 h2 b0 | -| batch7-unique-officer | approved-baseline | `unit-ma-liang` | ok | ok | 166..224 x 282..290 | 139..212 x 282..291 | 26.5..35.8 x 45.0..46.3 | w58 h8 b0 | +| batch7-unique-officer | approved-baseline | `unit-ma-liang` | ok | ok | 147..206 x 290..290 | 126..177 x 284..290 | 23.5..32.9 x 46.3..46.3 | w59 h0 b0 | | batch6-nanman-special | approved-baseline | `unit-meng-huo` | ok | ok | 174..221 x 286..288 | 149..248 x 275..289 | 27.8..35.3 x 45.7..46.0 | w47 h2 b0 | | batch6-nanman-special | approved-baseline | `unit-nanman-infantry` | ok | ok | 152..219 x 288..288 | 152..243 x 265..288 | 24.3..35.0 x 46.0..46.0 | w67 h0 b0 | | 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 | @@ -138,7 +138,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | batch4-wu | approved-baseline | `unit-wu-strategist-river` | ok | ok | 154..218 x 284..290 | 133..222 x 284..290 | 24.6..34.8 x 45.4..46.3 | w64 h6 b0 | | batch4-wu | approved-baseline | `unit-wu-yi` | ok | ok | 167..250 x 286..288 | 151..210 x 282..288 | 26.7..39.9 x 45.7..46.0 | w83 h2 b0 | | batch7-unique-officer | approved-baseline | `unit-yan-yan` | ok | ok | 190..235 x 286..288 | 170..242 x 271..295 | 30.4..37.5 x 45.7..46.0 | w45 h2 b0 | -| batch7-unique-officer | approved-baseline | `unit-yi-ji` | ok | ok | 174..212 x 286..288 | 167..273 x 286..295 | 27.8..33.9 x 45.7..46.0 | w38 h2 b0 | +| batch7-unique-officer | approved-baseline | `unit-yi-ji` | ok | ok | 153..193 x 288..290 | 122..175 x 282..290 | 24.4..30.8 x 46.0..46.3 | w40 h2 b0 | | batch1-approved-core | approved-baseline | `unit-zhang-fei` | ok | ok | 143..306 x 274..289 | 188..286 x 181..290 | 22.8..48.9 x 43.8..46.2 | w163 h15 b14 | | batch7-unique-officer | approved-baseline | `unit-zhao-yun` | ok | ok | 141..266 x 282..290 | 118..248 x 277..295 | 22.5..42.5 x 45.0..46.3 | w125 h8 b0 | | batch7-unique-officer | approved-baseline | `unit-zhuge-liang` | ok | ok | 150..250 x 277..288 | 132..248 x 234..294 | 24.0..39.9 x 44.2..46.0 | w100 h11 b0 | diff --git a/docs/unit-sprite-unique-officer-identity-v3-approval-packet.md b/docs/unit-sprite-unique-officer-identity-v3-approval-packet.md new file mode 100644 index 0000000..9c92dbf --- /dev/null +++ b/docs/unit-sprite-unique-officer-identity-v3-approval-packet.md @@ -0,0 +1,29 @@ +# Unique Officer Identity v3 Approval Packet + +## Units + +- `unit-ma-liang` +- `unit-yi-ji` +- `unit-gong-zhi` + +## Reason + +The 50px identity board showed that these three named officers had weaker character reads than the surrounding unique officers. They were technically valid, but the visible props and silhouettes did not communicate their identities strongly enough during normal battle-scale play. + +## Delivered Assets + +- QA board before: `unique-officer-50px-identity-qa-v2.png` +- QA board after: `unique-officer-50px-identity-qa-v3.png` +- Ma Liang contact/GIF/before-after/report: `unique-officer-qa-ma-liang-v7-contact.png`, `unique-officer-qa-ma-liang-v7-animation.gif`, `unique-officer-qa-ma-liang-v7-before-after.png`, `unique-officer-qa-ma-liang-v7-report.md` +- Yi Ji contact/GIF/before-after/report: `unique-officer-qa-yi-ji-v3-contact.png`, `unique-officer-qa-yi-ji-v3-animation.gif`, `unique-officer-qa-yi-ji-v3-before-after.png`, `unique-officer-qa-yi-ji-v3-report.md` +- Gong Zhi contact/GIF/before-after/report: `unique-officer-qa-gong-zhi-v3-contact.png`, `unique-officer-qa-gong-zhi-v3-animation.gif`, `unique-officer-qa-gong-zhi-v3-before-after.png`, `unique-officer-qa-gong-zhi-v3-report.md` + +## Checks + +- 313x313 frame grid retained +- Idle/walk/action sheet structure retained +- Partial alpha: 0 for all three units +- Frame border hits: 0 for all three units +- Empty frames: 0 for all three units +- Build/deploy: passed +- Local and deployed browser console errors: 0 diff --git a/src/assets/images/units/unit-gong-zhi-actions.png b/src/assets/images/units/unit-gong-zhi-actions.png index af9e587..9137a8d 100644 Binary files a/src/assets/images/units/unit-gong-zhi-actions.png and b/src/assets/images/units/unit-gong-zhi-actions.png differ diff --git a/src/assets/images/units/unit-gong-zhi.png b/src/assets/images/units/unit-gong-zhi.png index b84b9ab..2e5d9fa 100644 Binary files a/src/assets/images/units/unit-gong-zhi.png and b/src/assets/images/units/unit-gong-zhi.png differ diff --git a/src/assets/images/units/unit-ma-liang-actions.png b/src/assets/images/units/unit-ma-liang-actions.png index 17b5508..3af35e7 100644 Binary files a/src/assets/images/units/unit-ma-liang-actions.png and b/src/assets/images/units/unit-ma-liang-actions.png differ diff --git a/src/assets/images/units/unit-ma-liang.png b/src/assets/images/units/unit-ma-liang.png index c88e834..caf951a 100644 Binary files a/src/assets/images/units/unit-ma-liang.png and b/src/assets/images/units/unit-ma-liang.png differ diff --git a/src/assets/images/units/unit-yi-ji-actions.png b/src/assets/images/units/unit-yi-ji-actions.png index 6256278..b954941 100644 Binary files a/src/assets/images/units/unit-yi-ji-actions.png and b/src/assets/images/units/unit-yi-ji-actions.png differ diff --git a/src/assets/images/units/unit-yi-ji.png b/src/assets/images/units/unit-yi-ji.png index a144d4c..21c2a43 100644 Binary files a/src/assets/images/units/unit-yi-ji.png and b/src/assets/images/units/unit-yi-ji.png differ