PRJ-004 · games-interactive
Tiles of Tanwir
GJU GameLab Jam — 48h (1st place) · Team of 3 — gameplay code, shaders, level design · 2024
A meditative puzzle game about routing beams of light through rotating glass tiles — built in 48 hours, winner of the GJU GameLab jam's grand prize.
Core Philosophy
Tanwir means illumination. The jam theme was 'connection', and we chose the most literal physics of it: a photon finding its way home. Every mechanic had to be explainable by watching light behave — no tutorial text, no icons. Rotate a tile, the beam re-solves instantly, and the causality teaches you.
Under 48-hour pressure, restraint was the design tool. We cut portals, cut color-mixing, cut timers. What survived is one verb — rotate — and a propagation system fast enough to feel like the light is alive.
Outcomes
- 1st place of 23 teams; jury citation for 'mechanical elegance'
- 12 levels shipped inside the 48-hour window
- Post-jam build holds 120fps on a 2019 laptop
Deliverables
- Playable web build (12 levels)
- Light-propagation engine
- Post-jam polish release
Technical Anatomy
Beam propagation
The board is a grid graph; each tile exposes port mappings (in-direction → out-direction). Propagation is an iterative walk with a visited-set keyed by (cell, direction) so loops terminate. The full re-solve runs under 0.2ms for a 9×9 board — cheap enough to run on every input.
while (queue.length) {
const { cell, dir } = queue.pop()!;
const key = cell * 4 + dir;
if (visited.has(key)) continue;
visited.add(key);
const out = tiles[cell].route(dir);
if (out !== null) queue.push(step(cell, out));
}
Glow compositing
Beams render to an offscreen target at half resolution, get a two-pass Gaussian blur, and composite additively over the crisp tile layer. The bloom is where the 'glass' feeling lives.