SokoSolve: Sokoban Game and Solver
I have been intermittently working on Sokoban for years. It is fun to return every couple of years and breath some life back into it.
Sokoban solving is a interesting domain with very simple rules but with a search complexity comparible to Chess.
Sokoban-tinkering has been a good friend for at least 15 years. It has been a playground for breaking-in the latest C# language features. It provided me with welcome distraction while I nursed my mother during her cancer. It allowed me to learn about hi-performance techniques and deepend my comp-sci knowledge.
- SouceForge (Dec-2007) The original project. Now legacy reference.
- GitHub (Sep-2015) updated and moved to GitHub
The SourceForge Years (2007..2015)
This was my first dip into the open-source world. I wanted to explorer the solver, but also to build a user-base -- for which I need a game client and library. I moved onto other things before it got any real usage.
Another beginning on GitHub (2015..present)
I dropped the game client and library - the whole user interface; and focussed instead on a modernised commandline-only solver. This involved real research in high-performance techniques, including:
- Multi-threading saturation
- Memory usage optimiations
- Lock-less techniques
A confession: at the moment, I am not really interested in direclty solving more puzzles with more advanced algorythims (like ML, etc). Rather, I really want to understand the performance characteristics of the current brute-force implementation. My focus is to build a deep understanding of the low-level performance optimisation techniques.