Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Ordinary Puzzles – An open-source mobile puzzle game (github.com)
116 points by mmazzarolo 3 months ago | hide | past | web | favorite | 36 comments



Consider building it as another puzzle in this collection, rather than a separate app. https://www.chiark.greenend.org.uk/~sgtatham/puzzles/


I love Tatham’s puzzle collection but I wanted to do something different on the UI perspective.


great work! I love Tatham's puzzles. Every night I run through Cube, Galaxies, Guess, Inertia, Net, and Pearl -- but with my SE, I've got the puzzles as large as I can go before I am unable to actually play.

The overall experience is so pretty.


They are both open source, so anyone can consider it.


First of all, it's an amazing game with great UI. And thank you so much for no-ads and not stealing my data.

I always wondered how do you create levels is it a manual process or have some algorithm to do this?


The puzzle generator is described in the following blog post: https://www.snellman.net/blog/archive/2019-05-14-procedural-...


Thank you! The puzzles have been generated with a C program written by Juho Snellman. You can find the generator + the puzzle on GitHub, they’re mentioned in the README.md.


This is really nice! Very clean design, and a great puzzle too.

Two small interface suggestions: first, allow starting a line on any square, not just one with a number (the selection would be canceled if it doesn't connect to a square with a number). This would make selecting lines where the number is in the middle a bit less annoying, requiring only one swipe instead of two. Second, speed up the between-puzzle display a little. I'm an American with a very short attention span, I don't have all day to look at puzzle names :)

I also found a solver on GitHub using Z3 that looks pretty small and readable, if anyone is curious: https://github.com/redfast00/LinjatSolver


Thank you for the feedback!

Regarding the first suggestion: that sounds interesting, I’ll give it a try.

For the second one: you can “skip” the puzzle name screen by tapping on it (see https://twitter.com/mazzarolomatteo/status/12033866772359905...). Does it fill still slow this way? I haven’t added any “tip” about the tapping on these screens in the app... I thought this could have been discovered by tapping on it while waiting but I might have been too optimistic.


Thanks for the reply!

After playing more, and switching from a trial-and-error/backtrack approach to a more deliberate style where I try to mentally prove each extension of a line, I feel less of a need for the start-line-anywhere thing. So, it's your call on whether that's worthwhile.

It would be nice to have undo/redo--I've made a couple mistakes, and in those cases I'd like to step back and check my work move by move. That might spoil the clean design a bit though!

The tap-to-skip is a good trick, thanks--no need to make other changes there.


I thought a bit about the undo, but as you already mentioned I’m not sure how to make it fit into the design of the app. Also, after playing several puzzles I noticed that if I made a mistake I would just prefer resetting the board, because it would be difficult pin-pointing the exact wrong move. I’ll create an issue of GitHub anyway to keep track of it!


You might want to add the rules on the homepage, I couldn't decipher them without looking at the game you ported.


Neither could I; I couldn't get past the second page of the tutorial. "Extend the 3 and 4 into two lines" is ambiguous, and nothing seemed to make it proceed. It needs context help at minimum.

It also can't be backnavigated out of and must be manually homed or killed.


Thank you for the feedback! The tutorial was a real pain. I worked and tested (just with families friends who didn’t know how to play) different tutorial screens and I ended up implementing the one that seemed to work better... I even ported the “instructions” screen and created an onboarding puzzle tutorial at some point, but it was even more confusing in a few cases. So: Yes, I agree, I need to work bit more on it, there are definitely margins of improvements.


There is some interesting meta-gaming you can do because you know that there is exactly one solution.

If you have a block that can be put in 2 situations except that in one case it may collide with the other block you know that the "collision" will happen otherwise there would be two valid solutions. This way you can gain information from a seemingly useless block.


That’s correct. This info is especially useful on large puzzles.


The game looks pretty cool, have you thought about submitting it to F-Droid?


Yes, that’s something I’m going to do soon. The main problem is that I don’t want to publish the fonts assets on the repo, but I’m working on it.


Great job on the app, loved the tutorial, on the third level and the incrimination is challenging. I’m not sure I’ve ever played a react native game that didn’t suck before


Thanks I really appreciate it :)! I spent quite some time optimizing it (especially for Android). Not sure if I’d use RN ever again for games though.


What turned you off?


Mostly Android-specific fixes/workarounds (e.g.: https://github.com/mmazzarolo/ordinary-puzzles-app/blob/d8b8...). I spent ~1 day on the game itself (for the board logic)... compared to several hours for animations, tweaks, testing, etc...

And iOS the app to me still feels way more "native" than on Android.

The next time I'm probably gonna try a "real" game engine (which initially seemed overkill for a puzzle-game).


Ah ok. I’ve been playing it all day and got my friends on it. The iOS experience is beautiful, I’m really excited to grab my buddies phone in a few minutes to see the Android weirdness


How about a version to try out right in web browser? PWA maybe?


It's based on Linjat, which is a web app. https://linjat.snellman.net/#fp



Cool, never heard of it before!


Pretty cool. Perhaps consider a reset to default in-game on the puzzle...


Never mind, looks like only the tutorial doesn’t have reset. The actual puzzles do.


I love this game! I love the UX, the use of haptics, the visual design, and the gameplay. And I especially love that it’s ad-free.

I would love to see other puzzle games done in this style as well.


On the Google Play page, it explains that the lines have to occupy a number of squares equal to the number. I didn't see that stated anywhere in the tutorial (on Android).

Looks like fun.


You are right, the tutorial definitely needs some improvements. Thanks for the feedback.


Awesome work!

It’s great to enjoy a game and enjoy reading the code behind it.


Nice puzzle game!

It reminds me of Lines X for Nintendo Switch that I really enjoy. [1]

For me, I would have preferred even less text than currently in the tutorial. If you look at the image on the first Lines X page I link below of the two turquoise dots, that's the first page of that tutorial. No text at all. You have to connect the two dots by swiping. The next tutorial screen has some extra black dots, and you learn that you have to cover all black dots with your line as well, not only connect the colored dots. Though I have to say, my mother couldn't figure that step out in Lines X without my help, even when she's into different types of puzzles, so it can be argued that having no text will only appeal to more hardcore users.

But something similar could be done in your game. I didn't need the text in the first tutorial screen, because the 4 and the empty squares would make me swipe to see what happens, and I can at a maximum cover 4 squares in any direction. Also, the line changes color when you reach the correct number of squares, which is plenty information that this is the intended length. On the second screen, I don't need text to tell me lines can't overlap, because the tutorial won't advance until I create the correct solution.

I would allow a bit more trial and error from the user instead of explanatory text. The minimalism can be taken further. That way you can learn the game and figure out the rules at the same time.

Here are some suggestions, that you can use if you wish:

1. Hide the text in the tutorial by adding the text "help" next to "quit" in the bottoma of the UI, or a question mark somewhere. The first tutorial page should (according to me) just be the puzzle! Clicking help would show the text and the heading "Welcome to Ordinary Puzzle" and so on, and clicking help again would hide all text from the page.

2. Consider showing currently solved and the maximum number of puzzles of each size. For example:

small 3/100

medium 0/100

large 0/100

That way the player gets an estimation of how large the game is, and it might encourage players to finish more puzzles. Or if the number of puzzles are automatically generated and infinite in number, a would like to know how many I've finished of each size.

3. Clicking the number and stars in the top right should lead to a progress page or at least an explanation of stars. Currently I don't know what "38" means after solving a couple of puzzles. It would make more sense to me if it said the number of finished puzzles, but right now I don't know what the number means. Total number of squares with lines in finished puzzles? I just finished a new puzzle and it says "+27", but I don't know what the 27 stars are from.

4. After finishing a puzzle, I don't need the screen that shows the puzzle name and having to click "new puzzle". I'd like the game to automatically start the next puzzle, possible after showing the puzzle name and "completed", which would make me finish more of them in succession. If I want to stop playing, I can click quit from the next puzzle, I don't need to be asked between every puzzle.

5. I agree with the other poster who wanted to start from any square, where the line would be tossed if it doesn't connect to a number. On the other hand, I can definitely view the current implementation as a slight quirk of the game, and accept the way it works. It doesn't take much away from the game the way it is, and it reinforces that you have to interact with the numbers in some way and not just swipe randomly. So having the numbers start each interaction makes sense from that perspective.

[1]

https://www.nintendo.com/games/detail/lines-x-switch/

https://www.nintendolife.com/news/2019/06/lines_x_is_a_relax...


Oh wow that's some nice feedback! Thanks!

First time I see Lines X, seems nice.

> I would allow a bit more trial and error from the user instead of explanatory text.

The tutorial is something I play-tested a lot but with each iterations I've heard different opinions about it. I tried to strike a balance between letting the game explain itself and guiding the user trough text, but at the end of today I don't think there's a bullet-proof solution. One thing that I noticed is that a minimalistic approach like the one you suggested works well for: a. People who already have ton of experience with puzzle games b. People who are "really" intentioned to play the game In every other case, I was asked to add more guidance trough text, animations or more steps.

If it was just for me, I would have definitely used an even more minimalistic approach (which was the first iteration).

Onboarding is way more complex than I expected, and there's a ton to learn on the topic!

Regarding the other suggestions:

1. I haven't thought about that. That's a clever tip!

2. This is something I tried implementing, but it didn't match well the minimalistic look (and the home screen UI) for my tastes... but I can definitely see it being a nice addition. Do you have any suggestion on how/where to "show" it?

3. We think alike, don't we? This is also something I wanted to implemented (e.g.: showing the list of available puzzles that could be picked). If I was the player, I'd "like" something like that. The thing is, nobody ever asked for it while/after playing. So I never implemented it. You're the first one to actually give me this feedback.

4. Gotcha. First time I get this feedback, but it does make sense to me.

Thanks again for the great feedback :)


Awesome game. Love it




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: