How to play
Laser puzzles easily turn into memorisation: learn which mirror to turn how many times, then click through it. Colour is here to break that habit. When two beams meet at a receiver, their colours add, so bringing the blue one over as well becomes part of the solution rather than one more mirror to place.
The other thing I insisted on is that the light is actually computed. Those bright lines are not decorative artwork: every frame starts at each source, steps cell by cell, and changes direction, colour or splits at a component. Turn one mirror and the whole board is recalculated immediately.
- Levels
- 30
- Grid
- 8 columns x 6 rows
- Components
- 5 (mirror / splitter / glass / portal / blocker)
- Colours
- Red, green, blue + 4 mixes
- Beam limit
- 64 segments
- Per-level record
- Fewest moves and cleared state
Controls
How a beam travels
Every source has a fixed position, an outgoing direction and one of the three colours. Tracing starts there and advances one cell at a time along a direction vector: an empty cell continues straight, while a component changes direction, changes colour, or splits the beam. New beams from a split join a queue and follow the same rules.
To stop mirrors from trapping light in a loop, a single beam is capped at 64 segments, and each (cell, direction, colour) triple is remembered so a repeat is dropped. Those two limits mean no arrangement can hang the board. Receivers do not block light, so one path can light several of them in a row.
- Four directions only; mirrors reflect by 90 degrees;
- A splitter produces one straight beam and one perpendicular beam;
- visited(cell, direction, colour) deduplication and a 64-segment cap;
- The level clears when every receiver sees exactly its required colour.
Five components
The component list is deliberately short, with one job each, so the icon already tells you what it will do to the beam. Early levels hand you one type at a time; later ones stack them.
- Two-sided mirror `/` and `\`: click to rotate 90 degrees and send the beam perpendicular;
- Splitter prism: one beam in, two out — straight ahead and perpendicular;
- Glass brick: shifts the colour one step along red → green → blue → red as light passes through;
- Portal: a pair; enter A, continue from B with the same direction and velocity;
- Blocker: absorbs the beam, useful for cutting off a path you do not want.
Colours add up
A colour is stored as three bits, one each for red, green and blue. When two beams land on the same cell their bits combine: red plus green is yellow, green plus blue is cyan, red plus blue is magenta, and all three is white. A glass brick rotates the colour through those bits, which makes it a colour changer rather than an obstacle.
Each receiver states the colour it wants. A red beam on a receiver asking for yellow does not clear the level; you have to bring the green beam into the same cell too. Plenty of later levels hide their solution here — not in building another path, but in making two paths meet just before the target.
- Red #ff4d6d · green #5fe3a0 · blue #4cc9f0;
- Red + green = yellow, green + blue = cyan, red + blue = magenta;
- Red + green + blue = white;
- A wrong-colour hit does not clear the level, but the board gives a small visual cue.
Why all thirty levels are solvable
Levels are not a handful of scattered mirrors with a hopeful guess at a solution. Generation first lays out a complete working mirror arrangement, runs the beams through it, then places receivers only on cells that were actually lit — and sets each receiver’s required colour to the colour that cell really produced. A solution therefore exists by construction.
Most of those mirrors are then locked in their correct orientation, with only a few cells left for you to turn or fill. Difficulty rises with how many blanks there are and how many component types are in play, not with hiding the answer deeper. Fixed seeds mean a given level is identical every time, which also makes it worth coming back for a lower move count.
Moves, undo and hints
Each mirror turn or placement counts as one move; undo and hints do not. Clearing a level writes your move count into the local record and keeps only the smaller one. Cleared levels are marked in the level grid, and the title screen shows how many you have done and your total moves.
A hint highlights one cell that still differs from the solved layout without turning it for you. It is unlimited and never quietly changes the answer. Undo is a stack, so you can walk all the way back to the opening state; reset restores the level outright.
Questions
- Can a loop of mirrors freeze the game?
- No. A beam is capped at 64 segments and a repeated (cell, direction, colour) triple stops the trace, so loops are cut off.
- The receiver lit up but the level did not clear. Why?
- The colour is probably wrong. Check whether it wants a pure colour or a mix, bring the other beam into the same cell, or shift one beam a step with a glass brick.
- Does the hint give away the answer?
- No. It only highlights a cell that is not right yet. How many turns and which way is still yours, and it does not add a move.
- Does progress sync to another device?
- No. Cleared levels and best move counts live only in this browser’s local storage — there is no account and no server.