Textures (6 walls + normals + wet matcap, $0, ~64s on the m3ultra MPS): - FLUX ignores "seamless tiling" (seam_error 3.7-17.9); a 4-way cosine partition-of-unity blend of the four half-rolls fixes it exactly -> 0.87-1.32 - levels-normalised the pack to one exposure (means were 0.18-0.32); these are detail maps multiplied into a biome tint, so per-prompt exposure read as a broken tint rather than as dark tissue - prompt-kit experiment rejected + recorded: PROCITY's "uniform coverage" clause in the STEM cured centred subjects but flattened the pack; framing words now live only in the two subject prompts that needed them Audio (1 bed + 4 sfx, 4.2s render, 0.61/10MB, ogg+m4a dual-ship): - bed-esophagus 24.000s, loop seam 0.32 (wrap step 3x smaller than inner step) - cascaded lowpass poles: one-pole at 900Hz left 16kHz only ~25dB down = hiss - rewrote the spectrogram sheet (per-clip peak, log freq) — the first one was a saturated rectangle, and evidence you can't read is not evidence assets.js: miss ledger + misses() — Lane A found that a drifted slug falls back procedurally forever with no error. Each distinct miss now announces itself. Also: shot_sink.py (canvas -> docs/shots/laneD, correctly named) and a dev texture viewer that imports the stub world read-only for the eyeball law. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| docs | ||
| pipeline | ||
| tools | ||
| web | ||
| .gitignore | ||
| README.md | ||
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 · Look: docs/ART_BIBLE.md
- Architecture + contracts: docs/TECH.md
- Asset generation: docs/PIPELINE.md
- How we work (lanes/rounds): docs/PROCESS.md — read this first if you are a lane
- Current round: docs/LANES/ROUND1_INSTRUCTIONS.md
Run it
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)
- Determinism. No
Math.randomoutsidejs/core/rng.js. Seeded RNG only. qa.sh greps. - Assets are optional. Missing texture/model/audio ⇒ procedural fallback, never a crash.
- Eyeball everything. Visual work isn't done until a screenshot is in
docs/shots/laneX/. - Perf budget: ≤300 draw calls, 60 fps on M-series / mid laptop. Measure via
window.DBG. - Free-first. Local MODELBEAST generation before any paid API; fal.ai is a gated fallback (John's go). See PIPELINE.md.
- 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.