Light Box: Bend Light, Hit Targets, Solve Puzzles
A laser shoots across an 8×8 grid. There are targets to hit. Between them are mirrors you can rotate.
Your job: figure out the angles. Light up everything.
Light Box is a pure logic puzzle game built around one of the most satisfying mechanics in all of gaming: watching a beam of light bend exactly where you wanted it to bend. Tap a mirror, the beam re-routes in real time, and you can immediately see whether your idea worked or not. There’s no waiting, no animation gates, no “wait for the simulation to finish.” You think, you tap, you see.
I built Light Box because I love games that reward geometric intuition. Twenty levels later, I think it might be the most replayable thing I’ve ever shipped.
The Concept
Each level is an 8×8 grid containing a few key pieces:
- A laser that emits a beam in one fixed direction (up, down, left, or right).
- One or more targets that need to be hit by the beam.
- A scattering of mirrors placed around the grid.
- Sometimes walls that block the beam.
- Sometimes prisms that split the beam in two.
You tap on movable mirrors to rotate them between two orientations: forward slash (/) and backslash (\). Each rotation re-runs the beam tracer instantly. The beam path on screen updates the moment you tap. When all targets are lit, you’ve won.
That’s the entire game. There’s no inventory, no drag-and-drop placement, no constructed paths. The mirrors are pre-placed; you only choose their orientation. The puzzle isn’t what to put where — it’s which way to face it.
How Mirrors Work
Two mirror orientations, four incoming beam directions, eight total reflections. It’s worth memorizing because the puzzles get fast once you internalize them.
| Mirror | Beam in | Beam out |
|---|---|---|
/ (forward) |
Right | Up |
/ (forward) |
Left | Down |
/ (forward) |
Up | Right |
/ (forward) |
Down | Left |
\ (backward) |
Right | Down |
\ (backward) |
Left | Up |
\ (backward) |
Up | Left |
\ (backward) |
Down | Right |
Mirrors come in two flavors: movable (you can tap to rotate) and fixed (you can’t, they’re locked in place by the level). Fixed mirrors are constraints — the puzzle designer telling you “this is a known quantity, work around it.” Movable mirrors are your degrees of freedom.
The interesting puzzles emerge in the interaction. A level with three movable mirrors has 2³ = 8 possible configurations. A level with five has 32. You’re not brute-forcing — you’re using geometric intuition. But the search space is exactly large enough that you have to think before you tap.
Prisms: When the Beam Splits
Starting at level 17, the game introduces prisms. A prism is a special cell that doesn’t reflect a beam — it splits one. When a beam enters a prism, the prism shoots out two new beams perpendicular to the original direction.
| Beam in | Beams out |
|---|---|
| Right or Left | Up + Down |
| Up or Down | Left + Right |
A prism turns one beam into two. Combined with mirrors, those two beams can be redirected anywhere. With more prisms, you can have one laser source illuminating six or seven targets simultaneously.
This is where Light Box gets philosophical. A prism puzzle isn’t just about hitting targets — it’s about understanding that a single source can become a network. You stop thinking of the laser as a line and start thinking of it as a tree. And once you have a prism and mirrors, you can rotate the mirrors to redirect each branch of the tree independently. The puzzle becomes less about reflection and more about routing.
The four prism levels at the end of the game (17–20) are the hardest, the most rewarding, and the ones I most want you to play.
Targets That Pass Through
One subtle but important rule: targets don’t block the beam. The beam passes through a target, lighting it on the way past. So a single beam in a straight line can light multiple targets if they’re all in its path.
This rule unlocks a whole class of puzzle designs where the elegant solution involves a single straight beam threading through three targets in a row. It also means you can never accidentally “shadow” a target by lining up another target in front of it. Every photon counts, but no photon is wasted.
How It Works
The whole game runs on a beam tracer that re-executes from scratch every time you rotate a mirror. Here’s what happens:
- The tracer scans the grid for laser sources.
- For each laser, it walks one cell at a time in the laser’s direction, building a list of beam segments.
- When it hits an empty cell, it keeps walking.
- When it hits a target, it marks the target as
isLitand keeps walking through it. - When it hits a wall, it stops.
- When it hits a mirror, it draws a segment to the mirror, calculates the reflected direction, and recursively traces the new beam from that mirror.
- When it hits a prism, it draws a segment to the prism and recursively traces two perpendicular beams.
- When the beam exits the grid, it draws a final segment to the edge.
The tracer has a max-step counter (100 steps) to prevent infinite loops in case mirrors are arranged to bounce a beam between themselves forever. After tracing, the game checks every target on the grid: if all of them have isLit = true, you’ve won.
This re-tracing happens every frame you tap a mirror. There’s no animation, no delay. The beam snaps into place. That responsiveness is what makes the puzzle feel like a thinking tool rather than a waiting game.
The 20 Levels
Light Box has 20 hand-crafted levels organized into difficulty bands.
| Levels | Theme | What you learn |
|---|---|---|
| 1–3 | Tutorial | One mirror, one target. Get a feel for the orientations. |
| 4–7 | Two-mirror puzzles | Fixed mirrors enter. Multi-target paths begin. |
| 8–12 | Walls | Beam pathing around obstacles. The grid feels smaller. |
| 13–16 | Complex paths | 4+ mirrors, spiral routes, multiple targets. |
| 17–20 | Prisms | Beam splitting. The puzzles become trees, not lines. |
Level 1 is two clicks. Level 20 is 10–15 minutes of careful thought, with three movable mirrors, two walls, four targets, and a prism that splits the laser into two branches that both need to be steered. When you finally see all four targets light up, it’s a real moment.
The Mental Geometry Challenge
The reason Light Box works is that human brains are surprisingly bad at predicting reflection paths longer than two bounces. You can imagine a single ricochet easily. Two bounces, mostly fine. Three bounces, you start needing to use your finger to trace the path on the screen. Four bounces and you’re making mistakes.
The game lives in that gap. Every level is designed so that the optimal solution has roughly 2–4 reflections, which is just at the edge of intuitive prediction. You think you see it, you tap, you see the beam re-route, and roughly half the time it goes somewhere you didn’t expect. Then you correct, you tap again, and you learn a tiny new thing about how mirrors interact.
By level 15 or so, you stop tracing the path mentally and start seeing it directly. That feeling — the moment your geometric intuition catches up to the puzzle — is the thing the game exists to deliver.
Strategy Tips
Here’s what I learned solving my own levels:
- Trace backward from the targets. Don’t start at the laser — start at the target you need to hit and ask “what direction does the beam need to be traveling when it gets here?” Then work backward.
- Fixed mirrors are anchors. They’re constraints, but they’re also free directions. Use them as pivots and design the rest of your solution around them.
- For multi-target levels, find the “natural” target first. There’s usually one target that the laser can hit with just one or two mirror flips. Lock that in, then route the beam through it to the next target.
- Prisms are doublers. A prism plus two mirrors gives you two completely independent beams. Treat the two prism outputs as separate puzzles.
- When stuck, randomize. If you can’t see the solution, just tap mirrors at random for 30 seconds. Sometimes the visual feedback shows you a path you’d never have planned.
Visual Design
The aesthetic is dark, neon, electric. The grid is deep black. Mirrors are silver bars angled across their cells. Walls are solid blocks. Prisms are translucent triangles with a faint inner glow. The laser is a thin red-orange beam with a soft bloom around it. Targets are circles that go from dim gray to bright cyan when hit. When all targets are lit, the entire grid pulses once in success.
The beam itself is the visual centerpiece. It’s drawn as a series of line segments connecting the laser, the mirrors it bounces off, and the eventual termination point. Every line segment has the same neon glow. As you rotate a mirror, the existing line segments smoothly snap to their new positions. The whole thing happens in one frame.
Built With
- Flutter + ChangeNotifier. The game state is a single observable object: an 8×8 grid of cells, a list of beam segments, the current level number, and a move counter.
- Custom beam tracer. A pure-Dart class that walks the grid, handles reflection, and supports recursive splitting from prisms. The tracer runs from scratch every time you tap, which feels expensive but is actually trivial — there are at most a few hundred grid steps per frame.
- CustomPainter. All drawing is direct canvas work — no widgets per cell, no sprites, no images. The grid, the cells, the beam, the glow effects — every visual element is drawn from primitives.
- Hand-authored levels. Each of the 20 levels is a Dart function that returns a list of cell placements. No level editor, no random generation. Every puzzle is intentional.
The code is small enough to read in an afternoon. The rules are small enough to learn in a minute. The puzzles are large enough to last hours.
Try It
Light Box is the game I wanted to play and couldn’t find. It’s pure puzzle, no fluff, no story, no padding. Just light, mirrors, and the satisfying click in your brain when you finally see how all the bounces fit together.
Pick a level. Tap a mirror. Watch the beam.
Then keep tapping until everything is lit.