<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Feature_info</id>
	<title>Feature info - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Feature_info"/>
	<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_info&amp;action=history"/>
	<updated>2026-04-17T18:40:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_info&amp;diff=3145&amp;oldid=prev</id>
		<title>Matthias Meger at 15:08, 11 December 2006</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_info&amp;diff=3145&amp;oldid=prev"/>
		<updated>2006-12-11T15:08:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Multi-player mode ==&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;
A program with this feature is [http://sokoban.online.fr/mon_player.html Sokonline].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compare high-scores ==&lt;br /&gt;
 &lt;br /&gt;
At first, this feature is focused to put in a list to all the high-scores of the users. Specify for the programs, with multi-player mode.&lt;br /&gt;
&lt;br /&gt;
A program with this feature is &amp;#039;Sokoban for Windows&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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&amp;#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&amp;#039;s embarrasing for programs that requires scrolling if they don&amp;#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&amp;#039;s not done the right way with scrollbars. The user doesn&amp;#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&amp;#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;
&lt;br /&gt;
== Dynamic background ==&lt;br /&gt;
&lt;br /&gt;
Explanation: This is for the users that look for to always have a different background.&amp;lt;br&amp;gt;&lt;br /&gt;
It is applied to the following events in the program:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Change background on program start.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Change background after solving to level.&amp;lt;br&amp;gt;&lt;br /&gt;
One can also choose the mode in that the background will be changed, taking the next, previous and random image of the backgrounds directory. &lt;br /&gt;
&lt;br /&gt;
The program that innovated with this feature is SokoMind.&lt;br /&gt;
&lt;br /&gt;
&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;
== 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;
== Import levels from internet ==&lt;br /&gt;
&lt;br /&gt;
HTML files&amp;lt;br&amp;gt;&lt;br /&gt;
Really, it is only to open or import from the clipboard, html pages that they have inside, code xsb(levels).&amp;lt;br&amp;gt;&lt;br /&gt;
This option, is not very frequent, but this inside &amp;#039;Import of level(s) from internet&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export levels to internet ==&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;
The export can have different variants:&lt;br /&gt;
&lt;br /&gt;
Generating the strings with code HTML:&amp;lt;br&amp;gt;&lt;br /&gt;
to be copied to the clipboard, or directly to save a page.&lt;br /&gt;
&lt;br /&gt;
Saving as page, this can contain :&amp;lt;br&amp;gt;&lt;br /&gt;
- only hyper-links for the level download.&amp;lt;br&amp;gt;&lt;br /&gt;
- miniatures or images snapshots of each level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Maximal boxes limited by map size ==&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of boxes. The limit is that imposed by the size of the map.&lt;br /&gt;
&lt;br /&gt;
(The table uses the term &amp;quot;unlimited&amp;quot; here. In this context, it means the same, and it avoids burdening the reader with unnecessary details like &amp;quot;limited by mapsize&amp;quot;.)&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&amp;#039;s persumed only one box is on the board (hence the box hasn&amp;#039;t to be pushed around other boxes or something like that). 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 less 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 (persumed 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;-levels.&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
</feed>