Commit web/assets/maps/ WebPs so deploys are self-contained
121 MB across 66 dungeon-floor WebPs (~150 KB–6 MB each). Previously gitignored on the assumption LFS would be needed; plain git handles this fine and it removes the kg_fetch → kg_stitch dependency from the deploy path. README and Ansible bring-up step updated.
@@ -13,11 +13,9 @@ Thumbs.db
|
||||
.idea/
|
||||
*.swp
|
||||
|
||||
# Large data assets — not tracked in git (no LFS yet)
|
||||
# Large data assets
|
||||
# legacy hires PNG dump (gone, but keep ignored)
|
||||
data/maps_png_hires/
|
||||
# 336 MB of WebP map tiles — exclude until LFS is set up
|
||||
web/assets/maps/
|
||||
|
||||
# Build output
|
||||
output/
|
||||
|
||||
@@ -14,7 +14,8 @@ courtesy of RaiderIO (verbal permission, see attribution below).
|
||||
comments, gateways), NPC names from companion `en_US.js`.
|
||||
- **Frontend:** vanilla HTML/CSS/JS, single page, no build step. Pan/zoom
|
||||
via CSS transform on the canvas stage; SVG overlay in image-pixel space.
|
||||
- **Hosting:** static. ~470 MB of WebPs total. Drop behind nginx; no backend.
|
||||
- **Hosting:** static. ~120 MB of WebPs total, committed to the repo. Drop
|
||||
behind nginx; no backend.
|
||||
|
||||
## Layout
|
||||
|
||||
@@ -40,7 +41,7 @@ mplus-routes/
|
||||
├── app.js
|
||||
└── assets/
|
||||
├── dungeons.json
|
||||
└── maps/ per-dungeon WebPs (gitignored — too big without LFS)
|
||||
└── maps/ per-dungeon WebPs (~120 MB, committed)
|
||||
```
|
||||
|
||||
## Build
|
||||
@@ -50,7 +51,7 @@ python3 -m venv .venv
|
||||
.venv/bin/pip install Pillow
|
||||
|
||||
.venv/bin/python tools/kg_fetch.py --workers 32 --zoom 4 # fetch tiles + data (~1.3 GB raw)
|
||||
.venv/bin/python tools/kg_stitch.py --workers 4 # → web/assets/maps/*.webp (~470 MB)
|
||||
.venv/bin/python tools/kg_stitch.py --workers 4 # → web/assets/maps/*.webp (~120 MB)
|
||||
.venv/bin/python tools/kg_build_data.py # → web/assets/dungeons.json
|
||||
```
|
||||
|
||||
@@ -71,8 +72,8 @@ TLS automatically.
|
||||
First-time bring-up:
|
||||
1. Add `mplus.exil.es` A/AAAA records in NetBox (→ public HAProxy VIPs)
|
||||
2. Push the Ansible commit, trigger `Ansible_DeployPublicHaproxy`
|
||||
3. Materialize `web/assets/maps/` on the deploy host (run the build pipeline above)
|
||||
4. Run `playbooks/setup_mplus_routes.yml`
|
||||
3. Run `playbooks/setup_mplus_routes.yml` — `web/assets/maps/` ships in the
|
||||
repo, no pre-build step needed.
|
||||
|
||||
## Coverage
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 614 KiB |
|
After Width: | Height: | Size: 590 KiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 762 KiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 2.4 MiB |