RosimInc's 2025 Nonogram Café


Announcements

2025-01-07 - New code update!

I have updated the game with many improvements! See this post for details!

2025-01-02 - 2025 Edition Begins!

Hello everyone!
First of all Happy New Year to everyone, I wish you all a lovely 2025 <3

Back in 2020, I made the first version of the Nonogram Café, it was a lot of fun but it was quite tedious to create and play the puzzles.
A week ago I started looking at different alternatives online, and finally gave up, and made my own creator and player instead.
So I officially present to you my fully online, fully interactive nonogram player! ^^
Which comes with a nonogram creator, naturally. Look below for the link to it!

I will post a new nonogram weekly, leading to a giveaway each. Giveaways will end one week after the next for fun all year round!

Now you get to play; let's get cracking!™ ;)


Weekly Puzzles

The links below contain everything you need to access the giveaways I made.

Week Puzzle link (level req.) Giveaway prize End date
Week 2 15x20 puzzle (level 0) The Witness 2025-01-12 23:59 EST
Week 3 10x15 puzzle (level 0) Armello 2025-01-19 23:59 EST
Week 4 12x12 puzzle (level 0) Monaco 2025-01-26 23:59 EST
Week 5 17x17 puzzle (level 0) The Long Dark 2025-02-02 23:59 EST

More Info

Infos on the puzzles and creator here.
Past puzzles here

5 days ago*

Comment has been collapsed.

Additional info

How do nonograms work?

Have a look in here for the rules and some tips.

The online solver

  • Click to mark the cells black/full, right-click to mark them white/blocked
  • Click again to remove the marking
  • You can hold the mouse button to mark multiple cells
  • Click on the hint numbers (top and left) to toggle them
  • Ctrl+Z or Left Arrow to undo
  • Ctrl+Y or Right Arrow to redo
  • + or Up Arrow to zoom in
  • - or Down Arrow to zoom out
  • Ctrl+R or F5 to reset

Create your own!

Head over to the Nonogram Creator and create random nonograms hiding your giveaways!
It will give you a unique link that you can then share to anyone!
Check 'SG' to put a full SteamGifts URL.
Once solved, your secret message (or giveaway link) will be displayed :)
All puzzles are guaranteed to have a unique solution and won't require any guessing.

About the code

I made it in Javascript using the p5.js (Processing) library.
I was able to reuse parts of the previous generator I had, but had to make a solver for it (since in 2020 I was manually solving and rebuilding puzzles until getting a unique solution) and build the playable interface. Lots of fun!
The trickiest portion was the encryption of the puzzle ids to hide the secret messages, took me two full days with ChatGPT as a backseat driver...
If you're curious about what a sleep-deprived dev can come up with, have a look at the code on GitHub!


Feedback and suggestions

I want to make this tool as convenient as possible so that anyone may create and solve nonograms.
Let me know how I can improve it!

5 days ago
Permalink

Comment has been collapsed.

Past Puzzles

Week Puzzle link (level req.) Game End Date
None yet
5 days ago
Permalink

Comment has been collapsed.

suggestions

  1. autofill crosses once black boxes filled
  2. highlight rows and columns that are complete (correctly or incorrectly)
  3. highlight the number as complete once you have the pattern of black boxes equal to the number and crosses on either side - hard to logic as you also need to understand positional data
  4. negatively highlight (in red maybe) when user fills more boxes than the highest number in the row or column
5 days ago
Permalink

Comment has been collapsed.

+1 on number 2

5 days ago
Permalink

Comment has been collapsed.

Another suggestion: when dragging with left or right click, don't overwrite spaces that have already been filled with the opposite (unless you start on one I guess?)

5 days ago
Permalink

Comment has been collapsed.

These 4 and what Drae mentioned below.
Great job btw!

4 days ago
Permalink

Comment has been collapsed.

Using the solved puzzle to decrypt the link is a smart idea, and I'm impressed how you managed to encode all the data in the IDs themselves while keeping them so short. No backend needed! That stuff is some black magic.

5 days ago*
Permalink

Comment has been collapsed.

