JSoko
JSoko is a Java program for playing the Sokoban game.
It's developed as an open source program at www.sourceforge.net
Current version of JSoko is 2.22
Suggestions or any questions? Write to: JSoko(at)mail.de
Sokoban News
Sokoban YASC 1.677 has been published
Brian Damgaard has published a new version of his great and widely used Sokoban YASC program.
The release notes for this new version:
- The "Find similar puzzles" variant of the puzzle duplicate finder has been significantly improved.
It now uses the Levenshtein edit distance algorithm for comparisons. ("Levenshtein" is spelled correctly - it's not a typo.)
Previously, this variant relied on a simpler, more direct comparison method.
While it also used normalized puzzle boards and also allowed for a match threshold percentage to account for variations, the results were less flexible than those achieved with the new algorithm.
The other two duplicate finder variants, "Find all duplicate puzzles" and "Find duplicates of the current collection", remain unchanged.
They still search for exact duplicates (considering puzzle normalization) rather than similar puzzles, as the computational cost of a similarity-based search would be prohibitive. - The built-in puzzle generator has been enhanced to produce better-quality puzzles.
Previously, it was prone to carving dead-end tunnels and placing goals or boxes in them.
While this was an easy way for the generator to increase the number of pushes - a key metric for creating more complex and interesting puzzles - such puzzles often turned out to be trivial and too easy to solve.
For example, here is an auto-generated puzzle with a promising beginning, but after unwinding its initial knot, the remainder becomes trivial:
"--9#|--#3-4.#|--#--6#|--#3-#|3#-$-#|#-$--4#|#7-#|4#-$$-#|3-##@-##|4-4#".
The improved algorithm now avoids creating dead-end tunnels in most cases, resulting in more challenging puzzles. - Bugfix: Filling the optimizer task queue with solutions from a puzzle file containing thousands of puzzles can take so long time that the user might choose to switch to another application during the import.
This worked as expected, but if the user switched to the Windows desktop instead of another application, then a harmless but highly technical error message would appear on the screen.
After dismissing the message, the user could restart the import from where it left off.
This issue has now been resolved for the optimizer task queue and the puzzle generator task queue.
The solver task queue, which uses a similar import mechanism, already handled this scenario correctly.
- Minor changes.
YSokoban 1.849 has been published
George Petrov has published YSokoban 1.849.
The release notes for this new version:
- Bugfix: rare crash during save of a solution.
A feature comparison of the main Sokoban programs can be found in the Sokoban Wiki.
Sokoban YASC 1.676 has been published
Brian Damgaard has published a new version of his great and widely used Sokoban YASC program. There are also new versions of the optimizer (YASO) and the solver (YASS).
The release notes for this new version:
- The puzzle file format has undergone a major overhaul, most notably abandoning the run-length encoding feature.
This includes both the simple form that allowed moves like 'rrrUUUU' to be encoded as '3r4U', and the advanced grouping form that encoded moves like 'rrUUUrrUUU' as '2(2r3U)'.
The feature was not only never used in practice, but there was no real need for it.
For programmers, it greatly increased the implementation complexity, far more than could be justified.
Thanks to Matthias Meger and Eric Sunshine for their valuable contributions to both the file format and its description. - New feature: The application now includes an automatic "Check for Updates" feature, installing updates automatically when available.
The update check frequency can be customized with options for weekly, monthly, yearly, or never. To adjust these settings, go to "Settings | Control | Miscellaneous". - New feature: A graphical user interface (GUI) is now available for configuring all solver and optimizer plugins that come with Sokoban YASC.
The program includes plugin scripts for several major solvers (e.g., Festival) and optimizers (e.g., JSoko). While the YASS solver and YASO optimizer are bundled with Sokoban YASC, the other programs must be downloaded separately from their respective websites due to license restrictions.
Once installed, the provided plugin scripts seamlessly integrate these external programs into the Sokoban YASC environment, allowing users to launch, stop, and manage tasks from the solver and optimizer queues.
Previously, the only way to adjust settings such as 'time limit' or 'memory limit' for these external programs was by manually editing plain text files.
Although functional, this method was far less user-friendly than a graphical user interface with checkboxes, radio buttons, drop-down lists for multiple choices, and other common GUI elements.
The novelty is that the underlying SokLisp scripting language has been enhanced with the ability to support GUI windows.
This upgrade enables the plugin scripts to offer a much more convenient, user-friendly interface for managing the settings.
Additionally, it allows the plugins to offer new, advanced features, such as saving and swapping different sets of settings tailored for various types of tasks. - The accompanying solution optimizer uses four optimization strategies.
One of them, “Global Optimization,” often requires considerable time with only minimal chances of finding improvements.
Nevertheless, this method remains essential for optimizing secondary metrics, such as player lines, alongside moves and pushes.
This capability makes the method particularly valuable for finding truly optimal solutions in very small puzzles.
Now, the “Global Optimization” strategy includes a 50-million pushes limit, providing a more balanced trade-off between runtime and the likelihood of discovering improvements. - Minor changes.
Sokoban e-mail group
Visit: Sokoban group
Acknowledgements
JSoko is developed with the help of the YourKit Java Profiler.
YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: