2026 · Case study
GLASS
A quiet colour puzzle, with a drawing tool of its own.
- Contribution
- Creator — design, engineering, interaction and technical art
- With
- Independent
- Year
- 2026
- Built with
- Godot · GDScript · C++ · GDExtension · Shaders
The project
A stained-glass puzzle game with a tactile editor, a responsive musical score and a custom C++ geometry system.
GLASS is a quiet puzzle game about colouring a stained-glass window. Neighbouring regions must have different colours. I wanted the finished window to be worth looking at, and the process of making it to feel unhurried.
I designed and built the game, its editor and the rendering system. My brother composed the musical score, and my mum has made puzzles using the editor.
Much of the feel comes from the details of play: light catching the glass, satisfying sounds with each move, and the reward of filling the final pane. Solving a puzzle leaves a complete, colourful window to enjoy before starting the next.
An independently built mobile puzzle game, with one vector-based pipeline for authoring and generated geometry.
01 / Process
The editor helped find the look
Early versions let you draw freely with an Apple Pencil. They used pixels rather than vector lines. I liked the sketching, but small gaps and overlaps made it difficult to tell which regions were neighbours.
I introduced spacing and angle constraints to keep the puzzles readable. The designs coming out of that more structured editor began to resemble stained-glass windows. The tool helped establish the visual direction before I built the glass renderer.
02 / Process
Drawing within the rules
The current editor still has to enforce those constraints. Lines need separation, junctions need room and narrow angles can create confusing slivers of glass.
Rather than repeatedly refusing an edit, the tool guides it. Points snap, push and settle as you move them. Second-order motion softens the corrections. The difficult cases are the almost-valid ones: tiny overlaps, short lines and changes that affect several neighbouring regions. I wanted people to enjoy drawing without having to learn those failure cases first.
03 / Process
Vectors to meshes
The saved puzzle is compact vector data. A C++ GDExtension validates the geometry, triangulates the regions and constructs the metal leading, returning a mesh Godot can use.
An edit invalidates the regions that need updating. The system rebuilds those parts rather than the whole window, with checks and geometry work running in parallel where possible. I also worked on how data moves through generation to avoid unnecessary copies.
The same vector description is used for puzzle packs, client-side mesh generation and thumbnails. The meshes can be reproduced from the design instead of being stored as a separate set of finished assets.
04 / Process
Glass without a transparent surface
The panes look refractive, but the material is opaque. A normal map redirects a virtual ray into a sky-and-cloud model. The shader also samples a cached image of the puzzle, projected onto a plane behind the glass, and combines the two.
That gives me the distortion I need without rendering a conventional transparent view through the scene. Photographs I took at a stained-glass workshop helped me judge which surface details were worth keeping in a mobile material.
05 / Game design
Turning a theorem into play
The Four Colour Theorem gives GLASS a simple foundation. The gameplay took more experimentation: timers, locked colours and forced sequences each changed the puzzle’s feel. Those experiments helped me find a quieter game with more freedom to enjoy the colouring.
06 / Process
EGX: Finding the pace
At EGX, I showed GLASS alongside backlit physical versions of its windows. People kept describing the game as relaxing. That changed how I judged the more dramatic experiments, including timed play. I began pulling the rest of the design in the same quiet direction.
The musical score builds in layers as the puzzle progresses, with small responses to mistakes and successful play. The editor supplies the puzzle packs. Both are there to support the simple activity on screen.






