Once in a while (About once a year) I am asked how to develop a Sokoban level. This time particularly how to develop levels with all or almost alle boxes on goal from start. And of course how to get it necessary to move everything before everything is back on goal. And with a not nonfigurative design. Not just randomly scattered boxes.
What tools to use? The easy answer is everything. But when it really matters it is just trial and error, extensive testing and hopefully some self criticism.
First thing is choosing a design. My first published Sokoban level was the logo for the german car Audi. Why not move on to Mercedes?
After some trials and errors I decided the design below was passable.
I use the designer in YASC. If you are serious going to make some interesting levels never use a online designer. None exists with more than the absolutely basal functions.
Don’t bother too much making anything challenging from the start. Just get your design into the level designer.
Anyway I put a little challenge in the first screen presented here:
Force your Sokoban to do something that can’t be untangled right away. Let him push a box against a wall with some obstacles to be moved before the box can be moved away from the wall. Let him push the box into a heap of other boxes that need to be moved. And force him to push a box that otherwise is not needed to move at all.
Here there is only one possible box (I10) to push and you need to push it at least 5 rows upward. You can push K10 but the level is symmetrical so that doesn’t change anything.
To get the box back to a goal you need to do some pushing otherplaces to gain acces to the top of the box to push it back. There are several ways to do that. One is to push 1., 2. and 3. and you can push the box back to the starting position. To get everything back you will find you need the push 4. and a few more.
Not bad but let’s get some more boxes moving. If you have a string of boxes and you need to move at least one of these you can make it necessary to move at least three by making a 2 floors deep space behind the boxes as illustrated on the right. Often very usefull. I added a “wallbox” at both sides for future use.
With the same start you now need to move 2., 3. and 4. to get everything fixed.
Always try to complicate things. You can add walls inside the “wallboxes” if the wall is 4 boxes or longer.
The plan for the level should clearly be making it necessary to leave the center to one side, go to the bottom, then to the other side. All triggered by your first move with 1. that needs to go back to a goal somewhere. On its way the Sokoban should mess with as many boxes as possible.
To restrict the Sokoban to one choice of movement I closed the exit to the left side. To gain acces to the right side and round the clock you need to move 1. You need to move 2. (or the box below) and you need to move 3. Now what? Sorry. Further access is blocked for now. This level has no solution.
How do I progress further? Move the wall at the questionmark? I am not trying to make an easy level so that is no go. What then? The box at Q7 needs to move left. So I need to move the wall at O7 one collumn left. Just removing makes a bleeding wound and an easier way out for the Sokoban. So lets move the wall and keep the wall.
Now some trial and error. After 16 attempts I reached the design above. Making a wall at N7 instead of o7 makes a double push (One more for 2. in the above design) impossible since that blocks the exit. The solution is to push 2. and 3. and then the downward push 4. The exit is still available. But now the box 3. is off goal and to get that back I just opened up lower right. To continue furter you need to move 7. Thanks to the “wallbox” with the pleasent sideeffect you need to move some more of the boxes in the rightmost collum.
You might notice you can get in and push 3. up and get out the same way restoring the boxes to their goal on the way.
Let’s make that impossible. Always try to block a move or passage that makes things easy. Adding a wall at the lower arrow ! you can still push the box at upper arrow ! one position up but you can’t restore the boxes.
Acces from some other side is needed. Here I simply added a wall all the way to 5. I made a few obstacles on the way but not much. Notice there is af few keyboxes to be moved but the lower boxline need doesn’t need to be touched at all to solve the level.
That’s not what we want. One way to get more movement is yet another “wallbox”. Here I forgot moving 4 leaves the access below gaping open so still no need to move anything in the row.
But allways be on look out for unneccessary floors. The marked ones are not needed. And now the “wallbox” works perfectly. And please be patient. Not alle the marked floors are walled in the next few layouts but in the end they will.
Time to use a tool. YASC has a handy feature making levels from a solution. Using that I get the above level. Unmoved boxes and unused floors are changed to walls. In some designs it isn’t possible to get everything moving and trust me. The boxes not marked with an arrow will probably never be moved. The marked boxes might be moved with change of design. This is where you should use your energy.
One more thing. The design is created from one solution. Other solutions might change the look considerably. Don’t trust it too much but use the feature as a tool to find interresting areas in your level.
If you want a specific box to move as in the toprow you should make room above as illustrated. Not on the side as in the former layout above.
We establisted it is obligatory to move 1. Pushing it against a wall makes it necessary to move upwards to the place where the wall stops. And this is not possible unless the whole row is moved.
Reasonably satisfiede with the first 2 parts of the level it is now time for the last third part.
So far the level has a big empty area upper left so i just put in a few not exactly random boxes. Choose carefully. You still want your level to be solvable.
And sorry. I forgot. I added the boxes 4. long time ago to make access to the top a little more complicated as shown.
I want the access to the third part a little more complicated too and added a stop so now 1 can only be pushed one row up and you need to move 2.
But wait. !3 can be pushed two collumns left and the Sokoban has a totally new way out from the start? Does this change anything? Could be. The solution could be changed from long and tireing to short and unsatisfying. Not this time. Actually using the two row push creates a locked position and makes the level unsolvable.
Not very happy with the design I put the wall back to block untimely exits but added another box to hinder the movement of 1. upwards. As a result it now is necessary to move 2.
The questionmarks ? Read on.
Designing a big and complex level you need to solve yor design again and again to know it is still solvable. Doing this can be easy but can also be very time consuming and just adding e.g. a wall can change the solution or can make the design unsolvable.
To speed up the proces a solver is formidable. But even how good the solvers are nowadays they can’t solve this levelsize.
The trick is to solve some of the level and try a solver with the rest. Here I solved most of the upper and right part of the design and made a new design with the unsolved part of the design.
Sokolution had a go with the rest. With succes.
Afterwards i manually add the solution for the reduced design and presto. A solution for the level.
The questionmarks? Always try to put walls on floors you suspect are not needed. Added a wall at one of the above floors and Sokolution solved it.
Added another wall at the other floor and again Sokolution solved it.
And added another… No.
The final level:
And what did we achieve. Creating a level using my best solution still 10 boxes are not moved at all. And it might be possible to find solutions with even more dead boxes.
One thing I am not satisfied with is the marked “box”. A box I took care needed to be moved and now it comes out it isn’t necessarry? I might try another layout of the left side of the leve…
A few last things to make good designs: Be critical. Not everything need to be published and the Sokoban World have plenty of levels for beginners.
Ask for help. I often ask for help finding better solutions and finding dead boxes and unneeded floors and often gets adwise and suggestions.
And help I got. 2020-02-19 some screenshots arrived from Anian:
On the right side I thought it was necessary to move 5 for progress. But I didn’t spot you can make the illustrated movements (1 left, 2 right, 3 up, 2 back left and access to the bottom without moving 5 (and the two boxes on top of it)
On the left side I thought it was necessary to move 5 for further progress. Wrong again. 1 up, 2 up, 3 left and full access to the left side without moving 5.
Changing the layout lower left makes it impossible (And that is not true if you go left at the top of the level and make a few pushes lower left) to pass the lower part of the level from right to left so new you need to pass over this area and as a consequence the four boxes just right of the center need to be moved.
Not really. 2020-02-23 another mail and screenshot from China:
And the bottom of the level can be left nearly untouched.
Guess you have not seen the finished level yet.
So the challenge is
1. Making it mandatory to move O5
2. Making it necessary to move most of (if not all) of the lower 9 boxes.
This I did and Anian found three dead boxes added to the eight i allready announced:
The fact that D9 and D10 can be left untouched doesn’t surprise me much. Whatever version I made the upper left corner has been a weak part of the level. Actually I didn’t give this part of the level very much attention and it probably could be changed quite easily for less dead boxes.
The boxes not needed to move at the bottom is reduced to one.
The rest of the dead boxes (8) is the same as I already found.
I guess I am done for now since next upcoming is “Clubs” with lots of room for improvement I hope you will take part in.
And hopefully somebody will experiment with Mercedes making it better. Right now I’m loosing interest but this might come back. I’m sure I can make improvements. A tip: Start with making it necessary to move E7 to move F6. Or make a wall at F4 to make it very unpleasent to move F6.