Show HN: I wrote a symmetry game with a daily puzzle


126 points | by james_marks 10 days ago


  • stevage 10 days ago
    Just some feedback: the training bit of the first few puzzles just confused the hell out of me.

    Puzzle one, I see a grid and what looks like a piece. There's a message that says swipe right, so I click-drag right with the mouse, and suddenly I get 3 stars and a congratulation message. What did I even do?

    The same thing repeats for about 5 puzzles. Each time I just swipe left or diagonal or whatever, but I'm not actually learning anything about what these gestures do. I don't see anything move, I don't learn anything about the mechanics of the game.

    Then I'm on a puzzle that says swipe -> tap -> swipe and...I have no idea what to do.

    EDIT Oh. Once I understand the mechanic, all the puzzles feel trivial, because there are so few things you can do at any time. Each swipe/tap is either correct, or instant loss.

    • james_marks 10 days ago
      Fair. Maybe some illustrations showing the reflection mechanic before the training levels would help.
  • james_marks 10 hours ago
    Just pushed some changes based on the feedback from this thread.

    - No more "Scroll Down", which fixes a large group of bugs

    - All-new interactive training

    - Can be saved as a PWA without re-opening in Safari

    - Tweaks to the puzzle generator algorithm (better, but still too easy)

    Thank you for playing and reporting bugs!

  • tacitusarc 10 days ago
    The tutorial puzzles were absolutely trivial, but I spent a decent amount of time trying to understand the mechanics of the main puzzle and frequently actions produce unexpected results. I do not understand why sometimes only a piece is mirrored, and then sometimes the whole puzzle is, or why tapping can prevent some pieces from being flipped, etc. I do not know if it is buggy or just confusing.

    EDIT: I see. Drawing a line causes a mirroring effect at a line perpendicular to the one drawn, located at the furthest point in the direction of the drawn line.

    • marcandre 9 days ago
      Same. Tutorial having only contiguous cases made things quite unclear. I thought the starting point / endpoint where important to define the reflection axis and where it was, but no, only the axis gets defined
      • robertlagrant 9 days ago
        Yes - having a slightly more advanced tutorial puzzle, where you have to tap, swipe, tap, swipe, would be helpful.

        Took me a few goes, but I did puzzle out today's. Very cool.

  • untech 10 days ago
    I’ve definitely enjoyed working out today’s puzzle. Thanks!

    However, I am not sure about the daily aspect. I doubt I’ll remember about the puzzle tomorrow, and in any case, I like to do puzzles in larger batches, like for one hour in the evening.

    Re: visual design: I think showing the actual line of mirroring would be nice. Also, the numbers of taps and swipes were too small for me to notice, I’ve discovered them quite late.

    • james_marks 10 days ago
      Thanks– Good idea re: batches & line of mirroring.
  • bagels 10 days ago
    I made it past 5 levels, and I don't really think I understand what is happening. There's some sort of mirror thing that I can't seem to control, and I can click on things, but I get less stars if I click on things.

    I pass if I try to mirror right to left, but mirroring in the opposite direction does nothing. I have trouble controlling where the mirror plane is. It seems on the 'Tap' level I should be able to solve this by mirroring left to right, but I can only click on the white square to pass.

    • james_marks 10 days ago
      The reflection is always the edge of the filled tiles, like a hinge in the direction of the flip.

      You control where it is by choosing which tiles to fill.

      • zem 10 days ago
        having that explained with an animation in the beginning would help immensely
        • james_marks 10 hours ago
          There's a brand-new tutorial, which includes this. Thanks for the nudge.
          • zem 9 hours ago
            looks much better!
  • lilyball 10 days ago
    I think my feedback has already been captured by others, but I'll say it anyway just to help you get a sense of how widespread this feedback is.

    I first opened this on my laptop with a trackpad and was confused at how scrolling did not work on the "scroll down" section. I ended up reopening it on my iPhone in order to try it. I see from a comment here that you're using this in order to get rid of the floating address bar. Your solution does not work, because if I tap to bring up the address bar once I'm in the game, there's no way to make it go away again and it covers up the bottom bar. So either you need to just live with the idea that the address bar will be visible, or you need to find another solution. [Edit: trying again, bringing up the address bar reverts it back to the "scroll down" screen. The first time it didn't though, so whatever you're doing here isn't reliable].

    I also notice that if I add it to my home screen, the icon just opens it in Safari again. You don't have the metadata set up that allows it to be a PWA. Even without taking advantages of any of the extra capabilities of a PWA, it's still nice to support so that way I can have a home screen icon that opens it as its own thing (and this also gets rid of the bottom bar entirely). Every other daily puzzle I play is either in its own app (like NYT Games) or is a PWA.

    The tutorial sequence should have some indication of how far along I am. I was starting to wonder if it was going to go on forever when it finally dropped me in the real game. It also should have a step telling me that I'm done with the tutorial and that I'm about to play the real game. This step would be a good place to point out the bottom bar with the tap/swipe counter because I completely missed that until I came back to read the comments.

    The "Copy Stats" button should probably be a "Share" button instead that triggers the share sheet (at least on mobile; I don't know what other daily puzzle games do on desktop, maybe they still use the share action there too?).

    Overall it's a fun game though! I can see myself adding this to my daily puzzles.

    • james_marks 10 days ago
      This is great– I didn't realize PWAs could launch without the address bar. That changes my whole approach to the layout and can likely solve many of the bugs being described.
      • lilyball 10 days ago
        I don't know what the experience is like on Android but on iOS a PWA opens in a completely separate process, without any browser chrome at all. It feels exactly like a native app that renders to a fullscreen webview.
  • pimlottc 10 days ago
    Took me a while to figure out how to swipe on desktop, it doesn't work unless you both the start and the end of the swipe lie within the grid. So it's sort of less of a fast "swipe" and more of a "click-and-drag".
  • aaroninsf 10 days ago
    Very clean. Great effort to crack the Wordle daily-game space. Has potential.


    - make it very explicit that interactions have a mandatory ordering

    - make it very explicit that you cannot un-select pre-selected tiles

    - make it very explicit that you cannot select "background" tiles

    - differentiate phases, "prep / setup" vs "reflection"

    Bonus ideas for v1.1:

    - track "interactions" accumulating, and provide a mechanism for replaying them (eg "scrub the timeline back and forth").

    - help mode: as you "consider" a swipes and the "compass" is shown, have an assistance mode which indicates provisionally the impact of a swipe in each direction as they are selected (but not executed)

    Re: differentiating "phases," AFAICT you must always FIRST do any "selection tapping"; and then you must do ONLY one or more "reflection swipes." This was confounding to my way of thinking. I found myself repeatedly making the "wrong" move because while I saw the solution, I was attempting to execute it in a different order.

    Or thought I did; because "tapping to fill" ("that's one way...") is allowed, the fact that it is a degenerate solution is not clearly expressed; nor is the fact that there is (I assume) always an "optimal" solution which always involves "prep" followed by one or more reflections.

    • james_marks 10 days ago
      There are many correct sequences and often (not always) more than one solution. The sequence matters only matters when:

      - It changes the region that reproduces - If a Tap and a Flip produce the same result, scoring prefers the Flip

      If you feel like a sequence is being forced that doesn't fit one of those, I'd be curious to see what it is.

  • anonu 10 days ago
    I like it. Took me a good moment to figure out the controls and concept but it's fun. Nice work.

    The midnight puzzle feels like Wordle style. I'm not sure that's going to pickup in this case. I would just open up all the puzzles. My 2 cents

    • james_marks 10 days ago
      Definitely some Worlde influence!
  • ejang0 10 days ago
    I enjoyed this a lot. Thank you.

    Feedback: Desktop with trackpad, I swiped and my pointed ended out of the grid and it doesn't let this swipe occur.

    Echoing others: - "the numbers of taps and swipes were too small for me to notice, I’ve discovered them quite late" - "The scroll down section felt odd." - on desktop I couldn't figure out what "swipe" meant for a bit (just click-and-drag)

    Thank you again for this gift.

    • james_marks 10 days ago
      Glad you're enjoying it, thanks for playing.

      Great comments and some new bugs on my list.

      The "scroll down" is definitely odd, I haven't quite decided how to handle that.

      The reason for it is the floating address bar on mobile browsers- the only way I can find to minimize them is an authentic scroll of the page body. window.scroll() methods or anything I try to do that doesn't literally display an overflowing body requiring a scroll, and it won't retract.

      To have the address bar full height while I'm trying to play just kills it for me. I've got some great animations from the original version I haven't brought in yet; the scroll down might "reveal" the puzzle with an animation that feels more natural.

      • wonger_ 10 days ago
        The fullscreen API might help you rid the address bar. Or as another comment said, implementing as a PWA.
  • lovegrenoble 10 days ago
    I like minimalist puzzles, especially addictive ones, like this
    • drhodes 10 days ago
      This knot game is really great, thank you for mentioning it.
  • RandomWorker 9 days ago
    This was really cool. Challenging for sure on the first try I got one star. It challenges your ability to play around with it. I think the tutorial clicked for me when I saw the black shaded areas appear and they were mirror images of the red, then I got the game. With a small tutorial that this is the operation triggered by swiping would be useful. Though I did enjoy the aha moment when I got it.

    When do the puzzels get updated? It makes sense to add a time zone. I’m definitely going to take another go tomorrow.

  • wonger_ 10 days ago
    I like it! The tutorial levels were quick and effective. It's a new game mechanic I haven't seen before. And today's puzzle is a nice intermediate difficulty. Some other thoughts:

    - I always wish daily puzzle games like this had an archive of past puzzles.

    - The scroll down section felt odd. Maybe an HTML #anchor tag could jump the user to the game screen

    - Settings button wasn't working for me. Not a big deal tho

    - some extra UX polish always feels nice. Like animations, sound effects. Maybe some color and spacing tweaks. Maybe making the taps/flips numbers more noticeable.

    • james_marks 10 days ago
      I... forgot to implement or remove the Settings button, it's literally just a piece of text. Sorry!

      There's a nice 3D animation where you can see the region come towards you as it "flips" in the original, I'll look at bringing it back at some point.

      Archive of past puzzles is a good idea.

  • MourYother 10 days ago
    Mobile Firefox Bug: I cannot swipe down, it scrolls.
    • james_marks 10 days ago
      Added to the list, thank you.
      • tarentel 10 days ago
        This doesn't appear to be working on Safari desktop either.
        • james_marks 10 hours ago
          Bugfixes just went out, is this working for you now?
  • cyode 9 days ago
    Today’s puzzle took me awhile to get, and I enjoyed the challenge!

    I’m curious how much difficulty falls off over time after regular play. I’ve only played one puzzle, but without expanding the rules of the game, I feel like the following approach is all I’d need to solve any other puzzle pretty easily:

    1. Build local early to save taps. Two squares touching can be painted with 1 tap and 1 flip. 2. Use taps in the middle of the game to create “pivots” for flips. 3. Big and “obvious” symmetries are solved with flips towards the end, taking advantage of “off the edge” squares getting ignored. 4. Fill “islands” (white squares without a corresponding white square for any axis of symmetry + pivot + valid flip) last with taps.

    Did you ever try it with hexagons and 12 flip directions? >:)

    • james_marks 9 days ago
      Your strategy is sound, but the steps become non-obvious on harder puzzles.

      Today’s and yesterday’s were easy for people that play a lot.

      There was one last week that took me a shocking number of tries, I was getting victory texts from friends at 11:50, people who’ve played for years never solved, etc.

  • yijiahe 10 days ago
    I think an undo button would help.

    It would make experimenting to get the right solution quicker by not having to restart from scratch and take away the pain of having to restart because you accidentally interacted with the game.

  • carlsverre 10 days ago
    This was fun to figure out! Nice job!

    For today's daily puzzle, there are two solutions that give different rankings but are effectively the same in terms of moves. You can solve it with 3 taps 4 flips or 2 taps 5 filps. It's not clear why one solution is more efficient than the other since the first two taps or the first tap+flip cover the same amount of the board.

    Perhaps a scoring system that was based more on how efficiently you cover the board would allow for different solutions to be equally valid?

    • james_marks 10 days ago
      The scoring system gives 2 points for taps 1 for flips. Lowest score wins.

      Generally, the only time you'd be penalized for an "alternate" solution is when a flip adds a single tile, like you're describing. Any other scenario the flip is the most efficient way to solve the puzzle.

      One fun thing– because of this edge, you can occasionally "beat" the generator and solve a puzzle with a tap left over.

  • sinuhe69 10 days ago
    It’s fun. But on the iPad, swipe down right is nearly impossible! The web page always scroll down. Why not making a single page where no scrolling is possible? You can always change into other scenes by previous/next buttons.
    • james_marks 10 hours ago
      We switched to a page-based layout, is this working better now?
  • dave333 10 days ago
    Got stuck on the first swipe diagonal example - tried about 25 swipes but not the correct one. Need a hint or even solve button until I get how these work. Then after I went to the daily puzzle I couldn't get back to the training examples.
    • SamBam 10 days ago
      I simply can't trigger a downward diagonal swipe on my phone. It starts immediately as a horizontal swipe, and then the downward component scrolls the whole game area downward, while not affecting the swipe angle.

      Even if I start with a downward swipe, it treats that as a scroll action, not a swipe action.

      This is in the tutorial. FF on Android.

      OP, have you considered making each level a non-scrollable page?

      • james_marks 10 days ago
        Sorry, that sounds awful. I'd prefer non-scrollable but so far have optimized for causing the address bar to retract. Obviously haven't nailed it yet across all devices.
      • aradox66 10 days ago
        Having this problem also, swipes with a vertical component are simultaneously scrolls, which messes up the angle. FF on android.
        • james_marks 4 hours ago
          Fixed now?
        • james_marks 10 days ago
          Have not tested the FF x android edge, thanks for the heads up.
    • dave333 10 days ago
      Bumping my thread since it got hijacked by the downward swipe vs scroll business.
      • james_marks 10 days ago
        That first diagonal flip is a virtually guaranteed stumbling point, I’m open to ideas on a better way to introduce it.

        Until then- I’ll add a way to reset the tutorial when I go back for the accidentally-fake Settings link.

        • dave333 9 days ago
          Thank you. Maybe have a solution graphic that user can get by clicking on a solution button or that pops up after X failed swipes.
  • bubblebeard 10 days ago
    Very nice work! I really enjoyed playing it. One little thing I noticed, at one point I wanted to exit the page and doing so on my Iphone was a little tricky, maybe adding an exit btn would help. Really fun game though, great effort!
    • james_marks 10 hours ago
      This should be fixed, if you want to confirm.
    • james_marks 10 days ago
      Exit button to release the UI controls is a good idea. Thanks!
  • carom 10 days ago
    On Safari iOS this somewhat trapped me on the game screen. I had to close the tab.
  • ballenf 10 days ago
    Is this only for mobile devices? On safari, I can't scroll down to the game and in a chromium browser I can't get a swipe gesture to register. MacOS.

    On phone it works perfectly and is very cool! Nice work.

    • anonu 10 days ago
      Works on desktop
  • TheGRS 10 days ago
    Pretty fun! I would recommend looking up "juice" in gaming and adding some spicier animations just to make it a little more satisfying to play. The idea is pretty fun though!
    • james_marks 10 days ago
      New vocab for me, perhaps not surprising :)
  • munchler 10 days ago
    Fun game. Here's a small bug report: If you reset the puzzle while a flip is active (but incomplete), the flip UI remains active after the board is cleared. (Desktop user.)
  • jpeggtulsa 10 days ago
    How do you do the "Swipe out of bounds" one on desktop?
    • pimlottc 10 days ago
      The swipe itself doesn’t need to end out of bounds, it just needs to be in the right direction.
    • james_marks 10 days ago
      Click and drag. You have to start and end within the grid, which is probably what's throwing you off (and kinda dumb... on the list to fix).
  • montebicyclelo 10 days ago
    The introduction / training could be made clearer with some GIFs / animations showing what to press and the effects.
  • ThomW 10 days ago
    Safari in MacOS just shows a screen full of "Scroll down" after the initial "Let's Go" is clicked. :/
    • LudwigNagasena 10 days ago
      Yeah, you have to scroll down using your arrow keys. The swipe aid in the game is still bugged though.
      • james_marks 10 days ago
        I think it's specifically scroll-wheel on a mouse that doesn't work in Safari, which I can't readily explain.

        Adding to the list.

        Can you elaborate on the swipe aid being buggy?

  • ibrothergang 9 days ago
    I don't know how to play it, adding some guidance and hints should make it a bit better.
    • james_marks 10 hours ago
      There's a whole new tutorial now, curious what you make of it.
  • acheron 10 days ago
    This is good. Worked fine in desktop Firefox once I got the hang of it.
  • closetkantian 10 days ago
    I liked it, but I found it too easy.
    • james_marks 4 hours ago
      Give today’s, puzzle #19, a shot.
  • tonetheman 10 days ago