Add museum map reveal, artifact path puzzle, and homelab media tooling.

Puzzle 1 crossfades to the stitched map with a link to /museum-path; puzzle 2 is a touch-friendly drag-and-order challenge with PDF extract scripts for map and artifact assets.
This commit is contained in:
2026-06-11 09:57:23 -04:00
parent c810efd8e5
commit 7c68aa3bd3
20 changed files with 1179 additions and 29 deletions
+24 -4
View File
@@ -1,6 +1,6 @@
# Egyptian Escape Room — Digital Lock
A touch-friendly React lock for a homeschool Egyptian escape room. Eight color-coded numeric inputs; correct code plays a celebration and unlock video.
A touch-friendly React escape room for homeschool: artifact room door lock (`/`) and museum path drag puzzle (`/museum-path`).
## Quick start (local)
@@ -14,12 +14,21 @@ Open http://localhost:5173. For iPad testing on your LAN: `npm run dev -- --host
## Test checklist
- Wrong code → jiggle + "Incorrect Code!"
- Correct code (`8`, `9`, `10`, `6`, `8`, `6`, `12`, `4` in order) → confetti → unlock video
**Puzzle 1** (`/`)
- Wrong code → jiggle + error banner
- Correct code (`8`, `9`, `10`, `6`, `8`, `6`, `12`, `4` in order) → confetti → unlock video → map fade-in + **HELP TED ESCAPE**
**Puzzle 2** (`/museum-path`)
- Refresh stays on puzzle 2 (does not reset puzzle 1)
- Drag 8 artifacts into ordered slots (touch + mouse)
- Wrong path + CHECK PATH → error feedback
- Correct path → confetti + “Ted escaped the museum!”
## Media
The unlock clip is copied from `Ted Escape Room 1-5.mp4` in the Egyptian Escape Room documents folder. Dev setup:
Media is copied from the Egyptian Escape Room documents folder. `setup-dev-media.sh` also stitches the puzzle 5 map from `EgyptEscapeRoomPrintables.pdf` (pages 910). Requires `pip install pymupdf` once. Dev setup:
```bash
./scripts/setup-dev-media.sh
@@ -27,6 +36,17 @@ The unlock clip is copied from `Ted Escape Room 1-5.mp4` in the Egyptian Escape
Config lives at `public/media/config.json` (see `config.json.example`).
### Map artifacts (puzzle 5)
The 16 display images on PDF pages 910 are embedded in the printables PDF and can be extracted individually:
```bash
pip install -r scripts/requirements.txt # once
python3 scripts/extract-artifact-images.py "/path/to/EgyptEscapeRoomPrintables.pdf"
```
Output: `public/media/artifacts/*.png` and `manifest.json` (slug, display name, dimensions). Use `--mode embedded` for raw JPEG/PNG bytes from the PDF instead of page renders.
## Docker (local smoke test)
```bash