Z Space Blog

your source for Game Z

Box Pusher » Level Data for Solvers

Back in 2012, I bought this cute little game called Box Pusher [DSi]. It features gameplay from a 1982 game called Sokoban. In Sokoban, you are a warehouse worker and push boxes around an enclosed area onto target squares. This is the entirety of its gameplay. Think of ye olden Zelda block puzzle, on crack, and you get Sokoban. Box Pusher contains 250 levels worth of this craziness, and features a level editor, in case that's not enough box pushing for you. It was certainly enough for me. But, you don't have to do the work needed to get some Box Pusher solutions; I did it for you!

Box Pusher » Level Data for Solvers

Hook it up to a solver, and you're good to go! Putting this together was a journey.

About halfway through the puzzles, I realized "I'm an adult and have other shit I want to do. It'd be cool to beat this game, though." So I decided to make it a little fun, and use Sokoban solvers. I used a combination of JSoko, takaken's Sokoban Solver, and YASC Solver to get solutions. I then used JSoko's optimizer to shorten those solutions. Between these tools and a few strays that I was able to solve on my own, it only took raw determination to see it through.

Building the Levels

The first part of this task was transcription. I started this project in March of 2022. Due to the game's design of only allowing you to play 5 levels at a time, I had to rely on the small level previews (and my phone camera's zoom) to get level layouts ahead of where I was, or solve puzzles as I transcribed. It was an arduous process, but Vim's virtualedit setting was a huge time saver. It allows you to move the cursor anywhere in the buffer, which is key to making text-based diagram creation approachable.

To make matters worse, my TypeMatrix Dvorak keyboard got a sticky key and I was unsuccessful in reassembling it after I cleaned it, damaging the keyboard. I tried everything I knew to do to keep the silicone/rubber membrane to stay in place; even glue, but in the end, the key is permanently mushy. Unusable to me, so I kept it around for parts. Being stuck back on a staggered, QWERTY keyboard sucks, but I'm glad that the muscle memory is still there.

Getting back to the game, I enjoyed the variety of skins and music, and the camera options are cool, too. Ultimately, I feel like the game has way too much content, and some puzzles are really similar. A better curated set of 100 puzzles would be more palatable, and a more realistic goal for someone to meet. Perhaps that wasn't the goal in developing Box Pusher, though. If you are a hardcore Sokoban player, Box Pusher has it in spades! As it turns out, I'm not super into Sokoban.

Sharing the File and Looking Back

I appear to be the only person out there who's finished this game. I wasn't able to find any guides, FAQs, solution lists, blog posts, nothing to indicate anyone else had played or beaten it. To remedy that, I'm sharing a text file containing level layouts for Box Pusher, in machine-readable form, ready for use by all the major Sokoban solvers.

Comments at the top of the file contain advice for usage, and certain levels are commented where I had issue with the solvers. Level 225 and 232 are particularly rough for solvers. None of the solvers that I ran against those levels produced a result, even after 2 hours of running. I ended up following the solution shown in-game by using a solution credit, recording it with my phone, and playing it back at 0.25x speed so I could follow it. Publishing solutions would require me to do 250 puzzles again, and that's just not happening. I've seen enough variations of UDLR to make my head spin.

Despite the slog of completing the puzzles, I did appreciate the different strategies required to solve the levels, and I got to learn about an entire hobby group that uses automation not only just to solve levels, but to gain knowledge of AI techniques and get programming practice. Some levels were solved lightning fast in one solver, but timeout in another. It appears that Sokoban is a game that requires an adaptable AI that relies on numerous algorithms to make its choices, to get best results. Single algorithms can work, too, but it was the variety in algorithms that helped me clear Box Pusher's levels.

Final Thoughts

I think parallel processing would improve the solvers that are the current state of the art. The most I could get for a solver were 2 threads! I have a 6-core, 12-thread CPU. How much faster could I have solved these, if I had a few cores assigned to a few algorithms, so they could all "compete"? Threading is a hard thing to program correctly, so I understand why someone might want to keep things simpler. Perhaps next-gen solvers will integrate parallel computing in some way, to improve performance for modern hardware.

Please enjoy using this file to solve Box Pusher levels! Big thanks to the hackers putting together solvers for the rest of us to use. My file would be useless without them.