This morning I had a pretty good idea. Really the best ideas are the ones that solve like 3 problems at once and in hindsight just seem stupidly obvious.
The Problem
I touched on this in the previous post, but I will reiterate below for clarity:
So, I currently have two major categories of puzzle panel in the game. The first, which I call “freeform” or “togglers” is a simple grid which you can move around on and toggle tiles at your leisure. The second type of puzzle in the game which I call “snake” puzzles, after the game of the same name.
I just call them that because they have a certain movement type where you must highlight connected squares in order and cannot cross over tiles you have already lit up. You’re sort of drawing a line. Otherwise, they aren’t that similar to Snake, in that you don’t have a fixed length and you aren’t collecting anything along the way.
As I mentioned in last week’s post, I’ve been thinking about changing the overall input method in order to avoid the weird mode switching and the sort of unnatural feel of the cursor. The solution was proposed by Casey Muratori, and is pretty simple: Just always have the player be walking around, even when they are solving panels.
Now, this is really no problem for the toggler panels, as you just move the player around and press a button when you want to switch the tile you are standing on. But for the snake panels, it’s a bit more of a difficult problem. How do I enforce the rules such that the player cannot cross over the line they have already drawn.
My first idea was that perhaps each tile would raise up into a wall behind the player as they stepped off of it. This is good in that it enforces the impassibility of the line by utilizing the collision detection of the player. However, it has the nasty issue of not really lining up with the original mechanic. The problem there is about what happens when the player gets to the last tile of the shape they were wanting to fill in. Since the shape is not really raised/lit up until the player steps off of tile normally, there are really only two options: either the player must step off of the panel entirely, or the tiles have to light up when you step on them but only raise up when you step off of them.
Neither of these solutions really made me feel very happy, because it didn’t have a good unification between raised tiles and highlighted ones. In short: it seemed pretty forced.
As I also mentioned in the last post, I was also having issues with how you would even define where you would start on that type of panel. If we are saying the player can go around and hit a button on the panel, they can really go and do that anywhere. But for gameplay purposes, sometimes I want to constrain where the player can draw the line from.
So, the idea I came up with this morning is represented in the following gif (just a mockup, but the final thing should be somewhat similar):
So, what is it?
Essentially it is the same as the “can’t start here” tiles of the last post, only represented in a way that is similar to the “raised walls” idea from before. So the player starts on the raised area, which acts as a button, depressing and lighting up. At that point, the next available tiles raise up and can then be pressed. If there are multiple tiles to choose from, all of them depress when one button is pressed, but only the one the player was standing on remains lit.
I usually gravitate towards the ideas that feel like the most elegant representation of an idea. And since I first realized I had this problem, I was really struggling to find anything elegant. It just felt like I was trying to shoehorn the old puzzles into a new mechanic. But this I feel like is a really beautiful solution that enforces the rules of the original mechanic and translates it into a new input method while feeling actually better than the original mechanic did.
I still have one problem to solve with the input method change, which is actually an old problem. And that is visually distinguishing between the two main panel types. I can either have the player always press a button when their avatar is standing over the tile they want to depress, and the toggler panel also will just have a bunch of the button tiles that are raised up and behave a bit differently.
Not totally happy with that, but I’m reaching a point in my game design career that I’ve started to just be at peace and know that a good and elegant idea will come along eventually. The game doesn’t have to ship tomorrow.
Until it does, then maybe we just go with what seems the least bad, or try to cut what we can.