mechanic

Use when

A puzzle wants self-cooperation or you-need-to-be-two-places design.

What it is. Record a full run of inputs, then spawn a ghost that replays them exactly while you play a fresh pass — cooperating with the recording you just made. One player, many bodies.

Player fantasy / why it’s fun. You are your own team. The satisfaction is authorship: you set up a problem for your future self and then execute it, and the “aha” lands twice — once when you see the plan, once when the echoes obey.

The verb. Record → commit an echo → replay it alongside a new run, chaining until the room is solved.

How it feels / why it’s fun. The pleasure is planning made physical. Each echo is a promise you made and must now keep — miss your mark and the whole stack falls apart. Tension comes from choreography: bodies must not collide, must hit switches in the right order, must not strand a later self. See pattern-mastery-and-flow and pattern-pacing-and-tension.

Tuning levers

LeverWhat it controlsSane default
Echo budgetMax simultaneous clones3–4 (past 5, choreography load spikes)
Record granularityPer-tick inputs vs per-moveDiscrete moves on a grid; per-tick only if physics-driven
Commit triggerWhen a run becomes an echoReach an exit / press “record next”
Reset scopeWhat resets on new passFull room; switches held by echoes persist
Collision ruleBody-on-body contactBlock (hard) or pass-through (soft) — pick one, never mix
Paradox policyEcho path now invalidFail-fast: void the run, force re-record
Divergence toleranceDrift before desyncZero — determinism is the contract, not a knob

Determinism is the whole mechanic. An echo that replays approximately is a broken echo — the player blames the game, not themselves. Record the input stream, not positions, and feed it through the same pure step function every pass. Same seed, same inputs, same result, every time. If your sim isn’t deterministic, this mechanic cannot exist. See pattern-fairness-and-trust and the determinism invariant in process-core-loop.

Slots into

Twist seams

How it wires to Hayao

Fails when…

See also

This module rendersthe repo's markdowndirectly — edit it there, it changes here.