NONOTRON, the project story
Inspiration
Nonograms are the puzzle everyone already knows. Balatro proved you can put a scoring engine onto a familiar game and make arithmetic feel like fireworks.
The other inspiration is personal. I am a game developer, but not a programmer. This was my first time shipping the code myself, with Claude as the team.
What it does
NONOTRON posts one ranked nonogram run to your subreddit every day. Five boards from the day's seed, 5x5 up to 10x10, three lives for the lot. Every finished line banks chips times your multiplier. Between boards you pick a Multitron, a card that changes how you should solve, and the points follow. Some pay for finishing columns first. Some pay for chaining finishes on back-to-back taps. One turns lost lives into multiplier. Twelve cards, four families, and picks stack. A line that pays 93 early can pay 93,000 late.
Every puzzle is generated with a solver in the loop, so pure logic always suffices and a guess is never required. Clear all five boards and endless mode unlocks, with its own all-time leaderboard. Weekly boards count your best three days and monthly boards your best four weeks, so missing a day does not sink you. A pinnable standings post shows the leaderboards right in the feed.
How we built it
Devvit Web, Phaser 4, Hono, TypeScript. The architecture bet came first. The puzzle generator and the entire scoring engine are pure, seed-deterministic functions in shared code. The client simulates the whole run locally with zero mid-run round trips. On submit it sends its move log, and the server re-simulates that log against the same seed. The score on the board is the score the server computed. Cheating here means beating math.
Challenges we ran into
The hardest problem was design, not code, no surprise here. Our first Multitrons were mostly passive bonuses keyed to board shapes the player cannot influence, they lacked agency. Playtests called them bland, and playtests were right. We rebuilt the whole pool around a single test. Would a good player solve differently because they own this card?
The Reddit mobile app turned out to be portrait-locked, discovered after we built landscape-native. The fix was a dual layout picked by viewport shape at boot. Mobile webviews get suspended and restored instead of reloaded, so returning players saw stale pre-run screens, and cornering that took server logs and two devices. Mobile still needs work, but it is functional.
Testing at scale. The harnesses help alot, and technical scalability itself, but is difficult to test with two just two people. A lot of things can be simulated, but real players doing real things and populating data is still an exercise in hope. A couple of days before the Devvit feedback request tracker popped up much improved, but it still requires a public instance. That would restrict ongoing development and submission for the hackathon.
Accomplishments that we're proud of
Picross-Balatro exists now. The replay validation covers everything on a public board, endless included. The draft screen teaches every card before you commit, so the strategy layer is learnable in one run. And a non-programmer shipped a tested, live daily game in days rather than months, which younger me would not have believed.
What we learned
Mutators must change how you play, or they are decoration. Chips and multiplier both need room to grow, or one axis eats the game. Juice is not polish, it is comprehension, because a number nobody feels is a number nobody chases. Determinism paid for itself three times over, since testing, anti-cheat, and mid-run resume all fall out of the same property.
What's next for NONOTRON
Polish! So much polish. But that's hackathons. Playtest and iterate on Multitrons primarily, because while having gotten more player agency, they are not fantastic yet. Add hooks to the hooks, as while nonograms and competition serve as hook and retention, I wanted to take it further.
More game modes, like friend duel, single-day competition for subreddits. More reddit approved functionality (notifications, toasts, journeys). Customization and user generated runs (ie beat my custom challenge, themes for other subreddits installing it). Better leaderboards with more data, and proper endless support, especially on mobile.
If we generate revenue, share some of it as prizes ie through reddit earn (hint reddit, you should allow games to do that!).
Built With
- claude
- devvit
- hono
- phaser.js
- typescript
- vite
Log in or sign up for Devpost to join the conversation.