Thanks!
It was quite a hassle to code but the logic itself isn't as complex as we'd think.
I made a long binary sequence using all the info I need, and then converted it to characters for the id, then I read it by reversing the steps.

It all starts from the fact that SG giveaway ids have 62 possible values per character, so I made my IDs use all of them, plus - and _ to get 64 possible values per ID character.

The ID is built that way:
[version][gap][padding][numRows][numCols][seed][encodedMessage]

version takes 6 bits (so 64 values) that I use to mark the version of the puzzle, so that if I change the logic of ID creation in the future, past puzzles can still work.

numRows and numCols each take 5 bits (32 values) and will determine the size of the puzzle

seed takes 31 bits and is a large number generated from the secret message (essentially looks random) that will be used to get random values in a predictable way (so that anytime we generate values with that seed, we get the same randomness). It is used to regenerate the whole puzzle

encodedMessage takes the rest of the space, with 6 bits per character for SG gift ids, or 8 bits otherwise to get more characters (accents, symbols, spaces and whatnot).

gap takes 3 bits (8 values) and tells how many characters are missing to make a multiple of 6 (to fully encode the id in alphanumeric characters), and padding is empty characters to fill that gap.

And finally to make it look even more random, I shuffle the bits around (again, in a deterministic way) and I convert the binary sequence to my extended alphanumeric numbers by reading them 6 bits at a time.

And yup as you mentioned, the solved grid of the puzzle is the only thing that can allow us to read the encrypted message, so solving we must! ^^

5 days ago
Permalink

Comment has been collapsed.

Wow, very clever!

4 days ago
Permalink

Comment has been collapsed.

Unfortunately pure client solutions have a serious drawback - they're easy to hack. It took me about 15-20 minutes to figure out how to get a secret for any such puzzle without solving.

3 days ago
Permalink

Comment has been collapsed.

Really? Does that mean that the completed puzzle itself is encoded, rather than the number hints? (I didn't look too deeply at the code) If so that could pretty easily be fixed in a v2, even if it potentially means longer IDs (they're already versioned at least). Or is it something more fundamental than that?

2 days ago
Permalink

Comment has been collapsed.

Since the whole information is on a client side there's no mean to prevent the hacking. Only introducing of some backend with a secret key can fix this for sure.

2 days ago
Permalink

Comment has been collapsed.

If the key is (in effect) the solved puzzle, and the client only has the derived hints which aren't easily reversible without actually solving (even if that's easy for computers to do regardless), then the key is secret. I don't see the issue with that in theory.

If the encryption scheme is weak and/or the key can easily be guessed or whatever that's another matter.

2 days ago
Permalink

Comment has been collapsed.

The problem is that the code which generates the puzzle is right here, on a client, and it only requires sizes of the field and some seed value. All of these are part of the ID so it's trivial to get a secret without any guessing. Probably using some other way of a puzzle generation could circumvent the issue but I'm not sure.

2 days ago
Permalink

Comment has been collapsed.

Yeah fundamentally that just sounds like a case of "encoding the solution" (in a convoluted way) rather than "encoding the hints". It should be possible to do the latter and generate the puzzle that way. (Just to be clear, by "encoding" I'm referring to how something is stored in the ID, not encryption)

If the client doesn't have access to the solution, it does introduce the small issue of detecting when the puzzle is complete and correct - encryption algorithms at a basic level don't know if you feed them the wrong key (incorrect puzzle solution), so they can happily give you a wrong answer (incorrect link). Letting that happen would be pretty user-unfriendly, but I think you could store a (preferably salted) hash of the solution/key in the ID and use that to check.

2 days ago*
Permalink

Comment has been collapsed.

I know that everything being client-side means that it's easy to hack, and even if I only put the hints in the id, someone could still read the hints and use one of the hundreds of nonogram solvers out there, so unless I came out with a unique kind of puzzle that hasn't already been solved (and whose solution would be np-complete) I think it's just something I have to live with.

To me part of the pleasure if actually solving those nonograms, but if someone wants to just bypass them and access the giveaways there's not much I can do. My main concern with generating the id was for each id to look completely unique, and I'm quite happy with it at the moment :)

2 days ago
Permalink

