Have a look in here for the rules and some tips.
Ctrl+Z
or Left Arrow
to undoCtrl+Y
or Right Arrow
to redo+
or Up Arrow
to zoom in-
or Down Arrow
to zoom outCtrl+R
or F5
to resetHead 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.
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!
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!
Comment has been collapsed.
suggestions
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! ^^
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?
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.
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.
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.
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 :)
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.
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)
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 ^^
Comment has been collapsed.
solved for fun because nonograms are awesome :)
Also Murder by Numbers is a great game.
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).
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.
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.
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
Comment has been collapsed.
This is awesome! Definitely bookmarking to use for future giveaways. You can never have too many nonograms! :D
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)
Comment has been collapsed.
Bump, if someone loves nonograms there is Paint it back too !
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.
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!
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!
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! :)
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).
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
Comment has been collapsed.
The 10x10 puzzle (Week 4) opens a 12x12 puzzle.
Fixed
Comment has been collapsed.
This is much harder than Pixross, but I managed! Thanks a lot, unexpected amount of fun
Comment has been collapsed.
7 Comments - Last post 1 minute ago by Gramis
144 Comments - Last post 1 minute ago by Microfish
23 Comments - Last post 47 minutes ago by possom2009
27 Comments - Last post 1 hour ago by star4you
1,056 Comments - Last post 2 hours ago by sensualshakti
195 Comments - Last post 2 hours ago by devotee
47,211 Comments - Last post 2 hours ago by kbronct
3 Comments - Last post 1 minute ago by Naviis
16,329 Comments - Last post 6 minutes ago by ngoclong19
6 Comments - Last post 8 minutes ago by Filipi
125 Comments - Last post 9 minutes ago by gus09
75 Comments - Last post 32 minutes ago by Gilgamash
28,985 Comments - Last post 39 minutes ago by paco7533
11 Comments - Last post 48 minutes ago by Warriot
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.
More Info
Infos on the puzzles and creator here.
Past puzzles here
Comment has been collapsed.