Noughtle started life as a Yabasic program I wrote on my PlayStation 2, when I was about 13 or 14 years old. The PS2 was the family TV’s centrepiece. I didn’t have a PC. I didn’t have internet access at home. I didn’t know any other programmers, online or off. I had a TV, a controller, and a copy of Yabasic that came on a demo disc.
The reference material was about ten lines of example code I’d seen in the back of an official PlayStation 2 magazine, plus whatever fragmentary docs were built into Yabasic itself. That was it. That was the documentation. There was no Stack Overflow to consult, no Discord to ask for help in. I was learning a programming language from scratch, in isolation, by trial and error.
Every line of code was input letter by letter, using the PS2 controller to move a cursor across an on-screen keyboard. I didn’t know to indent my code — it never occurred to me that whitespace might help readability, and the on-screen keyboard didn’t make it easy anyway. I didn’t know functions could take parameters. I didn’t know what a global variable was, but I sure used a lot of them.
And yet — somehow — Noughtle worked. Fully playable, with its own animations, scoring, win conditions, and a deterministic seed-based level generator. Hundreds of hours of pure trial and error, on a 15-year-old games console, with a controller, in a small bedroom in the UK, with no idea that what I was doing was actually programming. I just thought it was a fun way to make the TV do things.
Yabasic was a stripped-back BASIC interpreter that Sony shipped on PlayStation 2 demo discs in some regions. It gave players the chance to write small programs and games on the console itself. No keyboard required (though one would have been transformative). It had no graphics library worth mentioning, no networking, and the documentation was maybe a few pages.
For a teenager with no programming background and no internet, it was a magical black box. Most of what I learnt about programming as a kid came from poking that interpreter until something happened.
I rediscovered the original Yabasic source years later and ported it to a single HTML file, preserving the seed algorithm exactly so old saved puzzle codes would still work. That HTML file is still here — the legacy route runs the original Yabasic generator, bit-for-bit.
From there, it became a Next.js app with a brand new constructive generator that builds puzzles backwards from a known solution (definitely solvable by design), alongside the original random algorithm (probably solvable, but not guaranteed). That’s the Daily Challenge vs Enigma distinction you see on the home page.
Every day, a new Daily Challenge puzzle appears at midnight (your local time). It’s the same puzzle for everyone in the world that day. If you want a real test, switch to Enigma — those are randomly generated, always trickier, and not guaranteed to be solvable. If you find one you can’t crack, that doesn’t mean you failed; it might genuinely be impossible. Let us know either way.
You can also try the 3D version — same game, isometric crystal gems on a chessboard. Mostly for the aesthetics.