
Show HN: Ordinary Puzzles – An open-source mobile puzzle game - mmazzarolo
https://github.com/mmazzarolo/ordinary-puzzles-app
======
jlv2
Consider building it as another puzzle in this collection, rather than a
separate app.
[https://www.chiark.greenend.org.uk/~sgtatham/puzzles/](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/)

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

~~~
stevewillows
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.

------
kburman
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?

~~~
jsnell
The puzzle generator is described in the following blog post:
[https://www.snellman.net/blog/archive/2019-05-14-procedural-...](https://www.snellman.net/blog/archive/2019-05-14-procedural-
puzzle-generator/)

------
zwegner
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](https://github.com/redfast00/LinjatSolver)

~~~
mmazzarolo
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...](https://twitter.com/mazzarolomatteo/status/1203386677235990528)).
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.

~~~
zwegner
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.

~~~
mmazzarolo
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!

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

~~~
masonic
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.

------
kevincox
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.

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

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

~~~
mmazzarolo
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.

------
werber
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

~~~
mmazzarolo
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.

~~~
werber
What turned you off?

~~~
mmazzarolo
Mostly Android-specific fixes/workarounds (e.g.:
[https://github.com/mmazzarolo/ordinary-puzzles-
app/blob/d8b8...](https://github.com/mmazzarolo/ordinary-puzzles-
app/blob/d8b88bb024544e7b3e23bcb2bfd14e2cc4607f55/src/op-
board/Board.tsx#L101)). 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).

~~~
werber
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

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

~~~
Fwirt
It's based on Linjat, which is a web app.
[https://linjat.snellman.net/#fp](https://linjat.snellman.net/#fp)

------
Nr7
Reminds me of [https://0hh1.com/](https://0hh1.com/) &
[https://0hn0.com/](https://0hn0.com/)

~~~
mmazzarolo
Cool, never heard of it before!

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

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

------
lilyball
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.

------
loudmax
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.

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

------
rileytg
Awesome work!

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

------
scandinavegan
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.nintendo.com/games/detail/lines-x-switch/)

[https://www.nintendolife.com/news/2019/06/lines_x_is_a_relax...](https://www.nintendolife.com/news/2019/06/lines_x_is_a_relaxing_puzzle_game_coming_to_switch_next_week_and_its_less_than_usd1)

~~~
mmazzarolo
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 :)

------
hankstenberg
Awesome game. Love it

