GameStrategistsGAMESTRATEGISTS

First-party · Light puzzle

REFRACT

折光

A dark 8x6 board, a few red, green and blue beams, and some mirrors you can turn. Light steps from cell to cell, bends at a mirror, splits at a prism and changes colour through glass. Across 30 levels the job is the same: give every receiver the colour it asks for, in as few moves as you can.

How to play
Levels 30Grid 8 x 6Components 5Colours 3 + mixesBeam limit 64 segmentsRecords Fewest moves

Keyboard: arrows / WASD, Space, P pause, M mute · Mobile: touch the canvas

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

Left click / tapRotate or place a component
Right click / long pressRemove a component
ZUndo the last move
RReset the level
HHint (highlights a cell that is still wrong)
NNext level after clearing
P / EscPause / back to title

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.

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.

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.

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.

Light one receiver and see what happens

No download, no sign-up. Thirty levels, and every one of them has a path that works.