- index.html: WIMVEE GLYTCH match-the-glitch prototype (playable)
- docs/FKTRY_LORE.md: world bible / MODELBEAST asset codex
- fktry/: vite+three+TS scaffold, contracts, main loop, seed data
- fktry/MASTERPLAN.md + CONTRACTS.md + lanes/LANE-{SIM,RENDER,UI,SCREEN,DATA}.md:
round protocol and Round 1 orders for parallel Opus 4.8 executors
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
66 lines
3.4 KiB
Markdown
66 lines
3.4 KiB
Markdown
# LANE-SCREEN — THE SCREEN compositor & glitch shaders
|
||
|
||
You are an Opus 4.8 executor on the SCREEN lane of FKTRY. Read `../MASTERPLAN.md` and
|
||
`../CONTRACTS.md` first; world bible `../../docs/FKTRY_LORE.md` (§1 THE SCREEN, §3
|
||
products, §8 style). Also read `../../index.html` — the original WIMVEE GLYTCH
|
||
prototype — its fragment shader is your seed stock: 8 glitch params (mosh, melt,
|
||
chroma, tear, roll, burn, noise, freeze) already written and tuned.
|
||
|
||
**Mission:** the payoff object. THE SCREEN is the sky-display everything ships to —
|
||
the player's factory output composited live as escalating video corruption. When
|
||
someone screenshots this game, they screenshot your canvas. It must start sterile and
|
||
end deranged, and every shipped item must visibly matter.
|
||
|
||
**Owned paths:** `src/screen/**`.
|
||
**Never touch:** contracts, main.ts, other lanes, the GLYTCH prototype (read-only
|
||
seed stock — port, don't move).
|
||
|
||
**Standing rules (all rounds):**
|
||
- WebGL (raw or three.js — your call, note it) on the provided 640×360 canvas.
|
||
Budget: <2ms/frame; THE SCREEN is garnish, not the meal.
|
||
- Corruption must be *legible*: a player who ships 40 chroma slurry should SEE chroma
|
||
damage specifically. Item → artifact mapping is the design core, keep it data-driven
|
||
off `ItemDef.id`.
|
||
- Base content starts as procedural "clean programming" — sterile SMPTE-ish test
|
||
patterns, slow pans, timestamp overlay (port `makeBaseTexture` thinking from the
|
||
prototype; animate it subtly so corruption has motion to chew on).
|
||
|
||
---
|
||
|
||
## CURRENT ORDERS — Round 1 (goal: milestone M1 "FLOW")
|
||
|
||
Replace the stub in `src/screen/index.ts`:
|
||
|
||
1. **Port the GLYTCH shader stack** into a proper module (`glitchStack.ts`): vertex +
|
||
fragment shader with the 8 uniforms, compiled against your base texture. Keep
|
||
param semantics identical to the prototype (it's tuned; respect the tuning).
|
||
2. **Corruption ledger.** `onEvents`: each `shipped` event adds to a per-item tally.
|
||
Map items → param pressure in `corruptionMap.ts`, e.g. `melt → u_mosh+u_melt`,
|
||
`chroma-slurry → u_chroma`, `hf-dust → u_noise`, `anchor-slab → REDUCES overall
|
||
corruption slightly` (shipping clean anchors sanitizes — nice tension, note it for
|
||
the orchestrator). Unknown items → small generic noise bump. Pressure eases toward
|
||
its tally-driven target (lerp) so shipments feel like waves, not switches.
|
||
3. **Escalation curve.** Total corruption 0→1 over roughly the first 100 shipped
|
||
items (tune by feel), log-ish so early shipments feel huge. Above 0.8, add
|
||
compound wobble (params cross-modulate slowly) so a mature factory's SCREEN looks
|
||
*alive*, not maxed-out static.
|
||
4. **Brownout reaction.** On `brownout:true`, freeze-frame + heavy dropout lines +
|
||
desync judder until it lifts. The factory's pain shows in the sky.
|
||
5. **Idle charm.** With zero corruption, the clean feed runs bland loops with a
|
||
"NOTHING IS WRONG" chyron. First shipment ever interrupts it with a single frame
|
||
of full-white glitch — the awakening. Cheap, unforgettable.
|
||
|
||
**Definition of done:** dev build — screen starts sterile; console-dispatch a few
|
||
shipments (or wait for the real chain) and corruption rises, item-specifically;
|
||
brownout visibly seizes it. `npm run check` clean, frame budget respected (note
|
||
measured ms). NOTES written.
|
||
|
||
---
|
||
|
||
## NOTES (append-only log, newest at bottom)
|
||
|
||
```
|
||
### Round N — YYYY-MM-DD — [your model]
|
||
SHIPPED: / DECISIONS: / BLOCKED/BROKEN: / CONTRACT REQUEST: / PROPOSAL: / NEXT:
|
||
```
|