robx / pzprjs

Playing and editing puzzles by Javascript (fork of sabo2/pzprjs)

Home Page:https://puzz.link/list.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Guarded anscheck improvements

x-sheep opened this issue · comments

I still hate the guarded answer checker how it's currently implemented, which is why I disabled it by default on pzprxs. In my mind, having the Completed popup sprung on me when I click "Check" sucks all the joy out of the last moment of the puzzle (the solution). On puzz.link, the answer check was also still reported as a bug by multiple Discord users, after which it has to be explained over and over that this is intended behavior. This lasted up until the merge with pzprxs changed the default on puzz.link as well.

When I wrote Light & Shadow I did not want aux marks to affect the solution at all, which is why I implemented it as two different answer values instead (similar to Yin Yang).

Contrast Fillomino, where the Completed popup is actually more lenient than before, allowing unnumbered regions and drawing ghost borders in more cases. Strictly speaking, a guarded answer checker should wait for every cell to be filled, but this is currently done by a separate Checkbox visible at all times, and not by the option in the submenu. The checkbox is also clearly labelled, while "guarded" and "always" are not obvious.

I freely admit that I changed the default pzprxs behavior to my personal preference, but I think it's best if we make the default behavior something that most newcomers will understand, instead of focusing exclusively on what experienced solvers (i.e. power users) want.

If we really have to enable the guarded checker by default, I think what would go a long way towards solving my dislike for the feature is to make it much clearer to users when the guard is active. People who have no idea that the feature exists need to be made aware when the aux. marks are important for the Completed popup to show (which isn't every type). Being hidden away in a submenu is not desirable in this case.

The thing I personally really dislike is being told I've solved a puzzle before I can be reasonably confident I have. I don't think that's necessarily a power-user issue.

At the time, guarding the answer check seemed like a reasonable solution, and I've found it to work quite well. I'm not really sure whether to revisit that on a fundamental level now...

Regarding Fillomino, I generally really like the updates. It makes solving most puzzles much more pleasant, thanks a lot for that! The puzzles that are spoiled by the answer check are rare enough (though it does hurt those puzzles quite a bit). An alternative might be "Force every area to have a number" instead of "every cell", but I haven't really felt the type needs an answer check guard.

Square Jam feels a bit similar to Fillomino in that regard -- sometimes a puzzle is done with a large left-over square, and it's hard to be sure that that's the only solution.

Both cases are different though from some of the types that I feel need an answer check, in that when the checker triggers, the solution is easily checked to be correct: It's generally obvious that the solution at that point is a solution, even if not necessarily the only one. The problematic types are those where there's a constraint where it's not immediately apparent whether it's satisfied. E.g. three-room rule in Heyawake, or the size of large Nurikabe island.

Essentially what I'd want is for the "completed" popup to only appear when I'm at the point where I feel I've finished solving the puzzle. I.e., I know that if I haven't made a mistake, the solution as is is correct. Or at least I'm seconds away from that.

I'd be quite happy to make interface improvements. Ideally we could do something about the check button, though I'm not sure at this point what would be good there. I have the vague idea that there might be something to be done with the label or color of the check button based on whether a guard exists and is satisfied. Or maybe a "guarded" checkbox next to the "Check" button. I don't particularly like (something like) that Fillomino checkbox label, I think it's very unclear that it would apply to the answer check.

I don't think that's necessarily a power-user issue.

I put a general question out in PC Discord about this, and asked people to leave a 👍 or 👎 on this issue. I'm going to interpret the 3 upvotes and zero downvotes that we should not make the guarded answer checker the default as it is presently (i.e. either change the default or change how Guarded works). The automated Congratulations message seems to be more important than having reasoned about every cell in the grid.

I agree that the Fillomino checkbox is not what we should work towards for this issue, but I'm happy with leaving that checkbox as it is now. The answer checker in Snake Pit will actually prioritize different problems, based on if the checkbox is set. This could be useful for constructors.

Changing the color of the Check button seems to be a good first start. While it won't solve any problems for people unaware of the setting, it will at least let you and me see at a glance which answer checker is currently running.

When I was initially taught that I could change the answer check option from guarded to automatic, I was extremely grateful, as it prevented confusion from me thinking I'd finished a puzzle but not having an answer check pop, only to remember that I had to mark all unshaded cells. I solve a few puzzles a week, if that, so I'm by no means a "power-user."

Generally, the people that I've passed the information about the answer checker on to as well are more active in solving than I am, and have also been extremely grateful for it.

Given that ideally, experienced users will know that they can change the settings (of course, a proper help file that explains the interface would help with this), this problem primarily affects new users.

Benefits of guarded as default:

  • New users don't get a notification that they've solved the puzzle if they haven't deduced everything yet.

Benefits of always as default:

  • New users don't get confused when they think they've solved a puzzle but haven't marked every square.

Benefits of manual as default:

  • None?

I've seen plenty of new users to the interface not know that you can right-click in some genres like Heyawake to mark a cell as unshaded (which leads to confusion with guarded as default). I don't think I've ever seen a new user complain that the interface told them that they've solved the puzzle without them fully solving it. So I think having the answer check option be guarded instead of always is going to make things unnecessarily confusing for them.

Unless we want to make manual the default, and make the CHECK button obnoxiously big so that new users can't miss it; or we want to make the solved notification less intrusive, I think always will be more new-user-friendly than guarded.

commented

I'll copy my comments from Discord over, but the short version is that the default should be Automatic (Always).

[10:35 PM]IHNN: Honestly the default should be whatever the most people would use, especially for users who maybe don't solve a ton of puzzles. And for them, the auto (always) check is the obvious best one. If people want something different then they can and will change it, with the main concern being that (I think) it's a setting per type instead of global

(in response to "If you finish a puzzle and didn't notice any mistakes, there's a 99.9% chance you've solved it correctly")
[3:05 PM]IHNN: This is definitely not true for people who are learning, or newer. In those cases both the error rate is much higher - possibly even over 50% - and the ability to check an answer to make sure it's right (and more critically, have errors pointed out) both go a long way towards taking the time to actually learn.

And to rob's initial point - specifically

The thing I personally really dislike is being told I've solved a puzzle before I can be reasonably confident I have.

I think this is a really fair point! But I think that this is much less of a problem than having the correct solution, having the answer check on ""automatic"", and it not showing as correct. I have seen this happen several times. The argument is specifically for what the default should be, and "power users" can just... change the setting to what they prefer, ideally globally.

Benefits of guarded as default:
New users don't get a notification that they've solved the puzzle if they haven't deduced everything yet.

Also this is not a benefit at all, a lot of inexperienced solvers don't go deductively (which is a whole separate thing that's out of scope of this issue). And as noted, even if they do, if they don't know to mark everything...