diff --git a/docs/battle-map-terrain-atlas-pipeline.md b/docs/battle-map-terrain-atlas-pipeline.md index 7ec937b..d17359a 100644 --- a/docs/battle-map-terrain-atlas-pipeline.md +++ b/docs/battle-map-terrain-atlas-pipeline.md @@ -2,7 +2,7 @@ ## Scope -The first forty 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. +The first forty-two 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. ## Art Direction @@ -15,7 +15,8 @@ The first forty campaign battles now use the same hand-painted tactical map pipe - Battles 1-25 keep the original 224px hand-painted tile target. - Large maps starting at battle 26 use a 192px tile target through `LARGE_MAP_TILE_SIZE` in the generator. -- Re-evaluate the tile target before a generated map's longest edge exceeds roughly 16,384px at 192px per tile. +- Very large maps can use a 176px tile target through `VERY_LARGE_MAP_TILE_SIZE` when WebP encoding or browser memory pressure becomes the limiting factor. +- Re-evaluate the tile target before a generated map's longest edge approaches roughly 16,384px at 192px per tile. - Use `--tile-size` only for controlled comparisons; commit the selected production size in the map config. ## Generator @@ -64,6 +65,8 @@ python scripts/generate-handpaint-map-sample.py --map thirty-seventh --webp-qual python scripts/generate-handpaint-map-sample.py --map thirty-eighth --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map thirty-ninth --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map fortieth --webp-quality 90 +python scripts/generate-handpaint-map-sample.py --map forty-first --webp-quality 90 +python scripts/generate-handpaint-map-sample.py --map forty-second --webp-quality 90 ``` Comparison example: @@ -114,6 +117,8 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192 - `src/assets/images/battle/thirty-eighth-battle-map.webp` - `src/assets/images/battle/thirty-ninth-battle-map.webp` - `src/assets/images/battle/fortieth-battle-map.webp` +- `src/assets/images/battle/forty-first-battle-map.webp` +- `src/assets/images/battle/forty-second-battle-map.webp` ## QA Outputs @@ -195,5 +200,9 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192 - `docs/thirty-ninth-battle-map-handpaint-preview.png` - `docs/fortieth-battle-map-handpaint-before-after.png` - `docs/fortieth-battle-map-handpaint-preview.png` +- `docs/forty-first-battle-map-handpaint-before-after.png` +- `docs/forty-first-battle-map-handpaint-preview.png` +- `docs/forty-second-battle-map-handpaint-before-after.png` +- `docs/forty-second-battle-map-handpaint-preview.png` Browser screenshots are saved per verification run after build/deploy. diff --git a/docs/forty-first-battle-map-handpaint-before-after.png b/docs/forty-first-battle-map-handpaint-before-after.png new file mode 100644 index 0000000..7624b2b Binary files /dev/null and b/docs/forty-first-battle-map-handpaint-before-after.png differ diff --git a/docs/forty-first-battle-map-handpaint-preview.png b/docs/forty-first-battle-map-handpaint-preview.png new file mode 100644 index 0000000..110288d Binary files /dev/null and b/docs/forty-first-battle-map-handpaint-preview.png differ diff --git a/docs/forty-second-battle-map-handpaint-before-after.png b/docs/forty-second-battle-map-handpaint-before-after.png new file mode 100644 index 0000000..1239b45 Binary files /dev/null and b/docs/forty-second-battle-map-handpaint-before-after.png differ diff --git a/docs/forty-second-battle-map-handpaint-preview.png b/docs/forty-second-battle-map-handpaint-preview.png new file mode 100644 index 0000000..9d16585 Binary files /dev/null and b/docs/forty-second-battle-map-handpaint-preview.png differ diff --git a/scripts/generate-handpaint-map-sample.py b/scripts/generate-handpaint-map-sample.py index 7ab6f08..2b8c25e 100644 --- a/scripts/generate-handpaint-map-sample.py +++ b/scripts/generate-handpaint-map-sample.py @@ -17,6 +17,7 @@ DOCS_DIR = ROOT / "docs" DEFAULT_TILE_SIZE = 224 LARGE_MAP_TILE_SIZE = 192 +VERY_LARGE_MAP_TILE_SIZE = 176 TILE = DEFAULT_TILE_SIZE RNG = random.Random(240704) @@ -396,6 +397,26 @@ MAP_CONFIGS = { "seed": 241094, "tile_size": LARGE_MAP_TILE_SIZE, }, + "forty-first": { + "slug": "forty-first-battle-map", + "terrain_export": "fortyFirstBattleMap", + "units_export": "fortyFirstBattleUnits", + "ally_positions_export": "fortyFirstBattleAllyPositions", + "out": BATTLE_IMAGE_DIR / "forty-first-battle-map.webp", + "before": BATTLE_IMAGE_DIR / "forty-first-battle-map.svg", + "seed": 241104, + "tile_size": LARGE_MAP_TILE_SIZE, + }, + "forty-second": { + "slug": "forty-second-battle-map", + "terrain_export": "fortySecondBattleMap", + "units_export": "fortySecondBattleUnits", + "ally_positions_export": "fortySecondBattleAllyPositions", + "out": BATTLE_IMAGE_DIR / "forty-second-battle-map.webp", + "before": BATTLE_IMAGE_DIR / "forty-second-battle-map.svg", + "seed": 241114, + "tile_size": VERY_LARGE_MAP_TILE_SIZE, + }, } diff --git a/src/assets/images/battle/forty-first-battle-map.svg b/src/assets/images/battle/forty-first-battle-map.svg deleted file mode 100644 index 801f42b..0000000 --- a/src/assets/images/battle/forty-first-battle-map.svg +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/images/battle/forty-first-battle-map.webp b/src/assets/images/battle/forty-first-battle-map.webp new file mode 100644 index 0000000..a2e873a Binary files /dev/null and b/src/assets/images/battle/forty-first-battle-map.webp differ diff --git a/src/assets/images/battle/forty-second-battle-map.svg b/src/assets/images/battle/forty-second-battle-map.svg deleted file mode 100644 index 456c16f..0000000 --- a/src/assets/images/battle/forty-second-battle-map.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/images/battle/forty-second-battle-map.webp b/src/assets/images/battle/forty-second-battle-map.webp new file mode 100644 index 0000000..39d9615 Binary files /dev/null and b/src/assets/images/battle/forty-second-battle-map.webp differ diff --git a/src/game/data/battleMapAssets.ts b/src/game/data/battleMapAssets.ts index ac32337..9b56b16 100644 --- a/src/game/data/battleMapAssets.ts +++ b/src/game/data/battleMapAssets.ts @@ -24,10 +24,10 @@ import firstBattleMapUrl from '../../assets/images/battle/first-battle-map.webp' import fortiethBattleMapUrl from '../../assets/images/battle/fortieth-battle-map.webp'; import fortyEighthBattleMapUrl from '../../assets/images/battle/forty-eighth-battle-map.svg'; import fortyFifthBattleMapUrl from '../../assets/images/battle/forty-fifth-battle-map.svg'; -import fortyFirstBattleMapUrl from '../../assets/images/battle/forty-first-battle-map.svg'; +import fortyFirstBattleMapUrl from '../../assets/images/battle/forty-first-battle-map.webp'; import fortyFourthBattleMapUrl from '../../assets/images/battle/forty-fourth-battle-map.svg'; import fortyNinthBattleMapUrl from '../../assets/images/battle/forty-ninth-battle-map.svg'; -import fortySecondBattleMapUrl from '../../assets/images/battle/forty-second-battle-map.svg'; +import fortySecondBattleMapUrl from '../../assets/images/battle/forty-second-battle-map.webp'; import fortySeventhBattleMapUrl from '../../assets/images/battle/forty-seventh-battle-map.svg'; import fortySixthBattleMapUrl from '../../assets/images/battle/forty-sixth-battle-map.svg'; import fortyThirdBattleMapUrl from '../../assets/images/battle/forty-third-battle-map.svg';