The two things I deferred out loud, built — and the second one turned out to be the primitive
the first was waiting on.
THE CHURN (the force primitive). Everything in hazards.js pushed the player RADIALLY; nothing
applied a tangential one, which is why both L3's cyclones and the Guardian's arena churn got
deferred. `churn` is now a hazard kind: a tangential impulse that REVERSES on a period, so it
cannot be leaned into, only re-read. Measured: 4.32 u/s of push, direction flipping.
- L3 s1100: cyclones spanning the sea, deliberately overlapping the first tide — the room
starts spinning you at the exact moment the safe air starts shrinking.
- The Pyloric Guardian carries its own (`def.churn` + per-phase `churnMul`), so C's spec is
finally honoured in full: "pushes you at the walls", x1.5 in P2, harder in P3. Measured
2.7 u/s on the player mid-fight. The boss.js header that said this was missing is corrected.
THE TAPEWORM (LANE_C_NOTES §2), the campaign's third pressure: a DISTANCE race. One new idea in
the schedule — `flee` — advances the boss's own s and drags its ring along at fixed offsets, so
6 proglottids string out 70 units down the tube ahead of you instead of sitting in a
cross-section. Fall 110 units behind and it is gone. Verified both ways: fall behind ->
"escaped" after 16.8s having seen only P1; keep up -> all three phases -> win. C's line was "a
chase you can lose without dying", and that is now literally the outcome table.
Placed at L4 s5460, immediately before the biofilm cash-out, so the chase and the reward land
together. L4's "no_miniboss_yet" note is replaced rather than left lying.
PRE-PLAYTEST SWEEP: 6/6 levels valid, all load with ZERO console errors, every level carries
exactly 3 biopsy samples, five bosses across the campaign (mast_cell / pyloric_guardian /
tapeworm / the_blockage / appendix_sovereign), 16,820 units of authored canal, and the chain
resolves L1 -> L2 -> L3 -> L4 -> L5 -> end with LS_appendix rejoining at L5.
Everything in the GDD's roster now exists except the numbers being right, and that is the part
only humans can tell us.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
136 lines
14 KiB
JSON
136 lines
14 KiB
JSON
{
|
|
"schema": 2,
|
|
"id": "L3_stomach",
|
|
"name": "Stomach",
|
|
"tagline": "The acid sea",
|
|
"seed": 20260702,
|
|
"par": { "time": 540, "score": 5500, "samples": 3 },
|
|
"next": "L4_small_intestine",
|
|
"design": {
|
|
"owner": "Lane C",
|
|
"status": "AUTHORED (round 3). The skeleton waited on the pH field and on a boss framework; both now exist, so the encounters, the acid sea and the Guardian are built.",
|
|
"identity": "The coat level. Ambient pH drains the mucus coat continuously, so position IS the resource: the sea has a SURFACE, and flying above it is the safe lane. Ends on the Pyloric Guardian.",
|
|
"anatomy": "Cardia -> fundus -> body (greater/lesser curvature) -> antrum -> pyloric antrum -> pylorus. Real order, real proportions.",
|
|
"biome_note": "biome = tissue/look family (Lane A's registry), segments[].name = the anatomy. There is no 'cardia' or 'pylorus' biome and there should not be. The cardia deliberately keeps the ESOPHAGUS palette so that the acid sea REVEALS itself: you arrive still in teal, and the world turns orange the moment the fundus opens out. Spending a biome id on the cardia would throw that reveal away.",
|
|
"scale": "Real stomach is ~25cm long, ~15cm wide when full; arena radius 180 units = 36cm. The one place the 1 unit : 1 mm fiction nearly holds - the stomach is genuinely a room.",
|
|
"the_ph_mechanic": "`acid` (below) is Lane A's round-2 acid plane, finally load-bearing. B reads world.acid.depthAt(): submerged multiplies the biome's 2.2/s coat drain by 5 (11/s, which outruns the 8/s regen even at rest and is brutal mid-fight, since regen is off for 2.5s after any hit); above the surface it is multiplied by 0.15 and you are effectively safe. That is the GDD's 'mucus shallows are safe lanes' expressed as DEPTH rather than as wall-hugging - better, because it reads instantly (you can SEE the surface) and because it makes the room's vertical axis matter in the one level that is a room. Every collectible worth having is under it.",
|
|
"the_tide": "Three `acid` events raise the sea across the level (-14 -> -6 -> +2). The safe lane thins as you go, and by the antrum the surface is above the centreline, so the last stretch has no safe air at all. The player learns the mechanic in a room where the answer is easy and re-meets it where the answer is gone.",
|
|
"no_flora_here": "L3 is the only level with no commensals and no biofilm gate, and that is anatomically exact: stomach acid sterilises, which is precisely why H. pylori is famous for surviving it. Mechanically it means BIOME STANDING cannot move here - the reputation loop goes quiet for nine minutes and comes back in L4, which makes L4's bifido colonies read as relief rather than as furniture.",
|
|
"open_question": "The body of the stomach is not a sphere and arenas[] currently only expresses spheres. Either A's arena primitive grows to a capsule/blob union, or L3 chains overlapping spheres. Flagged to Lane A in LANE_C_NOTES.md §-> Lane A - do not treat arenas[1] as final geometry.",
|
|
"the_churn": "Cyclones at s1100, spanning the sea. hazards.js now has a `churn` kind - a TANGENTIAL force that reverses on a period - so the GDD's vortex is real rather than deferred. It overlaps the first tide deliberately: the room starts spinning you at the exact moment the safe air starts shrinking.",
|
|
"checkpoint_density": "Twenty-one checkpoints, because flow is 3 u/s through the fundus and body and the 30s death-cost law works out to ~100 units there. A level where the room is the hazard has to be generous about respawns, or the acid stops being a resource and becomes a punishment."
|
|
},
|
|
"acid": {
|
|
"from": 700,
|
|
"to": 2200,
|
|
"height": -14,
|
|
"biome": "stomach",
|
|
"note": "The sea itself. Starts low (-14): in a 40-45 unit room that leaves most of the lumen as safe air, so the fundus can TEACH the mechanic before the body tests it. Raised by the `acid` events at s1150 / s1750."
|
|
},
|
|
"segments": [
|
|
{
|
|
"biome": "esophagus",
|
|
"name": "Cardia",
|
|
"length": 200,
|
|
"radius": { "base": 12, "wobble": 0.15 },
|
|
"curviness": 0.3,
|
|
"flow": 8,
|
|
"note": "You arrive through the lower esophageal sphincter still wearing L2's teal, still moving at L2's pace. 200 units of the previous level, so that the fundus can take it away."
|
|
},
|
|
{
|
|
"biome": "stomach",
|
|
"name": "Fundus",
|
|
"length": 600,
|
|
"radius": { "base": 40, "wobble": 0.2 },
|
|
"curviness": 0.2,
|
|
"flow": 3,
|
|
"note": "The reveal: the tube stops being a tube. Radius triples, flow drops to a third, the palette goes amber and the acid surface is suddenly THERE below you. The whole segment is a teaching room - the sea is low, the ceiling is huge, and nothing here can kill you quickly."
|
|
},
|
|
{
|
|
"biome": "stomach",
|
|
"name": "Body",
|
|
"length": 900,
|
|
"radius": { "base": 45, "wobble": 0.25 },
|
|
"curviness": 0.25,
|
|
"flow": 3,
|
|
"note": "The acid sea proper, and the biggest room in the game. The tide rises halfway through, so the safe air you learned to use in the fundus is being taken away while you are still in it."
|
|
},
|
|
{
|
|
"biome": "stomach",
|
|
"name": "Antrum",
|
|
"length": 500,
|
|
"radius": { "base": 25, "wobble": 0.2 },
|
|
"curviness": 0.3,
|
|
"flow": 6,
|
|
"note": "The room closes and the current picks up - the stomach beginning to squeeze its contents toward the pylorus, with you in them. The second tide event lands here and puts the surface ABOVE the centreline: no safe air, the coat just burns, and the only answer left is speed."
|
|
},
|
|
{
|
|
"biome": "stomach",
|
|
"name": "Pyloric Antrum",
|
|
"length": 300,
|
|
"radius": { "base": 14, "wobble": 0.15 },
|
|
"curviness": 0.2,
|
|
"flow": 10,
|
|
"note": "Out of the acid at last and into a tight fast funnel - and the Guardian is in it. C's law puts the checkpoint at 2260, twenty units before the lair, so a wipe costs the fight and not the sea."
|
|
}
|
|
],
|
|
"arenas": [
|
|
{ "at": 800, "radius": 70, "biome": "stomach", "note": "Fundus dome. Spans s 730-870." },
|
|
{ "at": 1250, "radius": 180, "biome": "stomach", "note": "The acid sea. Spans s 1070-1430. PROVISIONAL - a sphere is the wrong shape for the stomach body; see design.open_question." },
|
|
{ "at": 2350, "radius": 70, "biome": "stomach", "note": "Pyloric Guardian lair. Spans s 2280-2420." }
|
|
],
|
|
"events": [
|
|
{ "s": 20, "type": "checkpoint", "name": "Cardia" },
|
|
{ "s": 60, "type": "pickup", "kind": "nutrient_orb", "count": 3, "spread": 40, "note": "The last easy thing. An orb line in the cardia at L2's pace, 140 units before the room opens." },
|
|
{ "s": 120, "type": "spawn", "enemy": "bezoar_chunk", "count": 2, "spread": 50, "note": "Debris in the sphincter - the familiar floater, so the first 200 units of L3 ask nothing new. The level's whole opening is a setup for the reveal." },
|
|
{ "s": 180, "type": "checkpoint", "name": "Fundic Reveal", "note": "Placed 20 units before the fundus so the checkpoint fires while the player is still in teal. When they respawn here, they get the reveal again." },
|
|
|
|
{ "s": 240, "type": "pickup", "kind": "mucin_glob", "count": 2, "spread": 40, "note": "TEACH THE COAT ECONOMY, immediately on arrival. The bar starts draining the moment the biome changes; the game hands you two refills in the same breath so the lesson is 'this is survivable and it is about position', not 'you are already dying'." },
|
|
{ "s": 280, "type": "checkpoint", "name": "Fundus" },
|
|
{ "s": 340, "type": "spawn", "enemy": "pepsin_swarm", "count": 3, "spread": 60, "note": "TEACH pepsin: the L2 seeker in its home biome, three of them, in the largest room they will ever have. Nothing else is happening - the point is to learn that a seeker in 6DOF can come from below." },
|
|
{ "s": 380, "type": "checkpoint", "name": "Fundic Dome" },
|
|
{ "s": 430, "type": "pickup", "kind": "biopsy_sample", "count": 1, "theta": 4.71, "rho": 0.55, "note": "SAMPLE 1/3, and the mechanic's first bill: theta 4.71 is straight DOWN, which in this level means under the surface. It costs a dip into 11/s drain in the safest room in the level - the cheapest possible version of the trade the whole stomach is about." },
|
|
{ "s": 480, "type": "checkpoint", "name": "Greater Curvature" },
|
|
{ "s": 540, "type": "spawn", "enemy": "bezoar_chunk", "count": 4, "spread": 110, "note": "Debris drifting on the sea. In a 40-unit room these are not a threat, they are TERRAIN - the first thing that makes the player pick a line through a room rather than around an obstacle." },
|
|
{ "s": 580, "type": "checkpoint", "name": "Fundic Floor" },
|
|
{ "s": 640, "type": "pickup", "kind": "antacid_ammo", "count": 2, "spread": 30, "note": "Torpedoes 1700 units before the Guardian, and the level never says why. Its P2 has armoured nodes that ONLY antacid strips, so a player who spent these on pepsin swarms meets that wall with an empty tube. The lesson is available and never taught - the same contract L2's s2300 ammo honours." },
|
|
{ "s": 680, "type": "checkpoint", "name": "Fundic Exit" },
|
|
{ "s": 740, "type": "spawn", "enemy": "hpylori_driller", "count": 1, "note": "TEACH H. pylori, alone, in the dome: the one microbe that lives here. It corkscrews so it is hard to pin, and it does NOT dissolve on contact - it grinds and keeps coming. First enemy in the game that must be OUT-DAMAGED rather than dodged, taught with a whole arena to retreat into." },
|
|
{ "s": 780, "type": "checkpoint", "name": "Incisura" },
|
|
|
|
{ "s": 840, "type": "spawn", "enemy": "pepsin_swarm", "count": 5, "spread": 90 },
|
|
{ "s": 880, "type": "checkpoint", "name": "Body" },
|
|
{ "s": 940, "type": "pickup", "kind": "mucin_glob", "count": 2, "spread": 50 },
|
|
{ "s": 980, "type": "checkpoint", "name": "Gastric Body" },
|
|
{ "s": 1040, "type": "spawn", "enemy": "bezoar_chunk", "count": 5, "spread": 140 },
|
|
{ "s": 1080, "type": "checkpoint", "name": "The Sea" },
|
|
{ "s": 1100, "type": "hazard", "kind": "churn", "span": 420, "strength": 24, "period": 7, "warn": 2.5, "note": "THE CHURN CYCLONES (GDD), finally buildable now that hazards.js has a force. A tangential vortex across the widest part of the sea that REVERSES every 3.5s: it cannot be leaned into, only re-read, and it spins you toward the surface or away from it while the tide is rising. The stomach mixing its contents, with you as contents." },
|
|
{ "s": 1150, "type": "acid", "height": -6, "note": "THE FIRST TIDE. The sea climbs 8 units while the player is in the middle of the biggest room in the game. Nothing announces it but the water - the safe air simply starts running out, and a player who has been skimming the surface finds themselves in it." },
|
|
{ "s": 1180, "type": "checkpoint", "name": "Rising" },
|
|
{ "s": 1240, "type": "spawn", "enemy": "hpylori_driller", "count": 2, "spread": 60, "note": "TEST H. pylori: two of them, in a rising sea, where retreating downward is no longer free. The drill and the tide are the same problem from two directions." },
|
|
{ "s": 1280, "type": "checkpoint", "name": "Mid Sea" },
|
|
{ "s": 1330, "type": "pickup", "kind": "biopsy_sample", "count": 1, "theta": 1.57, "rho": 0.8, "note": "SAMPLE 2/3, out at the wall of the widest room in the game. Not deep, but FAR - the cost is the round trip across open water with drillers in it, and every second of that trip is paid in coat." },
|
|
{ "s": 1380, "type": "checkpoint", "name": "Lesser Curvature" },
|
|
{ "s": 1440, "type": "spawn", "enemy": "pepsin_swarm", "count": 6, "spread": 100, "note": "The biggest swarm in the level, at the far end of the sea, where the player's coat is at its worst. Pepsin dissolves on contact - it is a damage race the player wins by shooting straight, and loses by drifting low." },
|
|
{ "s": 1480, "type": "checkpoint", "name": "Sea Exit" },
|
|
{ "s": 1540, "type": "pickup", "kind": "mucin_glob", "count": 2, "spread": 40, "note": "The last real top-up before the antrum. Take both." },
|
|
{ "s": 1580, "type": "checkpoint", "name": "Antral Approach" },
|
|
{ "s": 1640, "type": "spawn", "enemy": "bezoar_chunk", "count": 4, "spread": 100 },
|
|
{ "s": 1680, "type": "checkpoint", "name": "Pre-Antrum" },
|
|
|
|
{ "s": 1750, "type": "acid", "height": 2, "note": "THE SECOND TIDE, and the level's cruellest idea: the surface goes ABOVE the centreline as the room narrows to 25. There is no safe air in the antrum. The mechanic the fundus taught is simply withdrawn, and the only remaining answer is to stop optimising position and RUN - which is exactly what the antrum's flow 6 and the pyloric antrum's flow 10 are there to let you do." },
|
|
{ "s": 1780, "type": "checkpoint", "name": "Antrum" },
|
|
{ "s": 1840, "type": "spawn", "enemy": "pepsin_swarm", "count": 4, "spread": 70 },
|
|
{ "s": 1900, "type": "pickup", "kind": "antacid_ammo", "count": 2, "spread": 25, "note": "Second and last ammo drop. A player who understood the first one is now carrying four torpedoes into a fight that needs two." },
|
|
{ "s": 1980, "type": "checkpoint", "name": "Antral Run" },
|
|
{ "s": 2040, "type": "spawn", "enemy": "hpylori_driller", "count": 2, "spread": 50, "note": "Drillers in a 25-unit tube with no safe depth: the grind, in a corridor, while the coat burns. The hardest 100 units in the level and the last thing before the run-in." },
|
|
{ "s": 2120, "type": "pickup", "kind": "biopsy_sample", "count": 1, "theta": 3.14, "rho": 0.9, "note": "SAMPLE 3/3, wall-pinned in the antrum at flow 6 with no safe air anywhere. The cruellest of the three: there is no clever position left, only the decision to spend coat you need for the Guardian." },
|
|
{ "s": 2180, "type": "checkpoint", "name": "Pyloric Antrum" },
|
|
{ "s": 2200, "type": "pickup", "kind": "mucin_glob", "count": 3, "spread": 30, "note": "Three globs on the racing line, out of the acid at last, sixty units before the boss checkpoint. This is the level apologising - and arming you for a fight whose entire design is a race against this bar." },
|
|
|
|
{ "s": 2260, "type": "checkpoint", "name": "Pyloric Antrum", "note": "Checkpoint before the boss - the law, and the reason a Guardian wipe costs seconds and not minutes." },
|
|
{ "s": 2350, "type": "boss", "id": "pyloric_guardian", "note": "Full phase spec (phases / telegraphs / windows / failure pressure) in LANE_C_NOTES.md §Boss specs." },
|
|
{ "s": 2480, "type": "gate", "id": "pylorus", "to": "L4_small_intestine", "note": "The pylorus opens and the stomach passes you on like chyme. You leave the acid behind; your coat does not forget it." }
|
|
]
|
|
}
|