View: Multi-Page Single Page

The report says "best-effort fallback" (didn't match)

The generator rolled MaxAttempts candidates and none met every filter, so it kept the best one found — Report.Matched is false. The board is still solved, analyzed, and rated honestly. To get a match: raise Max attempts, widen the solution-size window, or loosen the strictest filter (Single + tight window + heavy overlap is the usual squeeze). The window's Auto button picks a verify-friendly combination for classic boards.

Combinations that can never match

  • Single solution + Dummy switches = None + Max solution size < switch count. A unique solution with no dummies must use every switch — any unused switch would be a dummy by definition. Set Max solution size to the switch count, or allow dummies.
  • Trap switches = Require + Dummy switches = None. Traps count as decoy switches (they're in no solution), so requiring traps while forbidding dummies rejects every candidate. Set Dummy switches to Allow or Require.

The window warns about both before you generate.

I saved a puzzle but can't assign it in the demo

The demo's four slots take packs (StatesPuzzlePack), not single-puzzle assets. Save ▸ Current writes a StatesPuzzleAsset — meant for wiring one puzzle into your own scripts. Use Save ▸ Pack (all) instead; a pack of one is fine.

Ordered boards feel too easy

A plain monotonic chain can be beaten by "press whatever glows" — there are no wrong tries. That's what traps are for: set Trap switches to Allow or Require (with dummies allowed) and wrong presses start turning states back off. Bigger states/switches counts and a Few-solutions style with decoys also raise the reasoning load. The demo's endless Ordered mode runs 8 states / 8 switches with traps required.

Ordered: everything is pressed and I'm stuck — what now?

You hit a trap: pressing it turned a state back off, and the chain switch that turns that state on is pressable again. Watch the glow — it marks every switch whose press would change something right now, including already-used switches that have become useful again. A trapped board can always be finished (that's verified at generation time); R restarts if you'd rather replan from the top.

F (auto-solve) does nothing

Two intentional no-ops: the board is already solved, or a playback is already running. Anything else means the board analyzed as unsolvable — which generated boards never are; if you hand-edited a puzzle asset, re-check it with inspector Verify. While auto-solving, all input except R (cancel) is off on purpose.

A board warns "Malformed rule data"

The rules array is shorter than the switch count — the data doesn't describe a complete puzzle. Usual causes: a hand-edited asset, a bad merge, or an asset saved by a pre-release build with a different data layout. The fix is inspector Re-roll (regenerates from the stored settings) or deleting the asset and saving a fresh one.

A grid board reports thousands of solutions

Normal for some grid sizes. Lights Out solution counts are exactly 2nullity of the grid's flip matrix (Trilight: 3nullity) — many sizes have nullity 0 (unique), but e.g. 5×5 has 4 solutions and some sizes have far more. The count is always exact; the full listing caps at 4,096 (Lights Out) / 6,561 (Trilight) solutions and the analysis says so when it's partial. The shortest solution is still exact either way — it's what the difficulty, the par, and the auto-solver use.

Trilight: a solution lists the same cell twice

Intentional — that cell needs two presses. Presses add +1 mod 3, so "press P5 twice" is a real move (and three times cancels back to zero). The solution-size window and the par both count total presses, so a twice-pressed cell counts twice.

The grid won't go bigger than 56 cells

Board state is a 64-bit mask, and grids are capped at 56 cells (e.g. 7×8) so every mode's math stays exact and instant. Sliders and Clamp() shrink oversized requests automatically.

Menu / HUD text is missing, or TMP errors on import

The demo UI uses TextMeshPro. Unity prompts to import TMP Essentials the first time TMP is used — accept it (Window ▸ TextMeshPro ▸ Import TMP Essential Resources does the same). You don't need the "Examples & Extras" package.

Compile errors on import

The demo assembly needs the Input System package (with Active Input Handling set to "Input System" or "Both" in Player settings) and TextMeshPro. The core assembly (generation / solving / storage) has no dependencies — if you only want the generator, you can delete the Runtime/Demo and Editor-side demo builders entirely.

No sound

The beeper plays through an AudioSource it adds to itself; make sure the camera (or any object) has an AudioListener, and check the OS/editor mute. The SFX are synthesized — there are no clips to assign.

Something else? livingfailuregames@gmail.com — include the seed and settings if it's about a specific board (seeds reproduce boards exactly).