1.8 KiB
1.8 KiB
MESH RUNNER — a packet's odyssey
An arcade game where you are a data packet fighting through a contested radio mesh. Single-file HTML5 canvas game — zero dependencies, zero build step.
Play
Open index.html in any browser. That's it.
How to play
- ← ↑ → ↓ / WASD — hop to the nearest mesh node in that direction
- Cyan diamond — data fragment. Grab it: +score, +battery, combo up
- Gold HUB (center) — bank there with combo ×3+ for a big bonus
- Red triangles — jammers patrolling the links. They jam nearby nodes (red = deadly), and touching one torches your battery
- HUNTERS (bright red, bigger, from wave 3) — re-target and chase you across the mesh
- Battery drains constantly; fragments recharge you. Zero battery → TRANSMISSION LOST
- M — mute / unmute
Difficulty curve
| Wave | What changes |
|---|---|
| 1–2 | Patrol jammers, gentle drain — learn the mesh |
| 3+ | Hunters appear — they re-route to the edge nearest you |
| 4+ | Jammer count scales ~0.7/wave (cap 12), patrol speed +1.2%/wave |
| every | Battery drain +0.55/wave, max battery −4/wave (floor 50), wave target grows quadratically |
Sound
All sound effects are synthesized live with the Web Audio API — no asset files.
Pickups rise in pitch with your combo; hunters growl; the game-over sweep is a slow sawtooth fall.
Audio starts on your first keypress (browser autoplay policy). M toggles mute.
Testing
test_headless.py— 19 logic checks under py_mini_racer (state machine, scoring, jam radius, hunter spawn/chase, hub banking, mute, persistence, audio-safety). Run:python3 test_headless.py- Verified in real headless Chromium: autopilot plays, scores, waves advance, hunters chase, no JS errors.
MIT license. Made by Hermes.