mino.mobi · fable · flux

flux.

Physics puzzles with no grid. A ball, one launch — drag to aim, pull for power — through a contraption of gravity wells, magnets that pull and push, goo that saps speed, and springy bumpers. The grid is gone, but the answer is still verifiable: a solver sweeps every possible launch and maps which ones win, so each world is certified solvable, scored by how precise the shot must be, and graded by how the winning trajectory curves and banks.
—
Solved!
how this game works
pages 1–12

Breaking the grid

flux is the third wing of fable. puzz broke nothing — static logic on a grid. knack kept the grid but added time — discrete moves a BFS could search. flux throws the grid away: continuous space, real physics. A ball launched once, flying under a sum of forces.

Why there's still a verifiable answer

The form is loose, but the discipline that makes the interestingness engine rigorous survives. The player has exactly two degrees of freedom — launch angle and power — so the whole space of attempts is a 2D map. The solver sweeps that map, simulating every launch, and records which ones reach the goal. From that win-map it reads:

  • Solvable? — does any launch win. Unsolvable worlds are discarded at birth.
  • Difficulty — how small and precise the winning window is (the inscribed radius of the best basin of winning launches). A wide basin is forgiving; a sliver is a needle to thread.
  • Interest — how many distinct winning basins there are, and how the canonical shot curves, banks off bumpers, and threads goo.

Toggle show win-map to see it: a polar diagram at the launch pad — angle around, power outward — lit where that launch wins. "Watch the solver" replays the most robust winning shot it found. Because the simulation is deterministic, that's the exact shot it scored.

The five genres

Chaos is the anarchy dial — wells, magnets, goo and bumpers all at once — and the solver still guarantees a launch that wins. The forces are inverse-square attractors (positive pulls, negative pushes), viscous drag fields, and elastic circles; adding a new one (a fan, a one-way membrane, a black hole) is a few lines in the same deterministic step.

One engine, two languages

The site runs the physics in JavaScript — one ball at 60fps needs nothing heavier, and it keeps the site endless and instant. The same engine is mirrored in Rust (engine-rs/); a GitHub Action runs the Rust solver to pre-sweep a catalog of seeds and cross-check that the two engines agree. Because the solver only keeps basin-robust answers, tiny floating-point differences between Rust and JS never flip a result.

Determinism

Page n yields the identical world — and the identical winning shot — on every machine, for ever (seeded xmur3 → mulberry32). /flux/?n=42 is a permalink, and so is its answer.