guts/docs/LANES/LANE_C_LEVELS.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

49 lines
2.8 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.

# LANE C — Levels & Encounters (data, pacing, bosses)
Mission: turn the GDD into playable levels — you are the game designer lane. You own
`web/js/levels/**` (JSON + registry/loader) and `docs/GDD.md` refinements.
## What you build
- **Level JSONs** (schema TECH.md — you own the schema from round 1 sign-off onward; evolve
it via NOTES + F referee, never silently). One file per level, `L1_mouth``L5_colon`
+ `LS_appendix`. Everything data-driven: if you need a new event `type` or enemy param,
spec it in NOTES for B/A and stub it in data first.
- **`levels/index.js`**: registry, loader, and a **schema selfcheck** (every biome id exists
in A's registry, events sorted by s, s within length, checkpoint before every boss…) that
qa.sh runs headlessly via `node`.
- **Encounter design:** density curves (breather → pressure → spike → gate), teach-then-test
(every mechanic appears safe before it appears lethal), par times, pickup economy,
biopsy-sample hiding spots (visible-but-costly law: secrets are seen, reaching them is
the challenge).
- **Boss scripts** (`levels/bosses/*.js` — logic-as-data where possible, small state
machines where not; B owns the enemy framework you plug into): Pyloric Guardian, Tapeworm
chase, The Blockage. Spec each as: phases, telegraphs, windows, failure pressure.
- **Difficulty scaling:** a single `difficulty.js` table (coat-drain ×, density ×, window ×)
— GDD §Difficulty. No per-level hand-tuned forks.
## Design laws
- **Anatomy is the level designer.** Every hazard/setpiece maps to something real (GDD
table) — the game's charm is that it's *actually* the digestive tract. When inventing,
check the anatomy first; reality is weirder and better (bile from the duodenum, Peyer's
patches, the appendix as a secret room are all real).
- **Readable at speed.** Tube levels are experienced at 1020 u/s: telegraph everything
≥2 s upstream (E gives you `audio:cue` + HUD pings — spec what you need in NOTES).
- **Checkpoints are sphincter-themed** where anatomy allows; death costs ≤30 s of progress.
- Tutorialization: level 1 teaches move/shoot/coat in arena safety; the epiglottis gate is
the exam.
## You owe / consume
Owe: level JSONs + registry + selfcheck; encounter tables per level in NOTES (they double
as B's spawn-behavior wishlist); boss specs early (round 12) so A can build lair arenas
and D can concept hero meshes. Consume: A's biome registry, B's enemy/event vocabulary,
GDD as your spec (refine it in place — it's yours now, banner what you change).
## Verification
You can't screenshot data — your evidence is **playthrough notes**: boot each level
(`?lvl=L2_esophagus&stub=1` before A lands), fly it, record pacing against your curve, note
where it lies. Cite times/densities measured, not intended. qa selfcheck stays green.