<?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=Matthias+Meger</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=Matthias+Meger"/>
	<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Special:Contributions/Matthias_Meger"/>
	<updated>2026-10-16T14:18:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8323</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8323"/>
		<updated>2026-08-09T19:44:41Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* General benchmarking information */ new JSoko version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.29     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.29/ JSoko 2.29]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8322</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8322"/>
		<updated>2026-08-09T19:44:17Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* General benchmarking information */ new JSoko version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.29     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.27/ JSoko 2.29]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8321</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8321"/>
		<updated>2026-05-04T19:33:13Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* General benchmarking information */ New JSoko version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.28     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.27/ JSoko 2.28]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8320</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8320"/>
		<updated>2026-04-24T18:36:56Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: New JSoko version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.27     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.27/ JSoko 2.27]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8319</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8319"/>
		<updated>2026-03-11T20:48:12Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* General benchmarking information */ new JSoko version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.26     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.24/ JSoko 2.26]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8318</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8318"/>
		<updated>2026-03-11T20:47:44Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* General benchmarking information */ New JSoko version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.26     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.24/ JSoko 2.25]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Map_Viewing&amp;diff=8302</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=8302"/>
		<updated>2026-02-09T08:23:04Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Map Viewing */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Management&amp;diff=8301</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=8301"/>
		<updated>2026-02-09T08:22:56Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Level Management */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Miscellaneous&amp;diff=8300</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=8300"/>
		<updated>2026-02-09T08:22:41Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Miscellaneous */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8299</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=8299"/>
		<updated>2026-02-09T08:22:05Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Game Play */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Editor&amp;diff=8298</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=8298"/>
		<updated>2026-02-09T08:21:52Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Level Editor */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Moves_Management&amp;diff=8297</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=8297"/>
		<updated>2026-02-09T08:21:44Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Moves Management */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Customizing&amp;diff=8296</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=8296"/>
		<updated>2026-02-09T08:21:34Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Customizing */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Multi-player_Mode&amp;diff=8295</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=8295"/>
		<updated>2026-02-09T08:21:25Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Multi-player Mode */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Additional_Tools&amp;diff=8294</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=8294"/>
		<updated>2026-02-09T08:21:18Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Skin_Features&amp;diff=8293</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=8293"/>
		<updated>2026-02-09T08:21:10Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Skin Features */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Duplicate_Finder&amp;diff=8292</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=8292"/>
		<updated>2026-02-09T08:21:02Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Duplicate Finder */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Solver&amp;diff=8291</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=8291"/>
		<updated>2026-02-09T08:20:54Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Solver */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Optimizer&amp;diff=8290</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=8290"/>
		<updated>2026-02-09T08:20:44Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Optimizer */ removed last changed time&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;
&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=How_to_play_Sokoban&amp;diff=8289</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=8289"/>
		<updated>2026-02-09T07:55:59Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: replaced &amp;lt;code&amp;gt; by &amp;lt;pre&amp;gt;&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8288</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8288"/>
		<updated>2026-02-08T22:06:22Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Disclaimer */ fixed URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.25     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.24/ JSoko 2.25]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: https://ljhaywood.uk/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Links&amp;diff=8282</id>
		<title>Links</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Links&amp;diff=8282"/>
		<updated>2026-01-23T18:05:59Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: Updated links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to several web-sites with Sokoban related material, e.g., programs, levels, and publications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sokoban Programs ==&lt;br /&gt;
