Flight (js/flight/): tube-mode controller in spline space (s,x,y) — flow-locked forward motion, throttle as a spring-back lean, boost + i-frames, banking chase cam on the parallel-transport frame, arcade wall response (shove + graze damage, never a hard stop). Twin-stick input: WASD/left-stick moves the ship in the disc, mouse/right-stick aims, Shift/Ctrl is throttle. Gamepad supported. Combat (js/combat/): lysozyme cannon (pooled, instanced, heat-limited with hysteresis lockout) + antacid torpedo emitting level:neutralize. Enemy framework with floater/seeker/turret and turn-rate-limited homing darts, spawned from C's level:event. Coat/hull model and the full bus surface E builds against. Measured (deterministic stepper): flow-lock exact (3s at flow 14 -> s=44.0); boost peak 30.8 u/s; heat 4s fire -> 2s lockout; wall slam 13.3 coat at 11.3 u/s with forward speed untouched; 10 combat draws at 55 live enemies (budget <=80); 0.10 ms/frame CPU; 0 leaks over 20 create/dispose cycles. fps NOT claimed — rAF does not run in the automated pane. Evidence: docs/shots/laneB/. Three findings escalated in LANE_B_NOTES: - qa.sh gate #1 is a no-op: node --check silently exits 0 on ESM, so the syntax gate has never checked anything. I shipped a real SyntaxError past a GREEN qa. Fix + verification handed to F. - Surf is structurally broken: the peristalsis wave (13.64 u/s) is slower than the player (19.6 u/s), so level 2's signature mechanic loses to mashing throttle. Not tunable from this lane; escalated to A/F with options. - Custom ShaderMaterials need #include <colorspace_fragment>, else ART_BIBLE's hostile amber reaches the display as rgb(255,26,6). Fixed here; stub/walls inherit it. js/flight/dev.html is a dev harness (boot.js has no player wiring yet); it retires once F pastes the snippet in LANE_B_NOTES. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
1.8 KiB
HTML
45 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>GUTS — Lane B flight/combat harness</title>
|
|
<!--
|
|
Lane B's dev harness. NOT the game — web/index.html is, and it's Lane F's.
|
|
This exists because boot.js has no player wiring yet (round 0 shipped a drift camera) and
|
|
Lane B may not edit boot.js. It boots the stub world + createPlayer + createCombat so the
|
|
controller can be flown and screenshotted this round.
|
|
Retire this once F pastes the snippet in LANE_B_NOTES.md §"-> Lane F".
|
|
http://localhost:8140/js/flight/dev.html
|
|
-->
|
|
<style>
|
|
html, body { margin: 0; height: 100%; overflow: hidden; background: #02100d; }
|
|
canvas { display: block; }
|
|
#dbg { position: fixed; left: 10px; bottom: 10px; color: #39e6ff;
|
|
font: 12px/1.5 ui-monospace, monospace; text-shadow: 0 0 4px #000;
|
|
pointer-events: none; z-index: 10; white-space: pre; }
|
|
#hint { position: fixed; inset: 0; display: grid; place-content: center; text-align: center;
|
|
color: #dff2ff; font: 14px/1.8 ui-monospace, monospace; background: #02100dcc;
|
|
z-index: 20; cursor: pointer; }
|
|
#hint b { color: #5affd2; font-size: 20px; letter-spacing: .2em; }
|
|
.gone { display: none !important; }
|
|
</style>
|
|
<script type="importmap">
|
|
{ "imports": { "three": "../../vendor/three.module.js",
|
|
"three/addons/": "../../vendor/addons/" } }
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="dbg"></div>
|
|
<div id="hint">
|
|
<b>ENDO-1</b>
|
|
<div>click to fly · lane B harness</div>
|
|
<div style="opacity:.6">
|
|
WASD move in the tube · mouse aim · LMB cannon · RMB/F torpedo<br>
|
|
Space boost · Shift/Ctrl throttle · ease off to surf the crest · Esc release
|
|
</div>
|
|
</div>
|
|
<script type="module" src="./dev.js"></script>
|
|
</body>
|
|
</html>
|