The Dilemma of Unsolvable State Detection for Puzzles

Last Saturday was the Escape Goat Alpha 4 playtest, and the next big design challenge has shown itself and thrown down the gauntlet.  It’s a hard problem to define, so I’m hoping that writing this will clear it up in my head.  It might also make an interesting story for anyone who wants to see the gruesome behind-the-scenes of game design.

Escape Goat is a puzzle game at heart.  You’re there in a room, pitted against obstacles and mechanisms, trying to reach the goal.  My playtest version of the game had several stages of training, where the player learns the game mechanics, controls, and how the various gadgets operate, before being plunged into a puzzle that takes some problem-solving skills to beat.  The first few puzzles would basically solve themselves in a fun and visual exciting way while teaching you how the game works.  These rooms were fun to build–basically single-button Rube Goldberg machines that make you go WHOA, COOL and that’s about it.  Then come the puzzle rooms.

By their nature, puzzles can enter an unsolvable state if you mess up.  There are blocks that drop and can’t be lifted again, crates that break, switches that stay permanently thrown.  If you do things in the wrong order, you’re cooked and have to retry the room.

The problem is, the game doesn’t know when it’s in that state.  Play testers were poking around in a room for a few minutes trying to solve the puzzle even though it was no longer possible.  This just can’t happen in the release version of the game–the lack of feedback is frustrating and boring.  The player has to get the memo that the room is now unsolvable, and a retry is required.  Detecting and delivering this message is the big challenge I’m facing.

The room in its initial state, when you enter from the top right

 

Let’s look at one room in particular.  This room is the first one where you can actually “lose.”   There aren’t many interactive elements, just the three buttons on the top level.  The green one operates the push block on the left, the blue one lifts the platforms in the middle level, and the red one releases the top (red) platforms.  The proper solution is to hit the buttons from left to right, which transforms the level like this:

Press the green button to shift the lower blocks and create a gap
Press the blue button to lift the blue platforms on the middle level
Press the red button to release the top level platforms and drop the blocks

 

The blue platforms lift to catch the blocks, allowing access to the yellow button on the bottom right, which opens up the passage to the left.  If you hit the red button first, here’s what happens:

Without the blue platforms lifted, the blocks fall too far and barricade the yellow button.

 

The blocks have fallen and are blocking access to the yellow button on the bottom right.  You’re screwed.  You have to restart the level from the pause menu or by leaving the room and re-entering.  But… how can a new player know the puzzle is unsolvable now?  There’s no message.  You’re just left wondering what to do next.

I’ve thought of a few solutions:

  1. Design the puzzles so they can’t enter an unsolvable state.  Well, this would make for a pretty easy game.
  2. Design the puzzles so that something kills the player when they enter an unsolvable state.  This is a better solution than what we have now, but it means inserting a lot of violent gadgets (lightning machines, buzz saws) and having to account for all locations the player could be on the screen.
  3. The game checks to see if it is unsolvable and delivers a message if so.  Checking programmatically is something that would add months to the project, if not years, so that’s out of the question.  But maybe the room could have a bit of hidden data built in to detect for states that would make the room unsolvable.  For example, I could have a hidden block detector checking the area in front of the switch to see if the blocks have fallen there.
I like solution #3 so that’s what I’m going to explore this week.  A related problem is how to notify the player that the room can’t be solved anymore.  Options include:
  1. Kill the player instantly, which would be really jarring.  No good.
  2. Bring up an on-screen text sprite, which is more subtle, but not very thematically interesting.
  3. Have a gadget that activates in the unsolvable state and allows quick restarting of the level, a cool thematic solution but maybe a bit too abstract compared with the on-screen text.
I’ll do some quick tests with options #2 and #3 to see which works better.

Join me

Are you an artist/designer with a game idea, looking for a way to bring it to life?

While I work on Escape Goat, my Soulcaster engine is collecting dust. Let’s put it to use. I’m looking for a skilled designer to make a complete, original game using the awesome technology I’ve developed for Soulcaster I & II. Here are some of the capabilities already built in:

  • Behavior based AI including dynamic pathfinding
  • 2D tile based maps, with animation and parallax layers
  • Versatile and blazing fast level editor in Windows
  • Sprite and actor handling, including collision detection, particle systems
  • Creature-based controller input abstraction
  • Multiplayer support (a by-product of an experiment during the production of Soulcaster II)
  • Menus, animating text, tooltips and other UI goodie

See the game engine in action.

Your game probably has some mechanics not currently in the engine.  For example, you may want pixel-based movement instead of smooth grid-based movement.  That shouldn’t be too hard to add in.  In other words, I’m willing to make small modifications to fit the game design.  So long as you want to make a top-view, 2D sprite based game, where all entities are no larger than the tile size of 16×16,  it should be workable.  If your idea is an RPG that requires a separate battle mode, it’s not going to work–a whole new system is too much for me to add.

Collaboration terms are negotiable, such as sharing of revenue and ownership of IP.

Interested?  Have a design that is just too awesome to be sitting around?  Use the contact form and get in touch.   Link me to any game design or art you have online, and tell me about your background in game design. 

Goats are the new Souls

So what have I been doing this whole time, with only a couple website updates in the last several months?

I’ve been making a new game.  Not Soulcaster III (yet), but an all new franchise.

Presenting…

ESCAPE GOAT

The features and story have not been nailed down, and it’s still in prototype phase, but work has been steady on it. As you can tell from the video, it’s a single-screen action puzzle game, with some Metroid-style adventuring and exploration.

What makes it unique? The goal is to give the player the experience of being trapped in a dungeon that has a mind of its own. Machinery changes the world and you must find a way to wrangle with it to reach new areas of the game. You find items and powerups to gain new abilites, which allow new solutions to puzzles. It’s not a linear game where you have to find items in a specific order–rather, you make decisions about which items to get given the paths you take. Many gates and puzzles will be solvable with more than one “key” item.

The mice are also pretty special, but more about them when I get a better grip on their design. I’m still figuring out how best to use them.