Ten minute game jam!

Thanks for the pointers guys, I’ll give those games a look. Hopefully they aren’t too close to what I’ve got, though it feels pretty much impossible to come up with an original puzzle game these days :) Everything has already been done.

Does analogue gaming count? Put this together for my 5yo to use with his collectible little squishies. Basically roll and move with a dexterity finish, but the card draws add movement, card, opponent and dexterity manipulations with opportunities for him to practice some math, spacial and situational analysis and general decision making. It’s gonna be pretty unbalanced, but that’s kind of the point! 😁

Love this!

It counts. It must count! Glad that you shared.

That’s awesome! Very colorful. :)

Yesterday was mostly UI work. Adding buttons, transition animations, UI scaling, and support for phones / tablets. The last point way more trouble than it should have been. There must be a reason why the browser mouse / touch events behave in totally different ways.

And then today was a 5 hour train ride, so plenty of time for coding that required no reference material. I now have a menu screen (though “easy” and “medium” are just placeholders, and there’s just one level behind “hard”).

Also, the generator now knows of another deduction rule. Consider the following board:

The dots at C and D can only be covered by the 5 and the middle 4 (and neither piece can cover both of them at the same time). This means that the middle 4 needs to cover one of the two, and thus can’t be used to cover A. Instead that has to be done using the lower left 4.

This turned out to be a much more versatile rule than the previous one about dependencies between squares. Not sure yet which of the two should be classified as “harder”.

Things missing before I could release:

  • Pregenerating 100 levels for each difficulty. (Puzzle generation is too CPU-heavy to do dynamically in-browser)
  • Navigating through a series of levels somehow. (I’m thinking that the “done” button just moves to the next level assuming the current one is solved, otherwise hilights the mistake).
  • Tracking progress across play sessions. Probably just use the browser’s Localstorage, there should be no need for any server-side components.

The first one is the biggie, since I think puzzle quality is important. My current approach will just generate random number layouts and add (interesting) dots to it until it’s either uniquely solvable, clearly impossible to solve, or guaranteed ambiguous. If there is a solution, it then tries to figure out two things:

  • How many depency layers does the level have (i.e. at the start there will be some number of deductions that can be made. That’s layer one. Then those moves will unlock new deductions, those moves form layer 2. Etc).
  • Which deduction rules are needed to solve it?

It then prints out the ones that fit whatever criteria I have (e.g. need to use my new rule, and has a depth of at least 15 moves). The problem is that maybe half the level tends to be uninteresting chaff, like lots of obvious gimme moves at the start. The solution might be to just use these boards as a starting point for further optimization (e.g. via simulated annealing).

I’m looking forward to this when you’re done. It seems delightful.

Anybody here playing with the Godot 3.1 beta builds? @rhamorim? The team seems to think 3.1 final will release by the end of Jan, so I might just hold out until then, but I’m itching to make another game soon. 😀

I think you can start using the beta builds. In my experience, they’re usually pretty stable, and the files/projects should be perfectly compatible with the final release. Go for it!

Finally got around to making a tutorial for the puzzle game on Sunday, so no more excuses for not releasing it:

Thanks for this! Both games are good, but 0h n0 is terrific.

I can’t even solve LEVEL ONE ON EASY in like five minutes of trying AUGH!

Edit: Okay, all I had to do was come here and shriek, and then I found the answer immediately. Damn dude, this puzzle game makes my brain so happy. Super well done!!!

Thanks!

I’ll see about adding a couple of hand-picked easier levels to the beginning. It’s possible I misjudged the difficulty gradient totally, after having played too many matches of this during development :)

Please don’t change anything on my account. I have loved what these puzzles do to my brain. None have taken more than 10 minutes, and during each puzzle, I was sure at one point or another that the puzzle was unsolvable and broken. And then I solved it. Feels so good!

But please also shove easy puzzle 7 up your ass. I am past the 10 minute mark on that mfr.

I got puzzle 7, omfg! I don’t think it’s easy. But then @JoshL solved it in like ten seconds, so…

Puzzle 8 should be first. It’s insane easy.

Right, I agree that to a human 8 is way easier than 7. But by the difficulty metric of the puzzle generator they’re similar (i.e. deep and narrow game trees). The difference is probably in that a “this dot can only be covered by this piece” move pops out a lot more than the “this piece doesn’t fit vertically, so it must be horizontal” moves.

It would be cool to be able to capture the human difficulty with some kind of formula!

Maybe prune the single dot-piece moves before computing difficulty? Or give them a different depth weight?

I’m really liking linjat by the way, thanks for making (and sharing) it.

Yep. The problem was that weighting didn’t really fit in with how the solver/generator works. Basically the solving is done in tranches: find all the possible moves at a given depth, apply all of them at once, and then look for all the possible moves at the next game state. The only weights I could reasonably apply were “is this rule needed at all to solve this puzzle”.

So I now changed it such that in each tranche it tries each of the possible deduction rules in order. First look at whether any dots can only be covered by a single piece, then the “this piece must be horizontal since it doesn’t fit vertically”, then by the corners of rectangles, etc. If it can make any progress at all with a simpler rule, it will do so. And only if that doesn’t work, will it try a bigger gun.

Anyway, I now have a rule that places a total gimme puzzle as the first entry on easy, just to ease new players into it.

(These Discourse link previews really make me want to add a server-side component just so that I could have a per-puzzle description appear there rather than the generic text.)

There’s a question of whether within each difficulty level I should be sorting the levels by perceived difficulty or not, rather than just special case having an easy puzzle right at the start. Right now I just generate something like 500 puzzles for each level, choose the 100 hardest/most interesting ones, but emit them in random order. The idea was that this should be more like the difficulty level of Minesweeper rather than the difficulty level of a game with hand-crafted puzzles.