# OCTAVE — Game Design Plan (v3, from scratch)
Working title: OCTAVE (discardable). A real-time-ticking, fully deterministic strategy game played on the inside of an endless tunnel that is secretly a loop. No plot, no characters, no text beyond instrument readouts. The screen is the game: warped checkerboard throats, raining striations, weaving seas, eyes condensing in the pattern. This document is the complete specification for an implementing LLM. It supersedes all earlier drafts (FORMA, HOLONOMY), which are deleted.
Sources: design theory from the transcript [[Games That Are Too Cool For Their Own Good]]; visual and conceptual source: all 16 images in `Attachments/Hylomorphism_Recursion_diagram/`, read as a corpus (§2). Frame: [[Hylomorphism]] and recursion.
## 0. What this game is
You are inside a tunnel of pattern-matter, falling forever inward. The tunnel has seven visible bands of cells, rendered as a continuous Escher–Droste spiral: zoom inward through all seven and you arrive back where you began — the world is a strange loop, the same place seven scales deeper. Rain made of vertical striations falls perpetually inward, through the bottom of the world and back in from the top, harder each lap if nothing catches it. You catch it with weave — op-art fabric you stitch into the bands — and when a charged arc of weave rings true around the tunnel, it crystallizes thread, the game's only resource. Bands rotate and drag each other by friction, including across the loop seam, so every shove you give one ring eventually arrives back from the other side of the world. Pattern-matter cycles through four phases — haze, rain, weave, vortex — an alien meteorology that runs whether you act or not. Stillness is not safe: where nothing moves, eyes open in the pattern and freeze what they see. And the loop is twisted: a fixed phase-torsion is distributed around the recursion, so a structure closing through the whole tunnel can never be made of pure order — the winning chord must pass through at least one tamed storm. There is no attack verb, no enemy to remove, no plot. Only fields, phases, momentum, observation, and a final standing wave called the Octave.
## 1. The corpus reading (all 16 images, weighted)
The earlier drafts over-weighted one image. Read as a corpus, the folder's motifs rank:
1. Tunnels, throats, apertures (≥6 images): the checker torus tunnel with green light at its end (`8b58...3`), the spiral throat swallowing a checkerboard (`21ea...3`), the concentric woven rings (`21ea...2`), the checker vortex (`1a87...2`), the warped funnel spaces (`fc67...2`, `fc67...3`). The corpus is about being inside a recursion, looking down its axis. Therefore: the game world is a tunnel, viewed down the axis, always.
2. Pattern as substance with phase states: the decisive image is `8b58...1` — vertical striations raining down and becoming a horizontal woven sea. Pattern behaves like matter: it precipitates, flows, settles, evaporates. Therefore: the matter system is a phase cycle (§4).
3. Weave/textile texture throughout: patterns read as cloth, threads, scan-woven fabric (`1a87...1` chevron weave, the woven rings). Therefore: the buildable phase is called weave and renders as fabric.
4. Watchers: eyes and faces condensing inside pattern (`1a87...3` — dark eyes in a fine checker field; `fc67...1` — a face in cyan turbulence inside a checkered frame). Therefore: observation is a force in the world (§6).
5. Glitch substrate everywhere: chromatic aberration, scanlines, horizontal tearing (`8b58...2` spectrogram striations). Therefore: the CRT layer is both rendering and instrumentation (§7).
6. Cubes (2 images: `1a87...0`, `8b58...0`): demoted from protagonist to artifact — crystallization monuments (§5.4).
7. Melting stripes → rainbow contour ripples (`21ea...0`): phase-transition rendering.
8. Dither blocks (`fc67...0`): the haze phase.
## 2. The world: a twisted strange loop, rendered as an endless zoom
### 2.1 Topology (the impossible geometry, exactly)
The world is a discrete cylinder of cells: W = 48 angular columns × H = 7 bands, closed into a loop: the inward neighbour of band 6 is band 0. The loop is twisted: crossing each band interface b → b+1 applies a fixed seeded phase offset φ_b ∈ Z₈ to pattern alignment, with Σφ_b ≡ T (mod 8), T = 3. The interface 6 → 0 additionally shifts columns by T (the Droste rotation). Consequences the implementer must preserve:
- Falling inward forever brings you home every 7 bands. There is no bottom and no top.
- A "vertical" structure closing around the whole loop must absorb a total alignment torsion of T ≠ 0 (mod 8). Pure aligned weave cannot close the loop. This is a theorem of the world, not a tuning decision, and it is the game's antagonist (§8).
- Anything that propagates inward (rain, momentum, resonance) eventually re-arrives from outside, transformed by the twist.
### 2.2 Rendering (the recursion sequence)
Render via log-polar mapping — the standard Droste construction:
- Maintain an unrolled world canvas of W×H cells (each cell ~24×24 px of procedural pattern).
- Precompute once a per-pixel lookup table mapping each screen pixel (x,y) → (r, θ) → (band-space row = log(r)/log(k) + zoomOffset, column = θ·W/2π + twist correction per lap), sampling the unrolled canvas with band index mod 7 and the column shift T applied per lap.
- Per frame: one typed-array remap pass. Canvas 2D only; 60fps on integrated graphics; WebGL forbidden in v1 (keeps the cheap implementer on solid ground).
- Zoom is continuous: the mouse wheel scrolls zoomOffset; the view shows ~3 bands at once, inner bands smaller and converging on the throat at screen centre, outer bands cropped by the screen edge. Zooming 7 bands inward reproduces the exact starting frame. This seamless self-reentry is the game's signature shot and must exist by Milestone 0, before any gameplay.
- The recognition beat: the seed guarantees a visually distinctive starting formation (a unique seeded blemish pattern). The first time players dive seven bands and watch their own earliest weave arrive from outside, the topology teaches itself. Do not explain it in text; let the world do it.
## 3. Spin: bands as coupled flywheels
- Each band b has angular position x_b (float, in cells) and angular velocity ω_b (cells/tick). The unrolled canvas is sampled with x_b offsets, so bands visibly slide against each other.
- Inertia: I_b = number of non-haze cells in the band (matter is heavy; haze spins freely). Total angular momentum L = Σ I_b·ω_b.
- Friction: each tick, for every adjacent pair (including 6↔0 across the seam), Δω relaxes by μ = 5%: spin one band and the whole tunnel slowly redistributes it, around the loop and back. Systems knocking each other off course is the literal physics.
- Shove (player action, always free): ±0.5 to one band's ω. Free in thread; expensive in consequences — momentum is conserved except for shoves and vortices, so every shove is a debt the whole tunnel collects.
- Shear at an interface: local slip v = ω_{b+1} − ω_b. Shear is read by four systems (§9) and rendered as rain-slant and moiré (§7).
## 4. The matter cycle: four phases of pattern
Every cell holds pattern-matter in one phase, plus charge q ∈ [0,1]:
- Haze — dither blocks (`fc67...0`). Inert, light, drifts. The entropic ground state.
- Rain — vertical striations (`8b58...1` top). Falls inward 1 band/tick, carrying charge 0.3. Rain shears sideways with band slip (rain-slant = visible shear gauge). Rain crossing the 6→0 seam uncaught becomes torrent: speed 2, charge doubled, and it erodes weave it strikes instead of charging it. The rain always comes back; ignoring it compounds it.
- Weave — fabric (`1a87...1`, the woven sea of `8b58...1` bottom). The buildable phase. Has alignment a ∈ Z₈. Conducts charge along aligned neighbours. Erodes (q decays) under strain and torrent; at q < 0 unravels to haze.
- Vortex — the spinning phase (`1a87...2`, `21ea...3`). Born when weave overcharges (q = 1 for 3 ticks); chirality = sign of local shear at birth. Each tick converts 0.01 of its charge into ±0.02 ω for its band (matter spending itself as motion), attracts rain toward its column, and decays to haze when spent. Cannot be built or removed directly; only induced or starved.
Transitions (the closed meteorology): haze −(gaze or compression: ≥3 weave neighbours)→ rain nucleation; rain −(absorbed by weave)→ charge; weave −(overcharge)→ vortex; vortex −(spent)→ haze. The cycle runs without the player; M2's gate is that the unattended world reaches a living equilibrium, neither freezing nor exploding (the transcript's "systems that keep each other in constant equilibrium" is an acceptance test, not a metaphor).
## 5. Economy: thread
### 5.1 Conduction and resonance
Between angularly adjacent weave cells, and across band interfaces (after applying φ_b and column slip), compute mismatch m = alignment difference and local shear v:
| condition | state | effect |
|---|---|---|
| m = 0 and v < 0.1 | conductive | charge equalizes 30%/tick; resonance candidate |
| m = 1 or 0.1 ≤ v < 0.3 | strained | conducts 10%; erodes both q by 0.01/tick |
| m ≥ 2 or v ≥ 0.3 | moiré | no conduction; accumulates glitch (§7) |
### 5.2 Crystallization
A resonant arc is a maximal run of ≥8 consecutive conductive weave cells in one band with q ≥ 0.5. Each tick it crystallizes floor(length/8) thread and drains 0.1 q per cell — income consumes the field's energy, which only rain replenishes; a farmed arc must keep catching rain or it dims. A full-band ring (all 48 cells) pays ×4 and leaves a monument: a small orbiting maze-cube (`1a87...0`, `8b58...0` — the cubes' role in this game: trophies of a moment of perfect order).
### 5.3 Spending (one resource, four pulls; never add a second)
- Reweave: set a haze cell to weave with chosen alignment, cost 2. Catching rain mid-fall into weave costs 3 (stylish, instant charge). Vortex cells cannot be overwritten — wait out or starve the storm.
- Comb: rotate an existing weave cell's alignment ±1, cost 1. The cheapest action must ripple (§9): it changes up to four interface states, can split or fuse arcs, reroute charge, open moiré, alter watcher stillness.
- Lens: move/toggle the player's gaze instrument (§6), cost 1.
- Shove: free (Krosan clause: the player can always act, even at zero thread).
Loss: if fewer than 8 weave cells exist on the whole surface for 10 consecutive ticks, the haze wins — dissolution. Defeat is the world's entropy, not a hit-point bar.
## 6. Watchers: observation as a force
From the eyes in `1a87...3` and the face in `fc67...1`. Alien rule, stated plainly in the help screen: stillness breeds observation; observation halts becoming.
- Condensation: a cell whose 3×3 neighbourhood has been still for 20 ticks (|local shear| < 0.05, no rain strike, no player action) grows an eye — a face condenses in the pattern (mirrored thresholded noise; never a drawn face).
- Gaze: a cone covering its band ±1, five columns wide, pointing inward. Gazed cells are Zeno-frozen: no phase transitions, no erosion, no charge flow, no crystallization, no player edits. Frozen weave is perfectly preserved and perfectly useless — a free wall and a dead asset in one.
- Dissolution: shear ≥ 0.2 at the watcher's cell, or a rain strike, closes the eye (it disperses to haze; nothing is killed — there is no kill verb in this game).
- Multiplication: a watcher whose neighbourhood stays still 40 more ticks spawns another. Total stillness is therefore a loss spiral: the Zeno winter — the punishment for the parked, all-aligned, zero-shear "solved" board. The degenerate strategy of maximum order is answered by the world freezing over with eyes.
- The Lens: the player owns one artificial watcher, placeable and toggleable. Same freeze rules (including freezing your own income). It is also the inspection instrument: a magnifying ring showing exact cell state (phase, alignment, q) where it points — and its interior renders as a micro-tunnel (`21ea...2`), recursion inside the instrument.
Uses the player discovers: freeze a charged arc as a battery for later; freeze a torrent column to dam it (rain stalls at the frozen row); park a watcher-prone region by deliberately stirring it; herd watcher condensation into a band you want stabilized. Each is double-edged by construction, not by tuning.
## 7. Glitch: the CRT layer is real
- Moiré interfaces accumulate glitch +1/tick while either side is charged. Rendering: actual interference — overdraw both patterns at 50% in the seam strip; plus slice-displacement and red/cyan channel offset scaling with glitch (`8b58...2`).
- At glitch 8, the seam snaps: the medium resolves the disagreement itself — both cells jump to one alignment (seeded 50/50) and glitch resets. Forced consensus, out of your control. Players can exploit snapping for mass realignment at the price of not choosing the winner.
- The Sweep: a scanline wave orbits the tunnel once per 12 ticks; cells it passes flash their alignment as visible stripes and charge as brightness. Between sweeps you read the world by texture, rain-slant, and the Lens. This is deliberate: full determinism, local legibility. The disorientation is never randomness; it is information arriving as weather. (Transcript discipline: depth must be seeable — and here the instruments are the aesthetic.)
- The Chord: each band hums a WebAudio tone; purity tracks its best arc; the seven tones approach a just-intonation scale as the board orders. The Octave win is audible before it is visible.
## 8. The Octave: the win, and the theorem inside it
The goal: build a helix — a chain of conductive weave crossing all 7 band interfaces and closing on itself through the loop seam.
Closure forces the sum of alignment steps around the loop to absorb the torsion T = 3 (mod 8). Since conductive links require m = 0 at every interface after the φ_b offsets, a closed all-weave helix is impossible — the constraint contradicts itself by exactly T. The only escape: vortex joints. A vortex cell in the chain acts as a universal joint, absorbing arbitrary phase across itself. Therefore the Octave requires at least one living storm, deliberately induced (overcharge the right cell), positioned (vortices can't be placed, only farmed where shear and charge meet), and kept fed (a starved joint decays and the chord collapses). The winning structure must contain one cell of wildness it does not control — form cannot saturate matter; the proof is the game.
When the helix closes and holds for one full Sweep orbit: all seven chords lock into the octave, crystallization cascades along the helix, and the camera performs the ending — an accelerating, seamless, infinite zoom through the locked tunnel, the recursion sequence as pure spectacle, patterns crystallizing band by band forever. No text. Then the seed's score: ticks taken, thread banked, watchers extant.
A run (one seed) targets 30–60 minutes. Permadeath; no meta-progression.
## 9. The depth contract (transcript → binding rules)
Each claim from [[Games That Are Too Cool For Their Own Good]] is implemented as a checkable property:
> "multiple overlapping ideas and systems that keep eachother in constant equilibrium"
Five systems — Spin, Matter cycle, Thread, Watchers, Glitch — and the M2 gate literally tests equilibrium: the unattended world neither freezes nor explodes for 1000 ticks.
> "in linking these mechanics instead of separating them..." (Ring Racers)
Two shared variables carry everything: shear (read by conduction, erosion, moiré, watcher stillness, rain-slant, vortex chirality) and charge (read by crystallization, vortex birth, torrent, glitch, batteries). One resource, thread, with four pulls. The implementer may never add a per-system stat or currency; new pressure must become a new reader of shear or charge.
> "how small of a change you need to make for the interconnected system as a whole to start feeling different"
The two cheapest actions are the most consequential: a comb rewrites up to four interface states; a free shove redistributes momentum around the entire loop and returns from the far side. If either is ever locally inert, the coupling constants are wrong — fix μ or the strain table, do not add mechanics.
> "True balance ... only that there is no one right answer or response to any given situation"
Enforced by theorem (the torsion T) and by paradox (total stillness breeds the Zeno winter; total motion erodes everything). Optimal play lives between, and where it lives depends on seed (well... rain distribution, quirks §10, watcher geography).
> the Krosan beast (never destroy the player's interaction surface)
Shove is free forever; rain is eternal; dissolution takes 10 ticks of warning. No state exists with zero legal meaningful actions.
> the Mewgenics mage (advanced lines must beat clicking)
M5 gate scenarios: (a) a vortex-joint helix segment must out-earn an equivalent flat arc within 100 ticks; (b) a Lens-frozen battery arc spent at the right moment must beat naive continuous farming across a torrent event; (c) plain single-band arc farming must remain sufficient to survive (not win) indefinitely. Fail → tune by linkage, never by addition.
> "games with a lot going on feel weirdly shallower ... depth comes from internal interactions, not the amount of stuff"
Hard caps: 4 phases, 5 systems, 4 spends, 1 win condition. The pseudosystem layer (§11) is explicitly declared decoration and must never acquire rules.
> "restrictions can also encourage us players to explore a game's depth"
Watcher-frozen cones are roaming restriction zones; band quirks (§10) are one-line laws; the torsion is the permanent restriction at the heart of the win.
> "none of this depth matters if us players never actually get to see it"
The instruments (Sweep, rain-slant, Chord, Lens) are the legibility system and they are diegetic — reading the world is play, not menu work. M3 cannot pass without all four.
## 10. Band quirks
Three of the seven bands (seeded) carry one-line permanent laws — same physics, bent once:
1. Retrograde: conducts only counterclockwise.
2. Heavy: inertia ×3.
3. Dark: the Sweep reveals nothing here (instrument shadow — navigate by Lens and rain).
4. Brittle: erosion ×2, crystallization ×2.
5. Devout: watcher condensation at 10 ticks.
6. Slick: zero friction with neighbours (momentum skips it; shear pools at its borders).
7. Inverted: rain falls outward here (one band where the waterfall climbs).
One line each. Never new mechanics. (The transcript's Kin-of-Sheredyn test: a tiny law that reorganizes the whole strategy around it.)
## 11. Pseudosystems (declared decoration)
Visual layers that look systemic and are honestly not: vortex interiors render as concentric micro-tunnels (`21ea...2`); the Lens shows a micro-tunnel in its ring; crystallization monuments are tiny orbiting maze-cubes; global chromatic aberration tracks total glitch; depth-haze and scanlines complete the CRT throat. These must never gain rules — the corpus look is achieved by rendering, and the Rosewater test cuts any temptation to mechanize them.
## 12. Technical specification
- Deliverable: `index.html` + `main.js`. Vanilla JS, Canvas 2D, zero dependencies, zero assets, no build step. Optional WebAudio (the Chord) behind a toggle.
- Determinism: one seeded PRNG (mulberry32), consumed in fixed system order per tick; seed in URL hash; tick clock 2/sec with pause and single-step; state is one plain serializable object; autosave to localStorage; a seed plus action log replays identically.
- Renderer: unrolled world canvas (48×7 cells at 24px) + precomputed inverse log-polar lookup table (Uint32Array of source offsets per screen pixel, rebuilt on resize and zoom-quantum) + per-frame remap. Band rotation via x_b column offsets at sample time. Target 60fps; the lookup-table approach makes the Droste zoom cheap.
- Procedural patterns: per-phase tile generators (dither, striation, weave with 8 alignments, vortex spiral), pre-rendered to an atlas; damaged/charged variants by brightness and crack overlays.
- Test mode (`?test=1`), all blocking: (1) loop closure — zoom 7 bands reproduces the start frame pixel-exactly; (2) torsion — transporting an alignment around the loop returns +T; (3) momentum conservation within ε over 1000 ticks without shoves/vortices; (4) determinism replay; (5) unattended-world equilibrium run.
## 13. Milestones and gates
- M0 The recursion sequence: log-polar renderer, lookup table, seamless twisted 7-band loop zoom with placeholder patterns. Gate: tests (1) and (2); the infinite zoom works and is already mesmerizing. Nothing else matters until this does.
- M1 Spin: band rotation, inertia, friction (including across the seam), shove, shear rendering as band slip. Gate: test (3); a single shove visibly propagates around the loop and returns.
- M2 Matter: four phases, rain fall with slant, torrent lap rule, transitions, charge. Gate: test (5) — the unattended world is alive and stable; the waterfall image (`8b58...1`) is recognizably on screen.
- M3 Economy + instruments: weave/comb/conduction/arcs/thread/dissolution, Sweep, Lens readout, Chord. Gate: a human plays 500 ticks making real decisions about where order should live; all four instruments functional.
- M4 Watchers: condensation, gaze freeze, dissolution, multiplication, Lens-as-watcher. Gate: the Zeno winter is reachable by deliberate stillness; a battery play is executable.
- M5 The Octave: torsion offsets φ_b, helix detection, vortex joints, win sequence, band quirks. Gate: Mewgenics scenarios (a)–(c); the Octave achieved by a tester, but not on their first run.
- M6 Polish: monuments, micro-tunnels, aberration pass, ending zoom, help screen (one page: tick order, strain table, the torsion theorem in one sentence, the stillness law in one sentence). Gate: interlock audit — every system reads ≥2 others and writes ≥2 others; pseudosystems still have zero rules.
## 14. Out of scope for v1
Multiplayer, mobile, meta-progression, WebGL, more than 7 bands, variable T, editor modes, localization. The obvious sequel hooks (T as difficulty dial; an 11-band tunnel; two-player tug over shared momentum) are noted and deferred.