Comment has been collapsed.

Yeah, at the end of the day even if you had a backend and went as far as requiring Steam OAuth (SGTools style) so creators could crosscheck giveaway entries, it can't prevent people from using a solver (I didn't want to say it too loud earlier) or sharing the solution. You could easily do a lot of work for minimal benefit. But on the flipside if there's a low-hanging, easily-exploitable vulnerability that can be addressed relatively easily, maybe it's worth considering.

Personally I'm with you, solving nonograms is inherently enjoyable to me.

2 days ago*
Permalink

Comment has been collapsed.

I agree with you about the pleasure of puzzle solving. Though a lot of people here on SG use puzzles as an anti-bot measure and since your solution isn't bots resilient I think it would be fair to mention it.

2 days ago
Permalink

Comment has been collapsed.

Yoooo, finally not having to do the picross puzzles in paint :D
Thank you for the effort, and for giving some more love to these, i much prefer them to jigsaws (which i suck at, and despise :D)

5 days ago
Permalink

Comment has been collapsed.

So true, I do look back at the first version with some fondness, but gosh the solving was awful xD
No amount of pretty colors and gridlines could make it feel better to solve haha

Plus the QR codes have built-in redundancy, which means that if we do a little mistake here and there, we can still get the code in the end.
Not on my watch :P Now only the perfect solution works ^^

5 days ago
Permalink

Comment has been collapsed.

I used to set them up in Excel to solve. This is much better.

3 days ago
Permalink

Comment has been collapsed.

bump cz i love nonograms! <3

5 days ago
Permalink

Comment has been collapsed.

Bump! picross memories back!

5 days ago
Permalink

Comment has been collapsed.

solved for fun because nonograms are awesome :)

Also Murder by Numbers is a great game.

5 days ago
Permalink

Comment has been collapsed.

I played many of them, but the throne belongs to Paint it back. It's by far the best picross game I've ever layed my hands on. I think I've played it through for three times or more by now, it's just that good (and for lack of competition).

5 days ago
Permalink

Comment has been collapsed.

wishlisted, thanks :)

I really wish I knew about these games 24 hours ago when the Winter sale was still on lol. I didn't check the Murder by Numbers page and didn't know there was a Nonogram bundle that I would've bought if it was on sale.

5 days ago
Permalink

Comment has been collapsed.

I have played it a few months back, I really enjoyed it :)
It was just the right balance of story and puzzles for me!!

5 days ago
Permalink

Comment has been collapsed.

At first I was confused with the solid lines thinking they were an additional part to the nonogram... but then I realized it's just a visual indicator for every 5x5 section, nothing else. Ugh.
If I had one suggestion it would be for a toggle to disable that, as it actually confuses me more than it helps.

5 days ago
Permalink

Comment has been collapsed.

Yeah it's a standard of nonogram puzzles, to help visualize more the bigger numbers but I can see how it may become confusing
I will definitely try to add some customization options in the future to provide different solving experiences, thanks for the feedback! <3

5 days ago
Permalink

Comment has been collapsed.

Neat. I love me nonograms.

5 days ago
Permalink

Comment has been collapsed.

Wow. I'm really bad at this 8x8 nonogram! I'll try it when I'm less tired. Neat setup.

5 days ago
Permalink

Comment has been collapsed.

Nonogramssss

5 days ago
Permalink

Comment has been collapsed.

This is awesome! Definitely bookmarking to use for future giveaways. You can never have too many nonograms! :D

5 days ago
Permalink

Comment has been collapsed.

Oh hell yeah! Let's hit SG with a tidal waves of nonograms!! :P
If in the future you have any questions or feedback about the creation process, hit me up in here! :D

5 days ago
Permalink

Comment has been collapsed.

Bump, love nonograms, expecting Murder by Numbers to appear in giveaways at some point :) (should really go back and finish it)

5 days ago
Permalink

Comment has been collapsed.

Very nice! worked very well, thanks a lot

5 days ago
Permalink

Comment has been collapsed.

Click on the hint numbers (top and left) to toggle them

This would have been good to know before I play and finish all 4, I think I got distracted by the nonograms themselves... so forgot to read further instructions :D

