Feature list : Game Play

From Sokoban Wiki

(Difference between revisions)
Jump to: navigation, search
(Game Play: JSoko updates)
(Game Play: removed column)
 
(3 intermediate revisions not shown)
Line 7: Line 7:
<!-- ::::: GAME PLAY ::::: -->  
<!-- ::::: GAME PLAY ::::: -->  
-
<!-- YASC | Sokofan | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Mobile | SokoSave Desktop | SuperSoko -->
+
<!-- YASC | Sokoban++ | JSokoApplet | SokForWindows | YSokoban | SokoSave Desktop -->
<!-- -->
<!-- -->
{| class="soko-table"  
{| class="soko-table"  
! colspan="6" | Game Play !! colspan="50" | <div align="right">Game Play</div>
! colspan="6" | Game Play !! colspan="50" | <div align="right">Game Play</div>
|- {{programs}}
|- {{programs}}
-
| {{tc}} | autosave best solutions || {{yes}} tiebreaking: moves, pushes, secondary metrics || {{yes}} || {{yes}} tiebreaking: moves, pushes || {{no}} || {{yes}} tiebreaking: moves, pushes || {{tc}} | autosave best solutions || {{yes}} tiebreaking: moves, pushes, secondary metrics || {{no}} || {{no}} || {{yes}} || ||
+
| {{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}}  
|-  
|-  
-
| {{tc}} | autosave solutions options || always autosaves better solutions;<br>inferior solutions are discarded || always autosaves better solutions;<br>inferior solutions are discarded || autosave solutions options: never/always/if better/ask;<br>existing solutions are kept || {{no}} || autosave solutions options: none/best 5/best 10/all || {{tc}} | autosave solutions options || always autosaves better solutions;<br>inferior solutions are discarded || always autosaves game history || optionally saves game when solved; <br> only one solution per saved game || always autosaves better solutions;<br>inferior solutions are discarded || ||
+
| {{tc}} | autosave solutions options || always autosaves better solutions;<br>inferior solutions are discarded || autosave solutions options: never/always/if better/ask;<br>existing solutions are kept || {{no}} || autosave solutions options: none/best 5/best 10/all || always autosaves better solutions;<br>inferior solutions are discarded || optionally saves game when solved; <br> only one solution per saved game  
|-  
|-  
-
| {{tc}} | push or move optimized pathfinding || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{tc}} | push or move optimized pathfinding || {{yes}} || {{yes}} || {{yes}} || {{yes}} || ||
+
| {{tc}} | push or move optimized pathfinding || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}}  
|-  
|-  
-
| {{tc}} | move animation modes || smooth, cell by cell, instant || cell by cell || cell by cell, instant || cell by cell || smooth || {{tc}} | move animation modes || cell by cell, instant<br clear="all">{{tip|(instant with [[Feature_info#Choice points|choice points]] is listed but is too fast to be useful)|menu=yes}} || cell by cell, instant || cell by cell, instant || cell by cell, instant || ||
+
| {{tc}} | move animation modes || smooth, cell by cell, instant || cell by cell, instant || cell by cell || smooth || cell by cell, instant<br clear="all">{{tip|(instant with [[Feature_info#Choice points|choice points]] is listed but is too fast to be useful)|menu=yes}} || cell by cell, instant  
|-  
|-  
-
| {{tc}} | mouse move control: drag and drop || {{yes}} with reachable squares || {{no}} || {{yes}} without reachable squares || {{yes}} with reachable squares || {{yes}} with reachable squares || {{tc}} | mouse move control: drag and drop || {{yes}} with reachable squares || {{no}} || {{no}} || {{yes}} partial implementation: player only, not boxes<br>without reachable squares || ||
+
| {{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}}  
|-  
|-  
-
| {{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 || {{tc}} | [[#Mouse_Move_Control:_Select_and_drop|mouse move control: select and drop]] || {{yes}} with reachable squares || {{yes}} with reachable squares || {{yes}} without reachable squares || {{yes}} with reachable squares || ||
+
| {{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  
|-  
|-  
-
| {{tc}} | [[#Mouse_Move_Control:_Drag_and_track|mouse move control: drag and track]] || {{no}} experimental click-less tracking available || {{no}} || {{no}} || {{no}} || {{no}} || {{tc}} | [[#Mouse_Move_Control:_Drag_and_track|mouse move control: drag and track]] || {{no}} || {{no}} || {{yes}} || {{no}} || ||
+
| {{tc}} | [[#Mouse_Move_Control:_Drag_and_track|mouse move control: drag and track]] || {{no}} experimental click-less tracking available || {{no}} || {{no}} || {{no}} || {{no}} || {{yes}}  
|-  
|-  
-
| {{tc}} | reverse mode play starting at end position (pull instead of push) || {{yes}} || {{yes}} || {{no}} || {{no}} || {{no}} || {{tc}} | reverse mode play starting at end position (pull instead of push) || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | reverse mode play starting at end position (pull instead of push) || {{yes}} || {{no}} || {{no}} || {{no}} || {{no}} || {{no}}  
|-  
|-  
-
| {{tc}} | show secondary metrics (box-pushes, box-changes and pushing-sessions) || {{yes}} display: mouse over || {{no}} || {{yes}} display: optional, configurable || {{no}} || {{no}} || {{tc}} | show secondary metrics (box-pushes, box-changes and pushing-sessions) || {{yes}} || {{yes}} || {{yes}} || {{no}} || ||
+
| {{tc}} | show secondary metrics (box-pushes, box-changes and pushing-sessions) || {{yes}} display: mouse over || {{yes}} display: optional, configurable || {{no}} || {{no}} || {{yes}} || {{yes}}  
|-  
|-  
-
| {{tc}} | [[#Lowerbound_of_solution_length_regarding_pushes|show a lowerbound of the solution length]] || {{no}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{tc}} | [[#Lowerbound_of_solution_length_regarding_pushes|show a lowerbound of the solution length]] || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | [[#Lowerbound_of_solution_length_regarding_pushes|show a lowerbound of the solution length]] || {{no}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}}  
|-  
|-  
-
| {{tc}} | timing || {{yes}} optional; optional idle time threshold || {{no}} || {{no}} || {{no}} || {{no}} || {{tc}} | timing || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | timing || {{yes}} optional; optional idle time threshold || {{no}} || {{no}} || {{no}} || {{no}} || {{no}}  
|-
|-
-
| {{tc}} | move player<br>through boxes ||{{no}}|| {{no}} || {{no}} || {{no}} || {{no}} || {{tc}} | move player<br>through boxes || {{yes}} target: reachable squares through boxes.<br>figure: small black square.<br>via: options -> go through boxes. || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | move player<br>through boxes ||{{no}}|| {{no}} || {{yes}} || {{no}} || {{yes}} target: reachable squares through boxes.<br>figure: small black square.<br>via: options -> go through boxes. || {{no}}  
|-
|-
! colspan="6" | Game Play : Legal moves !! colspan="50" | <div align="right">Game Play : Legal moves</div>
! colspan="6" | Game Play : Legal moves !! colspan="50" | <div align="right">Game Play : Legal moves</div>
|- {{programs}}
|- {{programs}}
-
| {{tc}} | show player's reachable squares|| {{yes}} figure: transparent small skin graphics || {{yes}} figure: skin graphics, independent of player || {{no}} || {{yes}} figure: transparent small skin graphics || {{yes}} || {{tc}} | show player's reachable squares|| {{yes}} figure: small round blobs || {{yes}} || {{no}} || {{yes}} figure: transparent small skin graphics or round blobs || ||
+
| {{tc}} | show player's reachable squares|| {{yes}} figure: transparent small skin graphics || {{no}} || {{yes}} figure: transparent small skin graphics || {{yes}} || {{yes}} figure: small round blobs || {{no}}  
|-  
|-  
-
| {{tc}} | show box's reachable squares || {{yes}} figure: transparent small skin graphics || {{yes}} figure: skin graphics, independent of box || {{yes}} figure: skin graphics, independent of box || {{yes}} figure: transparent small skin graphics || {{yes}} || {{tc}} | show box's reachable squares || {{yes}} figure: small round blobs || {{yes}} || {{no}} || {{yes}} figure: transparent small skin graphics or round blobs || ||
+
| {{tc}} | show box'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}}  
|-  
|-  
-
| {{tc}} | show pushable boxes || {{yes}} dynamically by clicking a wall.<br>figure: configurable border || {{yes}} dynamically by clicking a wall.<br>figure: yellow border || {{no}} || {{no}} || {{no}} || {{tc}} | show pushable boxes || {{yes}} permanent with <span class="kbd">CTRL</span>+<span class="kbd">F9</span>.<br>dynamically by clicking a wall.<br>figure: skin graphics, independent of box || {{yes}} dynamically by clicking a player || {{no}} || {{no}} || ||
+
| {{tc}} | show pushable boxes || {{yes}} dynamically by clicking a wall.<br>figure: configurable border || {{no}} || {{no}} || {{no}} || {{yes}} permanent with <span class="kbd">CTRL</span>+<span class="kbd">F9</span>.<br>dynamically by clicking a wall.<br>figure: skin graphics, independent of box || {{no}}  
|-  
|-  
-
| {{tc}} | show [[Deadlocks#Dead square deadlocks|dead squares]] || {{yes}}figure: configurable shaded square || {{no}} || {{no}} || {{yes}}figure: darker shaded square || {{no}} || {{tc}} | show [[Deadlocks#Dead square deadlocks|dead squares]] || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | show [[Deadlocks#Dead square deadlocks|dead squares]] || {{yes}}figure: configurable shaded square || {{no}} || {{yes}}figure: darker shaded square || {{no}} || {{no}} || {{no}}  
|-  
|-  
-
| {{tc}} | [[#Simple deadlock detection|simple deadlock detection]] || {{yes}} dead squares, freezing boxes || {{no}} || {{no}} || {{yes}} dead squares, freezing boxes || {{no}} || {{tc}} | [[#Simple deadlock detection|simple deadlock detection]] || {{no}} || {{yes}} dead squares || {{no}} || {{yes}} dead squares || ||
+
| {{tc}} | [[#Simple deadlock detection|simple deadlock detection]] || {{yes}} dead squares, freezing boxes || {{no}} || {{yes}} dead squares, freezing boxes || {{no}} || {{no}} || {{no}}  
|-  
|-  
-
| {{tc}} | [[#Advanced deadlock detection|advanced deadlock detection]] || {{yes}} {{tip|bipartite:<br>n boxes for m goals;<br>1 goal for n boxes;<br>corrals: precalculated at level load time + 100 ms search after a push}} || {{no}} || {{no}} || {{yes}} || {{no}} || {{tc}} | [[#Advanced deadlock detection|advanced deadlock detection]] || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | [[#Advanced deadlock detection|advanced deadlock detection]] || {{yes}} {{tip|bipartite:<br>n boxes for m goals;<br>1 goal for n boxes;<br>corrals: precalculated at level load time + 100 ms search after a push}} || {{no}} || {{yes}} || {{no}} || {{no}} || {{no}}  
|-
|-
! colspan="6" | Game Play : History !! colspan="50" | <div align="right">Game Play : History</div>
! colspan="6" | Game Play : History !! colspan="50" | <div align="right">Game Play : History</div>
|- {{programs}}
|- {{programs}}
-
| {{tc}} | undo/redo || unlimited || unlimited || unlimited || unlimited || unlimited || {{tc}} | undo/redo || unlimited || unlimited || unlimited || unlimited&nbsp;? || ||
+
| {{tc}} | undo/redo || unlimited || unlimited || unlimited || unlimited || unlimited || unlimited  
|-  
|-  
-
| {{tc}} | undo all || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{tc}} | undo all || {{yes}} press [esc]|| {{yes}} || {{yes}} || {{un}} {{tip|move history list is readily available - press [backspace]}} || ||
+
| {{tc}} | undo all || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} press [esc]|| {{yes}}  
|-  
|-  
-
| {{tc}} | redo all || {{yes}} || {{no}} {{tip|see "replay" note}} || {{no}} || {{yes}} || {{no}} || {{tc}} | redo all || {{no}} || {{yes}} || {{yes}} || {{un}} {{tip|move history list is readily available - press [backspace]}}  || ||
+
| {{tc}} | redo all || {{yes}} || {{no}} || {{yes}} || {{no}} ||{{no}} || {{yes}}  
|-  
|-  
-
| {{tc}} | replay || {{yes}} forwards and backwards || {{yes}} forwards and backwards {{tip| the buttons are named "undo/redo all" but they are best categorized as "replay" because they show the moves instead of changing game-state instantly|text=note|width=230px}} || {{yes}} forwards || {{yes}} forwards || {{yes}} forwards and backwards || {{tc}} | replay || {{yes}} forwards (solutions only) || {{yes}} forwards || {{yes| via trackbar dragged to any position replays to that position}} || {{yes}} forwards {{tip| the program crashes on mousewheel up/down during replay, sometimes so badly that computer expertice it required to make it run again|text=flaw|width=230px}} || ||
+
| {{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}}  
|-  
|-  
-
| {{tc}} | replay ergonomics || unified start/stop button; click anywhere to stop; keyboard shortcuts available; speed and direction can be changed during replay || press [esc] or [space] to stop; keyboard shortcuts available; the 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 || || {{tc}} | replay ergonomics || with start/stop:<br><span class="kbd">CTRL</span>+<span class="kbd">F2</span> to begin. <span class="kbd">SPACE</span> to replay to next box-change. without start/stop: <span class="kbd">F2</span> || replay button starts; any click stops || trackbar represents replay history; drag trackbar to control replay; click anywhere, click [stop] button, or press [esc] to stop || unified start/stop button; click anywhere to stop/restart; keyboard shortcuts available; speed can be changed in settings || ||
+
| {{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:<br><span class="kbd">CTRL</span>+<span class="kbd">F2</span> to begin. <span class="kbd">SPACE</span> to replay to next box-change. without start/stop: <span class="kbd">F2</span> || trackbar represents replay history; drag trackbar to control replay; click anywhere, click [stop] button, or press [esc] to stop  
|-  
|-  
-
| {{tc}} | mousewheel undo/redo/replay support || {{yes}} combined moves || {{yes}} single step || {{yes}} single step or optional combined moves || {{yes}} combined moves || {{no}} || {{tc}} | mousewheel undo/redo/replay support || {{yes}} combined moves || {{ni|/a|Not applicable<br />to mobile devices.}} || {{no}} || {{yes}} 3 moves at a time {{tip| the program crashes on mousewheel up/down during replay, sometimes so badly that computer expertise is required to make it run again |text=flaw}} || ||
+
| {{tc}} | mousewheel undo/redo/replay support || {{yes}} combined moves || {{yes}} single step or optional combined moves || {{yes}} combined moves || {{no}} || {{yes}} combined moves || {{no}}  
|-  
|-  
-
| {{tc}} | browse move history || {{yes}} trackbar (choice-points, with preview) || {{yes}} enter move number as text || {{yes}} trackbar (all moves, with preview) || {{yes}} trackbar (choice-points, with preview) || {{no}} || {{tc}} | browse move history || {{no}} || {{yes}} trackbar (all moves, with preview) || {{yes}} trackbar (all moves, no preview) || {{yes}} list (all moves, with preview) {{tip|ergonomic flaw: preview setting is not remembered from one action to the next}} || ||
+
| {{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)  
|-  
|-  
-
| {{tc}} | quicksave slots || {{yes}} unlimited (interface: graphical, window, thumbnail preview) || {{yes}} 8 (interface: keyboard) || {{yes}} unlimited (interface: graphical, pop-up, list) || {{no}} || {{yes}} 3 (interface: graphical) || {{tc}} | quicksave slots || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{tc}} | quicksave slots || {{yes}} unlimited (interface: graphical, window, thumbnail preview) || {{yes}} unlimited (interface: graphical, pop-up, list) || {{no}} || {{yes}} 3 (interface: graphical) || {{no}} || {{no}}  
|-  
|-  
-
| {{tc}} | one-click load quicksaves || {{yes}} keyboard: press [Enter] to load currently selected snapshot; mouse: double-click a snapshot on the list || {{yes}} (keyboard: keys 1 to 8) || {{no}} || {{no}} || {{yes}} || {{tc}} | one-click load quicksaves || {{no}} || {{no}} || {{no}} || {{no}} || ||
+
| {{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}}  
|-  
|-  
-
| {{tc}} | remember last session || {{yes}} file, level, history with redo, position {{tip|position is optional, default "off", additionally, up to 25 recent (file, level)}} || {{yes}} file, level, history with redo, position || {{yes}} file, level || {{no}} || {{yes}} file, level, history without redo, position || {{tc}} | remember last session || {{yes}} file, level, history without redo, position || {{yes}} file, level, history with redo, position|| {{no}} || {{yes}} file, level, history with redo, position || ||
+
| {{tc}} | remember last session || {{yes}} file, level, history with redo, position {{tip|position is optional, default "off", 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}}  
|- {{programs}}
|- {{programs}}
|}
|}

Current revision as of 18:37, 17 July 2024



Game Play

Last change: 2024/07/17 18:37:12
Game Play
Game Play
 
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
autosave solutions options always autosaves better solutions;
inferior solutions are discarded
autosave solutions options: never/always/if better/ask;
existing solutions are kept
no autosave solutions options: none/best 5/best 10/all always autosaves better solutions;
inferior solutions are discarded
optionally saves game when solved;
only one solution per saved game
push or move optimized pathfinding yes yes yes yes yes yes
move animation modes smooth, cell by cell, instant cell by cell, instant cell by cell smooth cell by cell, instant
[info](instant with choice points is listed but is too fast to be useful)
cell by cell, instant
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
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
mouse move control: drag and track no experimental click-less tracking available no no no no yes
reverse mode play starting at end position (pull instead of push) yes no no no no no
show secondary metrics (box-pushes, box-changes and pushing-sessions) yes display: mouse over yes display: optional, configurable no no yes yes
show a lowerbound of the solution length no no yes no no no
timing yes optional; optional idle time threshold no no no no no
move player
through boxes
no no yes no yes target: reachable squares through boxes.
figure: small black square.
via: options -> go through boxes.
no
Game Play : Legal moves
Game Play : Legal moves
 
show player's reachable squares yes figure: transparent small skin graphics no yes figure: transparent small skin graphics yes yes figure: small round blobs no
show box'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
show pushable boxes yes dynamically by clicking a wall.
figure: configurable border
no no no yes permanent with CTRL+F9.
dynamically by clicking a wall.
figure: skin graphics, independent of box
no
show dead squares yesfigure: configurable shaded square no yesfigure: darker shaded square no no no
simple deadlock detection yes dead squares, freezing boxes no yes dead squares, freezing boxes no no no
advanced deadlock detection yes [info]bipartite:
n boxes for m goals;
1 goal for n boxes;
corrals: precalculated at level load time + 100 ms search after a push
no yes no no no
Game Play : History
Game Play : History
 
undo/redo unlimited unlimited unlimited unlimited unlimited unlimited
undo all yes yes yes yes yes press [esc] yes
redo all yes no yes no no yes
replay yes forwards and backwards yes forwards yes forwards yes forwards and backwards yes forwards (solutions only) yes
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:
CTRL+F2 to begin. SPACE to replay to next box-change. without start/stop: F2
trackbar represents replay history; drag trackbar to control replay; click anywhere, click [stop] button, or press [esc] to stop
mousewheel undo/redo/replay support yes combined moves yes single step or optional combined moves yes combined moves no yes combined moves no
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)
quicksave slots yes unlimited (interface: graphical, window, thumbnail preview) yes unlimited (interface: graphical, pop-up, list) no yes 3 (interface: graphical) no no
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
remember last session yes file, level, history with redo, position [info]position is optional, default "off", 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
 

Top



Info

Choice points

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.

Several programs have replay features related to choice points. Sokofan, for example, has replay buttons (called "smart do/undo") 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.


Mouse Move Control: Select and drop

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.


Mouse Move Control: Drag and track

Point at the pusher with the mouse and move it in the direction you want. The pusher will track your movements.


Simple deadlock detection

Simple deadlock detection deals with deadlock types that require rather simple analysis of the board and the game state. Good examples are:


Advanced deadlock detection

Advanced deadlock detection deals with deadlock types that require quite sophisticated computations. Good examples are:


Lowerbound of solution length regarding pushes

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):
number of pushes so far + sum of all box distances to their nearest goals (presuming no other boxes are on the board).
This lowerbound can be useful in levels like the "Kobus Theron"-series.

Top

Personal tools