diff --git a/docs/battle-map-terrain-atlas-pipeline.md b/docs/battle-map-terrain-atlas-pipeline.md
index d411f90..31fa8e2 100644
--- a/docs/battle-map-terrain-atlas-pipeline.md
+++ b/docs/battle-map-terrain-atlas-pipeline.md
@@ -2,7 +2,7 @@
## Scope
-The first fifty-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.
+The first fifty-four 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
@@ -19,6 +19,7 @@ The first fifty-two campaign battles now use the same hand-painted tactical map
- Ultra large maps can use a 160px tile target through `ULTRA_LARGE_MAP_TILE_SIZE` when 176px output exceeds WebP encoder limits.
- Extreme large maps can use a 152px tile target through `EXTREME_LARGE_MAP_TILE_SIZE` when 160px output exceeds WebP encoder limits.
- Massive maps can use a 144px tile target through `MASSIVE_LARGE_MAP_TILE_SIZE` when 152px output approaches the WebP encoder edge.
+- Colossal maps can use a 136px tile target through `COLOSSAL_LARGE_MAP_TILE_SIZE` when 144px output hits WebP encoding error 6.
- 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.
@@ -80,6 +81,8 @@ python scripts/generate-handpaint-map-sample.py --map forty-ninth --webp-quality
python scripts/generate-handpaint-map-sample.py --map fiftieth --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map fifty-first --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map fifty-second --webp-quality 90
+python scripts/generate-handpaint-map-sample.py --map fifty-third --webp-quality 90
+python scripts/generate-handpaint-map-sample.py --map fifty-fourth --webp-quality 90
```
Comparison example:
@@ -142,6 +145,8 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192
- `src/assets/images/battle/fiftieth-battle-map.webp`
- `src/assets/images/battle/fifty-first-battle-map.webp`
- `src/assets/images/battle/fifty-second-battle-map.webp`
+- `src/assets/images/battle/fifty-third-battle-map.webp`
+- `src/assets/images/battle/fifty-fourth-battle-map.webp`
## QA Outputs
@@ -247,5 +252,9 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192
- `docs/fifty-first-battle-map-handpaint-preview.png`
- `docs/fifty-second-battle-map-handpaint-before-after.png`
- `docs/fifty-second-battle-map-handpaint-preview.png`
+- `docs/fifty-third-battle-map-handpaint-before-after.png`
+- `docs/fifty-third-battle-map-handpaint-preview.png`
+- `docs/fifty-fourth-battle-map-handpaint-before-after.png`
+- `docs/fifty-fourth-battle-map-handpaint-preview.png`
Browser screenshots are saved per verification run after build/deploy.
diff --git a/docs/fifty-fourth-battle-map-handpaint-before-after.png b/docs/fifty-fourth-battle-map-handpaint-before-after.png
new file mode 100644
index 0000000..61b57f1
Binary files /dev/null and b/docs/fifty-fourth-battle-map-handpaint-before-after.png differ
diff --git a/docs/fifty-fourth-battle-map-handpaint-preview.png b/docs/fifty-fourth-battle-map-handpaint-preview.png
new file mode 100644
index 0000000..eb60f0a
Binary files /dev/null and b/docs/fifty-fourth-battle-map-handpaint-preview.png differ
diff --git a/docs/fifty-third-battle-map-handpaint-before-after.png b/docs/fifty-third-battle-map-handpaint-before-after.png
new file mode 100644
index 0000000..97bec12
Binary files /dev/null and b/docs/fifty-third-battle-map-handpaint-before-after.png differ
diff --git a/docs/fifty-third-battle-map-handpaint-preview.png b/docs/fifty-third-battle-map-handpaint-preview.png
new file mode 100644
index 0000000..8729186
Binary files /dev/null and b/docs/fifty-third-battle-map-handpaint-preview.png differ
diff --git a/scripts/generate-handpaint-map-sample.py b/scripts/generate-handpaint-map-sample.py
index 30f3fcc..093a6a3 100644
--- a/scripts/generate-handpaint-map-sample.py
+++ b/scripts/generate-handpaint-map-sample.py
@@ -21,6 +21,7 @@ VERY_LARGE_MAP_TILE_SIZE = 176
ULTRA_LARGE_MAP_TILE_SIZE = 160
EXTREME_LARGE_MAP_TILE_SIZE = 152
MASSIVE_LARGE_MAP_TILE_SIZE = 144
+COLOSSAL_LARGE_MAP_TILE_SIZE = 136
TILE = DEFAULT_TILE_SIZE
RNG = random.Random(240704)
@@ -520,6 +521,26 @@ MAP_CONFIGS = {
"seed": 241214,
"tile_size": MASSIVE_LARGE_MAP_TILE_SIZE,
},
+ "fifty-third": {
+ "slug": "fifty-third-battle-map",
+ "terrain_export": "fiftyThirdBattleMap",
+ "units_export": "fiftyThirdBattleUnits",
+ "ally_positions_export": "fiftyThirdBattleAllyPositions",
+ "out": BATTLE_IMAGE_DIR / "fifty-third-battle-map.webp",
+ "before": BATTLE_IMAGE_DIR / "fifty-third-battle-map.svg",
+ "seed": 241224,
+ "tile_size": COLOSSAL_LARGE_MAP_TILE_SIZE,
+ },
+ "fifty-fourth": {
+ "slug": "fifty-fourth-battle-map",
+ "terrain_export": "fiftyFourthBattleMap",
+ "units_export": "fiftyFourthBattleUnits",
+ "ally_positions_export": "fiftyFourthBattleAllyPositions",
+ "out": BATTLE_IMAGE_DIR / "fifty-fourth-battle-map.webp",
+ "before": BATTLE_IMAGE_DIR / "fifty-fourth-battle-map.svg",
+ "seed": 241234,
+ "tile_size": COLOSSAL_LARGE_MAP_TILE_SIZE,
+ },
}
@@ -1158,8 +1179,8 @@ def main() -> None:
config = dict(MAP_CONFIGS[args.map])
if args.tile_size is not None:
- if args.tile_size < 144:
- raise ValueError("--tile-size must be 144 or greater")
+ if args.tile_size < 136:
+ raise ValueError("--tile-size must be 136 or greater")
config["tile_size"] = args.tile_size
out_path = args.out or Path(config["out"])
before_path = args.before or Path(config["before"])
diff --git a/src/assets/images/battle/fifty-fourth-battle-map.svg b/src/assets/images/battle/fifty-fourth-battle-map.svg
deleted file mode 100644
index 1585724..0000000
--- a/src/assets/images/battle/fifty-fourth-battle-map.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
diff --git a/src/assets/images/battle/fifty-fourth-battle-map.webp b/src/assets/images/battle/fifty-fourth-battle-map.webp
new file mode 100644
index 0000000..79a47a2
Binary files /dev/null and b/src/assets/images/battle/fifty-fourth-battle-map.webp differ
diff --git a/src/assets/images/battle/fifty-third-battle-map.svg b/src/assets/images/battle/fifty-third-battle-map.svg
deleted file mode 100644
index d7d2583..0000000
--- a/src/assets/images/battle/fifty-third-battle-map.svg
+++ /dev/null
@@ -1,75 +0,0 @@
-
diff --git a/src/assets/images/battle/fifty-third-battle-map.webp b/src/assets/images/battle/fifty-third-battle-map.webp
new file mode 100644
index 0000000..4e7e93e
Binary files /dev/null and b/src/assets/images/battle/fifty-third-battle-map.webp differ
diff --git a/src/game/data/battleMapAssets.ts b/src/game/data/battleMapAssets.ts
index 7bfc201..9b8bd33 100644
--- a/src/game/data/battleMapAssets.ts
+++ b/src/game/data/battleMapAssets.ts
@@ -4,8 +4,8 @@ import eleventhBattleMapUrl from '../../assets/images/battle/eleventh-battle-map
import fiftiethBattleMapUrl from '../../assets/images/battle/fiftieth-battle-map.webp';
import fiftyFirstBattleMapUrl from '../../assets/images/battle/fifty-first-battle-map.webp';
import fiftySecondBattleMapUrl from '../../assets/images/battle/fifty-second-battle-map.webp';
-import fiftyThirdBattleMapUrl from '../../assets/images/battle/fifty-third-battle-map.svg';
-import fiftyFourthBattleMapUrl from '../../assets/images/battle/fifty-fourth-battle-map.svg';
+import fiftyThirdBattleMapUrl from '../../assets/images/battle/fifty-third-battle-map.webp';
+import fiftyFourthBattleMapUrl from '../../assets/images/battle/fifty-fourth-battle-map.webp';
import fiftyFifthBattleMapUrl from '../../assets/images/battle/fifty-fifth-battle-map.svg';
import fiftyEighthBattleMapUrl from '../../assets/images/battle/fifty-eighth-battle-map.svg';
import fiftyNinthBattleMapUrl from '../../assets/images/battle/fifty-ninth-battle-map.svg';