Brian Damgaard has published a new version of his great and widely used Sokoban YASC program.
The release notes for this new version:
Added a new major feature:
Running external solvers and optimizers as easy as if they were normal plugins.
Using solvers and optimizers in Sokoban YASC has always been based on a plugin architecture, where the plugins are programs designed specifically for exchanging data with a host program like Sokoban YASC by means of a certain communication protocol.
There are, however, solvers and optimizers that don't conform to this plugin architecture.
Typically, these programs are so-called console mode programs without a graphical user interface (GUI).
Instead, the user must enter the relevant parameters like "which level to solve?" and "time limit" in text form, and then activate the program manually.
The normal end-user cannot be expected to know how to do that, and even for experts it's a tedious and impractical procedure.
Sokoban YASC now offers the same ease of use of such external solvers and optimizers, as Sokoban YASC always has offered for normal plugins.
The user can send jobs to the external programs from the task queues, and stop the programs again manually if, for some reason, a task should not run to its normal completion.
All it takes is a so-called plugin script for each external solver and optimizer.
Plugin scripts are written in a new and powerful scripting language, "SokLisp", appearing here for the first time in Sokoban YASC.
The biggest advantage of this new plugin feature is that the external solvers and optimizers can be 64-bit programs, whereas the normal plugins must be written for the 32-bit architecture because Sokoban YASC is a 32-bit application.
Optimizers, in particular, benefit tremendously from having access to a large amount of RAM memory, so breaking the 32-bit architecture barrier here, where it matters the most, is a major improvement of Sokoban YASC.
Thanks to Matthias Meger and Yaron Shoham for extensive testing of this new feature.
Added a plugin script for running the JSoko optimizer by Matthias Meger.
JSoko has a powerful optimizer, and in contrast to Sokoban YASC, JSoko doesn't suffer from the 2 GiB memory limit imposed by the 32-bit architecture.
JSoko can use all the RAM memory installed on the computer, and optimization is a type of task where the amount of available RAM memory matters a great deal.
JSoko has a splendid user interface itself for running one optimization task at a time, but it doesn't offer support for batch processing, like Sokoban YASC does, so this new plugin combines the best of the two programs.
JSoko version 1.94 or newer is required.
Thanks to Matthias Meger for help with the implementation of this plugin, and for making the modifications of JSoko necessary to make this plugin work.
Added a plugin script for running the console mode version of the "Sokolution" solver by Florent Diedler.
At the time of writing, Sokolution is the best existing solver program and it can be downloaded from the author's website.
The first time you activate this solver plugin, you will be asked to edit its settings.
In particular, you must specify where the solver program itself is located on your computer.
Added a new feature:
Find levels with compatible solutions and update their best solutions accordingly.
The duplicate finder module has always offered this form of updating of best solutions for closely related levels.
The two classes "duplicate levels" and "levels with compatible solutions" overlap, but they are not identical.
For instance, the small and very similar levels 6#|#4-#|#@$-.#|#4-#|6# and 7#|#5-#|#@$-.-#|#5-#|7# are not recognized as duplicates by the duplicate finder, but they do have compatible solutions.
This new feature can be found on the menu in the "Open" window. Thanks to Findus for suggesting this feature.
Added a new minor feature:
In the "Tools" window, the tab sheets for the solver, the optimizer, and the generator could have an unused screen area if the user made the thumbnail display of the levels larger than the default (minimum) size.
This screen area is now used for showing the current status in full.
Often, the normal status field is too small to do that.
After an error recovery (e.g., the first time the application is launched after a power failure), the transition to normal gameplay had stopped working.
The main gameplay window was blank instead of showing the loaded level, and it was necessary to restart the application.
No harm was done; the error recovery worked correctly.
- Minor changes.
A feature comparison of the main Sokoban programs can be found in the Sokoban Wiki.
Write a comment