SUNTHREAD
You are the first ray of morning sun, weaving one thread of light through a sleeping garden.


- Project
- Our own product
- Our role
- Game design · Generator pipeline · Unity development
- Duration
- In development
01 / Behind the product
A real need. A considered solution.
Challenge
The weakness we measured in the WARDLIGHT engine was plain: at level 400, 100% of moves were forced and the player never made a decision. Most one-line puzzles either run on guessing or on dictation. SUNTHREAD’s first principle follows from that: solvability is the entry ticket; uniqueness and deduction are the product. Every level must have exactly one solution, reachable without guessing.
Approach
The generator produces candidates that must pass five hard gates: exactly one solution; no clue removable without breaking uniqueness; a human-style solver using only named deduction rules must finish the level; the forced-move ratio must sit in the 35–70% band; and a level is rejected if the solver’s rule multiset matches any of the last five.
The solver works in five tiers (dead ends, breeze propagation, chessboard parity, bed-entry counting, turn counting) and the difficulty score derives from them. The generator was written in Node first as the reference oracle; the C# port is diffed byte for byte against golden fixtures. The thread of light is a custom triangle strip with arc-length UVs rather than a LineRenderer, and feedback fires haptic first, then audio, then visual.
Result
Six chapters × 20 curated levels plus 200 daily levels: all 320 pass the five-step verification report committed to the repo, with zero failures. The forced-move ratio runs from 0.44 to 0.79 with a 0.59 average; the same measurement on WARDLIGHT read 100%. 27 EditMode and 34 PlayMode tests are green, and the PlayMode run re-renders every review sheet. Music is generative, there are four season palettes and a high-contrast mode. Development continues.
02 / Inside the product
The experience, on screen.
Open a screen to explore the details.04 images
03 / Scope & details
The details make the experience.
- 01
Five-gate generator: uniqueness, minimal clues, human solver, forced moves, fingerprint
- 02
Node reference implementation plus C# port with byte-identical parity tests
- 03
Every claim backed by a committed artifact
- 04
Unity 6, 2D URP, portrait, Android-first
Technology
- Engine
- Unity 6000.5
- Languages
- TR · EN
Level generation & validation
Deterministic generation
five-gate candidate pipelineINSIDE THE PRODUCT
The engineering behind the interface.
Systems we built and concrete problems we addressed in this project.
Five gates, all hard constraints
The uniqueness counter exits early on a second solution; clue minimisation removes each clue and re-tests uniqueness; the human solver applies only named rules; the forced-move ratio must be 35–70%; a candidate is rejected if its rule multiset matches any of the last five levels.
The verification report is committed
Every level is rebuilt from JSON and re-tested from scratch: is the stored solution legal, is the solution count exactly one, does the human solver finish without guessing, does its answer equal the stored one, does the forced ratio sit in the chapter band. 320 levels, zero failures; the highest ratio is 0.79.
A test caught that post-processing had never run
The renderer asset carried no PostProcessData, which URP reads as "off", so the thread’s HDR colours clipped to white. Bloom and the coloured weather vignette are now built from code, and an EditMode test fails if the data ever goes missing. The text atlas is warmed at boot with every glyph and size, so it never rebuilds mid-game.
Your idea could be next.
What could we build for you?
From a first release to a growing platform. Let’s plan the design, development and launch together.
From Türkiye to the US, UK, Australia and everywhere in between.