guts/README.md
jing 34f84ab162 [lane F] Round 0 scaffold: docs, contracts, lane charters, bootable stub world
GDD v1 (flow-locked hybrid movement, 5 biomes + secret, boss roster),
TECH contracts (world API, level schema v0, bus events, manifest law),
ART_BIBLE (synthetic scanner look), PIPELINE (MODELBEAST-first, fal gated),
PROCESS (PROCITY lane/round law), charters A-F + ROUND1 instructions.
Seed code: shell + boot + core (rng/bus/flags) + stub world (peristalsis
shader tube, 1 draw / 102k tris, contract-complete) + qa.sh (GREEN).
Verified in-browser; evidence docs/shots/laneF/round0_stub_tube.png.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 01:28:35 +10:00

50 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`.