<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sokobano.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sokobano</id>
	<title>Sokoban Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://sokobano.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sokobano"/>
	<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Special:Contributions/Sokobano"/>
	<updated>2026-04-17T14:06:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=How_to_play_Sokoban&amp;diff=8317</id>
		<title>How to play Sokoban</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=How_to_play_Sokoban&amp;diff=8317"/>
		<updated>2026-02-09T12:05:33Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8304 by Sokobano (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to play Sokoban. There are also simple strategies explained.&lt;br /&gt;
&lt;br /&gt;
First let&#039;s have a look at the rules of the game:&lt;br /&gt;
&lt;br /&gt;
The object of Sokoban is to take some objects (usually boxes) to designated locations by pushing them.&lt;br /&gt;
&lt;br /&gt;
To do this the user moves a man who we call Sokoban. Sokoban can move up, down, left and right. He can&#039;t pass through walls or boxes. He can push only one box at a time (never pull). At any time a square can only be occupied by one of a wall, box or man.&lt;br /&gt;
&lt;br /&gt;
A level contains these elements:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Walls:                    #&lt;br /&gt;
 Boxes:                    $&lt;br /&gt;
 Goals:                    .&lt;br /&gt;
 Free squares:            &#039; &#039;&lt;br /&gt;
 The Sokoban / the player: @&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boxes and the Sokoban can also be located on a goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Boxes on goals:           *&lt;br /&gt;
 The Sokoban on a goal:    +&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following the Sokoban is called &amp;quot;the player&amp;quot; to indicate that this is the object the user can move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Movements:&lt;br /&gt;
Nearly all Sokoban games can be played using the arrow keys. Nowadays many programs also support playing with the mouse.&lt;br /&gt;
All moves of the Sokoban need only to be done for pushing a box.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Level 1&lt;br /&gt;
 #########&lt;br /&gt;
 #@  $  .#&lt;br /&gt;
 #########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using the arrow keys one has to press the &amp;quot;right arrow&amp;quot; 5 times. &lt;br /&gt;
Using the mouse you have to mark the box for pushing (by clicking on it) and then clicking at the position the box is to be pushed to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Level 2&lt;br /&gt;
 ########&lt;br /&gt;
 #    ###&lt;br /&gt;
 #@$  ###&lt;br /&gt;
 #### ###&lt;br /&gt;
 ##   ###&lt;br /&gt;
 ##    ##&lt;br /&gt;
 #  ##. #&lt;br /&gt;
 #      #&lt;br /&gt;
 #####  #&lt;br /&gt;
 ########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the difference between playing with keyboard and playing with mouse is demonstrated. Using the mouse is as simple as in Level 1. Using the arrow keys needs a lot of key presses for pushing the box to the goal.&lt;br /&gt;
Hence, it&#039;s always recommended to use the mouse for playing. The advantages compared to keyboard playing are:&lt;br /&gt;
# With two clicks a box can be pushed to every possible square&lt;br /&gt;
# Most programs automatically calculates the best moves for the player. Hence the user doesn&#039;t have to think about how to move the player by keys.&lt;br /&gt;
# Some programs even show the squares a box can be pushed to. In this way it&#039;s easy to see if a box can be pushed to the selected position.&lt;br /&gt;
# The user can concentrate on pushes only instead of moves and pushes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Levels containing only one box are very simple to solve using the mouse: One just has to mark the box for pushing and then to choose the goal square as target.&lt;br /&gt;
&lt;br /&gt;
Usually Sokoban levels are a lot more complicated.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s increase the difficulty step by step:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Level 3&lt;br /&gt;
 ########&lt;br /&gt;
 #      #&lt;br /&gt;
 #  $  .#&lt;br /&gt;
 #@ $  .#&lt;br /&gt;
 #  $  .#&lt;br /&gt;
 #      #&lt;br /&gt;
 ########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here the level contains 3 boxes. Nevertheless the level can easily be solved. Although every box can be pushed to each goal it doesn&#039;t matter which box is pushed to which goal. The boxes can just be pushed one after the other to any goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Level 4&lt;br /&gt;
 ########&lt;br /&gt;
 #  #.  #&lt;br /&gt;
 # $#   #&lt;br /&gt;
 #  # @##&lt;br /&gt;
 #  # $##&lt;br /&gt;
 #    .##&lt;br /&gt;
 ########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This level is more complicated. The box under the player is close to a goal. Nevertheless it can&#039;t be pushed to the goal - this would result in a [[Deadlocks|deadlock]]. This level shows some problems one has to solve before it&#039;s possible to finish the level:&lt;br /&gt;
# Not every box can be pushed to every goal&lt;br /&gt;
# Boxes can&#039;t just be pushed to the nearest goal in every case&lt;br /&gt;
# Box pushes can create a [[Deadlocks|deadlock]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Level 5&lt;br /&gt;
 #########&lt;br /&gt;
 ##  #   #&lt;br /&gt;
 #.$.  $ #&lt;br /&gt;
 # #  ## #&lt;br /&gt;
 # @$.$. #&lt;br /&gt;
 #########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this level the boxes have to be pushed to their goals in a specific order. Moreover one box has to be pushed away from its goal before it can be pushed to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Level 6&lt;br /&gt;
 #########&lt;br /&gt;
 #  #   .#&lt;br /&gt;
 #@$ $   #&lt;br /&gt;
 # $ ##..#&lt;br /&gt;
 #   #####&lt;br /&gt;
 #########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This level is another example of the need to push a box away from its goal before the level can be solved. Additionally one box has to be &amp;quot;parked&amp;quot; until some other boxes have reached their goals. A situation where a box must be pushed but can&#039;t be pushed immediately to its goal occurs very often in Sokoban levels. Some of them are &amp;quot;parking&amp;quot; situations.&lt;br /&gt;
&amp;quot;Parking&amp;quot; means:&lt;br /&gt;
# a box must be pushed away from its goal &lt;br /&gt;
# after the box is pushed to its parking position another box has to be pushed&lt;br /&gt;
# parking the box at a specific position is required to solve the level&lt;br /&gt;
&lt;br /&gt;
== Reverse play ==&lt;br /&gt;
&lt;br /&gt;
Some Sokoban programs allow to play a puzzle backward. &lt;br /&gt;
&lt;br /&gt;
Starting with all boxes on goal squares, the player pulls the boxes to return to the initial puzzle state.&lt;br /&gt;
&lt;br /&gt;
Solutions found this way solve the standard puzzle when both the order and the direction of the moves are reversed.&lt;br /&gt;
&lt;br /&gt;
This approach can help players better understand the puzzle structure and develop effective solving strategies.&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8316</id>
		<title>Feature list : Game Play</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8316"/>
		<updated>2026-02-09T11:58:30Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8299 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game Play ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: GAME PLAY ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Game Play !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Game Play&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | autosave best solutions || {{yes}} tiebreaking: moves, pushes, secondary metrics || {{yes}} tiebreaking: moves, pushes || {{no}} || {{yes}} tiebreaking: moves, pushes || {{yes}} tiebreaking: moves, pushes, secondary metrics || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | autosave solutions options || always autosaves better solutions;&amp;lt;br&amp;gt;inferior solutions are discarded || autosave solutions options: never/always/if better/ask;&amp;lt;br&amp;gt;existing solutions are kept || {{no}} || autosave solutions options: none/best 5/best 10/all || always autosaves better solutions;&amp;lt;br&amp;gt;inferior solutions are discarded || optionally saves game when solved; &amp;lt;br&amp;gt; only one solution per saved game &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | push or move optimized pathfinding || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | move animation modes || smooth, cell by cell, instant || cell by cell, instant || cell by cell || smooth ||  cell by cell, instant&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;{{tip|(instant with [[Feature_info#Choice points|choice points]] is listed but is too fast to be useful)|menu=yes}} || cell by cell, instant &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | mouse move control: drag and drop || {{yes}} with reachable squares || {{yes}} without reachable squares || {{yes}} with reachable squares || {{yes}} with reachable squares || {{yes}} with reachable squares || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[#Mouse_Move_Control:_Select_and_drop|mouse move control: select and drop]] || {{yes}} with reachable squares || {{yes}} with reachable squares || {{yes}} with reachable squares || {{yes}} with reachable squares || {{yes}} with reachable squares || {{yes}} without reachable squares &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[#Mouse_Move_Control:_Drag_and_track|mouse move control: drag and track]] || {{no}} experimental click-less tracking available || {{no}} || {{no}} || {{no}} ||  {{no}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | reverse mode play starting at end position (pull instead of push) || {{yes}} || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | show secondary metrics (box-pushes, box-changes and pushing-sessions) || {{yes}} display: mouse over || {{yes}} display: optional, configurable || {{no}} || {{no}} || {{yes}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[#Lowerbound_of_solution_length_regarding_pushes|show a lowerbound of the solution length]] || {{no}} || {{no}} || {{yes}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | timing || {{yes}} optional; optional idle time threshold || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|-&lt;br /&gt;
| {{tc}} | move player&amp;lt;br&amp;gt;through boxes ||{{no}}|| {{no}} || {{yes}} || {{no}} || {{yes}} target: reachable squares through boxes.&amp;lt;br&amp;gt;figure: small black square.&amp;lt;br&amp;gt;via: options -&amp;gt; go through boxes. || {{no}} &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Game Play : Legal moves !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Game Play : Legal moves&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | show player&#039;s reachable squares|| {{yes}} figure: transparent small skin graphics || {{no}} || {{yes}} figure: transparent small skin graphics || {{yes}} ||  {{yes}} figure: small round blobs || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | show box&#039;s reachable squares || {{yes}} figure: transparent small skin graphics || {{yes}} figure: skin graphics, independent of box || {{yes}} figure: transparent small skin graphics || {{yes}} || {{yes}} figure: small round blobs || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | show pushable boxes || {{yes}} dynamically by clicking a wall.&amp;lt;br&amp;gt;figure: configurable border || {{no}} || {{no}} || {{no}} ||  {{yes}} permanent with &amp;lt;span class=&amp;quot;kbd&amp;quot;&amp;gt;CTRL&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;kbd&amp;quot;&amp;gt;F9&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;dynamically by clicking a wall.&amp;lt;br&amp;gt;figure: skin graphics, independent of box || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | show [[Deadlocks#Dead square deadlocks|dead squares]] || {{yes}}figure: configurable shaded square || {{no}} || {{yes}}figure: darker shaded square || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[#Simple deadlock detection|simple deadlock detection]] || {{yes}} dead squares, freezing boxes || {{no}} || {{yes}} dead squares, freezing boxes || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[#Advanced deadlock detection|advanced deadlock detection]] || {{yes}} {{tip|bipartite:&amp;lt;br&amp;gt;n boxes for m goals;&amp;lt;br&amp;gt;1 goal for n boxes;&amp;lt;br&amp;gt;corrals: precalculated at level load time + 100 ms search after a push}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Game Play : History !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Game Play : History&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | undo/redo || unlimited || unlimited || unlimited || unlimited || unlimited || unlimited &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | undo all || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} press [esc]|| {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | redo all || {{yes}} || {{no}} || {{yes}} || {{no}} ||{{no}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | replay || {{yes}} forwards and backwards || {{yes}} forwards || {{yes}} forwards || {{yes}} forwards and backwards || {{yes}} forwards (solutions only) || {{yes| via trackbar dragged to any position replays to that position}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | replay ergonomics || unified start/stop button; click anywhere to stop; keyboard shortcuts available; speed and direction can be changed during replay || separate start/stop buttons; click stop-button to stop; keyboard shortcuts available || unified start/stop button; click anywhere to stop; speed can be changed during replay || ||  with start/stop:&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;kbd&amp;quot;&amp;gt;CTRL&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;kbd&amp;quot;&amp;gt;F2&amp;lt;/span&amp;gt; to begin. &amp;lt;span class=&amp;quot;kbd&amp;quot;&amp;gt;SPACE&amp;lt;/span&amp;gt; to replay to next box-change. without start/stop: &amp;lt;span class=&amp;quot;kbd&amp;quot;&amp;gt;F2&amp;lt;/span&amp;gt; || trackbar represents replay history; drag trackbar to control replay; click anywhere, click [stop] button, or press [esc] to stop &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | mousewheel undo/redo/replay support || {{yes}} combined moves || {{yes}} single step or optional combined moves || {{yes}} combined moves || {{no}} ||  {{yes}} combined moves || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | browse move history || {{yes}} trackbar (choice-points, with preview) || {{yes}} trackbar (all moves, with preview) || {{yes}} trackbar (choice-points, with preview) || {{no}} || {{no}} || {{yes}} trackbar (all moves, no preview) &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | quicksave slots || {{yes}} unlimited (interface: graphical, window, thumbnail preview) || {{yes}} unlimited (interface: graphical, pop-up, list) || {{no}} || {{yes}} 3 (interface: graphical) || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | one-click load quicksaves || {{yes}} keyboard: press [Enter] to load currently selected snapshot; mouse: double-click a snapshot on the list || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | remember last session || {{yes}} file, level, history with redo, position {{tip|position is optional, default &amp;quot;off&amp;quot;, additionally, up to 25 recent (file, level)}} || {{yes}} file, level || {{yes}} file, level || {{yes}} file, level, history without redo, position || {{yes}} file, level, history without redo, position || {{no}} &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: FEATURE-INFO ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
&lt;br /&gt;
=== Choice points ===&lt;br /&gt;
&lt;br /&gt;
A choice point in the game is when the player changes from one box to another, or finishes a series of moves that pushed a box in a single direction.&lt;br /&gt;
&lt;br /&gt;
Several programs have replay features related to choice points. Sokofan, for example, has replay buttons (called &amp;quot;smart do/undo&amp;quot;) to move from one choice point to another. Another example is the game history browser in Sokoban YASC which works with choice points instead of individual moves.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mouse Move Control: Select and drop ===&lt;br /&gt;
Lift and drop. Left click on a box to lift it, move to the wanted position and left click again to drop. Lift and drop is easier for long moves than the drag and drop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mouse Move Control: Drag and track ===&lt;br /&gt;
Point at the pusher with the mouse and move it in the direction you want. The pusher will track your movements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simple deadlock detection ===&lt;br /&gt;
&lt;br /&gt;
Simple deadlock detection deals with deadlock types that require rather simple analysis of the board and the game state. Good examples are:&lt;br /&gt;
&lt;br /&gt;
* [[Deadlocks#Dead square deadlocks|Dead squares]]&lt;br /&gt;
&lt;br /&gt;
* [[Deadlocks#Freeze deadlocks|Freeze deadlocks]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced deadlock detection ===&lt;br /&gt;
&lt;br /&gt;
Advanced deadlock detection deals with deadlock types that require quite sophisticated computations. Good examples are:&lt;br /&gt;
&lt;br /&gt;
* [[Deadlocks#Bipartite deadlocks|Bipartite deadlocks]]&lt;br /&gt;
&lt;br /&gt;
* [[Deadlocks#Corral deadlocks|Corral deadlocks]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lowerbound of solution length regarding pushes ===&lt;br /&gt;
&lt;br /&gt;
For solving a level all boxes have to be pushed to goals. A program can calculate the distance of every box to the nearest goal. While doing this it is presumed only one box is on the board (hence the box does not need to be pushed around other boxes). The sum of all these box distances to their goals results in a lowerbound - no matter how the boxes are pushed to their goals the level can never be solved with fewer than the calculated number of pushes. Some programs can calculate a lowerbound for the solution length (in pushes):&amp;lt;br&amp;gt;&lt;br /&gt;
number of pushes so far + sum of all box distances to their nearest goals (presuming no other boxes are on the board).&amp;lt;br&amp;gt;&lt;br /&gt;
This lowerbound can be useful in levels like the &amp;quot;Kobus Theron&amp;quot;-series.&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;!-- ::::: End FEATURE-INFO ::::: --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Management&amp;diff=8315</id>
		<title>Feature list : Level Management</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Management&amp;diff=8315"/>
		<updated>2026-02-09T11:56:15Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8301 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Level Management ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: LEVEL MANAGEMENT ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Level Management !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Level Management&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | copy/paste level(s) (normal) || {{yes}} || {{yes}}{{tip|partial implementation of import: one level at a time; works for raw boards without meta data only}} || {{yes}}{{tip|levels can also be pasted by using drag&amp;amp;amp;drop of a level file}} || &amp;lt;big style=&amp;quot;color: red;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;?&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;{{tip|Will somebody with a full version check if it works here&amp;lt;br&amp;gt; the demo version has it on the menu in the editor and it does not mention any restrictions, but it does not work|text=Help}} || {{yes}} {{tip|flaw: pasted levels are not saved|text=flaw}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | copy/paste levels (run-length-encoded) || {{yes}} || {{no}} || {{yes}} || {{no}} || {{yes}} {{tip|flaw: pasted levels are not saved |text=flaw}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | copy map&amp;lt;br&amp;gt; (current state) || {{yes}}via [ CTRL + click &amp;quot;tools&amp;quot;] and editor || {{yes}} || {{yes}} || {{no}} ||  {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | copy level(s) with solution(s) || {{yes}}(multiple) || {{no}} || {{yes}}(single) || {{no}} || {{yes}}(single) || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | paste level(s) with solution(s) || {{yes}}(multiple) || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | edit level information (e.g., title, author) || {{yes}} via &amp;quot;open&amp;quot; window || {{yes}} via menu: level-&amp;amp;gt;about;&amp;lt;br&amp;gt;properties: title, author, comment || {{no}} || {{yes}} via menu: file-&amp;amp;gt;edit mode + file-&amp;amp;gt;attributes;&amp;lt;br&amp;gt;properties:title, description, copyright, email, website || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | edit levelset information (e.g., title, copyright) || {{no}} || {{yes}} via menu: levelset-&amp;amp;gt;about; properties: title, author, copyright, comment || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | load multiple files || {{no}} || {{yes}} || {{no}} || {{un}} {{tip|with all loaded levelsets in a list it is just as easy to browse the whole list}} || {{un}} {{tip|with all loaded levelsets in a list it is just as easy to browse the whole list}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | merge level files || {{yes}} (merge is a feature in the &amp;quot;open&amp;quot; window:&amp;lt;br&amp;gt;menu -&amp;amp;gt; file conversion...) || {{yes}}(via: open and select multiple files.) || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | recent levels history || {{yes}} 25 items {{tip|holding a unified recent file history for all loaded file-types, e.g., levels and background images}} || {{no}} || {{un}} {{tip|with all loaded levelsets in a list it is just as easy to browse the whole list}} || {{un}} {{tip|with all loaded levelsets in a list it is just as easy to browse the whole list}} || {{un}} {{tip|with all loaded levelsets in a list it is just as easy to browse the whole list}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | saves levels with format || {{yes}} sok (.sok) || {{yes}} sok (.sok),&amp;lt;br&amp;gt;xsokoban (.txt, .xsb),&amp;lt;br&amp;gt;games 4 brains (.lp0),&amp;lt;br&amp;gt;xml text file (.sls) || {{yes}} sok (.sok) || {{yes}} xml text file (.sls) ||  {{no}} || {{yes}} savegame text file (.sokosave) &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Level Management&amp;amp;nbsp;: Import and Export for Internet !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Level Management&amp;amp;nbsp;: Import and Export for Internet&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | import levels with hyphens &amp;quot;-&amp;quot; or underscores &amp;quot;_&amp;quot; || {{yes}} via clipboard and load level || {{yes}} via clipboard and load level || {{yes}} via clipboard and load level || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | export levels with hyphens &amp;quot;-&amp;quot; or underscores &amp;quot;_&amp;quot; || {{yes}}via clipboard || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | stripping leading &amp;quot;&amp;amp;gt;&amp;quot; characters || {{yes}} (all leading &amp;quot;&amp;amp;gt;&amp;quot; characters are stripped) || {{no}} || {{yes}} (stripping leading &amp;quot;&amp;amp;gt;&amp;quot; characters: boards, not moves) || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | accepts alternative characters for boards || {{yes}}characters: p,P,b,B,o || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Level_format]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SokRFI - Sokoban Requests for Implementation ==&lt;br /&gt;
&amp;lt;!-- ::::: SOKRFI - SOKOBAN REQUESTS FOR IMPLEMENTATION ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;50&amp;quot; | Level Management : SokRFI - Sokoban Requests for Implementation&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;120&amp;quot; {{tc}} | Feature || {{tc}} | Description&lt;br /&gt;
|-&lt;br /&gt;
|{{tc}}| split levelset || SokoSave offers a utility for this feature. &amp;lt;br&amp;gt;(External program [http://www.high-speed-software.com/sokosave/sokosavedesktop/sokosplit/ SokoSplit] can be downloaded)&lt;br /&gt;
|-&lt;br /&gt;
|{{tc}}| export levels to internet ||&lt;br /&gt;
&amp;lt;b&amp;gt; Export levels to internet &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This feature can be used to publish level(s) in a web-site.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The export can have different variants:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Generating the strings with code HTML.&amp;lt;br&amp;gt;&lt;br /&gt;
With links to download levels or thumbnails of each level.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Generating the strings with code [http://web.singnet.com.sg/~fclim/sbml/index.html SBML] (SokoBan Markup Language).&amp;lt;br&amp;gt;&lt;br /&gt;
Exporting with this language, levels can be customized by the user for the graphic representation of the maps, as well as provide a meta-information semantics of each level.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;b&amp;gt;Alternative development&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[SokRFI - Export Levels to Internet]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;b&amp;gt;Utility&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Sokoban++ offers a utility for this feature.&amp;lt;br&amp;gt;(External program [http://www.joriswit.nl/sokoban/junk/ Sokoban Website Generator] can be downloaded)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Miscellaneous&amp;diff=8314</id>
		<title>Feature list : Miscellaneous</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Miscellaneous&amp;diff=8314"/>
		<updated>2026-02-09T11:56:04Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8300 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: MISCELLANEOUS ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Miscellaneous !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Miscellaneous&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | builtin help and program information || {{yes}} rich text document (rtf) || {{yes}} html pages (html) || {{yes}} Java help || {{yes}} html pages (htm) ||  {{yes}} ascii text document || {{yes}} html page (html) &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | context sensitive help || {{no}} || {{yes}} || {{yes}} {{tip|Pressing the help key (F1) opens the help}} || {{no}} {{tip|however, the web-page says otherwise|text=note}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | customizable language || {{no}} || {{yes}} || {{yes}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | languages || English || English, Afrikaans, Danish (embarrassing), Dutch, German, Greek, Finnish, French, Italian, Polish, Portugese, Russian, Spanish (Spain, Argentina), Turkish, Slovenian, Swedish || English, German, Chinese (Simplified), Spanish, Dutch  || English ||  English, Bulgarian, Chinese (Simplified, Traditional), German, Spanish || English &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | builtin solutions || {{yes}} {{tip|all levels ship with builtin solutions}} || {{yes}} {{tip|not all levels ship with builtin solutions}} || {{yes}} {{tip|not all levels ship with builtin solutions}} || {{yes}} {{tip|not all levels ship with builtin solutions}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | file type associations (optional) || {{no}} || {{yes}} .sls, .pak, .rdf, .lp0, .xsb, .sok, .sxl, .slc || {{no}} || {{no}} ||  {{no}} || {{yes}} .sokomaze, .xsb, .sokohex, .hsb, .sokotri, .tsb, .sokosave &amp;lt;br /&amp;gt;Windows, Mac OS X &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | accessibility for portable version || {{no}} || {{no}} || {{no}} || {{no}} ||  {{yes}}{{tip|&amp;lt;b&amp;gt;compatible installation:&amp;lt;/b&amp;gt; yes&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;system modification:&amp;lt;/b&amp;gt; no&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;generated data:&amp;lt;/b&amp;gt; saves the files created in the removable device.&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;additional:&amp;lt;/b&amp;gt; edition for mobile phone, java MIDP 2.0 only.|width=200px}} || {{no}} &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--FEATURE_INFO--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
===Portable software===&lt;br /&gt;
&#039;&#039;From Wikipedia, the free encyclopedia&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be considered &#039;&#039;&#039;truly portable&#039;&#039;&#039;, a software program must:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Not require any form of formal installation to be carried out on any computer before it can be used, with the release package only needing to be decompressed directly to removable media before use (if it has to be installed first, and requires it&#039;s files to be manually copied to removable media, it&#039;s clearly not designed to be portable!).&amp;lt;br&amp;gt;For example, software which is supplied as an InstallShield package could not be considered portable, though a ZIP archives containing an executable would be.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Settings are stored with, and can be carried around with, the software (i.e. they are written to the USB drive).&amp;lt;br&amp;gt;If the registry is used to store settings; the application&#039;s configuration isn&#039;t portable, and must be set up on every PC it is used on&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Leaves a zero (or near-zero) &amp;quot;footprint&amp;quot; on any PC it&#039;s run on after being used.&amp;lt;br&amp;gt;i.e. All temporary files/registry settings should be removed once the program has exited, and files created by the user can be saved directly to the same removable media as the application is stored on.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Generally, smaller utility/toolkit software is inherently fairly portable; though larger applications are sometimes changed in order to allow a portable versions to be released (e.g. FirefoxPortable)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--/FEATURE_INFO--&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Editor&amp;diff=8313</id>
		<title>Feature list : Level Editor</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Editor&amp;diff=8313"/>
		<updated>2026-02-09T11:55:52Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8298 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Tools : Level Editor ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: ADDITIONAL TOOLS - LEVEL EDITOR ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSoko | SokForWindows | YSokoban --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Additional Tools - Level Editor !!&lt;br /&gt;
|- {{programs|5=&amp;amp;nbsp;|6=&amp;amp;nbsp;}}&lt;br /&gt;
| {{tc}} | editor || built-in || built-in || built-in || built-in &lt;br /&gt;
|-&lt;br /&gt;
| {{tc}} | drawing objects || wall, box, goal, player || none, floor, goal, box-on-floor, box-on-goal, player-on-floor, player-on-goal, wall || wall, box, goal, player, floor || floor, goal, box, wall&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | drawing tools || objects, eraser, rubber-band, fill || objects, pencil, drop, fill, line, rectangle, filled rectangle || objects || objects, move player, move box &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | drawing logic || select object + &amp;lt;br&amp;gt;click-and-drag the board to put objects on the board || select object + &amp;lt;br&amp;gt;select drawing tool + &amp;lt;br&amp;gt;click-and-drag the board to put objects on the board || select object + &amp;lt;br&amp;gt;click-and-drag the board to put objects on the board || select object + &amp;lt;br&amp;gt;click-and-drag the board to put objects on the board&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | drawing logic inconveniences || the board jumps around on the screen when automatic scaling and positioning kick in || drawing with tools like lines and rectangles don&#039;t show the objects on the screen during the drawing process || the board jumps around on the screen when automatic scaling and positioning kick in || The &amp;quot;move&amp;quot; tool works for boxes and the player only, not for goals &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | savegames and solutions for modified levels are retained after cosmetic changes (e.g., transformations and adding/removing extra floors/walls) || {{yes}} || {{no}} the savegames and solutions are still there in the files, but they are not applicable to the modified level || {{no}} || &amp;lt;big style=&amp;quot;color: red;background:beige;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;?&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt; {{tip|&amp;lt;small&amp;gt;will somebody with a full version check if it is &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;&amp;lt;/small&amp;gt;|text=help}}&lt;br /&gt;
|-&lt;br /&gt;
| {{tc}} | undo || {{yes}} unlimited || {{yes}} unlimited || {{no}} || {{yes}} unlimited&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | redo || {{yes}} unlimited || {{yes}} unlimited || {{no}} || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | undo/redo logic || one complete transaction at a time || one complete transaction at a time || || one cell at a time&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | undo/redo history is saved from one session to the next || {{yes}} || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | undo/redo multiple transactions: interface || pull-down menu: 1,2,4,8,... transactions || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | undo/redo multiple transactions: preview || {{no}} || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | &amp;quot;rubber-band&amp;quot; area selection || {{yes}}(features: move, copy, paste, delete, transform, fill) || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|- {{programs|5=&amp;amp;nbsp;|6=&amp;amp;nbsp;}}&lt;br /&gt;
| {{tc}} | board transformations || {{yes}} rotate counter-clockwise and clockwise, flip vertically and horizontally. || {{yes}} rotate clockwise, flip vertically || {{yes}} rotate counter-clockwise and clockwise, flip vertically and horizontally || {{yes}} rotate counter-clockwise and clockwise, flip vertically and horizontally&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | resize board || {{un}} {{tip|the board is automatically positioned so it&#039;s possible to draw on all 4 sides}} || {{yes}} (via toolbar button: resize level) || {{un}} {{tip|the board is automatically positioned so it&#039;s possible to draw on all 4 sides}} || {{un}} {{tip|&amp;quot;move board&amp;quot; does not clip the level to a predefined size like, e.g., Sokoban++ does}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | move board || {{un}} || {{yes}} || {{un}} || {{yes}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | one-click switching between play/edit mode || {{yes}} || {{no}} use menu: game-&amp;amp;gt;mode || {{no}} || {{yes}} {{tip|partial implementation: no visible button but a keyboard shortcut &amp;quot;Alt+P&amp;quot;|text=partial}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | board validation on switching from edit mode to play mode || {{yes}} || {{no}} all boards are playable || {{yes}} || &amp;lt;big style=&amp;quot;color:red;background:beige&amp;quot;&amp;gt;&amp;lt;b&amp;gt;?&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;{{tip|&amp;lt;small&amp;gt;will somebody with a full version check if it happens automatically&amp;lt;/small&amp;gt;|text=help}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | customizable skin || {{yes}} format: simple image-based skins without seamless walls || {{yes}} same skin in edit mode and in play mode || {{yes}} same skin in edit mode and in play mode || {{yes}} same skin in edit mode and in play mode&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | customizable button images || {{yes}} || {{no}} || {{yes}} || {{un}} {{tip|the editor uses menus and has no buttons}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | button images automatically synchronized with skin images || {{no}} || {{no}} || {{yes}} || {{un}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | windows clipboard copy/paste || {{yes}} || {{yes}} {{tip|partial implementation: imports / exports complete levels instead of copying / pasting sections to the existing &amp;quot;document&amp;quot;, i.e., the board|text=partial}} || {{no}} || &amp;lt;big style=&amp;quot;color: red;background:beige;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;?&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt; {{tip|(will somebody with a full version check if it works here;&amp;lt;br&amp;gt; the demo version has it on the menu in the editor and it does not mention any restrictions, but it does not work)|width=260px|text=help}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | internal clipboard with multiple items || {{yes}} unlimited, persistent, with preview || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | edit board as text || {{no}} || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Moves_Management&amp;diff=8312</id>
		<title>Feature list : Moves Management</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Moves_Management&amp;diff=8312"/>
		<updated>2026-02-09T11:55:36Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8297 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Moves Management ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: MOVES MANAGEMENT :::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Moves Management !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Moves Management&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | copy/paste moves (normal) || {{yes}} || {{yes}} || {{yes}} || {{yes}} {{tip|partial implementation: solutions only, not savegames&amp;lt;br&amp;gt;flaw: imported solutions are lost when the program exits&amp;lt;br&amp;gt;flaw: imported moves are listed as solutions even if this is not the case|width=200px}} || {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | copy/paste moves (run-length-encoded) || {{yes}} || {{yes}} partial: paste only || {{yes}} || {{no}} ||  {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | copy moves after the current position || {{yes}}via keyboard: Ctrl+B || {{yes}}via menu: position -&amp;amp;gt; copy || {{yes}} Ctrl+Shift+M || {{no}} ||  {{yes}}via keyboard: Ctrl+Alt+C || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | paste moves as continuation of current position || {{yes}} || {{yes}} || {{yes}} || {{no}} ||  {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | rotate and/or flip moves || {{no}}{{tip|board rotations and flips automatically synchronize existing savegames and solutions}} || {{no}} external program [http://www.joriswit.nl/sokoban/junk/solutionrotator.zip Solution Rotator] can be downloaded || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | edit move information (e.g, title, author, comment) || {{yes}}via snapshot window || {{yes}}via menu: position-&amp;amp;gt;save; properties: title || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | recreate maps from solutions || {{yes}} multiple solutions, with titles and info || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | load and save moves || sok (ascii text file, levels); clipboard: import/export || xht,txt (ascii text file, solutions), mov (sokofun movie); clipboard: import/export || sok (ascii text file, levels); clipboard: import/export || gam (xml text file, level); clipboard: import/export || txt (ascii text file, levels); clipboard: import/export || sokosave&amp;lt;br&amp;gt;(savegame file) &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Solution_format]] (German language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SokRFI - Sokoban Requests for Implementation ==&lt;br /&gt;
&amp;lt;!-- ::::: SOKRFI - SOKOBAN REQUESTS FOR IMPLEMENTATION ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;50&amp;quot; | Moves Management : SokRFI - Sokoban Requests for Implementation&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;120&amp;quot; {{tc}} | Feature || {{tc}} | Description&lt;br /&gt;
|-&lt;br /&gt;
|{{tc}}| animation snapshots capture: solutions || Sokoban++ offers a utility for this feature.&amp;lt;br&amp;gt;(External program [http://www.joriswit.nl/sokoban/junk/ Sokoban Animator] can be downloaded)&lt;br /&gt;
|-&lt;br /&gt;
|{{tc}}| export solution as animation || Free formats:&amp;lt;br&amp;gt;&lt;br /&gt;
Text file:&lt;br /&gt;
:Scalable Vector Graphics ([http://www.w3.org/Graphics/SVG/ SVG]).&lt;br /&gt;
:Implementation with a  [http://www.treebuilder.de/svg/sokoban/sokobano.svg template&amp;amp;#160;SVG].&lt;br /&gt;
Image file:&lt;br /&gt;
:Animated PNG ([http://wiki.mozilla.org/APNG_Specification APNG]) available with Firefox 3.&lt;br /&gt;
:[http://easysok.sourceforge.net EasySok] as alternative can save all the snapshots in a movie MNG.&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Customizing&amp;diff=8311</id>
		<title>Feature list : Customizing</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Customizing&amp;diff=8311"/>
		<updated>2026-02-09T11:55:25Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8296 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Customizing ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- ::::: CUSTOMIZING :::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!--:--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Customizing !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Customizing&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | settings interface || {{yes}} graphical user interface (tree-view) || {{yes}} graphical user interface (tabbed notebook view) || {{yes}} graphical user interface || {{yes}} graphical user interface (tabbed notebook view) ||  {{yes}} graphical user interface (window) || {{yes}} graphical user interface (window) &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | configurable statusbar (e.g., level title, moves, pushes) || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | configurable game state graphics (e.g., moves/pushes) || {{yes}} fonts, colours, buttons (static layout) || {{yes}} skin graphics (configurable layout) || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | customizable cursors || {{no}} || {{yes}} graphics, skin dependent || {{no}} || {{yes}} small/large built-in cursors ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | customizable mouse actions || {{yes}}(only right-click) || {{no}} || {{no}} || || {{yes}}(buttons: left, middle, right) || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | customizable sound events || {{yes}} independent || {{yes}} skin dependent || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | background music || {{no}} &amp;lt;!--source: cd-audio, folder, playlist&amp;lt;br&amp;gt;formats:&amp;lt;br&amp;gt;cda, mid, mp3, wma&amp;lt;br&amp;gt;(limited mp3 support)--&amp;gt; || {{no}} || {{no}} || {{yes}} source: folder&amp;lt;br&amp;gt;formats: midi, mp3. || {{no}} || {{no}} &lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Customizing : Background Image!! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Customizing : Background Image&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | customizable backgrounds || {{yes}} independent, with preview || {{yes}} skin dependent || {{yes}} independent || {{yes}} skin dependent || {{yes}} independent, with preview || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | background control || {{yes}} source: color, image;&amp;lt;br&amp;gt;(image view: center, scale, stretch, tile) || {{yes}} source: color, image;&amp;lt;br&amp;gt;(image view: center, stretch, tile) || {{no}} || {{yes}} source: image;&amp;lt;br&amp;gt;(image view: tile) || {{yes}} source: image;&amp;lt;br&amp;gt;(image view: center, stretch, tile) || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | quick browse backgrounds || {{no}} &amp;quot;slow&amp;quot; browse via settings || {{no}} || {{yes}} browse with preview via settings || {{no}} || {{yes}} tool button with drop-down list || {{no}} &lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SokRFI - Sokoban Requests for Implementation ==&lt;br /&gt;
&amp;lt;!-- ::::: SOKRFI - SOKOBAN REQUESTS FOR IMPLEMENTATION ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;50&amp;quot; | Customizing : SokRFI - Sokoban Requests for Implementation&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;120&amp;quot; {{tc}} | Feature || {{tc}} | Description&lt;br /&gt;
|-&lt;br /&gt;
|{{tc}}| background-image changer || This feature is for the users that look for to always have a different background, playing a level.&amp;lt;br&amp;gt;It is applied to the following events in the program:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#8226; On program start-up&amp;lt;br&amp;gt;&amp;amp;#8226; After solving a level.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For the convenience of users and updates are groups all backgrounds in a single folder.&amp;lt;br&amp;gt;One can also choose the mode in that the background will be changed:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#8226; Next image.&amp;lt;br&amp;gt;&amp;amp;#8226; Previous image.&amp;lt;br&amp;gt;&amp;amp;#8226; Random image.&amp;lt;p&amp;gt;Implemented in Sokomind&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Multi-player_Mode&amp;diff=8310</id>
		<title>Feature list : Multi-player Mode</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Multi-player_Mode&amp;diff=8310"/>
		<updated>2026-02-09T11:55:12Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8295 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Multi-player Mode ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: MULTI-PLAYER MODE :::::  --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Multi-player Mode !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Multi-player Mode&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | [[Feature_list_:_Multi-player_Mode#Multi-player|multi-player]] || {{no}} || {{yes}}(options: create new player, change player) || {{no}} || {{yes}}(options: create new player, change player) || {{yes}}(options: create new player, change player) || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | edit player information&amp;lt;br&amp;gt;(e.g. name, email, country) || {{no}} || {{no}} || {{no}} || ||  {{no}} || {{yes}} {{tip|only when recording high score}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | display personal high-scores || {{yes}} {{tip|cramped implementation and disabled by default. Enable it in &amp;quot;open&amp;quot; window via menu&amp;amp;nbsp;-&amp;amp;gt;&amp;amp;nbsp;show solutions}} || {{yes}} via menu: level&amp;amp;nbsp;-&amp;amp;gt;&amp;amp;nbsp;choose || {{no}} || {{yes}} via menu: view&amp;amp;nbsp;-&amp;amp;gt;&amp;amp;nbsp;scores and solutions || {{yes}} drop-down list || {{yes}} via menu: help -&amp;amp;gt; scores &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | compare high-scores&amp;lt;br&amp;gt;of all the players || {{ni|/a|Not applicable&amp;lt;br /&amp;gt;to single-player programs.}} || {{yes}} general and personal scores || {{ni|/a|Not applicable&amp;lt;br /&amp;gt;to single-player programs.}} || {{yes}}ranking with all the players ||  {{no}} || {{ni|/a|Not applicable&amp;lt;br /&amp;gt;to single-player programs.}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | save and restore the player profiles&amp;lt;br&amp;gt;(e.g. high-scores, settings) || {{ni|/a|Not applicable&amp;lt;br /&amp;gt;to single-player programs.}} || {{yes}} player position file (*.sav) || {{ni|/a|Not applicable&amp;lt;br /&amp;gt;to single-player programs.}} || ||{{yes}} player info file (*.SokoInfo) || {{ni|/a|Not applicable&amp;lt;br /&amp;gt;to single-player programs.}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | remember each player&#039;s session &amp;lt;br&amp;gt;(e.g. level, skin, quicksaves) {{tip|not to be confused with a single player program&#039;s ability to do the same.&amp;lt;br&amp;gt;Feature implemented in Sokonline.|text=note}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: FEATURE-INFO ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Info&amp;lt;/h2&amp;gt;&lt;br /&gt;
=== Multi-player ===&lt;br /&gt;
 &lt;br /&gt;
This modality is useful for the competitions, each user can have his own configurations. As the personalization, with their scores, personal information, as the option of sending their solutions via e-mail.&lt;br /&gt;
&lt;br /&gt;
These are options for the soko-programs that point, to give the option for competitive players that participate in the challenges of internet. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Related programs&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://sokoban.online.fr/mon_player.html Sokonline]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;!-- ::::: End FEATURE-INFO ::::: --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Additional_Tools&amp;diff=8309</id>
		<title>Feature list : Additional Tools</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Additional_Tools&amp;diff=8309"/>
		<updated>2026-02-09T11:40:13Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8294 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX :::::--&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Tools ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: ADDITIONAL TOOLS ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Additional Tools !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Additional Tools&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | level editor&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;([[Feature_list_:_Level_Editor|see details below]])&amp;lt;/small&amp;gt; || {{yes}} || {{yes}} || {{yes}} || {{yes}} ||{{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | solver&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;([[Feature_list_:_Solver|see details below]])&amp;lt;/small&amp;gt; || {{yes}} common solver plugins (allowing continued game play) || {{yes}} common solver plugins (blocking game play) || {{yes}} built-in (blocking game play) || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | optimizer&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;([[Feature_list_:_Solver#Additional_Tools_:_Optimizer|see details below]])&amp;lt;/small&amp;gt; || {{yes}} common optimizer plugins (allowing continued game play) || {{no}} || {{yes}} built-in (blocking game play) || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | locate and browse duplicates or look-alikes&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;([[Feature_list_:_Duplicate_Finder|see details below]])&amp;lt;/small&amp;gt; || {{yes}} || {{no}} || {{no}} || {{no}} ||  {{no}} external program [http://geocities.com/ygp_bg/sokodup.zip Soko-Dup] can be downloaded || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | skin graphics editor || {{no}} skin script editor available || {{no}} skin script editor available || {{no}} || {{yes}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | level generator || {{yes}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | optimizer for unnecessary moves between pushes || {{yes}} automatically during game-play || {{yes}} manually via menu || {{yes}} automatically during game-play || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | level file converters || {{yes}} {{tip|SokoMind (including solutions),&amp;lt;br&amp;gt;Sokoban for Windows by Björn Källmark (including solutions),&amp;lt;br&amp;gt;Sokofan (including solutions)|width=250px|text=file types}} || {{yes}} {{tip|ASCII (*.txt, *.xsb, *.screen, *.skm, *.scb),&amp;lt;br&amp;gt;Sokoban (*.sls),&amp;lt;br&amp;gt;Visual Sokoban 1 and 2 (*.pak),&amp;lt;br&amp;gt;WinSoko (*.rdf),&amp;lt;br&amp;gt;Games 4 Brains (*.lp0),&amp;lt;br&amp;gt;Mark McIntyres Soko (*.sok),&amp;lt;br&amp;gt;XML Sokoban (*.xml),&amp;lt;br&amp;gt;Sokoban XP (*.sxl),&amp;lt;br&amp;gt;Games 4 Brains Sokoblue (*.dat),&amp;lt;br&amp;gt;Icons (*.ico),&amp;lt;br&amp;gt;Björn Källmark&#039;s xml format (*.slc)|width=270px|text=file types}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | image snapshot capture || {{no}} || {{yes}} miniature level bitmap with 1 pixel per square; via menu: level-&amp;amp;gt;copy level || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Skin_Features&amp;diff=8308</id>
		<title>Feature list : Skin Features</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Skin_Features&amp;diff=8308"/>
		<updated>2026-02-09T11:39:57Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8293 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skin Features ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: SKIN FEATURES ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Skin Features !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Skin Features&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | customizable skin || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | skin formats || {{yes}} meta-script language {{tip|includes scripts for importing the following skin formats:&amp;lt;br&amp;gt;common sokoban skin images (YSokoban),&amp;lt;br&amp;gt;Sokoban++ skin scripts,&amp;lt;br&amp;gt;Sokofan skin scripts,&amp;lt;br&amp;gt;Visual Sokoban skin scripts,&amp;lt;br&amp;gt;Sokoban for Windows skin scripts (Björn Källmark),&amp;lt;br&amp;gt;Sokoban BDE images,&amp;lt;br&amp;gt;SuperSoko skin images,&amp;lt;br&amp;gt;SokoStation4 skin scripts&amp;lt;br&amp;gt;JSoko skin scripts|width=210px}} || {{yes}} Sokoban++ skin scripts (ini) || {{yes}} two built-in skins || {{yes}} Sokoban for Windows skin scripts (skn) || {{yes}} common sokoban skin images (YSokoban) || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | resizeable skins || {{yes}} || {{no}} || {{yes}} || {{yes}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | pseudo-3D skins (sokoban++ style) || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | legal moves box animation (ysokoban style) || {{yes}} || {{no}} || {{no}} || {{no}} || {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | legal moves player animation (ysokoban style) || {{yes}} || {{no}} || {{no}} || {{no}} ||{{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | solution animation (ysokoban style) || {{yes}} || {{no}} || {{no}} || {{no}} ||  {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | animation frame extrapolation (morphing) || {{yes}} 30 frames || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | directional player || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | directional player can return to an &amp;quot;at ease&amp;quot; position || {{no}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | directional box|| {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | directional box can return to an &amp;quot;at ease&amp;quot; position || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | support for seamless walls&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(as opposed to discrete walls)&amp;lt;/small&amp;gt; || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | walls can be transparent || {{no}} || {{no}} skin dependent || {{yes}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | floors can be transparent || {{yes}} || {{no}} skin dependent || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | skin browser with preview || {{yes}} image-based skins; not scripted skins || {{no}} || {{yes}} || {{yes}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | recent skins history || {{yes}} || {{yes}} || {{no}} || {{un}} {{tip|with all skins in a list it is just as easy to browse the whole list}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | quick browse skins || {{yes}} menu: default, recent skins; keyboard shortcuts: next, default || {{yes}} menu: default, recent skins || {{yes}} menu: skin list || {{yes}} menu: skin list || {{yes}} use F4-F8 to select one of the loaded skins || {{no}} &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Duplicate_Finder&amp;diff=8307</id>
		<title>Feature list : Duplicate Finder</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Duplicate_Finder&amp;diff=8307"/>
		<updated>2026-02-09T11:39:41Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8292 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Tools : Duplicate Finder ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: ADDITIONAL TOOLS - Duplicate Finder ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokofan | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Mobile | SokoSave Desktop | SuperSoko | Tse --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Additional Tools : Duplicate Finder !! &lt;br /&gt;
|- {{programs|3=&amp;amp;nbsp;|4=&amp;amp;nbsp;|6=&amp;amp;nbsp;}}&lt;br /&gt;
| {{tc}} | duplicate finder || built-in ||{{ni}} {{tip|(Alternatively has the feature &#039;&#039;&#039;duplicate levels exchange solutions&#039;&#039;&#039;)|text=note|menu=yes}} || || || external utility&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | search type || {{yes}} equal and similar levels.&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;type:&amp;lt;/b&amp;gt; rotated and mirrored, dead squares removal, normalized walls, normalized pusher position. || || || || {{yes}} equal and similar levels.&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;type:&amp;lt;/b&amp;gt; rotated and mirrored, dead squares removal, normalized walls, normalized pusher position. &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | relaxed match options || {{yes}}{{tip|* with/without boxes&amp;lt;br&amp;gt;* with/without goals&amp;lt;br&amp;gt;* with/without interior walls&amp;lt;br&amp;gt;* with/without exterior walls}} ||  || || || {{yes}}{{tip|* targets only, with optional threshold count&amp;lt;br&amp;gt;* without pusher and boxes&amp;lt;br&amp;gt;* walls only&amp;lt;br&amp;gt;* without internal walls&amp;lt;br&amp;gt;* floors only}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | search current level duplicates || {{yes}} || || || || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | duplicate levels preview || {{yes}} ||  || || ||  {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | search history || {{tip|a persistent user maintained &amp;quot;scanned folders&amp;quot; list is available|text=note}} ||  || || || {{no}}&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | export report duplicates ||{{yes}}|| || || ||{{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | duplicate levels exchange solutions || {{yes}} {{tip| normalized levels exchange solutions, i.e., an exact match is not required.}} || {{yes}} {{tip|identical levels automatically exchange their solutions}} || || || {{yes}} &lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: FEATURE-INFO :::: --&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
=== Related pages ===&lt;br /&gt;
&lt;br /&gt;
* [[Pruning_duplicate_positions|Pruning duplicate positions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;!-- ::::: End FEATURE-INFO :::: --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Solver&amp;diff=8306</id>
		<title>Feature list : Solver</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Solver&amp;diff=8306"/>
		<updated>2026-02-09T11:32:49Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8291 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Tools : Solver ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: ADDITIONAL TOOLS - SOLVER ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokofan | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Mobile | SokoSave Desktop | SuperSoko | BoxSearch | Takaken --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Additional Tools - Solver&lt;br /&gt;
|- {{programs|4=&amp;lt;div&amp;gt;[http://www.ic-net.or.jp/home/takaken/e/soko/index.html Takaken]&amp;lt;/div&amp;gt;|5=&amp;amp;nbsp;|6=&amp;amp;nbsp;}}&lt;br /&gt;
| {{tc}} | solver || common solver plugins || common solver plugins || built-in || built-in &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | solver running mode || background, allowing continued game play || foreground, blocking game play || foreground, blocking game play || foreground, blocking game play&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | solution types&amp;lt;br&amp;gt;(e.g., any, move-optimal, push-optimal) || solver strategies and options depend on the plugins, not the host program || solver strategies and options depend on the plugins, not the host program || push-optimal, push-optimal with best moves, move-optimal with best pushes || move-optimal, push-optimal&lt;br /&gt;
|-&lt;br /&gt;
| {{tc}} | task queue || {{yes}} || {{no}} || {{no}} || {{no}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: FEATURE-INFO ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
===Related Pages===&lt;br /&gt;
[[Solver|Solver]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;!-- ::::: End FEATURE-INFO ::::: --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Optimizer&amp;diff=8305</id>
		<title>Feature list : Optimizer</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Optimizer&amp;diff=8305"/>
		<updated>2026-02-09T11:31:46Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8290 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Tools : Optimizer ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: ADDITIONAL TOOLS - OPTIMIZER ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokofan | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Mobile | SokoSave Desktop | SuperSoko --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Additional Tools - Optimizer !!&lt;br /&gt;
|- {{programs|2=&amp;amp;nbsp;|4=&amp;amp;nbsp;|5=&amp;amp;nbsp;|6=&amp;amp;nbsp;}}&lt;br /&gt;
| {{tc}} | optimizer || common optimizer plugins || || built-in &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | optimizer running mode || background, allowing continued game play || ||  foreground, allowing continued game play&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | optimization options (e.g., move-optimal, push-optimal) || optimization settings and options depend on the plugins, not the host program || || pushes/moves, moves/pushes, box changes, box lines &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | task queue || {{yes}} || || {{no}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: FEATURE-INFO ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
===Related pages===&lt;br /&gt;
[[Optimizer|Optimizer_Development]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;!-- ::::: End FEATURE-INFO ::::: --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=How_to_play_Sokoban&amp;diff=8304</id>
		<title>How to play Sokoban</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=How_to_play_Sokoban&amp;diff=8304"/>
		<updated>2026-02-09T11:13:21Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8289 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to play Sokoban. There are also simple strategies explained.&lt;br /&gt;
&lt;br /&gt;
First let&#039;s have a look at the rules of the game:&lt;br /&gt;
&lt;br /&gt;
The object of Sokoban is to take some objects (usually boxes) to designated locations by pushing them.&lt;br /&gt;
&lt;br /&gt;
To do this the user moves a man who we call Sokoban. Sokoban can move up, down, left and right. He can&#039;t pass through walls or boxes. He can push only one box at a time (never pull). At any time a square can only be occupied by one of a wall, box or man.&lt;br /&gt;
&lt;br /&gt;
A level contains these elements:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Walls:                    #&lt;br /&gt;
 Boxes:                    $&lt;br /&gt;
 Goals:                    .&lt;br /&gt;
 Free squares:            &#039; &#039;&lt;br /&gt;
 The Sokoban / the player: @&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boxes and the Sokoban can also be located on a goal.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Boxes on goals:           *&lt;br /&gt;
 The Sokoban on a goal:    +&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following the Sokoban is called &amp;quot;the player&amp;quot; to indicate that this is the object the user can move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Movements:&lt;br /&gt;
Nearly all Sokoban games can be played using the arrow keys. Nowadays many programs also support playing with the mouse.&lt;br /&gt;
All moves of the Sokoban need only to be done for pushing a box.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Level 1&lt;br /&gt;
 #########&lt;br /&gt;
 #@  $  .#&lt;br /&gt;
 #########&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Using the arrow keys one has to press the &amp;quot;right arrow&amp;quot; 5 times. &lt;br /&gt;
Using the mouse you have to mark the box for pushing (by clicking on it) and then clicking at the position the box is to be pushed to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Level 2&lt;br /&gt;
 ########&lt;br /&gt;
 #    ###&lt;br /&gt;
 #@$  ###&lt;br /&gt;
 #### ###&lt;br /&gt;
 ##   ###&lt;br /&gt;
 ##    ##&lt;br /&gt;
 #  ##. #&lt;br /&gt;
 #      #&lt;br /&gt;
 #####  #&lt;br /&gt;
 ########&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the difference between playing with keyboard and playing with mouse is demonstrated. Using the mouse is as simple as in Level 1. Using the arrow keys needs a lot of key presses for pushing the box to the goal.&lt;br /&gt;
Hence, it&#039;s always recommended to use the mouse for playing. The advantages compared to keyboard playing are:&lt;br /&gt;
# With two clicks a box can be pushed to every possible square&lt;br /&gt;
# Most programs automatically calculates the best moves for the player. Hence the user doesn&#039;t have to think about how to move the player by keys.&lt;br /&gt;
# Some programs even show the squares a box can be pushed to. In this way it&#039;s easy to see if a box can be pushed to the selected position.&lt;br /&gt;
# The user can concentrate on pushes only instead of moves and pushes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Levels containing only one box are very simple to solve using the mouse: One just has to mark the box for pushing and then to choose the goal square as target.&lt;br /&gt;
&lt;br /&gt;
Usually Sokoban levels are a lot more complicated.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s increase the difficulty step by step:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Level 3&lt;br /&gt;
 ########&lt;br /&gt;
 #      #&lt;br /&gt;
 #  $  .#&lt;br /&gt;
 #@ $  .#&lt;br /&gt;
 #  $  .#&lt;br /&gt;
 #      #&lt;br /&gt;
 ########&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Here the level contains 3 boxes. Nevertheless the level can easily be solved. Although every box can be pushed to each goal it doesn&#039;t matter which box is pushed to which goal. The boxes can just be pushed one after the other to any goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Level 4&lt;br /&gt;
 ########&lt;br /&gt;
 #  #.  #&lt;br /&gt;
 # $#   #&lt;br /&gt;
 #  # @##&lt;br /&gt;
 #  # $##&lt;br /&gt;
 #    .##&lt;br /&gt;
 ########&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This level is more complicated. The box under the player is close to a goal. Nevertheless it can&#039;t be pushed to the goal - this would result in a [[Deadlocks|deadlock]]. This level shows some problems one has to solve before it&#039;s possible to finish the level:&lt;br /&gt;
# Not every box can be pushed to every goal&lt;br /&gt;
# Boxes can&#039;t just be pushed to the nearest goal in every case&lt;br /&gt;
# Box pushes can create a [[Deadlocks|deadlock]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Level 5&lt;br /&gt;
 #########&lt;br /&gt;
 ##  #   #&lt;br /&gt;
 #.$.  $ #&lt;br /&gt;
 # #  ## #&lt;br /&gt;
 # @$.$. #&lt;br /&gt;
 #########&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this level the boxes have to be pushed to their goals in a specific order. Moreover one box has to be pushed away from its goal before it can be pushed to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Level 6&lt;br /&gt;
 #########&lt;br /&gt;
 #  #   .#&lt;br /&gt;
 #@$ $   #&lt;br /&gt;
 # $ ##..#&lt;br /&gt;
 #   #####&lt;br /&gt;
 #########&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This level is another example of the need to push a box away from its goal before the level can be solved. Additionally one box has to be &amp;quot;parked&amp;quot; until some other boxes have reached their goals. A situation where a box must be pushed but can&#039;t be pushed immediately to its goal occurs very often in Sokoban levels. Some of them are &amp;quot;parking&amp;quot; situations.&lt;br /&gt;
&amp;quot;Parking&amp;quot; means:&lt;br /&gt;
# a box must be pushed away from its goal &lt;br /&gt;
# after the box is pushed to its parking position another box has to be pushed&lt;br /&gt;
# parking the box at a specific position is required to solve the level&lt;br /&gt;
&lt;br /&gt;
== Reverse play ==&lt;br /&gt;
&lt;br /&gt;
Some Sokoban programs allow to play a puzzle backward. &lt;br /&gt;
&lt;br /&gt;
Starting with all boxes on goal squares, the player pulls the boxes to return to the initial puzzle state.&lt;br /&gt;
&lt;br /&gt;
Solutions found this way solve the standard puzzle when both the order and the direction of the moves are reversed.&lt;br /&gt;
&lt;br /&gt;
This approach can help players better understand the puzzle structure and develop effective solving strategies.&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Map_Viewing&amp;diff=8303</id>
		<title>Feature list : Map Viewing</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Map_Viewing&amp;diff=8303"/>
		<updated>2026-02-09T11:12:41Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 8302 by Matthias Meger (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ::::: FEATURE-LIST INDEX ::::: --&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__{{:Feature_list}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Map Viewing ==&lt;br /&gt;
{{LastREVISIONTIME}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ::::: MAP VIEWING ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot; &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Map Viewing !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Map Viewing&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | level browser with preview || {{yes}} one level at a time || {{yes}} block graphic miniatures of all loaded levels || {{yes}} block graphic miniatures of all loaded levels || {{yes}} block graphic miniatures of all levels in a collection (customizable miniature size) ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | resize skin to fit window || {{yes}} always || {{yes}}skin dependent || {{yes}} always || {{yes}} {{tip|flaw: Windows has 2 font settings, small (default) and large, and this only works for small fonts|text=flaw}} || {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | resize window to fit map || {{un}} {{tip|map always fits in window}} || {{no}} || {{un}} {{tip|map always fits in window}} || {{yes}} {{tip|flaw: Windows has 2 font settings, small (default) and large, and this only works for small fonts|text=flaw}} || {{yes}} optional || {{yes}} always &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[Feature_list_:_Map_Viewing#Level_scrolling|levels larger than window: scrolling]] || {{un}} || {{no}} || {{un}} || {{yes}} via scrollbars.&amp;lt;br&amp;gt;{{tip| Windows has 2 font settings, small (default) and large, and this only works for small fonts|text=flaw}} ||  {{yes}} {{tip|via scrollbars&amp;lt;br&amp;gt; with an option to autofollow&amp;lt;br&amp;gt;(move scrollbars automatically)}} || {{un}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | one-click browse levels || {{yes}} previous, next {{tip|in all level files in current level directory, with wrap-around}} || {{yes}} previous, next {{tip|in currently loaded levels, without wrap-around}} || {{yes}} previous, next {{tip|in current collection, with wrap-around}} || {{yes}} previous, next {{tip|in all loaded level files, with wrap-around}} || {{yes}} {{tip| implementation: keyboard shortcuts for: previous, next, first, last (in current collection, without wrap-around)|text=partial}} || {{yes}} next, without wrap-around &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | one-click browse files || {{no}} || {{no}} || {{no}} || {{yes}} drop-down list with all level collections ||  {{yes}} drop-down list with visited level collections || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | search for unsolved level || {{yes}} previous, next {{tip|in all level files in current level directory, with wrap-around}} || {{yes}} previous, next, random {{tip|in currently loaded levels, without wrap-around}} || {{yes}} previous, next {{tip|in current collection, with wrap-around}} || {{yes}} {{tip|partial implementation: auto-advance after having solved a level finds an unsolved level if settings is &amp;quot;unsolved levels only&amp;quot;|text=partial}} || {{yes}} previous, next {{tip|in current collection, without wrap-around}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | rotate and mirror level-map || {{yes}} persistent, with reset option {{tip|savegames and solutions are automatically synchronized with current transformation}} || {{yes}} session (partial implementation: use editor) {{tip|savegames and solutions are specific to each transformation}} || {{yes}} session, with reset option {{tip|savegames and solutions are automatically synchronized with current transformation}} || {{yes}} &amp;lt;big style=&amp;quot;color: red;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;?&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;{{tip|Will somebody with a full version check if it is&amp;lt;br&amp;gt;session, with reset option&amp;lt;br&amp;gt;or&amp;lt;br&amp;gt;persistent, with reset option&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;additionally check if &amp;lt;br&amp;gt;savegames and solutions are automatically synchronized with current transformation&amp;lt;br&amp;gt;or&amp;lt;br&amp;gt;savegames and solutions are specific to each transformation|width=300px|text=Help}} || {{yes}} session, with reset option {{tip|savegames and solutions are automatically synchronized with current transformation}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | multiple windows, one per level || {{no}} || {{no}} || {{no}} || {{yes}}via tabs.&amp;lt;br&amp;gt;multiple levels&amp;lt;br&amp;gt;can be opened in separate tabs. || {{no}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | multiple views of a level || {{yes}} || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | full screen || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}} via :&amp;lt;br&amp;gt;keyboard: F11 || {{no}} &lt;br /&gt;
|- {{programs}}&lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Information&amp;lt;/h2&amp;gt;&lt;br /&gt;
=== Level scrolling ===&lt;br /&gt;
&lt;br /&gt;
levels larger than window: scrolling&amp;lt;br&amp;gt;&lt;br /&gt;
levels larger than window: scrollbars&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Briefly, the first line is there to give a program the chance to tell that it has a scroll feature, and the second line is there to tell if the program does it the right way - with scrollbars.&lt;br /&gt;
&lt;br /&gt;
Since the first graphical user interfaces emerged, scrollbars have been used for depicting the situation where a document doesn&#039;t fit in the window, so the user can rightfully expect to find that logic (or something equally user-friendly) in a Sokoban program as well.&lt;br /&gt;
&lt;br /&gt;
Therefore, it&#039;s embarrasing for programs that requires scrolling if they don&#039;t have scrollbars or something equivalent. The line &amp;quot;levels larger than window: scrollbars&amp;quot; must be listed so readers can see this major design flaw, and so new programmers are reminded that they definitely should do better.&lt;br /&gt;
&lt;br /&gt;
On the other hand, Sokofan deserves credits for at least having a scroll feature, despite the fact that it&#039;s not done the right way with scrollbars. The user doesn&#039;t get any visible clue that the board is bigger than the window, and the user must read the instructions to find the keyboard and mouse/key combinations that controls the scrolling.&lt;br /&gt;
&lt;br /&gt;
So the line &amp;quot;levels larger than window: scrolling&amp;quot; is there to give Sokofan a chance to tell that it indeed has a scroll feature, even though it&#039;s not as user-friendly as the user rightfully can expect from a good Sokoban clone.&lt;br /&gt;
&lt;br /&gt;
-bd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Multiple views of a level ===&lt;br /&gt;
A user often works on several alternative paths at the same time. It would be a great help if each of them was fully visible. For instance, multiple views are beneficial during the process of optimizing existing solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SokRFI - Sokoban Requests for Implementation ===&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- :::: SOKRFI - SOKOBAN REQUESTS FOR IMPLEMENTATION :::::::::  --&amp;gt; &lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;50&amp;quot; | Map Viewing : SokRFI - Sokoban Requests for Implementation&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;120&amp;quot; {{tc}} | Feature || {{tc}} | Description&lt;br /&gt;
|-&lt;br /&gt;
|{{tc}}| show/hide&amp;lt;br&amp;gt;redundant walls ||It fills jagged wall edges, fills unused &amp;quot;tubes&amp;quot;, removes redundant walls, unused boxes, and unused goals. Implemented in [http://sokoban.ws/usokoban/usokoban.htm USokoban] as &#039;Normalize level&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=MediaWiki:Common.css&amp;diff=8285</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=MediaWiki:Common.css&amp;diff=8285"/>
		<updated>2026-02-08T12:50:56Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** CSS placed here will be applied to all skins */&lt;br /&gt;
/* &lt;br /&gt;
Title  : SokobanWiki Stylesheet&lt;br /&gt;
Version: 08/04/07&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/* TABLE soko-table : Class for decorate the table&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
table.soko-table {&lt;br /&gt;
	margin: 1em 1em 1em 0;&lt;br /&gt;
	background: #f9f9f9;&lt;br /&gt;
	border: 1px #aaaaaa solid;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
table.soko-table th,&lt;br /&gt;
table.soko-table td {&lt;br /&gt;
	font-size: 1em;&lt;br /&gt;
	border: 1px #aaaaaa solid;&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
table.soko-table th {&lt;br /&gt;
	background: rgb(224, 222, 216);&lt;br /&gt;
	color: rgb(69,69,69);&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
tr.soko-table-title {&lt;br /&gt;
	background:#f1efe5;&lt;br /&gt;
	text-align:center;&lt;br /&gt;
}&lt;br /&gt;
col.soko-table-title {&lt;br /&gt;
	background:#f1efe5;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
/* --- Fixed width for the columns --- */&lt;br /&gt;
colgroup.soko-table-column col,&lt;br /&gt;
tr.soko-table-title td div {&lt;br /&gt;
	width: 135px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* HTML Element Styles&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
code, pre {&lt;br /&gt;
	font-family: &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size:11pt;&lt;br /&gt;
	background-color:#fafbfc;&lt;br /&gt;
}&lt;br /&gt;
pre {&lt;br /&gt;
	white-space: pre;&lt;br /&gt;
	border: 1px solid silver;&lt;br /&gt;
	border-width: 1px !important;&lt;br /&gt;
	border-style: solid !important;&lt;br /&gt;
	border-color: silver !important;&lt;br /&gt;
	margin: 1em 3px;&lt;br /&gt;
	padding: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
pre.scroll {&lt;br /&gt;
	overflow: auto;&lt;br /&gt;
	/* MOZ Fixes */&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	/* IE Fixes */&lt;br /&gt;
	_width: 100%;&lt;br /&gt;
	*padding-bottom: 1.6em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	overflow-y: hidden;&lt;br /&gt;
}&lt;br /&gt;
span.kbd, kbd {&lt;br /&gt;
	display: -moz-inline-box;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	font-family: arial,helvetica;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
	line-height: 1.6em;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding: 0em 0.3em 0em 0.3em;&lt;br /&gt;
	color: rgb(51,51,51);&lt;br /&gt;
	background-color: white;&lt;br /&gt;
	border-style: solid; &lt;br /&gt;
	border-width: 2px 4px 6px 3px;&lt;br /&gt;
	border-top-color: rgb(207,207,207);&lt;br /&gt;
	border-right-color: rgb(170,170,170);&lt;br /&gt;
	border-bottom-color: rgb(144,144,144);&lt;br /&gt;
	border-left-color: rgb(186,186,186);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Generic Display Classes&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.title, div.title-2 {&lt;br /&gt;
	font-family: arial,verdana;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	border-bottom: 1px solid silver;&lt;br /&gt;
}&lt;br /&gt;
div.title { font-size: 14px; }&lt;br /&gt;
div.title-2 { font-size: 17px; }&lt;br /&gt;
div.margin   { margin-left: 10px; margin-right: 10px; }&lt;br /&gt;
div.margin-2 { margin-left: 20px; margin-right: 20px; }&lt;br /&gt;
div.margin-3 { margin-left: 40px; margin-right: 40px; }&lt;br /&gt;
div.box, div.box-2, div.box-3, div.box-4, div.box-5, div.box-6, div.box-7, div.box-8,&lt;br /&gt;
div.note, div.note-2 { margin-top: 5px; margin-bottom: 5px; padding: 8px 10px; }&lt;br /&gt;
div.box   { background: rgb(249,249,249); border: 1px solid; border-color: rgb(238,238,238) rgb(187,187,187) rgb(187,187,187) rgb(238,238,238); }&lt;br /&gt;
div.box-2 { background: #f1f5f9; border: 1px solid #c7cfd5; }&lt;br /&gt;
div.box-3 { background: rgb(244, 250, 255); border: 1px solid rgb(190, 208, 233); }&lt;br /&gt;
div.box-4 { background: rgb(245,249,251); border-right: 1px solid rgb(208,210,231); border-bottom: 1px solid rgb(208,210,231); }&lt;br /&gt;
div.box-5 { background: rgb(244,246,224); border-right: 1px solid rgb(222,222,208); border-bottom: 1px solid rgb(222,222,208); }&lt;br /&gt;
div.box-6 { background: rgb(243,241,233); border: 1px solid rgb(219,213,197); }&lt;br /&gt;
div.box-7 { background: rgb(242,245,240); border: 1px solid rgb(194,198,189); }&lt;br /&gt;
div.box-8 { background: #f7f7f7; border: 1px solid #a1a5a9; }&lt;br /&gt;
div.note  { background: rgb(255,255,236); border: 1px solid rgb(239,239,222); }&lt;br /&gt;
div.note-2{ background: rgb(248, 248, 248); border-top: 1px solid rgb(221, 221, 221); border-bottom: 1px solid rgb(221, 221, 221); }&lt;br /&gt;
div.small, span.small {&lt;br /&gt;
	font-family: Tahoma, Verdana, Arial, Helvetica, Sans-Serif;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* SYMBOL YES,NO,UN : Style to include images in the tables &lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
span.box-yes, span.box-no {&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin: 0 5px 0 0;&lt;br /&gt;
	padding:0; border:none;&lt;br /&gt;
	white-space:nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
span.box-yes {&lt;br /&gt;
	width:24px; height:24px;&lt;br /&gt;
	background:url(./images/Check.png) 0 0 no-repeat;&lt;br /&gt;
}&lt;br /&gt;
span.box-no {&lt;br /&gt;
	width:24px; height:24px;&lt;br /&gt;
	background:url(./images/Cross.png) 0 0 no-repeat;&lt;br /&gt;
}&lt;br /&gt;
span.box-un {&lt;br /&gt;
	display:block;&lt;br /&gt;
	clear:both;&lt;br /&gt;
	margin: 0 5px 0 0;&lt;br /&gt;
	height:24px;&lt;br /&gt;
	padding-left:24px;&lt;br /&gt;
	line-height:24px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	background:url(./images/Square.png) 0 0 no-repeat;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
span.box-no-text, span.box-yes-text { display:none; }&lt;br /&gt;
&lt;br /&gt;
/* TOOLTIP-CSS and symbol NI&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
span.box-ni,&lt;br /&gt;
span.box-tip {&lt;br /&gt;
	display: -moz-inline-box;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
span.box-ni-text {&lt;br /&gt;
	color:rgb(176,176,176);&lt;br /&gt;
	font-family:arial,verdana;&lt;br /&gt;
	font-size:1.6em;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	white-space:nowrap;&lt;br /&gt;
	letter-spacing:1px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip, span.box-tip-2,&lt;br /&gt;
span.box-tip-2 &amp;gt; span {&lt;br /&gt;
	margin:0; padding:0; border: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	-moz-box-sizing: border-box;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
	color: gray;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-menu-yes, span.box-tip-menu-no { display:none; }&lt;br /&gt;
span.box-tip-2, span.box-tip-2 &amp;gt; span { display:block; }&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-yes,&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-no { &lt;br /&gt;
	padding: 0 1px;&lt;br /&gt;
	white-space:nowrap; &lt;br /&gt;
	font-family: Verdana,Arial,Helvetica;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	letter-spacing:1px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-no + span {&lt;br /&gt;
	display: none;&lt;br /&gt;
	margin: 6px 0 0 6px;&lt;br /&gt;
	width: 150px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-yes + span { &lt;br /&gt;
	display: none; &lt;br /&gt;
	margin: 0;&lt;br /&gt;
	width: 140px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-no { color:black; }&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-yes {&lt;br /&gt;
	cursor: help; &lt;br /&gt;
	background-color:#36c;&lt;br /&gt;
	color: white;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-yes + span,&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-no + span {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	font-family: Verdana,Arial,Helvetica;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	line-height: 14px;&lt;br /&gt;
	padding: 6px;&lt;br /&gt;
	color: rgb(57,57,57);&lt;br /&gt;
	border: 1px solid gray;&lt;br /&gt;
	background-color: rgb(255,255,236);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* STAT Classes&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.box-progress {&lt;br /&gt;
	margin: 1px 0;&lt;br /&gt;
	border: 1px solid #ccc; &lt;br /&gt;
	padding: 1px;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
div.box-progress div {&lt;br /&gt;
	text-indent:5px;&lt;br /&gt;
	background-color: #ACE97C; &lt;br /&gt;
	line-height: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MENU-CSS : POP-DOWN&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.soko-pop-button {&lt;br /&gt;
	min-height: 5px;&lt;br /&gt;
	_height: 5px;&lt;br /&gt;
	padding:0 6em;&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-color: #F5F5F3 #7C7B77 #7C7B77 #F5F5F3;&lt;br /&gt;
	background-color: rgb(224, 222, 216);&lt;br /&gt;
	color: rgb(69, 69, 69);&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button &amp;gt; b {&lt;br /&gt;
	padding-right: 14px;&lt;br /&gt;
	background: transparent url(&amp;quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAB3RJTUUH1wQHCxk4FO/mKQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAAGUExURf///2NjY4U4roEAAAABdFJOUwBA5thmAAAAHUlEQVR42mNgYGBgZEAQgkDAwCgoCOQKCjCCRBgBB9sAkFJjHngAAAAASUVORK5CYIJ=&amp;quot;) no-repeat right center;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-box { padding: 5px 2em 10px 2em; }&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box &amp;gt; div.soko-pop-left {&lt;br /&gt;
	float: left;&lt;br /&gt;
	padding-right:1.5em;&lt;br /&gt;
	border-right: 1px dotted silver;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box &amp;gt; div.soko-pop-right {&lt;br /&gt;
	float: left;&lt;br /&gt;
	padding-left:1.5em;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button + div,&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box + div {&lt;br /&gt;
	display: none;&lt;br /&gt;
	border: 1px solid rgb(170,170,170);&lt;br /&gt;
	background-color: rgb(249,249,249);&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-down:hover &amp;gt; div.soko-pop-button + div.soko-pop-box {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position:absolute;&lt;br /&gt;
}&lt;br /&gt;
/* End POP-DOWN CSS */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#globalWrapper {&lt;br /&gt;
    width: 1080px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#mw-panel {&lt;br /&gt;
   position: fixed;&lt;br /&gt;
   top: 150px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body {&lt;br /&gt;
	background-image: url(/images/Bg_monobook.gif);&lt;br /&gt;
	background-repeat: repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* -------------- End CSS -------------------- */&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=MediaWiki:Common.css&amp;diff=8284</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=MediaWiki:Common.css&amp;diff=8284"/>
		<updated>2026-02-08T12:49:37Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** CSS placed here will be applied to all skins */&lt;br /&gt;
/* &lt;br /&gt;
Title  : SokobanWiki Stylesheet&lt;br /&gt;
Version: 08/04/07&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/* TABLE soko-table : Class for decorate the table&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
table.soko-table {&lt;br /&gt;
	margin: 1em 1em 1em 0;&lt;br /&gt;
	background: #f9f9f9;&lt;br /&gt;
	border: 1px #aaaaaa solid;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
table.soko-table th,&lt;br /&gt;
table.soko-table td {&lt;br /&gt;
	font-size: 1em;&lt;br /&gt;
	border: 1px #aaaaaa solid;&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
table.soko-table th {&lt;br /&gt;
	background: rgb(224, 222, 216);&lt;br /&gt;
	color: rgb(69,69,69);&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
tr.soko-table-title {&lt;br /&gt;
	background:#f1efe5;&lt;br /&gt;
	text-align:center;&lt;br /&gt;
}&lt;br /&gt;
col.soko-table-title {&lt;br /&gt;
	background:#f1efe5;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
/* --- Fixed width for the columns --- */&lt;br /&gt;
colgroup.soko-table-column col,&lt;br /&gt;
tr.soko-table-title td div {&lt;br /&gt;
	width: 135px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* HTML Element Styles&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
code, pre {&lt;br /&gt;
	font-family: &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size:11pt;&lt;br /&gt;
	background-color:#fafbfc;&lt;br /&gt;
}&lt;br /&gt;
pre {&lt;br /&gt;
	white-space: pre;&lt;br /&gt;
	border: 1px solid silver;&lt;br /&gt;
	border-width: 1px !important;&lt;br /&gt;
	border-style: solid !important;&lt;br /&gt;
	border-color: silver !important;&lt;br /&gt;
	margin: 1em 3px;&lt;br /&gt;
	padding: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
pre.scroll {&lt;br /&gt;
	overflow: auto;&lt;br /&gt;
	/* MOZ Fixes */&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	/* IE Fixes */&lt;br /&gt;
	_width: 100%;&lt;br /&gt;
	*padding-bottom: 1.6em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	overflow-y: hidden;&lt;br /&gt;
}&lt;br /&gt;
span.kbd, kbd {&lt;br /&gt;
	display: -moz-inline-box;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	font-family: arial,helvetica;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
	line-height: 1.6em;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding: 0em 0.3em 0em 0.3em;&lt;br /&gt;
	color: rgb(51,51,51);&lt;br /&gt;
	background-color: white;&lt;br /&gt;
	border-style: solid; &lt;br /&gt;
	border-width: 2px 4px 6px 3px;&lt;br /&gt;
	border-top-color: rgb(207,207,207);&lt;br /&gt;
	border-right-color: rgb(170,170,170);&lt;br /&gt;
	border-bottom-color: rgb(144,144,144);&lt;br /&gt;
	border-left-color: rgb(186,186,186);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Generic Display Classes&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.title, div.title-2 {&lt;br /&gt;
	font-family: arial,verdana;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	border-bottom: 1px solid silver;&lt;br /&gt;
}&lt;br /&gt;
div.title { font-size: 14px; }&lt;br /&gt;
div.title-2 { font-size: 17px; }&lt;br /&gt;
div.margin   { margin-left: 10px; margin-right: 10px; }&lt;br /&gt;
div.margin-2 { margin-left: 20px; margin-right: 20px; }&lt;br /&gt;
div.margin-3 { margin-left: 40px; margin-right: 40px; }&lt;br /&gt;
div.box, div.box-2, div.box-3, div.box-4, div.box-5, div.box-6, div.box-7, div.box-8,&lt;br /&gt;
div.note, div.note-2 { margin-top: 5px; margin-bottom: 5px; padding: 8px 10px; }&lt;br /&gt;
div.box   { background: rgb(249,249,249); border: 1px solid; border-color: rgb(238,238,238) rgb(187,187,187) rgb(187,187,187) rgb(238,238,238); }&lt;br /&gt;
div.box-2 { background: #f1f5f9; border: 1px solid #c7cfd5; }&lt;br /&gt;
div.box-3 { background: rgb(244, 250, 255); border: 1px solid rgb(190, 208, 233); }&lt;br /&gt;
div.box-4 { background: rgb(245,249,251); border-right: 1px solid rgb(208,210,231); border-bottom: 1px solid rgb(208,210,231); }&lt;br /&gt;
div.box-5 { background: rgb(244,246,224); border-right: 1px solid rgb(222,222,208); border-bottom: 1px solid rgb(222,222,208); }&lt;br /&gt;
div.box-6 { background: rgb(243,241,233); border: 1px solid rgb(219,213,197); }&lt;br /&gt;
div.box-7 { background: rgb(242,245,240); border: 1px solid rgb(194,198,189); }&lt;br /&gt;
div.box-8 { background: #f7f7f7; border: 1px solid #a1a5a9; }&lt;br /&gt;
div.note  { background: rgb(255,255,236); border: 1px solid rgb(239,239,222); }&lt;br /&gt;
div.note-2{ background: rgb(248, 248, 248); border-top: 1px solid rgb(221, 221, 221); border-bottom: 1px solid rgb(221, 221, 221); }&lt;br /&gt;
div.small, span.small {&lt;br /&gt;
	font-family: Tahoma, Verdana, Arial, Helvetica, Sans-Serif;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* SYMBOL YES,NO,UN : Style to include images in the tables &lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
span.box-yes, span.box-no {&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin: 0 5px 0 0;&lt;br /&gt;
	padding:0; border:none;&lt;br /&gt;
	white-space:nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
span.box-yes {&lt;br /&gt;
	width:24px; height:24px;&lt;br /&gt;
	background:url(./images/Check.png) 0 0 no-repeat;&lt;br /&gt;
}&lt;br /&gt;
span.box-no {&lt;br /&gt;
	width:24px; height:24px;&lt;br /&gt;
	background:url(./images/Cross.png) 0 0 no-repeat;&lt;br /&gt;
}&lt;br /&gt;
span.box-un {&lt;br /&gt;
	display:block;&lt;br /&gt;
	clear:both;&lt;br /&gt;
	margin: 0 5px 0 0;&lt;br /&gt;
	height:24px;&lt;br /&gt;
	padding-left:24px;&lt;br /&gt;
	line-height:24px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	background:url(./images/Square.png) 0 0 no-repeat;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
span.box-no-text, span.box-yes-text { display:none; }&lt;br /&gt;
&lt;br /&gt;
/* TOOLTIP-CSS and symbol NI&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
span.box-ni,&lt;br /&gt;
span.box-tip {&lt;br /&gt;
	display: -moz-inline-box;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
span.box-ni-text {&lt;br /&gt;
	color:rgb(176,176,176);&lt;br /&gt;
	font-family:arial,verdana;&lt;br /&gt;
	font-size:1.6em;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	white-space:nowrap;&lt;br /&gt;
	letter-spacing:1px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip, span.box-tip-2,&lt;br /&gt;
span.box-tip-2 &amp;gt; span {&lt;br /&gt;
	margin:0; padding:0; border: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	-moz-box-sizing: border-box;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
	color: gray;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-menu-yes, span.box-tip-menu-no { display:none; }&lt;br /&gt;
span.box-tip-2, span.box-tip-2 &amp;gt; span { display:block; }&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-yes,&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-no { &lt;br /&gt;
	padding: 0 1px;&lt;br /&gt;
	white-space:nowrap; &lt;br /&gt;
	font-family: Verdana,Arial,Helvetica;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	letter-spacing:1px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-no + span {&lt;br /&gt;
	display: none;&lt;br /&gt;
	margin: 6px 0 0 6px;&lt;br /&gt;
	width: 150px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-yes + span { &lt;br /&gt;
	display: none; &lt;br /&gt;
	margin: 0;&lt;br /&gt;
	width: 140px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-no { color:black; }&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-yes {&lt;br /&gt;
	cursor: help; &lt;br /&gt;
	background-color:#36c;&lt;br /&gt;
	color: white;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-yes + span,&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-no + span {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	font-family: Verdana,Arial,Helvetica;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	line-height: 14px;&lt;br /&gt;
	padding: 6px;&lt;br /&gt;
	color: rgb(57,57,57);&lt;br /&gt;
	border: 1px solid gray;&lt;br /&gt;
	background-color: rgb(255,255,236);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* STAT Classes&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.box-progress {&lt;br /&gt;
	margin: 1px 0;&lt;br /&gt;
	border: 1px solid #ccc; &lt;br /&gt;
	padding: 1px;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
div.box-progress div {&lt;br /&gt;
	text-indent:5px;&lt;br /&gt;
	background-color: #ACE97C; &lt;br /&gt;
	line-height: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MENU-CSS : POP-DOWN&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.soko-pop-button {&lt;br /&gt;
	min-height: 5px;&lt;br /&gt;
	_height: 5px;&lt;br /&gt;
	padding:0 6em;&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-color: #F5F5F3 #7C7B77 #7C7B77 #F5F5F3;&lt;br /&gt;
	background-color: rgb(224, 222, 216);&lt;br /&gt;
	color: rgb(69, 69, 69);&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button &amp;gt; b {&lt;br /&gt;
	padding-right: 14px;&lt;br /&gt;
	background: transparent url(&amp;quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAB3RJTUUH1wQHCxk4FO/mKQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAAGUExURf///2NjY4U4roEAAAABdFJOUwBA5thmAAAAHUlEQVR42mNgYGBgZEAQgkDAwCgoCOQKCjCCRBgBB9sAkFJjHngAAAAASUVORK5CYIJ=&amp;quot;) no-repeat right center;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-box { padding: 5px 2em 10px 2em; }&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box &amp;gt; div.soko-pop-left {&lt;br /&gt;
	float: left;&lt;br /&gt;
	padding-right:1.5em;&lt;br /&gt;
	border-right: 1px dotted silver;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box &amp;gt; div.soko-pop-right {&lt;br /&gt;
	float: left;&lt;br /&gt;
	padding-left:1.5em;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button + div,&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box + div {&lt;br /&gt;
	display: none;&lt;br /&gt;
	border: 1px solid rgb(170,170,170);&lt;br /&gt;
	background-color: rgb(249,249,249);&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-down:hover &amp;gt; div.soko-pop-button + div.soko-pop-box {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position:absolute;&lt;br /&gt;
}&lt;br /&gt;
/* End POP-DOWN CSS */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#globalWrapper {&lt;br /&gt;
    width: 1080px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#mw-panel {&lt;br /&gt;
   position: fixed;&lt;br /&gt;
   top: 150px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* -------------- End CSS -------------------- */&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=MediaWiki:Common.css&amp;diff=8283</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=MediaWiki:Common.css&amp;diff=8283"/>
		<updated>2026-02-08T12:46:36Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/** CSS placed here will be applied to all skins */&lt;br /&gt;
/* &lt;br /&gt;
Title  : SokobanWiki Stylesheet&lt;br /&gt;
Version: 08/04/07&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/* TABLE soko-table : Class for decorate the table&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
table.soko-table {&lt;br /&gt;
	margin: 1em 1em 1em 0;&lt;br /&gt;
	background: #f9f9f9;&lt;br /&gt;
	border: 1px #aaaaaa solid;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
table.soko-table th,&lt;br /&gt;
table.soko-table td {&lt;br /&gt;
	font-size: 1em;&lt;br /&gt;
	border: 1px #aaaaaa solid;&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
table.soko-table th {&lt;br /&gt;
	background: rgb(224, 222, 216);&lt;br /&gt;
	color: rgb(69,69,69);&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
tr.soko-table-title {&lt;br /&gt;
	background:#f1efe5;&lt;br /&gt;
	text-align:center;&lt;br /&gt;
}&lt;br /&gt;
col.soko-table-title {&lt;br /&gt;
	background:#f1efe5;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
/* --- Fixed width for the columns --- */&lt;br /&gt;
colgroup.soko-table-column col,&lt;br /&gt;
tr.soko-table-title td div {&lt;br /&gt;
	width: 135px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* HTML Element Styles&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
code, pre {&lt;br /&gt;
	font-family: &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size:11pt;&lt;br /&gt;
	background-color:#fafbfc;&lt;br /&gt;
}&lt;br /&gt;
pre {&lt;br /&gt;
	white-space: pre;&lt;br /&gt;
	border: 1px solid silver;&lt;br /&gt;
	border-width: 1px !important;&lt;br /&gt;
	border-style: solid !important;&lt;br /&gt;
	border-color: silver !important;&lt;br /&gt;
	margin: 1em 3px;&lt;br /&gt;
	padding: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
pre.scroll {&lt;br /&gt;
	overflow: auto;&lt;br /&gt;
	/* MOZ Fixes */&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
	/* IE Fixes */&lt;br /&gt;
	_width: 100%;&lt;br /&gt;
	*padding-bottom: 1.6em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	overflow-y: hidden;&lt;br /&gt;
}&lt;br /&gt;
span.kbd, kbd {&lt;br /&gt;
	display: -moz-inline-box;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	font-family: arial,helvetica;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
	line-height: 1.6em;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	padding: 0em 0.3em 0em 0.3em;&lt;br /&gt;
	color: rgb(51,51,51);&lt;br /&gt;
	background-color: white;&lt;br /&gt;
	border-style: solid; &lt;br /&gt;
	border-width: 2px 4px 6px 3px;&lt;br /&gt;
	border-top-color: rgb(207,207,207);&lt;br /&gt;
	border-right-color: rgb(170,170,170);&lt;br /&gt;
	border-bottom-color: rgb(144,144,144);&lt;br /&gt;
	border-left-color: rgb(186,186,186);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Generic Display Classes&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.title, div.title-2 {&lt;br /&gt;
	font-family: arial,verdana;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	border-bottom: 1px solid silver;&lt;br /&gt;
}&lt;br /&gt;
div.title { font-size: 14px; }&lt;br /&gt;
div.title-2 { font-size: 17px; }&lt;br /&gt;
div.margin   { margin-left: 10px; margin-right: 10px; }&lt;br /&gt;
div.margin-2 { margin-left: 20px; margin-right: 20px; }&lt;br /&gt;
div.margin-3 { margin-left: 40px; margin-right: 40px; }&lt;br /&gt;
div.box, div.box-2, div.box-3, div.box-4, div.box-5, div.box-6, div.box-7, div.box-8,&lt;br /&gt;
div.note, div.note-2 { margin-top: 5px; margin-bottom: 5px; padding: 8px 10px; }&lt;br /&gt;
div.box   { background: rgb(249,249,249); border: 1px solid; border-color: rgb(238,238,238) rgb(187,187,187) rgb(187,187,187) rgb(238,238,238); }&lt;br /&gt;
div.box-2 { background: #f1f5f9; border: 1px solid #c7cfd5; }&lt;br /&gt;
div.box-3 { background: rgb(244, 250, 255); border: 1px solid rgb(190, 208, 233); }&lt;br /&gt;
div.box-4 { background: rgb(245,249,251); border-right: 1px solid rgb(208,210,231); border-bottom: 1px solid rgb(208,210,231); }&lt;br /&gt;
div.box-5 { background: rgb(244,246,224); border-right: 1px solid rgb(222,222,208); border-bottom: 1px solid rgb(222,222,208); }&lt;br /&gt;
div.box-6 { background: rgb(243,241,233); border: 1px solid rgb(219,213,197); }&lt;br /&gt;
div.box-7 { background: rgb(242,245,240); border: 1px solid rgb(194,198,189); }&lt;br /&gt;
div.box-8 { background: #f7f7f7; border: 1px solid #a1a5a9; }&lt;br /&gt;
div.note  { background: rgb(255,255,236); border: 1px solid rgb(239,239,222); }&lt;br /&gt;
div.note-2{ background: rgb(248, 248, 248); border-top: 1px solid rgb(221, 221, 221); border-bottom: 1px solid rgb(221, 221, 221); }&lt;br /&gt;
div.small, span.small {&lt;br /&gt;
	font-family: Tahoma, Verdana, Arial, Helvetica, Sans-Serif;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* SYMBOL YES,NO,UN : Style to include images in the tables &lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
span.box-yes, span.box-no {&lt;br /&gt;
	float:left;&lt;br /&gt;
	margin: 0 5px 0 0;&lt;br /&gt;
	padding:0; border:none;&lt;br /&gt;
	white-space:nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
span.box-yes {&lt;br /&gt;
	width:24px; height:24px;&lt;br /&gt;
	background:url(./images/Check.png) 0 0 no-repeat;&lt;br /&gt;
}&lt;br /&gt;
span.box-no {&lt;br /&gt;
	width:24px; height:24px;&lt;br /&gt;
	background:url(./images/Cross.png) 0 0 no-repeat;&lt;br /&gt;
}&lt;br /&gt;
span.box-un {&lt;br /&gt;
	display:block;&lt;br /&gt;
	clear:both;&lt;br /&gt;
	margin: 0 5px 0 0;&lt;br /&gt;
	height:24px;&lt;br /&gt;
	padding-left:24px;&lt;br /&gt;
	line-height:24px;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	background:url(./images/Square.png) 0 0 no-repeat;&lt;br /&gt;
	cursor:default;&lt;br /&gt;
}&lt;br /&gt;
span.box-no-text, span.box-yes-text { display:none; }&lt;br /&gt;
&lt;br /&gt;
/* TOOLTIP-CSS and symbol NI&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
span.box-ni,&lt;br /&gt;
span.box-tip {&lt;br /&gt;
	display: -moz-inline-box;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
span.box-ni-text {&lt;br /&gt;
	color:rgb(176,176,176);&lt;br /&gt;
	font-family:arial,verdana;&lt;br /&gt;
	font-size:1.6em;&lt;br /&gt;
	font-weight:bold;&lt;br /&gt;
	white-space:nowrap;&lt;br /&gt;
	letter-spacing:1px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip, span.box-tip-2,&lt;br /&gt;
span.box-tip-2 &amp;gt; span {&lt;br /&gt;
	margin:0; padding:0; border: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	-moz-box-sizing: border-box;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
	color: gray;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-menu-yes, span.box-tip-menu-no { display:none; }&lt;br /&gt;
span.box-tip-2, span.box-tip-2 &amp;gt; span { display:block; }&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-yes,&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-no { &lt;br /&gt;
	padding: 0 1px;&lt;br /&gt;
	white-space:nowrap; &lt;br /&gt;
	font-family: Verdana,Arial,Helvetica;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	letter-spacing:1px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-no + span {&lt;br /&gt;
	display: none;&lt;br /&gt;
	margin: 6px 0 0 6px;&lt;br /&gt;
	width: 150px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2 &amp;gt; span.box-tip-menu-yes + span { &lt;br /&gt;
	display: none; &lt;br /&gt;
	margin: 0;&lt;br /&gt;
	width: 140px;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-no { color:black; }&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-yes {&lt;br /&gt;
	cursor: help; &lt;br /&gt;
	background-color:#36c;&lt;br /&gt;
	color: white;&lt;br /&gt;
}&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-yes + span,&lt;br /&gt;
span.box-tip-2:hover &amp;gt; span.box-tip-menu-no + span {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	font-family: Verdana,Arial,Helvetica;&lt;br /&gt;
	font-size: 11px;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	line-height: 14px;&lt;br /&gt;
	padding: 6px;&lt;br /&gt;
	color: rgb(57,57,57);&lt;br /&gt;
	border: 1px solid gray;&lt;br /&gt;
	background-color: rgb(255,255,236);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* STAT Classes&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.box-progress {&lt;br /&gt;
	margin: 1px 0;&lt;br /&gt;
	border: 1px solid #ccc; &lt;br /&gt;
	padding: 1px;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
div.box-progress div {&lt;br /&gt;
	text-indent:5px;&lt;br /&gt;
	background-color: #ACE97C; &lt;br /&gt;
	line-height: 13px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MENU-CSS : POP-DOWN&lt;br /&gt;
----------------------------------------------- */&lt;br /&gt;
div.soko-pop-button {&lt;br /&gt;
	min-height: 5px;&lt;br /&gt;
	_height: 5px;&lt;br /&gt;
	padding:0 6em;&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
	border-color: #F5F5F3 #7C7B77 #7C7B77 #F5F5F3;&lt;br /&gt;
	background-color: rgb(224, 222, 216);&lt;br /&gt;
	color: rgb(69, 69, 69);&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button &amp;gt; b {&lt;br /&gt;
	padding-right: 14px;&lt;br /&gt;
	background: transparent url(&amp;quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAB3RJTUUH1wQHCxk4FO/mKQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAAGUExURf///2NjY4U4roEAAAABdFJOUwBA5thmAAAAHUlEQVR42mNgYGBgZEAQgkDAwCgoCOQKCjCCRBgBB9sAkFJjHngAAAAASUVORK5CYIJ=&amp;quot;) no-repeat right center;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-box { padding: 5px 2em 10px 2em; }&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box &amp;gt; div.soko-pop-left {&lt;br /&gt;
	float: left;&lt;br /&gt;
	padding-right:1.5em;&lt;br /&gt;
	border-right: 1px dotted silver;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box &amp;gt; div.soko-pop-right {&lt;br /&gt;
	float: left;&lt;br /&gt;
	padding-left:1.5em;&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-button + div,&lt;br /&gt;
div.soko-pop-button + div.soko-pop-box + div {&lt;br /&gt;
	display: none;&lt;br /&gt;
	border: 1px solid rgb(170,170,170);&lt;br /&gt;
	background-color: rgb(249,249,249);&lt;br /&gt;
}&lt;br /&gt;
div.soko-pop-down:hover &amp;gt; div.soko-pop-button + div.soko-pop-box {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position:absolute;&lt;br /&gt;
}&lt;br /&gt;
/* End POP-DOWN CSS */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#globalWrapper {&lt;br /&gt;
    width: 1080px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#mw-panel {&lt;br /&gt;
   position: fixed;&lt;br /&gt;
   top: 150px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body {&lt;br /&gt;
	background-image: url(/images/Bg_monobook.gif);&lt;br /&gt;
	background-repeat: repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* -------------- End CSS -------------------- */&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Sokoban_Wiki:Current_events&amp;diff=4714</id>
		<title>Sokoban Wiki:Current events</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Sokoban_Wiki:Current_events&amp;diff=4714"/>
		<updated>2010-02-15T17:23:40Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Created page with &amp;#039;{| {{Prettytable}} | 2010_02_15_16_05 || DeletePagePermanent Extension added   |- | 2010_02_15_16_00 || DeleteOldRevisions2 Extension added   |- | 2010_02_15_15_30 || Upgrade to …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| {{Prettytable}}&lt;br /&gt;
| 2010_02_15_16_05 || DeletePagePermanent Extension added  &lt;br /&gt;
|-&lt;br /&gt;
| 2010_02_15_16_00 || DeleteOldRevisions2 Extension added  &lt;br /&gt;
|-&lt;br /&gt;
| 2010_02_15_15_30 || Upgrade to version 1.15.1&lt;br /&gt;
|-&lt;br /&gt;
| 2008_03_10_22_30 || Upgrade to version 1.11.2, ConfirmEdit Extension added&lt;br /&gt;
|-&lt;br /&gt;
| 2007_01_28_01_02 || String functions Extension added&lt;br /&gt;
|-&lt;br /&gt;
| 2007_01_17_00_50 || Upgrade to version 1.9.0&lt;br /&gt;
|-&lt;br /&gt;
| 2006_03_08_10_00 || Installation&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Sokoban_Wiki:General_disclaimer&amp;diff=4701</id>
		<title>Sokoban Wiki:General disclaimer</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Sokoban_Wiki:General_disclaimer&amp;diff=4701"/>
		<updated>2010-01-13T18:40:12Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: New page: {| class=&amp;quot;soko-table feature-list&amp;quot; !  || IMPRESSUM |- | Postaddress || Fred Minklei&amp;lt;br&amp;gt; Dänenstraße 13&amp;lt;br&amp;gt; 10439 Berlin |- | Telefon || +49 (0)30 444 56 10 |- | Email || bano@freenet.de ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!  || IMPRESSUM&lt;br /&gt;
|-&lt;br /&gt;
| Postaddress ||&lt;br /&gt;
Fred Minklei&amp;lt;br&amp;gt;&lt;br /&gt;
Dänenstraße 13&amp;lt;br&amp;gt;&lt;br /&gt;
10439 Berlin&lt;br /&gt;
|-&lt;br /&gt;
| Telefon || +49 (0)30 444 56 10&lt;br /&gt;
|-&lt;br /&gt;
| Email || bano@freenet.de&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Sokoban_Wiki:About&amp;diff=4700</id>
		<title>Sokoban Wiki:About</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Sokoban_Wiki:About&amp;diff=4700"/>
		<updated>2010-01-13T18:16:37Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Sokoban Wiki is a part of the &#039;&#039;&#039;Sokoban Project&#039;&#039;&#039; website.&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Talk:Buttons&amp;diff=4326</id>
		<title>Talk:Buttons</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Talk:Buttons&amp;diff=4326"/>
		<updated>2008-04-03T20:03:12Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Undo revision 4324 by Sokobano (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello guys!&lt;br /&gt;
Is somebody able to create also one or more button/s for our Wiki in 88x31?! I would like to add such a button at the &amp;quot;Sokoban project&amp;quot; website generally.&lt;br /&gt;
Many thanks in advance!&lt;br /&gt;
&lt;br /&gt;
Sokobano&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Buttons&amp;diff=4325</id>
		<title>Buttons</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Buttons&amp;diff=4325"/>
		<updated>2008-04-03T20:01:51Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Add a SokobanWiki text link or button graphic to your web site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*For SokobanWiki text link, copy and paste the following code:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Code:&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;SokobanWiki&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*For a SokobanWiki button, simply copy and paste the source below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Code:&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-01.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-01.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-02.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-02.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-03.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-03.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-04.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-04.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-05.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-05.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-06.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-06.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-07.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-07.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-08.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-08.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-09.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-09.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-10.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-10.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-11.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-11.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-12.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-12.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-13.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-13.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-14.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-14.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Sokowiki-15.gif]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img border=&amp;quot;0&amp;quot; title=&amp;quot;Go to SokobanWiki!&amp;quot; src=&amp;quot;http://&amp;lt;/nowiki&amp;gt;{{SERVERNAME}}{{SCRIPTPATH}}&amp;lt;nowiki&amp;gt;/images/Sokowiki-15.gif&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;[[#top|Top]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Current_events&amp;diff=4314</id>
		<title>Current events</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Current_events&amp;diff=4314"/>
		<updated>2008-03-10T21:40:25Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| {{Prettytable}}&lt;br /&gt;
| 2008_03_10_22_30 || Backup, Upgrade to new Wiki-version 1.11.2, ConfirmEdit Extension added&lt;br /&gt;
|-&lt;br /&gt;
| 2007_11_02_12_41 || Complete Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2007_07_29_23_55 || Complete Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2007_05_11_20_15 || Complete Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2007_05_11_18_00 || Repair of the Wiki after an dangerous error by misadjustment of the hoster&lt;br /&gt;
|-&lt;br /&gt;
| 2007_01_28_01_02 || String functions added&lt;br /&gt;
|-&lt;br /&gt;
| 2007_01_17_00_50 || Backup, Update to new Wiki-version (1.9.0)&lt;br /&gt;
|-&lt;br /&gt;
| 2006_07_12_20_23 || Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_06_22_23_00 || Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_05_31_23_25 || Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_05_19_06_49 || Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_05_14_01_39 || Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_05_12_00_24 || Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_03_11 || Backup durchgeführt&lt;br /&gt;
|-&lt;br /&gt;
|||Umzug des gesamten Wikis auf den als Stammplatz vorgesehenen Webspace&lt;br /&gt;
|-&lt;br /&gt;
| 2006_03_10 ||Backup&lt;br /&gt;
|-&lt;br /&gt;
| 2006_03_10 ||Backupmöglichkeit für das Wiki eingerichtet.&lt;br /&gt;
|-&lt;br /&gt;
| 2006_03_08 ||Wiki installiert und eingerichtet.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Huffman%2BBase64_Sokoban_Level_Encoding_Format&amp;diff=4030</id>
		<title>Huffman+Base64 Sokoban Level Encoding Format</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Huffman%2BBase64_Sokoban_Level_Encoding_Format&amp;diff=4030"/>
		<updated>2007-12-15T16:53:18Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: New page: Level Compression per Huffman-Encoding        1 - [ - ]  Floor      01 - [ # ]  Wall    0011 - [ $ ]  Box    0010 - [ . ]  Target    0001 - [\n ]  NewLine   00000 - [ * ]  Box on Target  0...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Level Compression per Huffman-Encoding&lt;br /&gt;
&lt;br /&gt;
      1 - [ - ]  Floor&lt;br /&gt;
     01 - [ # ]  Wall&lt;br /&gt;
   0011 - [ $ ]  Box&lt;br /&gt;
   0010 - [ . ]  Target&lt;br /&gt;
   0001 - [\n ]  NewLine&lt;br /&gt;
  00000 - [ * ]  Box on Target&lt;br /&gt;
 000011 - [ @ ]  Player&lt;br /&gt;
 000010 - [ + ]  Player on Target&lt;br /&gt;
&lt;br /&gt;
     /\&lt;br /&gt;
    1  0&lt;br /&gt;
   /    \&lt;br /&gt;
 [-]    /\&lt;br /&gt;
       1  0&lt;br /&gt;
      /    \&lt;br /&gt;
    [#]    /\&lt;br /&gt;
          /  \&lt;br /&gt;
         1    0&lt;br /&gt;
        /      \&lt;br /&gt;
       /        \&lt;br /&gt;
      /\        /\&lt;br /&gt;
     1  0      1  0&lt;br /&gt;
    /    \    /    \&lt;br /&gt;
  [$]   [.] [\n]   /\&lt;br /&gt;
                  1  0&lt;br /&gt;
                 /    \&lt;br /&gt;
                /\    [*]&lt;br /&gt;
               1  0&lt;br /&gt;
              /    \&lt;br /&gt;
            [@]    [+]&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Wiki.png&amp;diff=3358</id>
		<title>File:Wiki.png</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Wiki.png&amp;diff=3358"/>
		<updated>2007-01-23T16:15:59Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: Wiki-Logo (1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Logo (1)&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Bg_monobook.gif&amp;diff=3350</id>
		<title>File:Bg monobook.gif</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Bg_monobook.gif&amp;diff=3350"/>
		<updated>2007-01-23T12:20:39Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Original_levels&amp;diff=3120</id>
		<title>Original levels</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Original_levels&amp;diff=3120"/>
		<updated>2006-11-15T09:07:01Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt;Die erschütternde Nachricht zuerst:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es gibt kein Levelset mit dem Namen &amp;lt;b&amp;gt;Original&amp;lt;/b&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Das ist traurig, aber wahr!&amp;lt;br&amp;gt;&lt;br /&gt;
Aber es gibt ein Set, das szene-intern so bezeichnet wird.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Zur Geschichte:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Firma &amp;quot;Spectrum Holobyte&amp;quot; brachte 1984 für verschiedene Konsolen (DOS, C64, Apple II..) ein Sokobanspiel heraus, das 50 Levels enthielt.&lt;br /&gt;
Da dieses Spiel damals für viele die erste Berührung mit dem Spiel Sokoban war, wurden später die Levels dieses Sets, auch als Unterscheidung zu vielen neuen Levelsets, als die Originallevels bezeichnet.&lt;br /&gt;
&lt;br /&gt;
Dieser Name ist so tief in der Szene verankert, dass es müßig sein würde, dagegen anzulaufen, obwohl es, aller Wahrscheinlichkeit nach, ein älteres Set aus dem Jahre 1982 mit 20 Levels geben soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fehler im Original-Set&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Zuge der Ausliefung unterlief bei den Versionen für DOS und den C64 ein unverzeihliches Missgeschick. Das Level 42 des 50 Levels umfassenden Sets enthielt einen Fehler, der das Level unlösbar macht. Eine verschobene Kiste in der Ausgangsstellung lieferte einen Deadlock, der nicht korrigierbar ist.&lt;br /&gt;
&lt;br /&gt;
Nur die Version für den Apple II zeigte das Level in der richtigen Stellung. Da dieses Level auch in späteren Versionen von &amp;quot;Thinking Rabbit&amp;quot; so auftauchte, zum Beispiel im Perfect Set (als Level 224), ist davon auszugehen, dass diese Darstellung die authentische ist.&amp;lt;br&amp;gt;Dieses Level ist fortan als das Original anzusehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Original oder Fälschung&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Ermangelung anderer oder eigener Levels entliehen sich die Macher von XSokoban Anfang der 90er Jahre diese Levels für ihr eigenes Spiel.&amp;lt;br&amp;gt;&lt;br /&gt;
Die einfachste Möglichkeit, die Levels aus dem Original zu kopieren, war, die Levels nachzubauen. Bei einigen Levels entschied man sich wohl willentlich dazu sie leicht zu verändern, vielleicht, weil, da Level 42 tatsächlich unlösbar war, auch andere unlösbar schienen. Sie wurden daher vereinfacht. Bei anderen Levels kam es zu kleinen Abweichungen, die aber zum Teil, im Vergleich zu den Originals, die Art der Lösung beeinflussten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Das Problem&amp;lt;/i&amp;gt; an den Levels aus XSokoban ist die Tatsache, dass viele Sokobanspieler und auch viele Sokobanspiel-Programmierer, schlichtweg nicht von diesem Unterschied wissen.&lt;br /&gt;
Die XSokoban Levels werden als die Originale angesehen, sind aber in Wirklichkeit nur schlechte Kopien.&lt;br /&gt;
&lt;br /&gt;
Unterschiede gibt es in insgesamt 8 Levels.&lt;br /&gt;
Bei zwei Levels ist nur die Ausgangsposition des Sokobanmannes um ein Feld verschoben, das sind die Levels 11 und 47. Bei den anderen sechs Levels wurden die Levels zum Teil so stark verändert, dass sie ein völlig anderes Sokoban-Problem darstellen. Das sind die Levels 12, 20, 25, 37, 42 und 50.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Abbildungen werden folgen.&lt;br /&gt;
&lt;br /&gt;
Sokobano&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solution_format&amp;diff=2723</id>
		<title>Solution format</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solution_format&amp;diff=2723"/>
		<updated>2006-08-22T16:02:23Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Abspeicherung der Lösung eines Sokobanlevels==&lt;br /&gt;
&lt;br /&gt;
Im Sokobanspiel ist es bei komfortablen Programmen möglich, eine gefundene Lösung auch abzuspeichern und diese zu einem späteren Zeitpunkt erneut abzuspielen. Da dient vor allem als Nachweis der Lösbarkeit eines Levels, aber natürlich auch als Nachweis einer besonders guten Lösung.&lt;br /&gt;
&lt;br /&gt;
Im Allgemeinen werden in einer Lösung die Schritte des Sokobanmannes dokumentiert, die er von seinem Ausgangspunkt bei Levelstart bis zur endgültigen Lösung, wenn alle Kisten auf den Zielfeldern stehen, zurücklegt.&lt;br /&gt;
&lt;br /&gt;
Als Standard-Format für Sokobanlösungen hat sich das sogenannte LURD-Format durchgesetzt. In diesem Format werden die Schritte unverschlüsselt, also im Klartext, aufgezeichnet.&lt;br /&gt;
Jeder Schritt wird als ein neues Zeichen abgespeichert und entspricht der Richtung, in die sich der Sokobanmann bewegt. Es werden zunächst diese vier Zeichen verwendet:&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;l&amp;quot; für links,&lt;br /&gt;
: &amp;quot;u&amp;quot; für hoch,&lt;br /&gt;
: &amp;quot;r&amp;quot; für rechts und&lt;br /&gt;
: &amp;quot;d&amp;quot; für runter.&lt;br /&gt;
&lt;br /&gt;
Wird bei einem Schritt gleichzeitig eine Kiste bewegt, so werden die Schritte als Großbuchstaben dargestellt: L, U, R, D.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Primary values==&lt;br /&gt;
&lt;br /&gt;
===Moves===&lt;br /&gt;
Moves sind alle Schritte des Sokobanmannes, vom Beginn eines Levels bis zur endgültigen Lösung, bei der alle Kisten auf den Zielfeldern stehen. Dabei werden alle einfachen Schritte und alle Schritte, bei denen zugleich eine Kiste bewegt wird, gleichsam gezählt.&lt;br /&gt;
&lt;br /&gt;
===Pushes===&lt;br /&gt;
Pushes sind alle Schritte des Sokobanmannes, bei denen eine Kiste bewegt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Secondary values==&lt;br /&gt;
&lt;br /&gt;
===BoxLines===&lt;br /&gt;
&lt;br /&gt;
Eine BoxLine bezeichnet die Bewegung, in der eine Kiste ununterbrochen in einer Linie geschoben wird. Sie beginnt mit dem ersten Push und endet entweder vor einem Move oder vor dem Push einer anderen Kiste.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;eine Kiste wird ununterbrochen geschoben (Linie) -&amp;gt; KLAR ZÄHLBAR!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===BoxChanges===&lt;br /&gt;
Jede neue Zuwendung zu einer Kiste wird als BoxChange bezeichnet. In der Phase zwischen zwei BoxChanges wird also immer nur eine Kiste bewegt. Es bezeichnet also aneinander gereihte BoxLines &#039;&#039;&#039;einer&#039;&#039;&#039; Kiste, auch mit einfachen Moves zwischen den BoxLines, mit denen sich der Sokobanmann eine neue Position verschafft.&lt;br /&gt;
&lt;br /&gt;
Achtung Programmierer! Schon der erste Push innerhalb einer Lösung, also die erste Zuwendung zu einer Kiste, gilt als BoxChange!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mehrere BoxLines EINER Kiste hintereinander, bevor eine andere angefasst wird (auch Moves dazwischen), also z.B. um die Ecke rum, auch mit Umwegen des Players -&amp;gt; Konzentration auf die BOX&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===PushingSessions===&lt;br /&gt;
PushingSessions sind - genau betrachtet - aneinander gereihte BoxLines, die nicht durch einfache Schritte unterbrochen sind. Eine PushingSession ist also beendet, sobald ein einfacher Move folgt, bzw. am Ende einer Lösung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Wechsel von PUSH in move, also weniger, wenn zwischen BoxLines unterschiedlicher Kisten keine Moves sind (eigentlich also auch nur BoxLines, die zusammengezählt werden, wenn eine weiter Kiste gleich anschließend geschoben wird (ohne Moves dazwischen) (also relativ unwichtig) -&amp;gt; Konzentration auf die PUSHES (ununterbrochen)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Bewertung der Sekundärwerte einer Lösung ==&lt;br /&gt;
&lt;br /&gt;
Die Gewichtung bei der Bewertung der Sekundärwerte einer Lösung gestaltet sich entsprechend der üblichen Reihenfolge, also wie folgt:&amp;lt;br /&amp;gt;BoxLines &amp;gt;= BoxChanges &amp;gt;= PushingSessions&amp;lt;br /&amp;gt;&lt;br /&gt;
Jede Verringerung der Boxlines ist höher zu bewerten als jede Veränderung der nachfolgenden Werte, jede Verringerung der Boxchanges wiederum höher als die der PushingSessions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Grundlage dieser Festlegung ist der physikalische Hintergrund in der Realität&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Berechnung der Sekundärwerte einer Lösung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wenn&#039;&#039;&#039; der aktuelle Schritt ein Push war&amp;lt;br /&amp;gt;{&lt;br /&gt;
: &#039;&#039;&#039;wenn&#039;&#039;&#039; der vorige und der aktuelle Schritt ungleich sind&lt;br /&gt;
: ( voriger Schritt entweder kein Push oder in andere Richtung )&amp;lt;br /&amp;gt;{&lt;br /&gt;
:: BoxLines = BoxLines + 1;&lt;br /&gt;
:: &#039;&#039;&#039;wenn&#039;&#039;&#039; aktuelle Spielerposition != mit voriger Position der aktuell verschobenen Kiste&lt;br /&gt;
:: ( kein Kistenwechsel! )&amp;lt;br /&amp;gt;{&lt;br /&gt;
::: BoxChanges = BoxChanges + 1;&lt;br /&gt;
:: }&lt;br /&gt;
:: &#039;&#039;&#039;wenn&#039;&#039;&#039; der vorige Schritt kein Push war&amp;lt;br /&amp;gt;{&lt;br /&gt;
::: PushingSessions = PushingSessions + 1;&lt;br /&gt;
:: }&lt;br /&gt;
: }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:W_120.gif&amp;diff=1936</id>
		<title>File:W 120.gif</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:W_120.gif&amp;diff=1936"/>
		<updated>2006-07-18T06:19:47Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:W_150.gif&amp;diff=1879</id>
		<title>File:W 150.gif</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:W_150.gif&amp;diff=1879"/>
		<updated>2006-07-17T10:24:40Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Template:Bg_no&amp;diff=1674</id>
		<title>Template:Bg no</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Template:Bg_no&amp;diff=1674"/>
		<updated>2006-07-13T21:19:27Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bgcolor=&amp;quot;#ffc1c1&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Pixel.gif&amp;diff=1662</id>
		<title>File:Pixel.gif</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Pixel.gif&amp;diff=1662"/>
		<updated>2006-07-13T16:21:56Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Pruning_duplicate_positions&amp;diff=1655</id>
		<title>Pruning duplicate positions</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Pruning_duplicate_positions&amp;diff=1655"/>
		<updated>2006-07-13T15:18:18Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &amp;quot;Pruning duplicate positions&amp;quot; moved to Pruning duplicate positions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a detailed view on how to prune duplicate board positions during the search.&lt;br /&gt;
&lt;br /&gt;
To detect duplicate board positions we have to store every board position reached during the solving process.&lt;br /&gt;
The level stays the same during the solving process. The only level elements that change their positions are:&lt;br /&gt;
* the player&lt;br /&gt;
* the boxes&lt;br /&gt;
&lt;br /&gt;
Hence, it suffices to store the positions of all boxes and the player position per board position.&lt;br /&gt;
&lt;br /&gt;
If the solver doesn&#039;t searches for a moves optimized solution we can improve the duplicate check:&lt;br /&gt;
&lt;br /&gt;
[[Image:DuplicatePositionsCheck1.png]]    [[Image:DuplicatePositionsCheck2.png]]&lt;br /&gt;
&lt;br /&gt;
These two board positions have equal box positions but a different player position. Nevertheless, the board positions that can be created by pushing one box are exactly the same! Hence, these two board positions can be treated as being equal!&lt;br /&gt;
In general, all board positions that have the same box positions can be treated as being equal when the player has the same access area. The player in the left board position can reach the position of the player in the right board position and therefore can do the same pushes as the player in the right board position.&lt;br /&gt;
&lt;br /&gt;
With this in mind we could do the following when checking whether a board position has already been reached:&lt;br /&gt;
# check if there is a board position stored that has exactly the same box positions&lt;br /&gt;
# check if the player in this board position can reach the position of the player in the current board position&lt;br /&gt;
&lt;br /&gt;
Do optimize performance it&#039;s better not to store the actual player position but an information about the area the player has access to. This can be done by storing the most top left position the player can reach, for example. In both board positions shown above the top most left position the player can reach is the same: it&#039;s the top left corner of the level.&lt;br /&gt;
&lt;br /&gt;
The best way to store the information is to use a [http://en.wikipedia.org/wiki/Hash_table hash table].&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Cross.png&amp;diff=1627</id>
		<title>File:Cross.png</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Cross.png&amp;diff=1627"/>
		<updated>2006-07-12T20:05:46Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Check.png&amp;diff=1626</id>
		<title>File:Check.png</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Check.png&amp;diff=1626"/>
		<updated>2006-07-12T20:05:13Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Template:Prettytable&amp;diff=1473</id>
		<title>Template:Prettytable</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Template:Prettytable&amp;diff=1473"/>
		<updated>2006-05-14T11:17:37Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot;  style=&amp;quot;margin:1em 1em 1em 0; background: #f9f9f9; border: 1px #aaaaaa solid; border-collapse:collapse; empty-cells:show&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Help:Contents&amp;diff=1378</id>
		<title>Help:Contents</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Help:Contents&amp;diff=1378"/>
		<updated>2006-05-09T13:38:53Z</updated>

		<summary type="html">&lt;p&gt;Sokobano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hilfe zur [http://de.wikipedia.org/wiki/Hilfe:Textgestaltung Textgestaltung]&lt;/div&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
</feed>