Coming back to the Puzzle Game
(See other posts on this game here, and you can play the game on itch.io)
Coming Back
I've revisited this logic puzzle game a couple of weeks ago, and have been working on it since. I had to do a couple of decisions, the biggest one being completely dropping the Picross underbelly of the design. The initial pitch was basically what if Picross with larger polyomino pieces -- which is still a solid one, but what I found was that with the kind of scoring and type of pieces I got excited about, the Picross part of the game just became busywork to get to the fun part: choosing which pieces, and where they go (in contrast to figuring out where the pieces can go).
So I ripped out all the code about marking tiles, and the checks for legal placement that make up a Picross style game, and streamlined. I got a bunch of upsides for both the player and me:
- Simpler code, the old evaluation was a bit buggy and had to be rewritten anyway. Now it's just some collision checks against a tilemap.
- Less tools and UI around marking and the legality.
- With this revision, I can now design levels in the tilemap editor, and use layers to make specific art for each level (if I want)
New version of the game, after removing Picross elements
Easy puzzle, hard solution
If you remember my last blog post, one of the main inspirations of this game is Zachtronics' Opus Magnum, and one of the pillars of this design is that there must be several ways to solve each puzzle -- it should be relatively easy to get a legal solution, and then it's up to the player to optimise the solution towards their own goals.
So I needed a simple framework for "clearing" a puzzle, that left the solution space open for player expression and optimisations.
With a much more simple game after having done away with the Picross mechanics, I could spend more of the complexity budget on fun systems, and I went to find out exactly what you were supposed to do to "complete" a level. The earlier version had each puzzle piece have a set cost in money, but they would also generate money, and the plan was to try and build so you'd get a profit. I decided to split this up into two separate values: money and power.
The money and power thresholds that the player needs to balance
The rules are quite simple. To clear a level and get to the next one, the player has to:
- Stay under budget -- each placed piece will count towards a total, and that total has to be under the set budget for that puzzle.
- Generate enough power -- most pieces generate one or more power, and there is a threshold that needs to be met in each puzzle. It doesn't matter how many pieces you use, or if you go way under budget or way over the power threshold, but these are all aspects that can be played with to create different solutions.
I liked this, but then I had the idea to add another resource the player can generate. So far this blue "compute" resource is completely optional, but If you manage to get at least one (in addition to clearing the puzzle normally), you get a special blue clear status on that level. The point is that now there is an optional "harder" solve for each puzzle, and players can come back to try and get the blue checkmark later once they get the grips of the pieces.
Clearing a puzzle with a blue checkmark
Project Status and Next Steps
I've come to the point where the game is fully playable, and I can quite easily create content for it in terms of pieces and levels, but I still have some systems to build:
- I need a progression system for unlocking new levels and pieces
- To be able to create more varied levels, I want to add the ability to restrict specific rows and columns in a puzzle ("You're not allowed blue pieces in this column!")
So my next few steps will be designing and implementing those. I'm also looking at doing a pass on the art, possibly maybe doing some prerendered sprites for the pieces, and some backgrounds.
Both my code and Picotron have been stable enough, so I've also started playtests. It feels great to get feedback, and I seem to be on the right track to reach the vibes I'm going for.