Thank you!

5 days ago
Permalink

Comment has been collapsed.

Whoopsie haha that's my bad for putting it so low, I'm planning on putting the usage info directly on the webpage so that it can be easier to see.

5 days ago
Permalink

Comment has been collapsed.

bump :D

5 days ago
Permalink

Comment has been collapsed.

Bump, if someone loves nonograms there is Paint it back too !

5 days ago
Permalink

Comment has been collapsed.

The best!!

5 days ago
Permalink

Comment has been collapsed.

O! M! G!
Finally someone made some nonograms here <3
Even though I have 3/4 games, I will finish everything (in the future too)
Thanks!

5 days ago
Permalink

Comment has been collapsed.

Good improvements!

5 days ago
Permalink

Comment has been collapsed.

Played like 40 hours of Mario's Picross early 2024 and even taught my co-workers about it. Glad to get back to them, been a while. Overall everything feels good (Defintley more conveneinet than the old ms paint fill tool method you did a long time ago).

Only suggestion I'd give is a way to save your progress (kind of like in Jigidi), so you can get back to the puzzle later on. maybe local storage can be used to store the users current game state.

5 days ago*
Permalink

Comment has been collapsed.

+1 for saving progress!

5 days ago
Permalink

Comment has been collapsed.

That is a great suggestion and I think I know just the way to make that work :)
I don't have a server per se, but I could export the puzzle as a link with an additional info containing the solving progress, so that the link may be used in the future to continue from wherever we were.
I'll work on that!

5 days ago
Permalink

Comment has been collapsed.

The local storage thing I suggested essentially just stores a JSON in the user's browser kind of like a cookie. I also like your idea too since it would let you continue solving on other browsers or devices.

4 days ago
Permalink

Comment has been collapsed.

Yeah, just saving to and loading from local storage would probably be the most user friendly.

4 days ago
Permalink

Comment has been collapsed.

What could be better than jigidi? Nonogram of course! :)

5 days ago
Permalink

Comment has been collapsed.

Bump for nonograms! I solved the first one and it seems to work well! :)

5 days ago
Permalink

Comment has been collapsed.

I like how this works, but have 1 suggestion, normally in nonograms you have squares of 5 by 5, then a thick line and then 5 by 5 again, but this one also has squares that are smaller, which in small puzzles isn't a big deal but for bigger puzzles it would be, I would suggest make them all 5 by 5 and then just add a few 0 at the end to cut that part off, that way it's easier to calculate bigger numbers.

Ps. I love doing nonograms so great job!

5 days ago
Permalink

Comment has been collapsed.

That's a good point, I remember wondering about that in the past, whether to keep them at multiple of 5s or not.
Personally I always found it easier to not see the empty columns rather than having to mentally remove them while solving, but that's just a preference.
I will be adding some customization options in the future so that's part of the things I will address.
Thanks for the feedback! :)

5 days ago
Permalink

Comment has been collapsed.

Thanks for the puzzle! I solved it in reverse, with the little dots being according to the numbers (seemed easier to follow for me), but it doesn't give a win screen when solved (had to swap them).

5 days ago
Permalink

Comment has been collapsed.

It had never come up to me that people might solve it with the dots representing the numbers, I will try in the next version to add a check to see if the inverse value of the grid works.
Thanks for the input! <3

5 days ago
Permalink

Comment has been collapsed.

Thanks for that, i don't know why, but i tried the right way and it just didn't look right to me :D

4 days ago
Permalink

Comment has been collapsed.

The 10x10 puzzle (Week 4) opens a 12x12 puzzle.
Fixed

5 days ago*
Permalink

Comment has been collapsed.

Yup haha when I saw your post this morning I fixed it right away before going to work ^^.
Thanks for noticing it! :)

5 days ago
Permalink

Comment has been collapsed.

Yay, I love nonograms! Thanks for the fun and giveaways!

5 days ago
Permalink

Comment has been collapsed.

This is much harder than Pixross, but I managed! Thanks a lot, unexpected amount of fun

5 days ago*
Permalink

Comment has been collapsed.

Sign in through Steam to add a comment.