Sokoban Puzzle Design

Sokoban has be one of my favourite puzzle games from my childhood due to its interesting designed levels and fun tricks. When I browsed the PlayStore to get some Sokoban games I noticed that almost all variants had the same original Sokoban levels. The ones I also played as a kid. This led me to making my own Sokoban game in which I designed my own levels and added extra features to make the game a little more complex.

 

For designing levels for puzzle games, it is a must that the levels should be easy to create and test. For "Sokoban Quest" I developed a generator that converts very small PNG images to playable levels. Since there initially weren't many different tiles to use in a level (Floor, Block, Wall, Target, Exit) I chose to give each tile a color and painted the level in Paint.NET. The generator uses the 16*16 image to generate the level.

 

Below is a demonstration of a level that utilizes various new features such as slippy tiles, fake crates and collectables.

I don't plan the whole level beforehand. I paint the player and some area around it first and then map the rest by thinking of a path that the player has to go through to complete the level. Once I think the path is long enough I save the image and test the level on various things:

  • Is the level completable?
  • Are there no shortcuts that stray too much from my own path, making it much easier than it should be?
  • Is the difficulty appropriate?
  • Is the level fresh and not too similar to other levels?

Once it passed the test I add the level to the pack.

GenerateLevel.cs

LevelManager.cs