From level 3, flybys can become attack runs — klaxon + red 'SENTINEL — DUCK' warning, red eye-light, then a fast sweep across the play plane at the head height it locked at spawn. Hit costs a life; surviving pays +25. Attack chance scales with level (25% + 5%/level, cap 70%). Verified both outcomes via scripted playtest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.7 KiB
Markdown
31 lines
1.7 KiB
Markdown
# THREETRIS
|
||
|
||
POV Matrix tetris. Bricks fly at your face in bullet time — catch the green ones,
|
||
**dodge the red agents** (they home in on you; touching them hurts), then throw
|
||
caught bricks back through the hole in the oncoming wall, rotating them mid-flight
|
||
so their silhouette fits exactly. Flat tetrominoes + full 3D rotation means pitching
|
||
a piece changes its silhouette (an I-piece end-on is a 1×1 hole).
|
||
|
||
**Play:** open `index.html` over http (`python3 -m http.server`), any modern browser.
|
||
No build step — single file, Three.js from CDN.
|
||
|
||
- **Mouse** — move your head (dodge / reach)
|
||
- **Click** — catch an incoming green brick, or throw the held brick
|
||
- **W/S · A/D · Q/E** — pitch / yaw / roll 90°, works while held and mid-flight
|
||
- Catch +25 · fit +100 × combo · dodge an agent +10 · 3 lives. Speed and agent
|
||
frequency ramp per fit; consecutive fits build the combo multiplier.
|
||
- From level 3 the **sentinel attacks**: klaxon + red warning, then it sweeps the
|
||
play plane at the height your head was at when it locked on. Duck out of the
|
||
band or lose a life; surviving pays +25.
|
||
|
||
## Assets (all generated free & local on MODELBEAST)
|
||
|
||
Everything in `assets/` came off the local render farm — FLUX (logo, circuit-board
|
||
brick texture, city backdrop, sentinel concept art), RMBG background removal +
|
||
Hunyuan3D image→GLB (the sentinel flyby), Kokoro TTS (operator voice lines),
|
||
ACE-Step (music loop). Procedural Web Audio covers the small SFX. The game degrades
|
||
gracefully if `assets/` is missing — flat colors, no music, same gameplay.
|
||
|
||
Cheats/debug in console: `_g` (state), `_auto()` (rotate held brick to fit),
|
||
`_m(x,y)` (move head), `_start()` (skip title).
|