<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Feature_list_%3A_Game_Play</id>
	<title>Feature list : Game Play - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sokobano.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Feature_list_%3A_Game_Play"/>
	<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;action=history"/>
	<updated>2026-04-17T17:17:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8316&amp;oldid=prev</id>
		<title>Sokobano: Undo revision 8299 by Matthias Meger (talk)</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8316&amp;oldid=prev"/>
		<updated>2026-02-09T11:58:30Z</updated>

		<summary type="html">&lt;p&gt;Undo revision &lt;a href=&quot;/wiki/index.php?title=Special:Diff/8299&quot; title=&quot;Special:Diff/8299&quot;&gt;8299&lt;/a&gt; by &lt;a href=&quot;/wiki/index.php?title=Special:Contributions/Matthias_Meger&quot; title=&quot;Special:Contributions/Matthias Meger&quot;&gt;Matthias Meger&lt;/a&gt; (&lt;a href=&quot;/wiki/index.php?title=User_talk:Matthias_Meger&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Matthias Meger (page does not exist)&quot;&gt;talk&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:58, 9 February 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Game Play ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Game Play ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{LastREVISIONTIME}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- ::::: GAME PLAY ::::: --&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- ::::: GAME PLAY ::::: --&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sokobano</name></author>
	</entry>
	<entry>
		<id>http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8299&amp;oldid=prev</id>
		<title>Matthias Meger: /* Game Play */ removed last changed time</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8299&amp;oldid=prev"/>
		<updated>2026-02-09T08:22:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Game Play: &lt;/span&gt; removed last changed time&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:22, 9 February 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Game Play ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Game Play ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{LastREVISIONTIME}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- ::::: GAME PLAY ::::: --&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- ::::: GAME PLAY ::::: --&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&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&amp;oldid=prev</id>
		<title>Matthias Meger: /* Game Play */ removed column</title>
		<link rel="alternate" type="text/html" href="http://sokobano.de/wiki/index.php?title=Feature_list_:_Game_Play&amp;diff=8182&amp;oldid=prev"/>
		<updated>2024-07-17T18:37:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Game Play: &lt;/span&gt; removed column&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&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&amp;#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&amp;#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>
</feed>