# GUTS — a fantastic voyage through the alimentary canal

Browser flight-combat game (three.js, zero build step). You pilot **ENDO-1**, a microscopic
probe, mouth → rectum through five anatomically-grounded biomes: ride peristalsis down the
esophagus, cross the acid sea of the stomach, thread the villi forest of the small intestine,
survive the gas swamps of the colon. *Fantastic Voyage* × *Star Fox* × *Descent*.

- **Design:** [docs/GDD.md](docs/GDD.md) · **Look:** [docs/ART_BIBLE.md](docs/ART_BIBLE.md)
- **Architecture + contracts:** [docs/TECH.md](docs/TECH.md)
- **Asset generation:** [docs/PIPELINE.md](docs/PIPELINE.md)
- **How we work (lanes/rounds):** [docs/PROCESS.md](docs/PROCESS.md) — **read this first if you are a lane**
- **Current round:** [docs/LANES/ROUND1_INSTRUCTIONS.md](docs/LANES/ROUND1_INSTRUCTIONS.md)

## Run it

```bash
cd web && python3 -m http.server 8140
# http://localhost:8140            — the game
# http://localhost:8140/?stub=1&dbg=1  — stub world + debug HUD (works from day 0)
```

No bundler, no npm, no build. ES modules + import map; three.js r175 vendored in `web/vendor/`
(never CDN — the game must run offline). Before you finish a session: `bash tools/qa.sh`.

## The one-paragraph tech pitch

The whole canal is a **spline**. World position is `(s, θ, ρ)` — distance along the canal,
angle and radius in the cross-section. Tube walls are chunked extrusions along
parallel-transport frames; peristalsis and breathing are **vertex-shader displacement**
(cheap, squishy, everywhere); collision is an analytic radius test (no physics engine).
Caverns (mouth, stomach) switch the same controller to free 6DOF. Look is **synthetic
scanner** — dark endoscope void, SEM-style monochrome walls with FLUX-generated detail
textures, emissive-coded enemies. Everything is seeded + deterministic, and every asset is
optional at runtime — the game boots and plays asset-free with procedural fallbacks.

## Hard laws (all lanes)

1. **Determinism.** No `Math.random` outside `js/core/rng.js`. Seeded RNG only. qa.sh greps.
2. **Assets are optional.** Missing texture/model/audio ⇒ procedural fallback, never a crash.
3. **Eyeball everything.** Visual work isn't done until a screenshot is in `docs/shots/laneX/`.
4. **Perf budget:** ≤300 draw calls, 60 fps on M-series / mid laptop. Measure via `window.DBG`.
5. **Free-first.** Local MODELBEAST generation before any paid API; fal.ai is a gated fallback
   (John's go). See PIPELINE.md.
6. **Git:** stage only your exact paths, commit + push each session, never `git add .`.

## Deploy

Target: partly.party (static). Not wired yet — when it's time, consult the `deploy-map` skill
and run `ship-check` first. Origin: `ssh://git@100.71.119.27:222/monster/guts.git`.
