system

Use when

You want the space itself to be a threat and a tool, not just a backdrop.

What it is. The level is an actor. Spikes, fire, water, crumbling floors, gas — hazards that damage, block, or transform, and that obey rules the player can read, exploit, and turn against the enemies who share the space.

Player fantasy / why it’s fun. The room is a loaded gun. You learn where it points, then you turn it. The best hazard moment isn’t dying to a trap — it’s kiting a shopkeeper onto it. Mastery of the space outranks mastery of the fight.

When to use / when NOT

Use when:

NOT when:

Variants

VariantWhat it isSignatureDesign cost
Static trapFixed damage on contact/trigger; spikes, saws, pits, arrow platesLearn once, dodge foreverCheap; risks rote
Systemic hazardSimulated spread; fire ignites, water floods, gas diffuses, ice slicksSame tile does different things each runExpensive; needs a sim tick
Destructible terrainWalls/floors you (and blasts) can removeTurns geometry into a resourceRebuild pathing + collision
Kinetic / crushingMoving mass — boulders, pistons, closing wallsTiming, not just positionMotion + telegraph budget
Environmental forceWind, current, conveyor, low-grav zones that push everythingAlters movement, not healthRetune every mechanic-dash/jump
Contagion stateHazard that infects units — on fire, frozen, poisoned in the worldBleeds into system-status-effectsSim + status bookkeeping

Best when variants interact: a bomb (mechanic-throw) opens a floor, water pours in, the pour douses the fire an enemy was standing in. anchor-spelunky is the reference — every element is a verb that touches every other. anchor-minecraft and anchor-terraria make terrain the whole loop; anchor-nuclear-throne uses destructible cover as tactical texture.

Tuning levers

Twist seams

How it wires to Hayao

Fails when…

Verify

Prove it in docs/VERIFICATION.md. Assert on world.probe()/hash(): a seeded spread replays byte-identical; every procgen layout has a solver-proven survivable path; the enemy-affects-too switch actually deals damage to non-player bodies. The vision judge confirms telegraphs read from a headless SVG — see pattern-readability and system-telegraphs for the design bar those checks enforce.

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