[[Feature list]] comparing Sokoban programs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Author || Operating System&lt;br /&gt;
|-&lt;br /&gt;
| [[First Sokoban program]] || Hiroyuki Imabayashi || PC-8801&lt;br /&gt;
|-&lt;br /&gt;
| [http://sourceforge.net/projects/sokobanyasc/ Sokoban YASC ] || Brian Damgaard || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.joriswit.nl/sokoban/ Sokoban++] || Joris Wit || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sokosave.org/ SokoSave Mobile] || Eric Sunshine || Windows Mobile&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sokosave.org/ SokoSave Desktop] || Eric Sunshine || Windows, MacOS/X&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsokoapplet.sourceforge.io/ JSoko] || Matthias Meger || Platform independent (Java)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sourcecode.se/sokoban/ Sokoban&amp;amp;nbsp;for&amp;amp;nbsp;Windows] || Björn Källmark || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [http://ygp.orgfree.com/sokoban.html YSokoban] || George Petrov || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.fuzitoo.com/ Fuzitoo] || Jean Van Laethem || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [https://puzzle-dungeon.github.io/ Puzzle Dungeon] || Mikhael Goikhman || GNU/Linux, Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sokoban Solvers ==&lt;br /&gt;
[[Solver Statistics | Statistics]] comparing Sokoban solvers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Author || Operating System&lt;br /&gt;
|- &lt;br /&gt;
| [https://computerpuzzle.net/english/sokoban/ver740/index.html Sokoban Automatic solver] || Ken&#039;ichiro Takahashi (takaken) || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone] || Andreas Junghanns || Linux sourcecode&lt;br /&gt;
|-&lt;br /&gt;
| [https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS] || Brian Damgaard || Windows / Platform independent source code (Pascal)&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsokoapplet.sourceforge.io/ JSoko] || Matthias Meger || Platform independent (Java)&lt;br /&gt;
|-&lt;br /&gt;
| [https://sokolution.infinityfreeapp.com/ Sokolution] || Florent Diedler || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [https://festival-solver.site/ Festival] || Yaron Shoham || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [https://festival-solver.site/curry/ Curry] || Yaron Shoham || Windows&lt;br /&gt;
|-&lt;br /&gt;
| [https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch] || Ge Yong || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Worldwide Sokoban High-Scores ==&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | worldwide best known highscores&lt;br /&gt;
|-&lt;br /&gt;
| [http://sokobano.de/scores/ Sokoban PROJECT] || Sokobano.de&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |last XSokoban highscore list &amp;lt;small style=&amp;quot;color:gray;&amp;quot;&amp;gt;from december 2005&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[http://web.archive.org/web/20051201163838/www5.cs.cornell.edu/cgi-bin/andru/xsokoban/best-scores-moves by moves] || [http://web.archive.org/web/20051201164016/www5.cs.cornell.edu/cgi-bin/andru/xsokoban/best-scores-pushes by pushes]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Level Generators ==&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Author || Operating System&lt;br /&gt;
|-&lt;br /&gt;
| [https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASGen] || Brian Damgaard ||  	 Windows / Platform independent source code (Pascal)&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Sokobania | sokogen]] || Jacques Duthen || UNIX / lisp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fan Groups ==&lt;br /&gt;
[https://www.facebook.com/groups/539527933307469/ Facebook Sokoban Group]&lt;br /&gt;
&lt;br /&gt;
[https://groups.io/g/sokoban Groups.io Sokoban Group]&lt;br /&gt;
&lt;br /&gt;
== Optimizers ==&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Author || Operating System&lt;br /&gt;
|-&lt;br /&gt;
| [https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASO] || Brian Damgaard || Windows / Platform independent source code (Pascal)&lt;br /&gt;
|-&lt;br /&gt;
| [http://sourceforge.net/projects/jsokoapplet/ JSoko] || Matthias Meger || Platform independent (Java)&lt;br /&gt;
|-&lt;br /&gt;
| [https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch] || Ge Yong || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Levels for Downloading ==&lt;br /&gt;
* [http://www.sourcecode.se/sokoban/levels.php Sourcecode.se]&lt;br /&gt;
* [http://sokobano.de/scores/ Sokoban PROJECT]&lt;br /&gt;
* [http://grigr.narod.ru/ Evgeny Grigoriev Maps]&lt;br /&gt;
* [http://kantorek.webzdarma.cz/sokobana.htm František Pokorný Maps]&lt;br /&gt;
* [https://ljhaywood.uk/games/sokoban/ Lee J Haywood Maps]&lt;br /&gt;
&lt;br /&gt;
== Information about the original Sokoban game puzzles ==&lt;br /&gt;
* [https://wayneca.neocities.org/Sokoban/ Tribute to original Sokoban game puzzles]&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
* [http://www.cs.ualberta.ca/~games/Sokoban/papers.html  Sokoban Publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Sokoban links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.onlinespiele-sammlung.de/sokoban/list-of-sokoban-games.php?records_to_show=-1 &amp;quot;Sokoban online&amp;quot; collection (German)]&lt;br /&gt;
* [http://sourceforge.net/projects/yasminuroban/ Yasminuroban (DHTML Sokoban)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Online Sokoban Games ===&lt;br /&gt;
;&#039;&#039;&#039;JavaScript&#039;&#039;&#039;&lt;br /&gt;
* [http://sokoban.e-contento.com/sokoban.php Sokoban en JavaScript] by Juan Antonio Jiménez&lt;br /&gt;
* [http://www.game-sokoban.com Game Sokoban]&lt;br /&gt;
* [https://ljhaywood.uk/games/crossoban/ Crossoban] by Lee J Haywood&lt;br /&gt;
* [https://sokoban-solver.com/ Sokoban Solver] Explore tens of thousands of Sokoban puzzles with solutions ready for replay&lt;br /&gt;
* [https://www.linusakesson.net/games/autosokoban/ Autosokoban] Website which generates an unlimited number of puzzles with increasing difficulty to play online&lt;br /&gt;
* [http://www.letslogic.com/ Lets Logic - The Online Sokoban Community]&lt;br /&gt;
* [https://sokoban-solver-statistics.sourceforge.io Sokoban Javascript] by Matthias Meger&lt;br /&gt;
&lt;br /&gt;
=== Online Sokoban Variant Games ===&lt;br /&gt;
;&#039;&#039;&#039;JavaScript&#039;&#039;&#039;&lt;br /&gt;
* [http://www.chrisfortey.com/#sokobanColours Sokoban Colours]&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8281</id>
		<title>Solver Statistics</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver_Statistics&amp;diff=8281"/>
		<updated>2025-08-14T15:18:29Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Open Test Suite */ added BoxSearch to Open Test Suite and removed a duplicate collection from all results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Sokoban solver program is a program that &amp;lt;u&amp;gt;&#039;&#039;tries to&#039;&#039;&amp;lt;/u&amp;gt; solve Sokoban levels. There are several solver programs available. (See [[Links#Sokoban Solvers |Sokoban solvers]].)&lt;br /&gt;
&lt;br /&gt;
Solver programs may have different objectives:&lt;br /&gt;
# Find any solution&lt;br /&gt;
# Find push optimal solutions&lt;br /&gt;
# Find push optimal solutions with best moves&lt;br /&gt;
# Find move optimal solutions&lt;br /&gt;
# Find move optimal solutions with best pushes&lt;br /&gt;
&lt;br /&gt;
Given the computational complexity of these tasks, a solver program is usually designed for just finding any solution. If a solution is to be optimized, an optimizer program can be used. (See [[Links#Sokoban Solvers |Optimizers]].)&lt;br /&gt;
&lt;br /&gt;
The statistics presented here provide a picture of what the best freely available Sokoban solvers can do.&amp;lt;br /&amp;gt; &lt;br /&gt;
For copyrights, credits and redistribution of these statistics, please read the disclaimer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General benchmarking information ==&lt;br /&gt;
&lt;br /&gt;
For practical reasons, almost all tests have been performed with a 10 minutes time limit. The tests are, however, not a 10 minutes contest but a showcase for what the solvers can do, so other time limits are entirely feasible.&lt;br /&gt;
&lt;br /&gt;
The hardware used for the tests is a standard PC with a modern operating system (64bit).&lt;br /&gt;
&lt;br /&gt;
Tests are performed with default solver settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table feature-list&amp;quot;&lt;br /&gt;
!Solver                                                                     || Version || Author                         || Architecture || CPU usage || Source code available || More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;                                   || 3.1     || Yaron Shoham ||  64bit        || 8 threads    || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival 3.1]&amp;lt;/span&amp;gt;                || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Website with papers about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;                         || 7.32 || Florent Diedler                || 64bit        || all threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;     || 7.4     || Ken&#039;ichiro Takahashi (takaken) || 64bit        || 2 threads || no                   || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/puzzle/sokoban/ver731/index.html Description of the used algorithms]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry]&amp;lt;/span&amp;gt;                                || 0.3     || Yaron Shoham                   || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry 0.3] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Website with paper about the solver]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;     || 7.0 beta 1 || 葛永 (Ge Yong)      || 64bit         || 1 thread  || no                 || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch Website of BoxSearch]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;     || 2.153   || Brian Damgaard                 || 32bit + 64bit || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/files/sokobanyasc/ YASS 2.153]&amp;lt;/span&amp;gt;  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver | Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard]]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://jsokoapplet.sourceforge.io/ JSoko]&amp;lt;/span&amp;gt;                                     || 2.25     || Matthias Meger                || 64bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/files/JSoko/Version%202.24/ JSoko 2.25]&amp;lt;/span&amp;gt;  || [[Solver | Solver information]]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html Rolling Stone]&amp;lt;/span&amp;gt; || 1.0     || Andreas Junghanns              || 32bit        || 1 thread  || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/Src/ RS] || &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= Rolling Stone papers]&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contact: SokobanoWiki@gmail.com&lt;br /&gt;
&lt;br /&gt;
== XSokoban Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The XSokoban level set is the de facto standard test suite in the academic literature on Sokoban solver programming.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;11&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; |      Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;   |                 Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   |                 Levels&lt;br /&gt;
| width= &amp;quot;90&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html                 Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | [[JSoko Solver    | JSoko]]&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/curry/ Curry ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- XSokoban. &amp;quot;Collection, author, levels, Rolling Stone, Takaken, YASS, JSoko, Sokolution, Festival&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/ XSokoban]&amp;lt;/span&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                                                | Thinking Rabbit, ...&lt;br /&gt;
|                                                                  90&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 59*]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Takaken%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/YASS%20-%20XSokoban.html 89]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[SolverStatistics-jsoko-ThinkingRabbit-XSokoban            |    67    ]]&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Curry%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/Festival%20-%20XSokoban.html &#039;&#039;&#039;90&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/XSokoban/BoxSearch%20-%20XSokoban.html &#039;&#039;&#039;89&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*) 59 solved puzzles according to paper [https://sokoban.dk/wp-content/uploads/2016/02/Single-Agent.pdf Sokoban Enhancing general single-agent search methods using domain knowledge]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - XSokoban Test Suite - Push-optimal Solutions&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width=&amp;quot;160&amp;quot;              | Author&lt;br /&gt;
| width=&amp;quot; 70&amp;quot;              | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://www.researchgate.net/publication/2305703_Pushing_the_Limits_New_Developments_in_Single-Agent_Search Rolling Stone]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.ijcai.org/Abstract/16/100 Pereira et al.]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sourceforge.net/projects/jsokoapplet/ JSoko]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width=&amp;quot; 80&amp;quot;              | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution ]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | XSokoban&lt;br /&gt;
| align=&amp;quot;left&amp;quot;                   | Thinking Rabbit, ...&lt;br /&gt;
|                90&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://webdocs.cs.ualberta.ca/~games/Sokoban/program.html 6 ]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                [[SolverStatistics-Pereira-ThinkingRabbit-XSokoban-Push-Optimal | 28 ]]&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/JSoko%20-%20XSokoban.html 25]&amp;lt;/span&amp;gt;&lt;br /&gt;
|                &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/Sokolution%20-%20XSokoban.html &#039;&#039;&#039;73&#039;&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The statistic shows that Sokolution is by far the best solver when searching for push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
== Large Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The large test suite comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
This test suite is not subject to change, as it is intended to be a &amp;quot;Large Standard Test Suite&amp;quot; for Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival ]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    3272      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;3208&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    3207      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2953      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2899      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    2749      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/LargeTestSuite/ Click here to see the detailed results for the Large Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download the entire test suite [https://sourceforge.net/projects/sokoban-solver-statistics/files/Large%20Test%20Suite.zip/download here] or the individual level sets from [http://sokobano.de/de/levels.php www.sokobano.de].&lt;br /&gt;
&lt;br /&gt;
== Open Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The statistics shows the results for the leading Sokoban solvers for various level collections. Please note that the grand totals are simple summations. The number of solved unique levels may differ slightly due to duplicate levels in the level packs.&lt;br /&gt;
&lt;br /&gt;
This test suite may be changed by adding new level collections from time to time. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; | Sokoban Solver Statistics - Open Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width= &amp;quot;80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/ YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://notabdc.github.io/puzzle007/EngPage/e_solver.htm#BoxSearch BoxSearch]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|   10043      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;9596&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    9516      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    8721      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    8339      &amp;lt;!-- YASS         --&amp;gt;&lt;br /&gt;
|    8111      &amp;lt;!-- BoxSearch    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/ Click here to see the detailed results for the Open Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Sokolution/ Comparison for the Open Test Suite for all Sokolution versions].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Push-optimal Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Push-optimal Test Suite&amp;quot; comprises level packs selected for being a challenge for the solvers, but not too difficult. The statistics shows the results for the leading Sokoban solver programs. &lt;br /&gt;
&lt;br /&gt;
For this test suite the solvers must solve the puzzles push optimal.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Sokoban Solver Statistics - Large Test Suite - Solved levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Header --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| width=&amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| width=&amp;quot; 70&amp;quot;   | Levels&lt;br /&gt;
| width=&amp;quot; 80&amp;quot;   | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/ Sokolution]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Total levels&lt;br /&gt;
|    1588      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ &#039;&#039;&#039;1529&#039;&#039;&#039;]&amp;lt;/span&amp;gt;  &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://sokoban-solver-statistics.sourceforge.io/statistics/Push-OptimalTestSuite/ Click here to see the detailed results for the Push-Optimal Test Suite].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GroupEffort Test Suite ==&lt;br /&gt;
&lt;br /&gt;
The only reason for benchmarking the GroupEffort test suite is to demonstrate the limited veracity of the statement made in section &amp;quot;6 Conclusion&amp;quot; of the thesis, where the author writes that the GroupEffort solver &amp;quot;outperforms existing solvers&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The benchmarks show that this was only true for the cherry-picked small test set at the time the thesis was published, never for the presumably more representative large test set. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; | Sokoban Solver Statistics - GroupEffort Test Suite - Solved Levels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- The header                                                                                   --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;                &amp;lt;!-- standard format of all rows --&amp;gt;&lt;br /&gt;
| width = &amp;quot;115&amp;quot; align=&amp;quot;left&amp;quot; | Collection&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; |                                                         Levels&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://baldur.iti.kit.edu/theses/SokobanPortfolio.pdf GroupEffort]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/                          Festival]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://sokolution.infinityfreeapp.com/                  Sokolution]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://computerpuzzle.net/english/sokoban/ver740/index.html Takaken]&amp;lt;/span&amp;gt; &lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/jsokoapplet/          JSoko]&amp;lt;/span&amp;gt;&lt;br /&gt;
| width =  &amp;quot;80&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sourceforge.net/projects/sokobanyasc/          YASS]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Small Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | [[SolverStatistics-GroupEffort-Small-Set | Small Set]] &lt;br /&gt;
| 200&lt;br /&gt;
| 196 (a)(c) &lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Small-Set   | &#039;&#039;&#039;200&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Small-Set | &#039;&#039;&#039;200&#039;&#039;&#039; (a) ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Small-Set    |    192 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Small-Set      |    180 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Small-Set       |    191 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Large Set                                                                                    --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot;| [[SolverStatistics-GroupEffort-Large-Set | Large Set]] &lt;br /&gt;
| 2851&lt;br /&gt;
| 1566 (a)(c)&lt;br /&gt;
| [[SolverStatistics-Festival-GroupEffort-Large-Set   | &#039;&#039;&#039;2766&#039;&#039;&#039; (b) ]]&lt;br /&gt;
| [[SolverStatistics-Sokolution-GroupEffort-Large-Set |    2471 (a)    ]]&lt;br /&gt;
| [[SolverStatistics-Takaken-GroupEffort-Large-Set    |    2462 (b)    ]]&lt;br /&gt;
| [[SolverStatistics-JSoko-GroupEffort-Large-Set      |    2165 (b)    ]] &lt;br /&gt;
| [[SolverStatistics-YASS-GroupEffort-Large-Set       |    2260 (b)    ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Total                                                                                        --&amp;gt;&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot;| Total &lt;br /&gt;
|    3051      &amp;lt;!-- Total levels --&amp;gt;&lt;br /&gt;
|    1762      &amp;lt;!-- Group Effort --&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;2966&#039;&#039;&#039;   &amp;lt;!-- Festival     --&amp;gt;&lt;br /&gt;
|    2671      &amp;lt;!-- Sokolution   --&amp;gt;&lt;br /&gt;
|    2654      &amp;lt;!-- Takaken      --&amp;gt;&lt;br /&gt;
|    2345      &amp;lt;!-- JSoko        --&amp;gt;&lt;br /&gt;
|    2471      &amp;lt;!-- YASS         --&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(a): Time limit: 5 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (b): Time limit: 10 minutes &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   (c): Best GroupEffort solver configuration&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
 Sokoban&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban (R) Registered Trademark of Falcon Co., Ltd., Japan&lt;br /&gt;
 Sokoban Copyright (C) 1982-2004 by Hiroyuki Imabayashi, Japan&lt;br /&gt;
 Sokoban Copyright (C) 1989, 1990, 2001-2004 by Falcon Co., Ltd., Japan&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 License&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Redistribution and use of the Sokoban Solver statistics are permitted&lt;br /&gt;
 provided that the following conditions are met: &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 * Redistributions may not be sold, nor may they be used in a commercial product or activity.&lt;br /&gt;
 * Redistributions must reproduce the entire content of this disclaimer in the documentation&lt;br /&gt;
   and/or other materials provided with the distribution.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Credits (in no particular order)&lt;br /&gt;
 ================================&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 CosmoNotes, CosmoPoly, LOMA, MicroCosmos, MiniCosmos,&lt;br /&gt;
 NaboCosmos and PicoCosmos level sets&lt;br /&gt;
 Copyright (C) by Aymeric du Peloux.&lt;br /&gt;
 E-mail: aymeric.du-peloux@gadz.org&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 dh1, dh2, bagatelle, cantrip, and maelstrom level sets&lt;br /&gt;
 Copyright (C) by David Holland&lt;br /&gt;
 E-mail: unknown&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Microban, Mas Microban, Sasquatch, Mas Sasquatch, Sasquatch III,&lt;br /&gt;
 Sasquatch IV, Sasquatch V, Sasquatch VI and Sasquatch VII level sets.&lt;br /&gt;
 Copyright (C) by David W. Skinner&lt;br /&gt;
 E-mail: sasquatch@bentonrea.com&lt;br /&gt;
 Web site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Grigr2001, Grigr2002 and GrigrSpecial level sets&lt;br /&gt;
 Copyright (C) by Evgeny Grigoriev  (aka GRIGoRusha)&lt;br /&gt;
 E-mail: grigr@yandex.ru&lt;br /&gt;
 Web site: http://grigr.narod.ru/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 SokEvo and SokHard level sets&lt;br /&gt;
 Copyright (C) 2002-2006 by Lee J Haywood&lt;br /&gt;
 E-mail: fruise@gmail.com&lt;br /&gt;
 Web Site: http://leehaywood.org/games/sokoban/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sven level set&lt;br /&gt;
 Copyright (C) 2007 by Sven Egevad&lt;br /&gt;
 E-mail: sven.egevad@telia.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Perfect and Sokoban Revenge level sets&lt;br /&gt;
 Copyright (C) 1989, 1991 by Thinking Rabbit&lt;br /&gt;
 Web Site: https://sokoban.jp/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Y.M. Auto and Y.M. Handmade level sets&lt;br /&gt;
 Copyright (C) Yoshio Murase &lt;br /&gt;
 E-mail: yoshio@asahi.email.ne.jp&lt;br /&gt;
 Web Site: http://www.ne.jp/asahi/ai/yoshio/sokoban/index.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 JSoko&lt;br /&gt;
 Copyright (C) by Matthias Meger&lt;br /&gt;
 E-mail: JSoko@mail.de&lt;br /&gt;
 Web site: https://jsokoapplet.sourceforge.io/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban Automatic Solver (aka Takaken solver)&lt;br /&gt;
 Copyright (C) 2002 - 200X Ken&#039;ichiro Takahashi (aka takaken)&lt;br /&gt;
 E-mail: takaken@ic-net.or.jp&lt;br /&gt;
 Web site: https://computerpuzzle.net/english/sokoban/ver740/index.html &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YASS - Yet Another Sokoban Solver and Optimizer - For Small Levels&lt;br /&gt;
 Copyright (C) 2007 by Brian Damgaard&lt;br /&gt;
 Web site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokoban YASC &lt;br /&gt;
 Copyright (C) 2001-2020 by Brian Damgaard&lt;br /&gt;
 Web Site: https://sourceforge.net/projects/sokobanyasc/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 YSokoban&lt;br /&gt;
 Copyright (C) 2007 by George Petrov&lt;br /&gt;
 E-mail: YGP@WriteMe.com&lt;br /&gt;
 Web Site:  http://ygp.orgfree.com/sokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 XSokoban&lt;br /&gt;
 Copyright (C) by Andrew Myers&lt;br /&gt;
 E-mail: andru@cs.cornell.edu&lt;br /&gt;
 Web Site: http://www.cs.cornell.edu/andru/xsokoban.html&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokofan&lt;br /&gt;
 Copyright (C) 2005-2007 by Eric Leung&lt;br /&gt;
 E-mail: eleung2@hotpop.com&lt;br /&gt;
 Web Site: unknown&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Sokolution&lt;br /&gt;
 Copyright (C) 2016-2019 by Florent DIEDLER&lt;br /&gt;
 E-mail: fdiedler2000@gmail.com&lt;br /&gt;
 Web site: http://sokolution.infinityfreeapp.com/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Festival&lt;br /&gt;
 Copyright (C) 2020 by Yaron Shoham&lt;br /&gt;
 Web site: https://festival-solver.site/&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Trademarks&lt;br /&gt;
 ========== &lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Company names, brand names and product names are trademarks&lt;br /&gt;
 or registered trademarks of their respective holders.&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 Contact&lt;br /&gt;
 =======&lt;br /&gt;
 &amp;lt;br&amp;gt;&lt;br /&gt;
 E-mail: sokobanowiki@gmail.com&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=How_to_play_Sokoban&amp;diff=8270</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=8270"/>
		<updated>2025-04-24T09:52:26Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Reverse play */ added reverse mode&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Scientific_research&amp;diff=8210</id>
		<title>Scientific research</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Scientific_research&amp;diff=8210"/>
		<updated>2024-11-12T15:28:51Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: clarification that the challenge is due to TWO main factors:  Large search tree AND the difficulty of finding a suitable heuristic for all puzzles.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Scientific research==&lt;br /&gt;
&lt;br /&gt;
Sokoban has been studied using the theory of computational complexity. &lt;br /&gt;
&lt;br /&gt;
The computational problem of solving Sokoban puzzles was first shown to be &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/NP-hardness NP-hard]&amp;lt;/span&amp;gt;. Further work proved it is also &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/PSPACE-complete PSPACE-complete]&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sokoban puzzles are challenging for computers to solve because they require complex decision-making.&lt;br /&gt;
&lt;br /&gt;
The two main factors that explain this difficulty:&lt;br /&gt;
&lt;br /&gt;
* Exponentially growing search space: In Sokoban, there are usually multiple boxes, each with numerous possible moves. This causes the number of possible states to grow exponentially, making it challenging to find a solution within a reasonable time.&lt;br /&gt;
&lt;br /&gt;
* Heuristic challenges: Given the vast search space, good heuristics are necessary for efficient problem-solving. However, it&#039;s challenging to develop a general heuristic that works well in all situations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Sokoban game provides a challenging testbed for developing and evaluating planning techniques.&lt;br /&gt;
&lt;br /&gt;
The first documented automated solver was [[Rolling Stone solver | Rolling Stone]], developed at the University of Alberta. &lt;br /&gt;
&lt;br /&gt;
Its core principles laid the groundwork for many newer solvers.&lt;br /&gt;
It employed a conventional search algorithm enhanced with domain-specific knowledge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://festival-solver.site/ Festival]&amp;lt;/span&amp;gt;, utilizing its FESS algorithm, was the first automatic solver to complete all 90 puzzles in the widely used XSokoban test suite (&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://sokoban-solver-statistics.sourceforge.io/statistics/OpenTestSuite/Festival%20-%20XSokoban.html Festival results])&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
However, even the best automated solvers cannot solve many of the more challenging puzzles that humans can solve with time and effort.&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Duplicate_Finder&amp;diff=8203</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=8203"/>
		<updated>2024-07-17T19:50:21Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Duplicate Finder */ removed old programs&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Optimizer&amp;diff=8202</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=8202"/>
		<updated>2024-07-17T19:37:36Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Optimizer */ correct format as good as I can&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Solver&amp;diff=8201</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=8201"/>
		<updated>2024-07-17T19:33:49Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: &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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Editor&amp;diff=8197</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=8197"/>
		<updated>2024-07-17T19:23:53Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools : Level Editor */ correct format&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Template:Programs&amp;diff=8196</id>
		<title>Template:Programs</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Template:Programs&amp;diff=8196"/>
		<updated>2024-07-17T19:23:12Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; class=&amp;quot;soko-table-title feature-title&amp;quot;&lt;br /&gt;
| &amp;lt;div style=&amp;quot;width:120px;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; || {{{1|&amp;lt;div&amp;gt;[http://sourceforge.net/projects/sokobanyasc/ Sokoban YASC]&amp;lt;/div&amp;gt;}}} || {{{2|&amp;lt;div&amp;gt;[http://www.joriswit.nl/sokoban/ Sokoban++]&amp;lt;/div&amp;gt;}}} || {{{3|&amp;lt;div&amp;gt;[http://www.sokoban-online.de JSoko]&amp;lt;/div&amp;gt;}}} || {{{4|&amp;lt;div&amp;gt;[http://www.sourcecode.se/sokoban/ Sokoban&amp;amp;nbsp;for&amp;amp;nbsp;Windows]&amp;lt;/div&amp;gt;}}} || {{{5|&amp;lt;div&amp;gt;[http://ygp.orgfree.com/sokoban.html YSokoban]&amp;lt;/div&amp;gt;}}} || {{{6|&amp;lt;div&amp;gt;[http://www.sokosave.org/ SokoSave Desktop]&amp;lt;/div&amp;gt;}}}&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Additional_Tools&amp;diff=8191</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=8191"/>
		<updated>2024-07-17T18:58:43Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Additional Tools */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Miscellaneous&amp;diff=8190</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=8190"/>
		<updated>2024-07-17T18:57:50Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Miscellaneous */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Multi-player_Mode&amp;diff=8189</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=8189"/>
		<updated>2024-07-17T18:57:18Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Multi-player Mode */ emoved column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Web-based_Support&amp;diff=8188</id>
		<title>Feature list : Web-based Support</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Web-based_Support&amp;diff=8188"/>
		<updated>2024-07-17T18:56:24Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Web-based Support */ removed column&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;
== Web-based Support ==&lt;br /&gt;
&amp;lt;!-- ::::: WEB-BASED SUPPORT ::::: --&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; | Web-based Support !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Web-based Support&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | website || [http://sourceforge.net/projects/sokobanyasc/ official&amp;amp;nbsp;website] || [http://www.joriswit.nl/sokoban/ official&amp;amp;nbsp;website]|| [http://www.sokoban-online.de official&amp;amp;nbsp;website] || [http://www.sourcecode.se/sokoban/ official&amp;amp;nbsp;website] || [http://ygp.orgfree.com/sokoban.html official&amp;amp;nbsp;website] || [http://www.sokosave.org/ official&amp;amp;nbsp;website] &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | forum || {{ni}} || {{ni}} || {{ni}} || [http://www.sourcecode.se/sokoban/forum official&amp;amp;nbsp;forum] || {{ni}} || [http://www.high-speed-software.com/sokosave/forum/ official&amp;amp;nbsp;forum] &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | additional level packs || {{un}} {{tip|practically all text-based levels for download are supported}} || {{un}} {{tip|practically all text-based levels for download are supported}} || {{un}} {{tip|practically all text-based levels for download are supported}} || {{yes}}(.slc files) || {{un}} {{tip|practically all text-based levels for download are supported)}} || {{un}} {{tip|practically all text-based single-level files for download are supported)}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | additional solutions || {{no}} || {{yes}} || {{no}} || ||  {{yes}}[http://ysokoban.atspace.com/ ysokoban&amp;amp;nbsp;solutions] || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | additional skin packs || {{un}} {{tip|all major skin formats for download are supported}} || {{yes}} || {{no}} || {{no}} {{tip|all available skins ship with the program}} || {{yes}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | additional add-ons || {{yes}} utilities || {{yes}}language packs, solver-plugins, utilities || {{no}} || ||  {{yes}} utilities || {{yes}} utilities &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | automatic update || {{no}} || {{no}} || {{yes}} automatic check for updates || {{yes}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | option to jump to the official website || {{yes}} || {{yes}} || {{no}} || {{yes}} ||  {{no}} || {{yes}} &lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Moves_Management&amp;diff=8187</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=8187"/>
		<updated>2024-07-17T18:55:45Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Moves Management */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Level_Management&amp;diff=8186</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=8186"/>
		<updated>2024-07-17T18:55:07Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Level Management */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Map_Viewing&amp;diff=8185</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=8185"/>
		<updated>2024-07-17T18:52:24Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Map Viewing */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Skin_Features&amp;diff=8184</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=8184"/>
		<updated>2024-07-17T18:51:10Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Skin Features */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Customizing&amp;diff=8183</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=8183"/>
		<updated>2024-07-17T18:43:17Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Customizing */ removed extra column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8182</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=8182"/>
		<updated>2024-07-17T18:37:12Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Game Play */ removed column&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_General_Information&amp;diff=8181</id>
		<title>Feature list : General Information</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_General_Information&amp;diff=8181"/>
		<updated>2024-07-17T18:07:41Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Game Types */&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;
== Platforms ==&lt;br /&gt;
&amp;lt;!-- ::::: PLATFORMS ::::: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- YASC | Sokoban++ | JSoko | 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; | Platforms !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Platforms&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | Java&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;(platform independent)&amp;lt;/small&amp;gt; || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | Linux || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | Mac OS X || {{no}} || {{yes}} {{tip|Sokoban++ for macOS lacks many of the features listed here, this feature list reflects the Windows version|text=partial}} || {{yes}} || {{no}} || {{no}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | Windows || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | Windows Mobile || {{no}} || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
! colspan=&amp;quot;6&amp;quot; | Program Information !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Program Information&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | license || free software || freeware || free software || shareware ||  freeware || freeware &lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&amp;lt;!-- ::::: LIMITS ::::: --&amp;gt; &lt;br /&gt;
&amp;lt;!-- YASC | 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; | Limits !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Limits&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | maximal map size || 50x50 || 70x70 || 200x200 || unlimited || unlimited || unlimited &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | maximal moves || 100000 || unlimited || unlimited  || unlimited || unlimited || unlimited &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | [[Feature_list_:_General_Information#Maximal boxes limited by map size|maximal boxes]] || 1200 || unlimited || unlimited  || unlimited || unlimited || unlimited &lt;br /&gt;
|}&lt;br /&gt;
[[#top|Top]]&lt;br /&gt;
&lt;br /&gt;
== Game Types ==&lt;br /&gt;
&amp;lt;!-- ::::: GAME TYPES :::::  --&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 Types !! colspan=&amp;quot;50&amp;quot; | &amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;Game Types&amp;lt;/div&amp;gt;&lt;br /&gt;
|- {{programs}}&lt;br /&gt;
| {{tc}} | sokoban || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | sokoban +&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;(numbered sokoban)&amp;lt;/small&amp;gt; || {{no}} || {{no}} || {{no}} || {{no}} ||  {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | trioban || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | hexoban || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} {{tip|separate download available}} || {{yes}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | octoban || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}} &lt;br /&gt;
|- &lt;br /&gt;
| {{tc}} | multiban || {{no}} || {{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;!-- ::::: FEATURE-INFO :::: --&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&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 map size&amp;quot;.)&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>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Level_format&amp;diff=8150</id>
		<title>Level format</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Level_format&amp;diff=8150"/>
		<updated>2024-06-14T10:46:55Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: moved Level format to Puzzle format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Puzzle format]]&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=User:Matthias_Meger&amp;diff=8139</id>
		<title>User:Matthias Meger</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=User:Matthias_Meger&amp;diff=8139"/>
		<updated>2024-06-12T14:06:22Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matthias Meger&lt;br /&gt;
Hamburg, Germany&lt;br /&gt;
E-Mail: JSoko@mail.de&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Main_Page&amp;diff=8123</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Main_Page&amp;diff=8123"/>
		<updated>2024-04-23T18:24:51Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Welcome to the Sokoban Wiki */ added scientific research page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==&#039;&#039;&#039;Welcome to the Sokoban Wiki&#039;&#039;&#039;==&lt;br /&gt;
 &lt;br /&gt;
[[Image:SokobanExample.gif|frame|right|A &#039;&#039;Sokoban&#039;&#039; puzzle being solved]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sokoban&#039;&#039;&#039; is a puzzle video game in which the player pushes boxes around in a warehouse, trying to get them to storage locations. &lt;br /&gt;
&lt;br /&gt;
The game was designed in 1981 by Hiroyuki Imabayashi, and first published in December 1982.&lt;br /&gt;
The original game of SOKOBAN was written by Hiroyuki Imabayashi.&lt;br /&gt;
&lt;br /&gt;
Today Sokoban is one of the most popular thought and logic games.&lt;br /&gt;
&lt;br /&gt;
The name comes from Japan and means &amp;quot;warehouse keeper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
As simple as that name is, so is the idea of this game: &lt;br /&gt;
&lt;br /&gt;
A Sokoban puzzle represents a store room, where boxes appear to be randomly placed.&lt;br /&gt;
You help the warehouse keeper to push the boxes around the maze of the room so that, at the end, all boxes are on marked fields.&lt;br /&gt;
&lt;br /&gt;
The only restrictions are that the warehouse keeper can only push a box, never pull, and that just one box may be pushed at a time.&lt;br /&gt;
&lt;br /&gt;
Each puzzle has a different structure, which requires a different solution - often with a different strategy as well.&lt;br /&gt;
The magic of the game is that boxes, which are out of the way on one move, might be in the way on the next move.&lt;br /&gt;
&lt;br /&gt;
The simplicity of the rules, in combination with the many puzzles ranging from easy to extremely difficult, have made Sokoban become a real classic.&lt;br /&gt;
 &lt;br /&gt;
This Wiki is dedicated to this exciting game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;box margin-3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Contents&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Information&#039;&#039;&#039;&lt;br /&gt;
:* [[The rules of the game]]&lt;br /&gt;
:* [[How to play Sokoban]]&lt;br /&gt;
:* [[Moves vs. Pushes]]&lt;br /&gt;
:* [[Deadlocks]]&lt;br /&gt;
:* [[Scientific research]]&lt;br /&gt;
:* [[level format | The level format]]&lt;br /&gt;
:* [[general Sokoban information | General Sokoban information]]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Programs&#039;&#039;&#039;&lt;br /&gt;
:* [[First_Sokoban_program | The first Sokoban program]]&lt;br /&gt;
:* [[Links | Sokoban Programs and links]]&lt;br /&gt;
:* [[feature_list | Sokoban program feature comparisons]]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Solvers statistics&#039;&#039;&#039;&lt;br /&gt;
:* [[Solver Statistics | Sokoban solver statistics]]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Development&#039;&#039;&#039;&lt;br /&gt;
:* [[Solver | Solver development]]&lt;br /&gt;
:* [[Optimizer | Optimizer development]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SokobanWiki Buttons ==&lt;br /&gt;
&lt;br /&gt;
Add a SokobanWiki [[Buttons|Button]] to your web site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This Sokoban Wiki was printed on 100% recycled electrons!&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:SokobanExample.gif&amp;diff=8121</id>
		<title>File:SokobanExample.gif</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:SokobanExample.gif&amp;diff=8121"/>
		<updated>2024-04-23T18:18:59Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:FirstSokoban.png&amp;diff=8119</id>
		<title>File:FirstSokoban.png</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:FirstSokoban.png&amp;diff=8119"/>
		<updated>2024-04-17T11:49:44Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: uploaded a new version of &amp;quot;File:FirstSokoban.png&amp;quot;:&amp;amp;#32;Screenshot: First Sokoban program&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image of the first Sokoban game&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Solver&amp;diff=8117</id>
		<title>Solver</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Solver&amp;diff=8117"/>
		<updated>2024-04-13T12:56:58Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Deadlocks */ Changed the text a bit so it&amp;#039;s clearer that deadlocks are a good thing and can help the solver find a solution quicker&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Terms and Definitions ==&lt;br /&gt;
&lt;br /&gt;
;Level&lt;br /&gt;
:Another term for a Sokoban puzzle.&lt;br /&gt;
:A level contains a board and usually additional data like title, author name and solutions.&lt;br /&gt;
:Sometimes it’s also called “maze”.&lt;br /&gt;
&lt;br /&gt;
;Board&lt;br /&gt;
:The board is a 2 dimensional area containing the objects of a Sokoban level (walls, boxes, goals, player and empty squares).&lt;br /&gt;
&lt;br /&gt;
;Boxes&lt;br /&gt;
:The objects on the board which the player can push around.&lt;br /&gt;
&lt;br /&gt;
;Goals&lt;br /&gt;
:The target positions for the boxes. &lt;br /&gt;
:A level is solved when all boxes have been pushed to a goal.&lt;br /&gt;
&lt;br /&gt;
;Box Configuration&lt;br /&gt;
:The positions of all boxes on the board form a specific &#039;&#039;Box Configuration&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
;Board position&lt;br /&gt;
:The positions of all boxes and the player position constitute a &#039;&#039;Board Position&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
;State&lt;br /&gt;
:The positions of all boxes and the player position constitute a Board Position.&lt;br /&gt;
:&lt;br /&gt;
:The term State is used when additional data are stored together with a Board Position. &lt;br /&gt;
:&lt;br /&gt;
:For instance, a solver may store: pushes needed to reach the board position or the information of which box has been pushed last.&lt;br /&gt;
:&lt;br /&gt;
:The search tree consists of states being generated during the search.&lt;br /&gt;
:&lt;br /&gt;
:States can be stored in a transposition table so duplicate game positions can be detected, for instance.&lt;br /&gt;
:Other terms for a state are: game position, game state and game position.&lt;br /&gt;
&lt;br /&gt;
;Player reachable area&lt;br /&gt;
:The player reachable area consists of all squares on the board currently reachable for the player.&lt;br /&gt;
&lt;br /&gt;
;Corral&lt;br /&gt;
:The boxes and walls on the board can split the board into several areas. &lt;br /&gt;
:&lt;br /&gt;
:An area of the board which the player cannot reach, surrounded by a barrier made of one or more boxes, and any number of walls is called “corral”.&lt;br /&gt;
&lt;br /&gt;
== Data Structures ==&lt;br /&gt;
&lt;br /&gt;
=== Positions on the board ===&lt;br /&gt;
The board is a two-dimensional area containing the objects of a Sokoban level.&lt;br /&gt;
&lt;br /&gt;
Hence, a natural data structure for storing the board is a two-dimensional array.&lt;br /&gt;
&lt;br /&gt;
However, many solvers use a one-dimensional data structure for this task, numbering the board positions from 0 to n-1, where &#039;n&#039; is the number of board squares. &lt;br /&gt;
&lt;br /&gt;
Accessing the elements of a one-dimensional vector is easier and faster for a computer program than accessing the elements of a two-dimensional array, simply because the address calculation is less complicated.&lt;br /&gt;
&lt;br /&gt;
Using a one-dimensional vector has also the advantage for the programmer, that a square number can be stored in just one variable.&lt;br /&gt;
&lt;br /&gt;
The board data structure can also include additional data, for instance flags for: &lt;br /&gt;
* Is a box frozen?&lt;br /&gt;
* Is the position a dead position?&lt;br /&gt;
&lt;br /&gt;
=== Storing a state ===&lt;br /&gt;
In Sokoban a state consists (among possible additional data associated with it) of the positions of the boxes and the position of the player. &lt;br /&gt;
&lt;br /&gt;
Every other element of the board cannot change its position and therefore needn’t to be stored per state.&lt;br /&gt;
&lt;br /&gt;
Therefore a state can be stored by using:&lt;br /&gt;
* One integer array for storing all box positions.&lt;br /&gt;
* One integer for storing the player position.&lt;br /&gt;
&lt;br /&gt;
For a better memory alignment the player position and box positions can also be stored in one integer array together.&lt;br /&gt;
&lt;br /&gt;
The data structure usually consists of additional data fields like for storing information about the state like pushes needed to reach it or which box has been pushed last.&lt;br /&gt;
&lt;br /&gt;
Example data structure for Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class State {&lt;br /&gt;
	int[] boxPositions;&lt;br /&gt;
	int playerPosition;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transposition Tables ===&lt;br /&gt;
Solvers for the Sokoban game use a graph search as the search algorithm.&lt;br /&gt;
&lt;br /&gt;
The search creates a directed graph of states. &lt;br /&gt;
&lt;br /&gt;
In nearly every Sokoban puzzle many states can be reached through different paths in the search graph.&amp;lt;br /&lt;br /&gt;
In these cases the graph is cyclic and the search reaches specific states multiple times during the search.&amp;lt;br /&lt;br /&gt;
The search effort can therefore be considerably reduced by eliminating duplicate states from the search.&amp;lt;br /&lt;br /&gt;
A common technique is to use a large hash table, called the transposition table, which stores all already explored states.&amp;lt;br /&lt;br /&gt;
&lt;br /&gt;
The transposition can also be used to store additional data per state – for instance the depth the state has been reached in during an IDA*-search.&lt;br /&gt;
&lt;br /&gt;
==== Tradeoff between space and time ====&lt;br /&gt;
The transposition table may need to hold several million states.&amp;lt;br /&lt;br /&gt;
Hence, an efficient data structure has to be chosen for storing the states.&lt;br /&gt;
&lt;br /&gt;
There are different approaches to address the high memory usage problem.&lt;br /&gt;
&lt;br /&gt;
===== Limit the transposition table size =====&lt;br /&gt;
One solution for the high memory usage of the transposition is limiting the size of the transposition table.&lt;br /&gt;
&lt;br /&gt;
This makes the search algorithm a kind of hybrid between tree search and graph search. &amp;lt;br /&lt;br /&gt;
The advantage is the ability to search for solutions for larger levels due to the lower memory usage, while an obvious disadvantage is that it may lead to duplicated search effort. &lt;br /&gt;
&lt;br /&gt;
===== Incremental storage of states =====&lt;br /&gt;
Instead of storing all box positions and the (normalized) player position for every state it’s also possible to store the data relative to another state.&lt;br /&gt;
&lt;br /&gt;
This divides the states in two types:&lt;br /&gt;
* States that store all box positions and the player position.&lt;br /&gt;
* States that store a link to another state and the difference to that linked state.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&lt;br /&gt;
A state consists of these data:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
State 1:&lt;br /&gt;
box positions: 10, 13, 21, 33, 45, 47, 48, 49&lt;br /&gt;
player position:  17&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now another state consisting of these data has to be stored:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
State 2:&lt;br /&gt;
box positions: 11, 13, 21, 33, 45, 47, 48, 49 &lt;br /&gt;
player position:  10&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
State 2 can be stored relative to state 1 this way:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
State 2:&lt;br /&gt;
link to: state 1&lt;br /&gt;
boxNo: 0&lt;br /&gt;
newBoxPosition: 11&lt;br /&gt;
Player position: 10   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hash Function ===&lt;br /&gt;
Since the transposition table is usually implemented as hash table a hash function is needed for storing the states. &lt;br /&gt;
&lt;br /&gt;
The hash function takes the position of every box and the normalized player position into account.&lt;br /&gt;
&lt;br /&gt;
One efficient way to implement this is using Zobrist values (see: Albert L Zobrist. A new hashing method with application for game playing. ICCA journal, 13(2):69–73, 1970.)&lt;br /&gt;
&lt;br /&gt;
== Normalizing the player position ==&lt;br /&gt;
Solvers not interested in finding solutions optimized for moves can consider two states equivalent if the boxes are at the same positions and the player positions are in the same player access area.&lt;br /&gt;
&lt;br /&gt;
This can be implemented by storing only normalized player positions, e.g. the top-left reachable position instead of the actual position of the player.&lt;br /&gt;
&lt;br /&gt;
This significantly reduces the number of states in the search tree.&lt;br /&gt;
&lt;br /&gt;
== Calculation of player reachable positions ==&lt;br /&gt;
The reachable player positions must be calculated very often during the solver search.&lt;br /&gt;
Hence, an efficient algorithm is required.&lt;br /&gt;
&lt;br /&gt;
=== Algorithm ===&lt;br /&gt;
In order to generate successor states from a specific state during the search the solver must know which side of which boxes the player can reach.&lt;br /&gt;
&lt;br /&gt;
Instead of calculating a path for the player to every side of every box separately it’s quicker to calculate all player reachable positions at once.&lt;br /&gt;
&lt;br /&gt;
This can be done by performing a simple Breadth First Search.&lt;br /&gt;
&lt;br /&gt;
The BFS marks all reachable positions. This can be done by using a boolean array where each bit represents a specific position on the board.&amp;lt;br /&amp;gt;&lt;br /&gt;
For a better performance time stamps can be used to mark the reachable positions of the player instead of boolean flags.&lt;br /&gt;
&lt;br /&gt;
== Brute force ==&lt;br /&gt;
The first step we do is to code a routine that generates all possible pushes for a given level situation.&lt;br /&gt;
In our level for the first push there are four possible pushes: up, down, left and right. All of these pushes are done and the resulting states are stored in a queue. &lt;br /&gt;
&lt;br /&gt;
With only one push the box can be pushed to the following positions:&lt;br /&gt;
&lt;br /&gt;
[[Image:SolverLevel2.png]]&lt;br /&gt;
&lt;br /&gt;
After this is done we take every of these saved states as new start state and generate all possible successor states. For example, this is one state than occurs after the first push has been made:&lt;br /&gt;
&lt;br /&gt;
[[Image:SolverLevel3.png]]&lt;br /&gt;
&lt;br /&gt;
We take this state and generate all successor states of it (that just means we push the box to every possible direction again). Again we save every generate state in the queue.&lt;br /&gt;
&lt;br /&gt;
Described as algorithm this looks like this:&lt;br /&gt;
&lt;br /&gt;
This is done again and again:&lt;br /&gt;
# Add the initial state (the level begin) to the queue&lt;br /&gt;
&lt;br /&gt;
# Take the first state of the queue &lt;br /&gt;
# Generating all successor states of the state we got of the queue&lt;br /&gt;
# Add all states we&#039;ve just generated in the queue&lt;br /&gt;
# continue by step 1&lt;br /&gt;
&lt;br /&gt;
Finally we reach the state where the box is located on the goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pruning duplicate positions ==&lt;br /&gt;
The described algorithm can be improved a lot. One thing that can be improved is the following:&lt;br /&gt;
At any time the algorithm pushes the box on square to the right. Then it adds this state to the queue. At some time it takes this state from the queue again and generates all successor states - including the state resulting by pushing the box one square to the left.&lt;br /&gt;
This results in a loop: Pushing a box to the right, then back to the left, again to the right, ...&lt;br /&gt;
we generate duplicate positions which slows down the search a lot. So what we have to do is avoiding duplicates states.&lt;br /&gt;
To avoid duplicate positions we have to detect them. Therefore we have to store every state reached during the solving process.&lt;br /&gt;
After a new state has been generated we have to check if it has already been generated before and if so we just discard it.&lt;br /&gt;
This reduces the number of states to search until a solution is found a lot and therefore improves the performance of the solver.&lt;br /&gt;
&lt;br /&gt;
New solver process logic:&lt;br /&gt;
# Take the first state of the queue &lt;br /&gt;
# Generating all successor states of the state we got of the queue&lt;br /&gt;
# Delete all successor states that have already been generated before&lt;br /&gt;
# Add all left states to the queue&lt;br /&gt;
# continue by step 1&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Due to the constraints given by the rules of Sokoban some states in the game are deadlocked.&lt;br /&gt;
&lt;br /&gt;
That means it isn’t possible to push every box to goal, anymore.&lt;br /&gt;
&lt;br /&gt;
In general, deadlocks can be arbitrarily complex and potentially include all the boxes.&lt;br /&gt;
&lt;br /&gt;
Hence, detecting all deadlocks is only feasible for very small levels.&lt;br /&gt;
&lt;br /&gt;
However, a lot of deadlocks can be identified also in bigger levels.&lt;br /&gt;
&lt;br /&gt;
Detecting deadlocks can prune huge parts of the search tree and therefore is an important part of every solver.&lt;br /&gt;
&lt;br /&gt;
A balance has to be found between the time spent on deadlock detection and the time spent on the actual search.&lt;br /&gt;
&lt;br /&gt;
While the detection process itself has some computational cost, the benefits of pruning large parts of the search tree usually outweigh the drawbacks. &lt;br /&gt;
&lt;br /&gt;
See the [[Deadlocks]] section for an overview of some common deadlocks that may occur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[How to detect deadlocks]]&lt;br /&gt;
&lt;br /&gt;
== Pushes Lowerbound Calculation ==&lt;br /&gt;
&lt;br /&gt;
The ability to admissibly estimate the number of box pushes needed to solve a specific state is useful for the heuristic function used in a guided search - like for example the A*-search.&lt;br /&gt;
&lt;br /&gt;
The more accurate the calculated lower bound is the better it can guide the search.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, calculating a good lower bound is a CPU intensive calculation.&lt;br /&gt;
&lt;br /&gt;
A good lower bound calculation is especially important for solvers that search push optimal solutions.&lt;br /&gt;
&lt;br /&gt;
The lower bound can also be used as information whether a level has been solved, since a lower bound of 0 means all boxes are on goals.&lt;br /&gt;
&lt;br /&gt;
=== Performance vs. Accuracy ===&lt;br /&gt;
Calculating an accurate pushes lower bound is a quite expensive task.&amp;lt;br /&amp;gt;&lt;br /&gt;
Hence, depending on the needed accuracy different algorithms are used. &lt;br /&gt;
&lt;br /&gt;
==== Free Goals Count ====&lt;br /&gt;
A trivial lower bound can be calculated by counting the number of goals not occupied by a box.&lt;br /&gt;
&lt;br /&gt;
This calculation is very fast but the results are quite inaccurate.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, this calculation can be used to identify specific level types.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
If the initial state of a level has 20 boxes but only one goal not occupied by a box then this level belongs to a specific level type where most of the boxes are on goals right from the beginning.&amp;lt;br /&amp;gt;&lt;br /&gt;
For such levels a lower bound calculation can often not guide the search as well as in other level types.&lt;br /&gt;
&lt;br /&gt;
==== Simple Lower Bound ====&lt;br /&gt;
A simple lower bound calculation calculates the sum of the distances of each box to its nearest goal.&lt;br /&gt;
&lt;br /&gt;
The distance from a box to its nearest goal can be calculated with various degrees of sophistication.&amp;lt;br /&amp;gt;&lt;br /&gt;
The simplest method is to calculate the  so-called [http://en.wikipedia.org/wiki/Taxicab_geometry Manhattan distance]. &lt;br /&gt;
&lt;br /&gt;
A more accurate method is to use the minimum push distance from a box to its nearest goal. &amp;lt;br /&amp;gt;&lt;br /&gt;
The program can precalculate the minimum push distance to the nearest goal for all squares on the board during initialization. &amp;lt;br /&amp;gt;&lt;br /&gt;
That way, it&#039;s a simple and efficient table lookup to find the distance to the nearest goal for each box during the search.&lt;br /&gt;
&lt;br /&gt;
Both of these methods have the notable property that they are so-called [http://en.wikipedia.org/wiki/Admissible_heuristic admissible heuristics], i.e., they never overestimate the true shortest solution. This means the lower bound estimate can be used for solving a level with a push-optimality guarantee.&lt;br /&gt;
&lt;br /&gt;
Calculating a simple lower bound is fast and accurate enough for very small levels. It does, however, grossly underestimate the true lower bound in most cases. The simple lower bound ignores that all boxes must go to different goals, and it also ignores how the boxes interact with (typically block) one another.&lt;br /&gt;
&lt;br /&gt;
==== Minimum Matching Lower Bound ====&lt;br /&gt;
The Minimum Matching Lower Bound algorithm calculates a minimum-cost perfect matching on a bipartite graph.&amp;lt;br /&amp;gt;&lt;br /&gt;
The “cost” is represented by the push distance of a specific box to a specific goal.&amp;lt;br /&amp;gt;&lt;br /&gt;
Each box is assigned to a goal so that the total sum of distances is minimized.&lt;br /&gt;
&lt;br /&gt;
The matching can be calculated using the Hungarian method or the Auction algorithm, for instance.&amp;lt;br /&amp;gt;&lt;br /&gt;
The complexity of this calculation is about O(N3), where N is the number of boxes and therefore are quite expensive calculation.&lt;br /&gt;
&lt;br /&gt;
The benefits of this expensive calculation are:&lt;br /&gt;
* It produces much more accurate results than the Simple Lower Bound calculation.&lt;br /&gt;
* It provides the parity of the any solution, i.e. if the value returned by the algorithm is even, then the number of pushes in a solution is also even. &lt;br /&gt;
This makes it possible to skip every other iteration in an iterative deepening search. &lt;br /&gt;
* It can detect deadlocks where not every box can reach an own goal anymore.&lt;br /&gt;
&lt;br /&gt;
==== Greedy approach ====&lt;br /&gt;
Calculating a minimum-cost perfect matching on a bipartite graph as described above is an expensive computation.&lt;br /&gt;
&lt;br /&gt;
A greedy approach can be used to approximate a minimal perfect matching: &amp;lt;br /&amp;gt;&lt;br /&gt;
the push distances of all boxes to every goal are calculated and stored in a list sorted ascending by distance.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
: box1 to goal 1: distance = 3&lt;br /&gt;
: box 2 to goal 1: distance = 4&lt;br /&gt;
: box1 to goal 2: distance = 10&lt;br /&gt;
: box 2 to goal 2: distance = 12&lt;br /&gt;
&lt;br /&gt;
There is also a list of all already matched boxes and goals.     &amp;lt;br /&amp;gt;&lt;br /&gt;
We then iterate over this list of distances.                     &amp;lt;br /&amp;gt;&lt;br /&gt;
If the box and the goal both aren’t matched, yet, we match them. &amp;lt;br /&amp;gt;&lt;br /&gt;
In the example, we would match box 1 to goal 1.                  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the second list entry is reached:    &amp;lt;br /&amp;gt;&lt;br /&gt;
“box 2 to goal 1: distance = 4“           &amp;lt;br /&amp;gt;&lt;br /&gt;
Since goal1 is already matched with box 1 the box can’t be matched and we discard this entry.&lt;br /&gt;
&lt;br /&gt;
However, it is possible that not every box is assigned a goal after the list has been completely iterated over – although a valid matching for all boxes may be possible.&amp;lt;br /&amp;gt;&lt;br /&gt;
In that case all not yet matched boxes are simply assigned to its closest goal. &lt;br /&gt;
&lt;br /&gt;
This approach isn’t as expensive to calculate as a minimum-cost perfect matching with the disadvantage of being less accurate.&lt;br /&gt;
&lt;br /&gt;
=== Algorithm Optimization ===&lt;br /&gt;
The algorithm used to calculate the pushes lower bound can be optimized using specific optimization ideas:&lt;br /&gt;
&lt;br /&gt;
* If the lower bound of a state is L1 and a push is made the new lower bound L2 has to be calculated.&amp;lt;br /&amp;gt;When the algorithm finds a matching that reduces this lower bound L1 by the cost of the push, it’s clear that the lower bound can’t be reduced further.&amp;lt;br /&amp;gt;Hence, the algorithm can stop immediately in these cases.&lt;br /&gt;
&lt;br /&gt;
* During the search the algorithm only needs to update the previous found matching, because each push results in only one box changing its distances to the goals.&lt;br /&gt;
&lt;br /&gt;
* Only perfect matchings are relevant.&amp;lt;br /&amp;gt;Hence, as soon as it is clear that a perfect matching isn’t possible the algorithm needn’t to search for the minimum matching anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Calculating the Box Distances ===&lt;br /&gt;
For calculating the pushes lower bound the algorithm needs the distances for all boxes to all goals.&lt;br /&gt;
&lt;br /&gt;
Calculating these distances can be done in different ways.&lt;br /&gt;
&lt;br /&gt;
Since the wall positions and goal positions never change, the distances for a specific box depend on:&lt;br /&gt;
* the player position&lt;br /&gt;
* the positions of the other boxes&lt;br /&gt;
&lt;br /&gt;
Calculating the real distances for all boxes regarding all other box positions is too difficult and time consuming. In fact this can be as difficult as the task to solve the whole level.&lt;br /&gt;
&lt;br /&gt;
Hence, the common practice is to just consider the distance of a box to a goal under the assumption that no other box is on the board.&amp;lt;br /&amp;gt;&lt;br /&gt;
This also has the advantage that the distances can be computed and cached before the solver starts since they never change while the solver is running.&lt;br /&gt;
&lt;br /&gt;
==== Position of the Player ====&lt;br /&gt;
For a more accurate calculation of the distance of the box to the goals the player position can be taken into account.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:PositionOfThePlayer.png]]&lt;br /&gt;
&lt;br /&gt;
The needed pushes to push the box to the goal having the player on the right of the box is 6 pushes.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, the needed pushes to push the box to the goal having the player on the left of the box is only 2 pushes.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence, it&#039;s necessary to calculate the distance of the box to the goals for every possible player access area.&amp;lt;br /&amp;gt;&lt;br /&gt;
In this example there are two possible player access areas: one having the player left from the box and one having the player right from the box.&lt;br /&gt;
&lt;br /&gt;
The player position has also to be taken into account of for calculating the real distance of the box to the goals.&lt;br /&gt;
&lt;br /&gt;
Example 2:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:BoxDistanceExample.png]]&lt;br /&gt;
&lt;br /&gt;
There is only one player access area in this example.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, the box distance to the goal is not 2 pushes but 8 pushes. &lt;br /&gt;
&lt;br /&gt;
Both examples have something in common:&amp;lt;br /&amp;gt;&lt;br /&gt;
There is a so called &#039;&#039;Gate Square&#039;&#039;.&lt;br /&gt;
;Gate Square&lt;br /&gt;
: A &#039;&#039;Gate Square&#039;&#039; divides the board into at least two different player access areas.&lt;br /&gt;
&lt;br /&gt;
If the goal distances of a box on a &#039;&#039;Gate Square&#039;&#039; has to be calculated the player position has to be taken into account (like in Example 1).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gate Square&#039;&#039;s in general have to be taken account of when calculating the box distances, like shown in Example 2.&lt;br /&gt;
&lt;br /&gt;
This is example 2 with the &#039;&#039;Gate Squares&#039;&#039; highlighted:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LevelWithGateSquaresHighlighted.png]]&lt;br /&gt;
&lt;br /&gt;
=== Linear Conflicts ===&lt;br /&gt;
The restriction of only considering one single box for calculating the box distances has the obvious disadvantage of not taking into account other boxes that may block the box or the player.&lt;br /&gt;
&lt;br /&gt;
It&#039;s however possible to detect some of the box configurations that inevitably increase the calculated pushes lower bound.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:PenaltSquares.png]]&lt;br /&gt;
&lt;br /&gt;
In this example the calculated pushes lower bound is 8 pushes when using the &#039;&#039;Minimum Matching Lower Bound&#039;&#039; calculation.&lt;br /&gt;
&lt;br /&gt;
However, the real number of needed pushes to push both boxes to a goal is 10 pushes.&amp;lt;br /&amp;gt;&lt;br /&gt;
The reason for this is both boxes block each other in a way that both boxes can only be pushed vertically. Since all possible vertical pushes will push a box further away from a goal the needed pushes for solving the level increases.&amp;lt;br /&amp;gt;&lt;br /&gt;
In such situations the calculated pushes lower bound can be increased by 2.&lt;br /&gt;
&lt;br /&gt;
==== Pitfalls ====&lt;br /&gt;
&lt;br /&gt;
Example 1:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:PenaltyPitfall1.png]]&lt;br /&gt;
&lt;br /&gt;
This example shows three boxes that all can only be pushed vertically. &amp;lt;br /&amp;gt;&lt;br /&gt;
However, this doesn&#039;t mean that we can add a penalty higher that 2 to the calculated pushes lower bound.&lt;br /&gt;
&lt;br /&gt;
Since pushing the middle box down (or up) makes it possible to push the other two boxes push optimal to the goals only a penalty value of 2 may be added to the calculated pushes lower bound.&lt;br /&gt;
&lt;br /&gt;
Note: if there were a wall above or below the middle box it would be valid to add a penalty value of 4!&lt;br /&gt;
&lt;br /&gt;
Example 2:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:PenaltyPitfall2.png]]&lt;br /&gt;
&lt;br /&gt;
This example is the same as Example 1 but with one goal at a different position. &amp;lt;br /&amp;gt;&lt;br /&gt;
Since now a vertical push of the middle box is on the push optimal path to a goal it&#039;s not valid to add any penalty value to the pushes lower bound!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Complex linear conflicts ====&lt;br /&gt;
Sophisticated conflict detection algoritms may also detect linear conflicts involving more than two boxes and more complex linear conflics like in this example: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:ComplexLinearConflict.png]]&lt;br /&gt;
&lt;br /&gt;
==== Frozen Boxes ====&lt;br /&gt;
The distanes used for the lower bound calculation are usually precomputed before the solver search starts.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
They represent the number of box pushes required to push a box from any square on the board to any other square. &amp;lt;br/ &amp;gt;&lt;br /&gt;
These distances are optimistic distances in that they assume no interference with other boxes.&amp;lt;br /&amp;gt;&lt;br /&gt;
The only restrictions are the walls on the board.&lt;br /&gt;
&lt;br /&gt;
However, boxes on a goal which can&#039;t be pushed anymore (-&amp;gt; frozen box) can be treated as walls. They therefore potentially change the distances.&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LowerBoundWithFrozenBox.png]]&lt;br /&gt;
&lt;br /&gt;
In this example the pushes lower bound is 3 pushes.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, when the left box is pushed two squares to the right to its goal the right box can&#039;t be pushed up immediately anymore:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:LowerBoundWithFrozenBox2.png]]&lt;br /&gt;
&lt;br /&gt;
In such situations the box distances have to be recalculated while treating the box on the goal as a wall.&amp;lt;br /&amp;gt;&lt;br /&gt;
By doing so the correct pushes lower bound can be calculated.&lt;br /&gt;
&lt;br /&gt;
==== Pattern databases ====&lt;br /&gt;
Some solver programs use pattern databases where precalculated box configurations are stored together with a penalty value. &lt;br /&gt;
&lt;br /&gt;
This way it&#039;s possible to detect even complex penalty situations and add high penalty values.&lt;br /&gt;
&lt;br /&gt;
== No influence pushes ==&lt;br /&gt;
&lt;br /&gt;
=== Tunnels ===&lt;br /&gt;
Having teached the solver to use the algorithms described above our little level is solved very quickly. Usually Sokoban levels are a lot more complicated. Therefore we have to search for further ideas how to reduce the number of states we have to generate during the solving process.&lt;br /&gt;
&lt;br /&gt;
New example level:&lt;br /&gt;
&lt;br /&gt;
[[Image:TunnelExample1.png]]&lt;br /&gt;
&lt;br /&gt;
Here we have a (still very easy) level containing two boxes. The solver takes the given state as initial state. Then it generates all possible successor states. This means: Pushing box 1 to every possible direction AND pushing box 2 to every possible direction. The solver doesn&#039;t know which push is the best for solving the level - hence it has to generate all possible successor states. This soon leads to an enormous number of generated states (at least in larger Sokoban levels). It would be a great advantage if we knew that only pushes of one box are relevant in a specific state.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s assume the player has just pushed the box next to him one square to the right.&lt;br /&gt;
What to do next?&lt;br /&gt;
&lt;br /&gt;
The solver will consider every possible next push: all possible pushes of the higher box and all possible pushes of the lower box. But: The higher box is in a tunnel - the just performed push has been a &amp;quot;no influence push&amp;quot;.&lt;br /&gt;
The reason is:&lt;br /&gt;
The squares the lower box can ever be pushed to stayed the same. There aren&#039;t any additional squares the lower box can reach, nor are there any squares the lower box can&#039;t reach due to the push of the higher box.&lt;br /&gt;
The just pushed box has definitely to be pushed sooner or later. So there is no reason why not to push it further to the right immediately!&lt;br /&gt;
&lt;br /&gt;
In general such a &amp;quot;no influence push&amp;quot; is always created when the situation AFTER the push looks like this (or any flipped / mirrored version of it):&lt;br /&gt;
&lt;br /&gt;
[[Image:TunnelExample2.png]]  or   [[Image:TunnelExample3.png]]&lt;br /&gt;
&lt;br /&gt;
Every time a push of a box results in such a situation the box can immediately be pushed one square further!&lt;br /&gt;
This rule can reduce the number of states to be generated in some levels a lot.&lt;br /&gt;
&lt;br /&gt;
=== PI-Corrals ===&lt;br /&gt;
&lt;br /&gt;
This section describes an admissible domain-dependent move pruning technique for the Sokoban game called PI-Corral pruning.&lt;br /&gt;
&lt;br /&gt;
PI-Corral pruning has highly attractive properties for a Sokoban solver program:&lt;br /&gt;
* It prunes a significant number of states from the search&lt;br /&gt;
* It steers the search towards positions with a certain class of deadlocks, thereby helping to detect these deadlocks early on, increasing the pruning even further&lt;br /&gt;
* It preservers push-optimality guarantees provided by the solver&lt;br /&gt;
&lt;br /&gt;
PI-Corral pruning leverages the same idea that is also used for pruning due to tunnels:&lt;br /&gt;
It identifies pushes that don’t influence certain parts of the board and then ignores all boxes that aren’t influenced by the performed push.&lt;br /&gt;
&lt;br /&gt;
A simple example of a PI-Corral:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:ICorralExample1.png]]&lt;br /&gt;
&lt;br /&gt;
In this level the player just has pushed the box to the left.&lt;br /&gt;
&lt;br /&gt;
Normally the solver now generates all possible pushes for all boxes including the box in the lower right corner. The push creates an area the player can&#039;t reach marked with a [[Image:BlueQuadrat.png]].&lt;br /&gt;
&lt;br /&gt;
The boxes that are part of this area can only be pushed inside this corral (= on squares that are marked) with the next push. Hence, these pushes don’t have any impact on the rest of the level. The reachable player positions aren’t reduced and also the reachable positions of the box in the lower right part of the board aren’t reduced.&lt;br /&gt;
&lt;br /&gt;
At least one of boxes at the border of the marked area must be pushed into that area sooner or later.&lt;br /&gt;
This is always necessary when a box at the border or inside the area isn&#039;t located at a goal square, or when a goal square inside the area isn&#039;t filled with a box.&lt;br /&gt;
In the current position, the player can make all the possible pushes which ever can be made into the marked area. Therefore, the solver just needs to generate the pushes for the boxes at the border of the marked area. The legal pushes for all other boxes on the board can be ignored.&lt;br /&gt;
&lt;br /&gt;
This can reduce the pushes to be generated a lot - particularly when there are a lot of boxes in the level that aren&#039;t involved in the PI-Corral.&lt;br /&gt;
&lt;br /&gt;
The key insight with PI-corrals is the fact that as the boxes on its barrier can only be pushed inwards, one of them will indeed have to be pushed there before any of the boxes in the corral can be pushed elsewhere.&lt;br /&gt;
So, if the corral has to be dealt with eventually, it is best to deal with it right away and all pushes of other boxes can be discarded.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The reason that this works, and that it only applies to PI-corrals and not other corral types is due to box influence. &amp;lt;br/&amp;gt;&lt;br /&gt;
In a PI-corral no other box can be influenced by the fact that a box is pushed into the corral, because any boxes outside the PI-corral are by definition either accessible or inaccessible regardless of whether the player can walk in the area of the corral, while boxes completely inside the corral (not on the boundary) are by definition inaccessible to the player and could not be pushed before the corral is dealt with.&amp;lt;br/&amp;gt;&lt;br /&gt;
In other words: all the pushes of boxes not part of the PI-Corral are still possible after a box is pushed into the PI-Corral.&lt;br /&gt;
&lt;br /&gt;
==== Terms and Definitions ====&lt;br /&gt;
&lt;br /&gt;
;Corral&lt;br /&gt;
:The boxes and walls on the board can split the board into several areas. &lt;br /&gt;
:An area of the board which the player cannot reach, surrounded by a barrier made of one or more boxes, and any number of walls is called “corral”.&lt;br /&gt;
:The corral includes all the boxes on the barrier between the inside and the outside of the corral, and all interior boxes, if any.&lt;br /&gt;
: &lt;br /&gt;
:An example corral:&lt;br /&gt;
:[[Image:CorralExample.png]]&lt;br /&gt;
:Positions part of the corral are marked with [[Image:BlueQuadrat.png]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;I-Corral&lt;br /&gt;
:A corral where all boxes on the barrier can only be pushed inwards (into the corral) by the first push.&lt;br /&gt;
:The &amp;quot;I&amp;quot; in &amp;quot;I-corral&amp;quot; is a reference to &amp;quot;inside&amp;quot; or &amp;quot;inward&amp;quot;.&lt;br /&gt;
: &lt;br /&gt;
:An example corral:&lt;br /&gt;
:[[Image:I-CorralExample.png]]&lt;br /&gt;
:Positions part of the I-corral are marked with [[Image:BlueQuadrat.png]].&lt;br /&gt;
:Note how in this I-Corral example (in contrast to the Corral example) it&#039;s not possible to push any box to a position not part of the corral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;PI-Corral&lt;br /&gt;
:An I-Corral where the player can perform all legal first pushes into the corral,&amp;lt;br&amp;gt;&lt;br /&gt;
:meaning the player can reach all the relevant boxes from all relevant directions.&lt;br /&gt;
:The &amp;quot;P&amp;quot; in &amp;quot;PI-Corral&amp;quot; is a reference to &amp;quot;player&amp;quot; or &amp;quot;pusher&amp;quot;.&lt;br /&gt;
:A &amp;quot;PI-Corral&amp;quot; is the important sub-class of the I-Corrals where the player can reach all the boxes on the barrier of the corral and perform all their legal inwards pushes.&lt;br /&gt;
:An example PI-Corral:&lt;br /&gt;
:[[Image:PI-CorralExample.png]]&lt;br /&gt;
:The boxes on the barrier of the PI-Corral are highlighted in red.&lt;br /&gt;
: &amp;lt;br/&amp;gt;&lt;br /&gt;
:Counter-example: an I-Corral which isn&#039;t a PI-Corral because of the outside blocking box:&lt;br /&gt;
:[[Image:PI-CorralCounterExample.png]]&lt;br /&gt;
:This example isn&#039;t a PI-Corral because the player cannot push the highlighed box inwards; &amp;lt;br /&amp;gt;&lt;br /&gt;
:there is an outside box that blocks the access. &amp;lt;br /&amp;gt;&lt;br /&gt;
:Note that if that outer box was a wall then the level is a PI-Corral:&lt;br /&gt;
:[[Image:PI-CorralExample2.png]]&lt;br /&gt;
:The rule is: the player must be able to perform all legal inwards pushes of the PI-Corral boxes on the barrier.&lt;br /&gt;
:This can be checked: remove all boxes which aren’t part of the PI-Corral, then compare the possible pushes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PI-Corral Pruning ====&lt;br /&gt;
&lt;br /&gt;
The PI-Corral property in itself is not enough to permit pruning states from the search. &amp;lt;br /&amp;gt;&lt;br /&gt;
There is the additional constraint that sooner or later, at least one of the boxes on the barrier must be pushed into the corral in order to solve the puzzle.&amp;lt;br /&amp;gt;&lt;br /&gt;
There are different reasons why such a push may be necessary, so this constraint can be implemented with various degrees of sophistication. &lt;br /&gt;
&lt;br /&gt;
The constraint &amp;quot;Pruning is only permitted if at least one box in the PI-Corral is not on a goal square, or if at least one goal square in the PI-Corral does not contain a box&amp;quot; can be implemented by simple inspection of the board position.&lt;br /&gt;
&lt;br /&gt;
A more sophisticated solver may form plans which permit pruning for more involved reasons, e.g., &amp;quot;The player must pass though the corral&amp;quot;, or &amp;quot;A box from the outside must be parked inside the corral&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If there is a PI-Corral and one of the involved boxes has to be pushed in any way to solve the level then PI-Corral pruning can be applied.&lt;br /&gt;
That means in such a situation the solver only has to generate pushes for boxes part of the PI-Corral but not for boxes outside the PI-Corral.&lt;br /&gt;
&lt;br /&gt;
The key-insight is this: pushing a box inwards, into the PI-Corral, never affects the player&#039;s access to boxes outside the PI-Corral. Therefore, when we choose which box to push next, we might as well push one of the PI-Corral-boxes because we have to do that sooner or later anyway.&lt;br /&gt;
&lt;br /&gt;
In the next push, we still have full access to all boxes outside the corral so we can pick one of them, if we wish to. However, if there still is a PI-corral on the board, we continue only checking if PI-Corral pruning can be used and if yes, we again only consider the PI-Corral-boxes for generating new board positions.&lt;br /&gt;
&lt;br /&gt;
So the bottom line is that for each position we meet during the solving process, we first check for PI-corral pruning, and if it can be applied, we never generate pushes for boxes outside the PI-corral.&lt;br /&gt;
&lt;br /&gt;
A very simple example of a PI-Corral is a tunnel:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:PI-CorralTunnel.png]]&lt;br /&gt;
&lt;br /&gt;
In this simple PI-Corral all conditions are fulfilled:&lt;br /&gt;
# there is a corral&lt;br /&gt;
# all possible pushes of the boxes on the corral barrier are pushes into the corral&lt;br /&gt;
# at least one of the boxes in the corral has to be pushed to solve the level&lt;br /&gt;
# the player can perform already now all theoretically possible legal pushes (not generating a deadlock) into the corral&lt;br /&gt;
&lt;br /&gt;
Hence PI-Corral pruning can be applied and only pushes of the marked box must be considered for the next push.&lt;br /&gt;
&lt;br /&gt;
In this simple example the key idea behind PI-Corral pruning becomes clear: &amp;lt;br /&amp;gt;&lt;br /&gt;
There may be some complicated push sequences needed to push the boxes outside the PI-Corral to goals. However, no matter how complex these push sequences may be: all of these pushes are still possible after the box has been pushed into the PI-Corral. &amp;lt;br /&amp;gt;&lt;br /&gt;
The push of the box into the PI-Corral has no &amp;quot;influence&amp;quot; on the rest of the level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Multi Room PI-Corral ====&lt;br /&gt;
It&#039;s rather seldom that a board position contains simple PI-Corrals like the one depicted above. &amp;lt;br /&amp;gt;&lt;br /&gt;
Even when there is an I-Corral, the player seldom has access to all the boxes (from all the required directions). &amp;lt;br /&amp;gt;&lt;br /&gt;
Often, the player&#039;s access to the I-Corral boxes is blocked by neighboring corrals like in this (small) example:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:MultiRoomPICorralExample1.png]]&lt;br /&gt;
&lt;br /&gt;
Neither does the top-left corral (red border) nor the  neighboring corral (blue border) fulfill all PI-Corral constraints. &amp;lt;br /&amp;gt;&lt;br /&gt;
In both cases there is a box which can&#039;t be pushed into the corral at the moment (the box having a red and a blue border).&lt;br /&gt;
&lt;br /&gt;
However, both corrals can be combined to a multi room corral. &amp;lt;br /&amp;gt; &lt;br /&gt;
The combined corral then fulfills all PI-Corral constraints: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:MultiRoomPICorralExample2.png]]&lt;br /&gt;
&lt;br /&gt;
In order to find these Multi Room PI-Corrals the algorithm combines corral after corral until a (multi room) PI-Corral has been found. &amp;lt;br /&amp;gt;&lt;br /&gt;
This way the algorithm also ensures that there are as few boxes in the found PI-Corral as possible.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:MultiRoomPICorralExample3.png]]&lt;br /&gt;
&lt;br /&gt;
The marked area is a (combined) PI-Corral, since the boxes can only be pushed into the corral and all of the legal pushes are currently possible.&lt;br /&gt;
&lt;br /&gt;
However, when the algorithm starts with the top-left I-Corral, this corral is classified being a PI-Corral without the need to combine it with another corral:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:MultiRoomPICorralExample4.png]]&lt;br /&gt;
&lt;br /&gt;
This means instead of two boxes there is only one single box to consider for the next push.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;br /&amp;gt;&lt;br /&gt;
After having pushed the PI-Corral box one square into the PI-Corral there are two PI-Corrals now: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:twoPICorralsExample.png]]&lt;br /&gt;
&lt;br /&gt;
In such a situation the solver can choose which PI-Corral to consider first. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is another example showing the importance of the algorithm only combining corrals if necessary: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:SinglePICorralExample.png]]&lt;br /&gt;
&lt;br /&gt;
This example also shows that a deadlock detection can help identifying PI-Corrals. &amp;lt;br /&amp;gt;&lt;br /&gt;
The marked PI-Corral has two boxes. &amp;lt;br /&amp;gt;&lt;br /&gt;
However, only one of the boxes can currently be pushed into the PI-Corral. &amp;lt;br /&amp;gt;&lt;br /&gt;
Nevertheless it&#039;s a PI-Corral because pushing the lower left box of the PI-Corral into the PI-Corral creates a deadlock and therefore this isn&#039;t a legal/valid push.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Deadlock Situations ====&lt;br /&gt;
PI-Corral pruning can help detecting deadlocks earlier as a side-effect of successor-pruning.&lt;br /&gt;
&lt;br /&gt;
If there is a (smallish) deadlock situation on the board consisting of a PI-Corral, then pruning leads to a position where the legal moves dry out, in effect finding a deadlock like in this (very small) example: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:DeadlocksAndPICorrals.png]]&lt;br /&gt;
&lt;br /&gt;
The solver only considers these boxes for the next push. Since no further legal push is possible (assumed that “freeze deadlocks&amp;quot; can be detected by the solver) a deadlock is detected.&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
In his [[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver|solver scribbles]] Brian Damgaard wrote:&lt;br /&gt;
&lt;br /&gt;
There is always an overlap when different pruning techniques are used in a solver, but conservatively speaking, this new technique [PI-Corral pruning] is itself able to prune at least 20% of the search tree according to my experiments, and empirically the savings always outweighs the extra costs.&lt;br /&gt;
&lt;br /&gt;
My program uses precalculated deadlocks to handle simple deadlocks like this one, but the corral-pruning is a valuable contribution to the program, and experiments shows that the corral-pruning almost can hold its candle to the precalculated deadlocks, if it is asked to do so:&lt;br /&gt;
&lt;br /&gt;
Statistics - SokEvo/107 - Forwards search - no packingorder - AMD 2600+  &lt;br /&gt;
Configuration A: A* search + transposition table&lt;br /&gt;
Configuration B: A* search + transposition table + corrals&lt;br /&gt;
Configuration C: A* search + transposition table + precalculated deadlocks&lt;br /&gt;
Configuration D: A* search + transposition table + precalculated deadlocks + corrals&lt;br /&gt;
&lt;br /&gt;
&amp;quot;B&amp;quot; is the experiment with corrals only, without precalculated deadlocks, and its 21 seconds (on my amd 2600+ pc) is in the same league as the &amp;quot;C&amp;quot; experiment with precalculated deadlocks but no corral-pruning.&lt;br /&gt;
&amp;quot;D&amp;quot; with all currently implemented pruning techniques reduces the total solving time to 7 seconds, showing that the different pruning techniques work well together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Solver Statistics&lt;br /&gt;
|- bgcolor=&amp;quot;#f1efe5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|               | Configuration&lt;br /&gt;
|               | Generated states&lt;br /&gt;
|               | Pushes&lt;br /&gt;
|               | Time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | A&lt;br /&gt;
|                                | 11974023&lt;br /&gt;
|                                  51938064&lt;br /&gt;
|                                  65 seconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | B&lt;br /&gt;
|                                | 4632203&lt;br /&gt;
|                                  11918161&lt;br /&gt;
|                                  21 seconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | C&lt;br /&gt;
|                                | 2030736&lt;br /&gt;
|                                  7011203&lt;br /&gt;
|                                  11 seconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- -------------------------------------------------------------------------------------------- --&amp;gt;&lt;br /&gt;
|- align=&amp;quot;right&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; bgcolor=&amp;quot;#f1efe5&amp;quot; | D&lt;br /&gt;
|                                | 1231376&lt;br /&gt;
|                                  3299797&lt;br /&gt;
|                                  7 seconds&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Temporary Auxiliary Pushes ====&lt;br /&gt;
Usually there are a lot of I-Corrals for which the player can’t perform all inwards pushes at the moment.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:temporaryAuxiliaryPushes.png]]&lt;br /&gt;
&lt;br /&gt;
One box is blocking the player from pushing one of the boxes into the I-Corral. &lt;br /&gt;
&lt;br /&gt;
An obvious aim now is to push this blocking box away to create a PI-Corral.&amp;lt;br /&amp;gt;&lt;br /&gt;
This destroys push optimally guarantees but results in more detected PI-Corrals and therefore in a smaller search tree for the solver.&lt;br /&gt;
&lt;br /&gt;
One way to check whether the box can be pushed away is to check whether the box can be pushed away and then immediately back to where it is now. If this is possible, we can perform all pushes into the I-Corral and after that is done the blocking box is always back where it is now.&lt;br /&gt;
&lt;br /&gt;
Currently this is not implemented in any solver.&lt;br /&gt;
&lt;br /&gt;
A subclass of those “I-Corrals with access blocking boxes” could be used for pruning with some further investigations.&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:temporaryAuxiliaryPushes2.png]]&lt;br /&gt;
&lt;br /&gt;
The marked box of the I-Corral can’t be reached by the player.&amp;lt;br /&amp;gt;&lt;br /&gt;
However, through further calculations the program could prove that the I-Corral can never be opened by pushing this box. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pushing the box into the corral does never allow the player to push any other corral boxes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Hence, in these seldom situations even pruning on I-Corrals may be applied. &amp;lt;br /&amp;gt;&lt;br /&gt;
This also preserves push optimality.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;Real world&amp;quot; PI-Corral Examples ====&lt;br /&gt;
&lt;br /&gt;
The program [http://www.sokoban-online.de JSoko]. offers a debug mode for testing PI-Corral pruning. &amp;lt;br /&amp;gt;&lt;br /&gt;
The shown example PI-Corrals are taken from JSoko version 1.81 having that debug setting activated.&lt;br /&gt;
&lt;br /&gt;
To let JSoko highlight the found PI-Corrals:&lt;br /&gt;
# Start JSoko&lt;br /&gt;
# Type the letters “debug” when JSoko has the keyboard focus. This shows a new menu called “debug”&lt;br /&gt;
# In the debug menu select “Show I-Corral during solving&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note: although the menu text is &#039;&#039;&amp;quot;Show &#039;&#039;&#039;I-Corral&#039;&#039;&#039;&amp;quot;&#039;&#039; JSoko will show &#039;&#039;&#039;PI-Corrals&#039;&#039;&#039; and only those for which PI-Corral pruning can be applied.&lt;br /&gt;
&lt;br /&gt;
Note 2: PI-Corrals that include all boxes on the board aren’t shown by JSoko since there is no benefit in applying pruning when all boxes are part of the PI-Corral.&lt;br /&gt;
&lt;br /&gt;
When the PI-Corral debug settings is activated JSoko will check for PI-Corrals and highlight them after every push that is made.&lt;br /&gt;
&lt;br /&gt;
Thinking Rabbit - Original Level 1:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:OriginalLevel1PICorral.png]]&lt;br /&gt;
&lt;br /&gt;
Due to PI-Corral pruning the solver has only to consider the PI-Corral boxes for the next push, only one of which is currently reachable for the player. &amp;lt;br /&amp;gt;&lt;br /&gt;
This example shows that a deadlock detection can help detecting PI-Corrals.&lt;br /&gt;
&lt;br /&gt;
The lower left box of the PI-Corral isn&#039;t reachable by the player at the moment. &amp;lt;br /&amp;gt;&lt;br /&gt;
However, both pushes of that box would result in a [[Deadlocks#Freeze deadlocks|freeze deadlock]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Hence, no legal push is possible for this box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thinking Rabbit - Original Level 3:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:OriginalLevel3PICorral.png]]&lt;br /&gt;
&lt;br /&gt;
In the shown situation the solver has choose which PI-Corral to consider first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thinking Rabbit - Original Level 4:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:OriginalLevel4PICorral.png]]&lt;br /&gt;
&lt;br /&gt;
There is a huge multi room PI-Corral containing nearly all of the boxes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Nevertheless, PI-Corral pruning can also help pruning some states for the solver in such situations where only one box is outside the PI-Corral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thinking Rabbit - Original Level 6:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:OriginalLevel6PICorral.png]]&lt;br /&gt;
&lt;br /&gt;
This is an example where a sophisticated deadlock detection can help to detect more PI-Corrals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thinking Rabbit - Original Level 10:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:OriginalLevel10PICorral.png]]&lt;br /&gt;
&lt;br /&gt;
This example shows that JSoko detects some PI-Corrals where pruning is possible but not that useful. &amp;lt;br /&amp;gt;&lt;br /&gt;
Since there is only possible push there is nothing to be pruned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thinking Rabbit - Original Level 15:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:OriginalLevel15PICorral.png]]&lt;br /&gt;
&lt;br /&gt;
The player is surrounded by a huge multi room PI-Corral. &amp;lt;br /&amp;gt;&lt;br /&gt;
Every push of one of the PI-Corral boxes results in a further PI-Corral that can be used for pruning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figure 3 level of an article about PI-Corral pruning: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:DDMPFigure3Level.png]]&lt;br /&gt;
&lt;br /&gt;
There is an article about PI-Corrals written by Renato R. Leme, André G. Pereira, Marcus Ritt and Luciana S. Buriol where the authors claim that JSoko and YASS can&#039;t detect the correct PI-Corral in the shown level.&lt;br /&gt;
&lt;br /&gt;
However, the screenshot shows that JSoko can correctly identify all the boxes and positions that are part of the PI-Corral (and so does YASS)! &amp;lt;br /&amp;gt;&lt;br /&gt;
Note: an additional box has been added to this example level (the box on the goal below the player) because JSoko only highlights PI-Corrals that don&#039;t contain all boxes. However, this extra box doesn&#039;t affect the PI-Corral detection used in JSoko (and YASS).&lt;br /&gt;
&lt;br /&gt;
== Parking ==&lt;br /&gt;
Many levels cannot be solved by just pushing one box at a time to the goal position.&lt;br /&gt;
&lt;br /&gt;
Most levels are constructed in such a way that some of the boxes have to be specifically rearranged to make room for pushing other boxes.&lt;br /&gt;
&lt;br /&gt;
In some cases boxes have to be actually pushed over a goal position to a “parking” position, from where they can then later be pushed to their final goal position.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:parking example.png]]&lt;br /&gt;
&lt;br /&gt;
== YASS Solver ==&lt;br /&gt;
&lt;br /&gt;
[[Sokoban solver &amp;quot;scribbles&amp;quot; by Brian Damgaard about the YASS solver]]&lt;br /&gt;
&lt;br /&gt;
== Sokolution Solver ==&lt;br /&gt;
&lt;br /&gt;
[[Sokoban solver &amp;quot;scribbles&amp;quot; by Florent Diedler about the Sokolution solver]]&lt;br /&gt;
&lt;br /&gt;
== Solver &amp;quot;Rolling Stone&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
[[Rolling Stone solver]]&lt;br /&gt;
&lt;br /&gt;
== Limited search ==&lt;br /&gt;
&lt;br /&gt;
Ideas by David Holland on computer solving by limited search are linked below. They aren&#039;t fully wikified yet as author has RSI. Features new concepts such as free space, shuffling, relocation and generalized deadlock detection. Sketches of algorithms included. Other new concepts such as goal traps with algorithms may be implemented in existing solvers. Author hopes other programmers will discuss and implement what they find relevant. Limited search as opposed to exhaustive search uses macros, heuristics and domain-specific knowledge to effectively search deeper in the tree of positions by not looking at every position. A new category of &amp;quot;Planner&amp;quot; plug-in is suggested for limited search to be tried when the Solver plug-in fails, indicating too large a tree.&lt;br /&gt;
[[David Holland&#039;s computer Sokoban solving ideas]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* A Spanish explanation of the [[MSAMA Sokoban Solver]].&lt;br /&gt;
* [[Heiner&#039;s solver]]&lt;br /&gt;
* [[Solving Sokoban Optimally with Domain-Dependent Move Pruning - Stolen Ideas, Lies, and Incompetence]]&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Rolling_Stone_solver&amp;diff=8109</id>
		<title>Rolling Stone solver</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Rolling_Stone_solver&amp;diff=8109"/>
		<updated>2024-03-21T15:16:17Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: /* Main menu */ Description how to start the solver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Rolling Stone Sokoban solver is a significant milestone in the field of automated Sokoban puzzle solving. Developed at the University of Alberta by Andreas Junghanns and Jonathan Schaeffer, it laid the groundwork for many modern solvers.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of Rolling Stone&#039;s key aspects:&lt;br /&gt;
&lt;br /&gt;
= Algorithm =&lt;br /&gt;
&lt;br /&gt;
Rolling Stone utilizes the Iterative Deepening A* (IDA*) algorithm as its core search strategy.&lt;br /&gt;
&lt;br /&gt;
IDA* is an iterative deepening search algorithm that combines the efficiency of depth-first search with the optimality guarantees of A* search.&lt;br /&gt;
&lt;br /&gt;
It starts by searching for a solution with a limited depth and gradually increases the depth limit until a solution is found or it&#039;s proven that no solution exists within that depth.&lt;br /&gt;
&lt;br /&gt;
To improve search efficiency, Rolling Stone incorporates several enhancements described in various [https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= papers].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rolling Stone&#039;s approach paved the way for further advancements in Sokoban solver design. Many modern solvers build upon its core principles.&lt;br /&gt;
&lt;br /&gt;
It demonstrated the effectiveness of combining general search algorithms with domain-specific enhancements for efficiently solving Sokoban puzzles.&lt;br /&gt;
&lt;br /&gt;
Further information can be found in the [https://scholar.google.com/scholar?hl=de&amp;amp;as_sdt=0%2C5&amp;amp;q=rolling+stone+sokoban&amp;amp;btnG= papers] or on the [https://webdocs.cs.ualberta.ca/~games/Sokoban/ website of Rolling Stone].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to compile Rolling Stone =&lt;br /&gt;
&lt;br /&gt;
Carlos Montiers has published a source code that has been adapted so that it can also be compiled with modern operating systems and compilers. In this way, Rolling Stone can still be used today.&lt;br /&gt;
&lt;br /&gt;
This is the link to his repository: [https://github.com/carlos-montiers/rolling-stone Carlos Montiers Rolling Stone]&lt;br /&gt;
&lt;br /&gt;
= Screenshot Rolling Stone =&lt;br /&gt;
&lt;br /&gt;
Rolling Stone can only be used from the console. &lt;br /&gt;
&lt;br /&gt;
This is an example output of the solver when solving puzzle &amp;quot;XSokoban 1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Rolling Stone XSokoban1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Menu structure =&lt;br /&gt;
&lt;br /&gt;
== Main menu ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command           || Function&lt;br /&gt;
|-&lt;br /&gt;
|S nam\num kind    || Solve Maze&lt;br /&gt;
|-&lt;br /&gt;
|A                 || Set Abort Node Count&lt;br /&gt;
|-&lt;br /&gt;
|T sec [REAL\VIRT] || Set Abort time&lt;br /&gt;
|-&lt;br /&gt;
|C a b kind        || Test a to b in screen&lt;br /&gt;
|-&lt;br /&gt;
|P nam\num kind    || Print Maze&lt;br /&gt;
|-&lt;br /&gt;
|L a b kind        ||  All 90 Lower Bounds&lt;br /&gt;
|-&lt;br /&gt;
|N num             || Set PosNr with num&lt;br /&gt;
|-&lt;br /&gt;
|M num-num\XX-YY   || move from num to num&lt;br /&gt;
|-&lt;br /&gt;
|X [lrud]*         || move center for xdist&lt;br /&gt;
|-&lt;br /&gt;
|Z                 || Show Menu&lt;br /&gt;
|-&lt;br /&gt;
|O                 || Options Menu&lt;br /&gt;
|-&lt;br /&gt;
|Q                 || Quit Program&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;&#039;&#039;&#039;S 1&#039;&#039;&#039;&amp;quot; loads the puzzle &amp;quot;./screens/screen.1&amp;quot; and tries to solve it.&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;&#039;&#039;&#039;S 1 test&#039;&#039;&#039;&amp;quot; loads the puzzle &amp;quot;./screens/test.1&amp;quot; and tries to solve it.&lt;br /&gt;
&lt;br /&gt;
The command &amp;quot;&#039;&#039;&#039;S test.sok&#039;&#039;&#039;&amp;quot; loads the puzzle &amp;quot;./test.sok&amp;quot; and tries to solve it.&lt;br /&gt;
&lt;br /&gt;
== Show menu ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command  || Function&lt;br /&gt;
|-&lt;br /&gt;
|D        || Hist of man-distances&lt;br /&gt;
|-&lt;br /&gt;
|S        ||  Hist of stone-distances&lt;br /&gt;
|-&lt;br /&gt;
|X        || Hist of X-distances&lt;br /&gt;
|-&lt;br /&gt;
|C        || Print Conflicts prev search&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Options menu ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command     || Function&lt;br /&gt;
|-&lt;br /&gt;
|E           || Examine all settings&lt;br /&gt;
|-&lt;br /&gt;
|H [on/off]  ||  HashTable on/off&lt;br /&gt;
|-&lt;br /&gt;
|D [on/off]  || deadlock det. movegen on/off&lt;br /&gt;
|-&lt;br /&gt;
|Z [on/off]  || deadlock2 det. movegen on/off&lt;br /&gt;
|-&lt;br /&gt;
|R [on/off]  || areasearch on/off&lt;br /&gt;
|-&lt;br /&gt;
|S [on/off]  || deadsearch on/off&lt;br /&gt;
|-&lt;br /&gt;
|N [on/off]  || pensearch on/off&lt;br /&gt;
|-&lt;br /&gt;
|W [on/off]  || scan search on/off&lt;br /&gt;
|-&lt;br /&gt;
|J number    || node limit for pattern searches&lt;br /&gt;
|-&lt;br /&gt;
|K [on/off] || minimization on/off&lt;br /&gt;
|-&lt;br /&gt;
|Y [on/off]  || limit patterns on/off&lt;br /&gt;
|-&lt;br /&gt;
|m [on/off]  || lazy maximization on/off&lt;br /&gt;
|-&lt;br /&gt;
|X [on/off]  || store tested on/off&lt;br /&gt;
|-&lt;br /&gt;
|P number    || Switch Pattern DBs on/off (0-7)&lt;br /&gt;
|-&lt;br /&gt;
|M [on/off]  || LB manpos on/off&lt;br /&gt;
|-&lt;br /&gt;
|C [on/off]  || LB conflict on/off&lt;br /&gt;
|-&lt;br /&gt;
|d [on/off]  || Dynamic distances on/off&lt;br /&gt;
|-&lt;br /&gt;
|T [on/off]  || Tunnel Macro on/of&lt;br /&gt;
|-&lt;br /&gt;
|G [on/off]  ||  Goal Macro on/off&lt;br /&gt;
|-&lt;br /&gt;
|U [on/off]  || Cut Goal Macro on/off&lt;br /&gt;
|-&lt;br /&gt;
|A [on/off   || eXtended Distance on/off&lt;br /&gt;
|-&lt;br /&gt;
|L k m d     || Local Cut (k,m,d), -1 -1 turns off&lt;br /&gt;
|-&lt;br /&gt;
|B [on/off   || Auto Set Local Cut Parameter&lt;br /&gt;
|-&lt;br /&gt;
|V [s] [h]   || Overestimation scaling factor and h-scaling&lt;br /&gt;
|-&lt;br /&gt;
|F [on/off]  || Assume dead on/off&lt;br /&gt;
|-&lt;br /&gt;
|O number    || Set Move order index (0-off)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General command ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;soko-table&amp;quot;&lt;br /&gt;
!Command  || Function&lt;br /&gt;
|-&lt;br /&gt;
|?        || Help command.  Displays availible menu options&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;        || Back (quit)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Rolling_Stone_XSokoban1.png&amp;diff=8100</id>
		<title>File:Rolling Stone XSokoban1.png</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Rolling_Stone_XSokoban1.png&amp;diff=8100"/>
		<updated>2024-03-21T10:21:23Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=File:Sokoban_Puzzle_solving.gif&amp;diff=8088</id>
		<title>File:Sokoban Puzzle solving.gif</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=File:Sokoban_Puzzle_solving.gif&amp;diff=8088"/>
		<updated>2024-03-07T13:42:02Z</updated>

		<summary type="html">&lt;p&gt;Matthias Meger: Example: Solving a Sokoban puzzle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example: Solving a Sokoban puzzle&lt;/div&gt;</summary>
		<author><name>Matthias Meger</name></author>
	</entry>
</feed>