PRJ-004 · games-interactive

Tiles of Tanwir

GJU GameLab Jam — 48h (1st place) · Team of 3 — gameplay code, shaders, level design · 2024

Tiles of Tanwir

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.

Back to Index