Files
heros_web/docs/equipment-icon-quality-audit.md

83 lines
5.2 KiB
Markdown

# Equipment Icon Quality Audit
Generated by `scripts/audit-equipment-icon-quality.mjs`.
## Summary
- Catalog items: 23
- Generated procedural item textures: 23
- Slots: accessory 7, armor 5, weapon 11
- Ranks: common 11, treasure 12
- Texture size: 64px
- Drawing grid: 28 units scaled 2.29x into the texture
- Runtime item icon scene: `src/game/scenes/CampScene.ts`
- Observed runtime display sizes: `14px`, `20px`, `21px`, `22px`, `30px`
- Direct item texture render sites found: 5
## Main Findings
- Equipment item icons are generated at runtime in `BootScene`, not stored as individual raster images.
- The 64px textures are drawn from a compact 28-unit source grid, so they are crisp but intentionally simple.
- Battle combat preview mostly uses the high-resolution `battle-ui-icons` slot frames and item names; per-item textures appear primarily in camp/sortie equipment UI.
- Treasure/common distinction often relies on UI frame color plus a small palette change, not a strong unique silhouette.
- Reused helper silhouettes are the strongest quality risk because several different items collapse to the same shape at 14-22px.
## Completed Improvement Passes
- weapon spear/polearm family: `green-dragon-glaive`, `serpent-spear`, `sky-piercer-halberd`, `iron-spear`, `western-cavalry-spear`
- The previous shared spear/polearm silhouettes now use item-specific helper shapes with enough primitive detail for 20px and 30px equipment UI reads.
- armor silhouettes: `oath-robe`, `reinforced-lamellar`, `cloth-armor`, `lamellar-armor`, `rebel-vest`
- The previous shared armor and robe silhouettes now use item-specific helper shapes with stronger outer contours and material cues.
## Next Improvement Target
- Target: accessory charms and tokens
- Item ids: `bravery-token`, `mountain-guide-scroll`, `peach-charm`, `war-manual`, `wind-quiver`, `grain-pouch`, `yellow-scarf-charm`
- Reason: Accessories are the smallest UI read and several use compact badge-like shapes.
## Highest-Risk Shared Silhouette Groups
| score | signature | slots | ranks | items |
| ---: | --- | --- | --- | --- |
| 8 | `drawCharmIcon` | accessory | common, treasure | `peach-charm`, `yellow-scarf-charm` |
| 6 | `drawAxeIcon` | weapon | common | `leader-axe` |
| 6 | `drawSaberIcon` | weapon | common | `yellow-turban-saber` |
| 6 | `drawSwordIcon` | weapon | common | `training-sword` |
| 5 | `drawFanIcon` | weapon | treasure | `white-feather-fan` |
## Full Item Inventory
| item id | slot | rank | draw helpers | calls | primitives | colors | concerns |
| --- | --- | --- | --- | ---: | ---: | ---: | --- |
| `green-dragon-glaive` | weapon | treasure | `drawGreenDragonGlaiveIcon` | 1 | 23 | 6 | none |
| `serpent-spear` | weapon | treasure | `drawSerpentSpearIcon` | 1 | 29 | 4 | none |
| `sky-piercer-halberd` | weapon | treasure | `drawSkyPiercerHalberdIcon` | 1 | 24 | 7 | none |
| `twin-oath-blades` | weapon | treasure | `drawSwordIcon`<br>`drawSwordIcon` | 2 | 32 | 4 | none |
| `white-feather-fan` | weapon | treasure | `drawFanIcon` | 1 | 19 | 3 | none |
| `iron-spear` | weapon | common | `drawIronSpearIcon` | 1 | 26 | 7 | none |
| `leader-axe` | weapon | common | `drawAxeIcon` | 1 | 7 | 2 | low primitive detail |
| `short-bow` | weapon | common | `drawBowIcon` | 1 | 18 | 3 | none |
| `training-sword` | weapon | common | `drawSwordIcon` | 1 | 16 | 4 | low primitive detail |
| `western-cavalry-spear` | weapon | common | `drawWesternCavalrySpearIcon` | 1 | 27 | 7 | none |
| `yellow-turban-saber` | weapon | common | `drawSaberIcon` | 1 | 12 | 2 | low primitive detail |
| `oath-robe` | armor | treasure | `drawOathRobeIcon` | 1 | 25 | 6 | none |
| `reinforced-lamellar` | armor | treasure | `drawReinforcedLamellarIcon` | 1 | 24 | 5 | none |
| `cloth-armor` | armor | common | `drawClothArmorIcon` | 1 | 24 | 6 | none |
| `lamellar-armor` | armor | common | `drawLamellarArmorIcon` | 1 | 23 | 4 | none |
| `rebel-vest` | armor | common | `drawRebelVestIcon` | 1 | 24 | 7 | none |
| `bravery-token` | accessory | treasure | `drawTokenIcon` | 1 | 4 | 2 | low primitive detail |
| `mountain-guide-scroll` | accessory | treasure | `drawMapScrollIcon` | 1 | 13 | 5 | low primitive detail |
| `peach-charm` | accessory | treasure | `drawCharmIcon` | 1 | 4 | 2 | shared helper silhouette<br>low primitive detail |
| `war-manual` | accessory | treasure | `drawBookIcon` | 1 | 7 | 3 | low primitive detail |
| `wind-quiver` | accessory | treasure | `drawQuiverIcon` | 1 | 8 | 2 | low primitive detail |
| `grain-pouch` | accessory | common | `drawPouchIcon` | 1 | 7 | 2 | low primitive detail |
| `yellow-scarf-charm` | accessory | common | `drawCharmIcon` | 1 | 4 | 2 | shared helper silhouette<br>low primitive detail |
## Recommended Next Batch Definition
- Scope: improve accessory charms and tokens while keeping `item-${itemId}` texture keys stable.
- Item ids: `bravery-token`, `mountain-guide-scroll`, `peach-charm`, `war-manual`, `wind-quiver`, `grain-pouch`, `yellow-scarf-charm`
- Success criteria: Each accessory should keep a compact footprint while gaining a distinct readable prop shape at 20px and 30px.
- Keep the existing 64px texture size unless a UI-wide equipment icon pass is planned.
- Add before/after contact sheets and verify the sortie equipment list and equipment swap panel in a desktop browser.