feat: repaint first battle map

This commit is contained in:
2026-07-15 10:56:24 +09:00
parent b96029bce3
commit b5aad69e39
10 changed files with 57 additions and 6 deletions

View File

@@ -4,6 +4,10 @@
All sixty-six campaign battles now use the same hand-painted tactical map pipeline. The renderer still reads the original scenario tile coordinates and battle logic; only the map texture asset changes from flat/vector map art to low-contrast raster terrain.
## V2 Pilot
The first battle now uses `src/assets/images/battle/first-battle-map-v2.webp` as the approved V2 vertical slice. It is an original 96 px/tile repaint with reduced runtime tint and grid weight. The procedural generator still targets the retired `first-battle-map.webp` filename for controlled V1 comparisons; do not promote that output over the V2 asset without a new runtime visual review.
## Art Direction
- Units must read before the terrain at 100% desktop browser scale.

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

View File

@@ -0,0 +1,45 @@
# First Battle Map Repaint V2
Date: 2026-07-15
## Target
- Battle: `first-battle-zhuo-commandery`
- Runtime key: `battle-map-first`
- Production asset: `src/assets/images/battle/first-battle-map-v2.webp`
- Retired source reference: `docs/first-battle-map-v1-source.webp`
- Desktop output density: 96 px per tactical tile (`1920x1728` for the `20x18` map)
## Art pass
- Repainted the procedural terrain as an original late-Han rural battlefield.
- Preserved the top-down map framing, major cliff routes, two water bodies, forest distribution, watch posts, camps, and open deployment lanes.
- Replaced circular tree stamps, flat water marks, and uniform ground fills with layered woodland, reeds, stones, grasses, worn soil, and eroded cliff faces.
- Kept the palette muted so unit sprites and tactical feedback remain the primary visual focus.
- Added no text, logo, copyrighted source image, or franchise-identifying mark.
## Runtime composition
- Reduced the passive full-map dark wash from `0.16` to `0.07` alpha.
- Reduced passive terrain tint to `36%` of each terrain rule's former alpha, capped at `0.12`.
- Reduced passive grid strokes while retaining a stronger boundary for impassable terrain.
- Movement, targeting, objective, and command feedback remain separate tactical layers.
## Generation prompt
The production image was created with the built-in image generation workflow using the previous first-battle map as the strict topology reference and `docs/battle-map-art-direction-reference.png` as a mood and material-density reference. The prompt required an original hand-painted late-Han rural battlefield, exact orthographic top-down framing, preserved passability cues, organic terrain transitions, varied foliage and water detail, tactical readability, and explicitly prohibited UI, characters, text, logos, watermarks, repeated stamps, hard tile seams, and copyrighted asset replication.
## Evidence
- Before/after contact sheet: `docs/first-battle-map-v2-before-after.png`
- 1920x1080 deployment capture: `docs/first-battle-map-v2-deploy-1920.png`
- 1920x1080 movement-range capture: `docs/first-battle-map-v2-move-1920.png`
## Validation
- `pnpm run verify:battle-map-assets`: passed.
- `pnpm run verify:static-data`: passed.
- `pnpm run build`: passed.
- Local 1920x1080 deployment and active-battle QA: passed.
- Movement-range overlay remained distinct over the reduced passive grid.
- Browser warning/error logs during the runtime pass: none.

View File

@@ -7,7 +7,7 @@ Generated by `scripts/audit-visual-asset-quality.mjs`.
- Target desktop viewport: 1920x1080
- Battle map assets: 66
- Flagged battle map review rows: 43
- Flagged battle map rows with repaint reports: 3
- Flagged battle map rows with repaint reports: 4
- Battle map source pixel density range: 64.0-224.0 px/tile
- Story source backgrounds: 136
- Story page background references: 466
@@ -82,7 +82,7 @@ Generated by `scripts/audit-visual-asset-quality.mjs`.
| `fifty-seventh-battle-jieting-crisis` | `battle-map-fifty-seventh` | 114x96 | 14592x12288 | 128.0 | 16.89 | reduced tile pixel density |
| `fifty-sixth-battle-tianshui-advance` | `battle-map-fifty-sixth` | 112x94 | 14336x12032 | 128.0 | 15.45 | reduced tile pixel density |
| `fifty-third-battle-meng-huo-sixth-capture` | `battle-map-fifty-third` | 106x88 | 14416x11968 | 136.0 | 19.00 | reduced tile pixel density |
| `first-battle-zhuo-commandery` | `battle-map-first` | 20x18 | 4480x4032 | 224.0 | 0.50 | very low WebP byte density |
| `first-battle-zhuo-commandery` | `battle-map-first` | 20x18 | 1920x1728 | 96.0 | 1.02 | low tile pixel density<br>repaint report exists |
| `fortieth-battle-han-river-flood` | `battle-map-fortieth` | 80x62 | 15360x11904 | 192.0 | 11.76 | none |
| `forty-eighth-battle-meng-huo-main-force` | `battle-map-forty-eighth` | 96x78 | 15360x12480 | 160.0 | 16.44 | none |
| `forty-fifth-battle-yiling-vanguard` | `battle-map-forty-fifth` | 90x72 | 14400x11520 | 160.0 | 13.98 | none |