diff --git a/docs/battle-map-terrain-atlas-pipeline.md b/docs/battle-map-terrain-atlas-pipeline.md
index 54a4962..5f3348b 100644
--- a/docs/battle-map-terrain-atlas-pipeline.md
+++ b/docs/battle-map-terrain-atlas-pipeline.md
@@ -2,7 +2,7 @@
## Scope
-The first sixty-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 sixty-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
@@ -22,6 +22,7 @@ The first sixty-two campaign battles now use the same hand-painted tactical map
- Colossal maps can use a 136px tile target through `COLOSSAL_LARGE_MAP_TILE_SIZE` when 144px output hits WebP encoding error 6.
- Gigantic maps can use a 128px tile target through `GIGANTIC_LARGE_MAP_TILE_SIZE` when 136px output would exceed the known WebP encoder comfort range.
- Immense maps can use a 120px tile target through `IMMENSE_LARGE_MAP_TILE_SIZE` when 128px output hits WebP encoding error 6.
+- Vast maps can use a 112px tile target through `VAST_LARGE_MAP_TILE_SIZE` when 120px output becomes unreliable during WebP encoding.
- 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.
@@ -93,6 +94,8 @@ python scripts/generate-handpaint-map-sample.py --map fifty-ninth --webp-quality
python scripts/generate-handpaint-map-sample.py --map sixtieth --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map sixty-first --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map sixty-second --webp-quality 90
+python scripts/generate-handpaint-map-sample.py --map sixty-third --webp-quality 90
+python scripts/generate-handpaint-map-sample.py --map sixty-fourth --webp-quality 90
```
Comparison example:
@@ -165,6 +168,8 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192
- `src/assets/images/battle/sixtieth-battle-map.webp`
- `src/assets/images/battle/sixty-first-battle-map.webp`
- `src/assets/images/battle/sixty-second-battle-map.webp`
+- `src/assets/images/battle/sixty-third-battle-map.webp`
+- `src/assets/images/battle/sixty-fourth-battle-map.webp`
## QA Outputs
@@ -290,5 +295,9 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192
- `docs/sixty-first-battle-map-handpaint-preview.png`
- `docs/sixty-second-battle-map-handpaint-before-after.png`
- `docs/sixty-second-battle-map-handpaint-preview.png`
+- `docs/sixty-third-battle-map-handpaint-before-after.png`
+- `docs/sixty-third-battle-map-handpaint-preview.png`
+- `docs/sixty-fourth-battle-map-handpaint-before-after.png`
+- `docs/sixty-fourth-battle-map-handpaint-preview.png`
Browser screenshots are saved per verification run after build/deploy.
diff --git a/docs/sixty-fourth-battle-map-handpaint-before-after.png b/docs/sixty-fourth-battle-map-handpaint-before-after.png
new file mode 100644
index 0000000..2412af4
Binary files /dev/null and b/docs/sixty-fourth-battle-map-handpaint-before-after.png differ
diff --git a/docs/sixty-fourth-battle-map-handpaint-preview.png b/docs/sixty-fourth-battle-map-handpaint-preview.png
new file mode 100644
index 0000000..7290ec6
Binary files /dev/null and b/docs/sixty-fourth-battle-map-handpaint-preview.png differ
diff --git a/docs/sixty-third-battle-map-handpaint-before-after.png b/docs/sixty-third-battle-map-handpaint-before-after.png
new file mode 100644
index 0000000..c37441e
Binary files /dev/null and b/docs/sixty-third-battle-map-handpaint-before-after.png differ
diff --git a/docs/sixty-third-battle-map-handpaint-preview.png b/docs/sixty-third-battle-map-handpaint-preview.png
new file mode 100644
index 0000000..d591d42
Binary files /dev/null and b/docs/sixty-third-battle-map-handpaint-preview.png differ
diff --git a/scripts/generate-handpaint-map-sample.py b/scripts/generate-handpaint-map-sample.py
index c8af498..7aa5d87 100644
--- a/scripts/generate-handpaint-map-sample.py
+++ b/scripts/generate-handpaint-map-sample.py
@@ -24,6 +24,7 @@ MASSIVE_LARGE_MAP_TILE_SIZE = 144
COLOSSAL_LARGE_MAP_TILE_SIZE = 136
GIGANTIC_LARGE_MAP_TILE_SIZE = 128
IMMENSE_LARGE_MAP_TILE_SIZE = 120
+VAST_LARGE_MAP_TILE_SIZE = 112
TILE = DEFAULT_TILE_SIZE
RNG = random.Random(240704)
@@ -623,6 +624,26 @@ MAP_CONFIGS = {
"seed": 241314,
"tile_size": IMMENSE_LARGE_MAP_TILE_SIZE,
},
+ "sixty-third": {
+ "slug": "sixty-third-battle-map",
+ "terrain_export": "sixtyThirdBattleMap",
+ "units_export": "sixtyThirdBattleUnits",
+ "ally_positions_export": "sixtyThirdBattleAllyPositions",
+ "out": BATTLE_IMAGE_DIR / "sixty-third-battle-map.webp",
+ "before": BATTLE_IMAGE_DIR / "sixty-third-battle-map.svg",
+ "seed": 241324,
+ "tile_size": VAST_LARGE_MAP_TILE_SIZE,
+ },
+ "sixty-fourth": {
+ "slug": "sixty-fourth-battle-map",
+ "terrain_export": "sixtyFourthBattleMap",
+ "units_export": "sixtyFourthBattleUnits",
+ "ally_positions_export": "sixtyFourthBattleAllyPositions",
+ "out": BATTLE_IMAGE_DIR / "sixty-fourth-battle-map.webp",
+ "before": BATTLE_IMAGE_DIR / "sixty-fourth-battle-map.svg",
+ "seed": 241334,
+ "tile_size": VAST_LARGE_MAP_TILE_SIZE,
+ },
}
@@ -1264,8 +1285,8 @@ def main() -> None:
config = dict(MAP_CONFIGS[args.map])
if args.tile_size is not None:
- if args.tile_size < 120:
- raise ValueError("--tile-size must be 120 or greater")
+ if args.tile_size < VAST_LARGE_MAP_TILE_SIZE:
+ raise ValueError(f"--tile-size must be {VAST_LARGE_MAP_TILE_SIZE} 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/sixty-fourth-battle-map.svg b/src/assets/images/battle/sixty-fourth-battle-map.svg
deleted file mode 100644
index 72760a1..0000000
--- a/src/assets/images/battle/sixty-fourth-battle-map.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-
diff --git a/src/assets/images/battle/sixty-fourth-battle-map.webp b/src/assets/images/battle/sixty-fourth-battle-map.webp
new file mode 100644
index 0000000..d2ac3eb
Binary files /dev/null and b/src/assets/images/battle/sixty-fourth-battle-map.webp differ
diff --git a/src/assets/images/battle/sixty-third-battle-map.svg b/src/assets/images/battle/sixty-third-battle-map.svg
deleted file mode 100644
index 8d7e3ed..0000000
--- a/src/assets/images/battle/sixty-third-battle-map.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-
diff --git a/src/assets/images/battle/sixty-third-battle-map.webp b/src/assets/images/battle/sixty-third-battle-map.webp
new file mode 100644
index 0000000..c914c74
Binary files /dev/null and b/src/assets/images/battle/sixty-third-battle-map.webp differ
diff --git a/src/game/data/battleMapAssets.ts b/src/game/data/battleMapAssets.ts
index 5de4585..1c4233e 100644
--- a/src/game/data/battleMapAssets.ts
+++ b/src/game/data/battleMapAssets.ts
@@ -12,8 +12,8 @@ import fiftyNinthBattleMapUrl from '../../assets/images/battle/fifty-ninth-battl
import sixtiethBattleMapUrl from '../../assets/images/battle/sixtieth-battle-map.webp';
import sixtyFirstBattleMapUrl from '../../assets/images/battle/sixty-first-battle-map.webp';
import sixtySecondBattleMapUrl from '../../assets/images/battle/sixty-second-battle-map.webp';
-import sixtyThirdBattleMapUrl from '../../assets/images/battle/sixty-third-battle-map.svg';
-import sixtyFourthBattleMapUrl from '../../assets/images/battle/sixty-fourth-battle-map.svg';
+import sixtyThirdBattleMapUrl from '../../assets/images/battle/sixty-third-battle-map.webp';
+import sixtyFourthBattleMapUrl from '../../assets/images/battle/sixty-fourth-battle-map.webp';
import sixtyFifthBattleMapUrl from '../../assets/images/battle/sixty-fifth-battle-map.svg';
import sixtySixthBattleMapUrl from '../../assets/images/battle/sixty-sixth-battle-map.svg';
import fiftySeventhBattleMapUrl from '../../assets/images/battle/fifty-seventh-battle-map.webp';