Go to file
m3ultra f3773919e5 Card-art generation pipeline for monsterrobot.games
Four directions per tile (neon box art / vector side art / amiga comic /
80s airbrush) generated on the farm, plus the picker page and the installer
that ships chosen art and its risograph hover b-side.

Recipe rules, all learned the hard way against the existing covers:
tiles render 172-240px so silhouette and colour are all that read; the page
draws every title in HTML so art carries no lettering (the old covers baked
in garbled type); busy interiors smuggle text back via album sleeves and go
muddy small, so it is one hero subject per card.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 12:05:04 +10:00
art Painted title screen + farm batch client 2026-07-26 11:09:45 +10:00
deploy Deploy to monsterrobot.games/paradramorama 2026-07-26 10:38:10 +10:00
src Painted title screen + farm batch client 2026-07-26 11:09:45 +10:00
tools Card-art generation pipeline for monsterrobot.games 2026-07-26 12:05:04 +10:00
.gitignore Vertical slice: possess/decay/bail loop, live pitch-duel, full floor 2026-07-26 00:27:47 +10:00
DESIGN.md Vertical slice: possess/decay/bail loop, live pitch-duel, full floor 2026-07-26 00:27:47 +10:00
index.html Vertical slice: possess/decay/bail loop, live pitch-duel, full floor 2026-07-26 00:27:47 +10:00
README.md Deploy to monsterrobot.games/paradramorama 2026-07-26 10:38:10 +10:00

PARADRAMORAMA

Ranarama × Paradroid, finished properly this time.

You are a rogue Signal loose in a haunted studio complex. The hardware can't see you — you're just noise on the line. Static gremlins CAN see you, and they hunt signals. Touch a machine to invade it in a live pitch-matching duel (the world does not pause), wear its body while it decays, burn its weapons, and bail before it blows. Purge every amp and every machine on the floor and the drone resolves to a chord.

Play it

Live: https://monsterrobot.games/paradramorama/

Locally — any static server from the repo root (ES modules won't load off file://):

python3 -m http.server 8474

then open http://localhost:8474

Deploy

./deploy/deploy.sh

Rsyncs to the games VPS (humanjing@100.71.119.27) at /home/humanjing/monsterrobot.games/games/paradramorama/ — a read-only bind mount into forum-nginx, so deploys write the host path (docker cp fails silently). Needs no nginx change; the apex server block serves any subdirectory, and a top-level symlink gives the pretty URL.

Cloudflare serves .js with a 4-hour max-age, so the deploy stamps a version query across the whole module chain (index.htmlgame.jsworld.js/audio.js) in a staging copy. Source files are never touched. Without that you would test stale code for hours after a redeploy.

Controls

Key Action
WASD / arrows move
touch hardware start possession duel
W / S (in duel) tune your oscillator to the target tone, hold the lock
SPACE fire — hold to ride the gain (more damage, more noise)
E eject from the body (leaves a husk you can re-enter, no duel)
P pause · M

The loop

  1. Bare signal — fast, invisible to hardware, helpless. Static hunts you.
  2. Duel — bump a machine → picture-in-picture pitch-match under a timer while the room stays live. Static hits you mid-duel, you lose the duel.
  3. Possessed — the body is your health, ammo and disguise, and it is always draining. Firing drains it faster. Gain = damage = noise = every machine on the floor hears you.
  4. Bail — eject before it blows or eat coherence damage. Hide. Hunt the next host.

Full design: DESIGN.md

Prototype is vanilla JS + Canvas + Web Audio. No dependencies, no build step.