Free and open source Sokoban client made with Rust and Macroquad.
Alternate install instructions:
If you're playing the game on Linux, it defaults to Wayland and falls back to X11.
If you want to have the game's assets live separately from the binary, you can specify either of the following:
--assets
arg: ./sokoworld --assets /some/path/assets
SOKOWORLD_ASSETS
environment variable: SOKOWORLD_ASSETS=/some/path/assets ./sokoworld
Levels are collected in Packs, which are TOML files that describe the pack and the data for each level within it.
The benefit of using TOML is that it's much more human readable than XML but provides a bit of structure and mark-up. It strikes a nice balance of easy to map to data structures while also being human editable.
See level-format.txt for the meaning of characters in the level files.
In debug builds, Shift + Esc quits quickly.
Run a specific pack and level with:
cargo run -- -p=assets/yoshio-murase-automatic.toml -l=2
where -p=
is the path to the level pack and -l=
is the number of level in the levels table.
Press the 9 key to reload the current level from disk. This is useful for iterating on the design of a level.
./deps.sh
cargo run
There's also ./serve_wasm.sh
to boot up a simple web server to test WASM builds, which can be rebuilt with ./build_wasm.sh
The game is currently hosted on itch at https://brettchalupa.itch.io/sokoworld
WASM builds can be built and pushed by running:
./release_wasm.sh
Ideally in the future this would push builds for desktop operating systems, create tags, etc., but this works for development.
macOS uses cargo bundle:
cargo install cargo-bundle
cargo bundle --release
There's a release_macos.sh
script to build and upload a Universal app for macOS (works on both Intel and Apple Silicon Macs).
Not ideal but functioning
cargo run --release
mkdir win
cp .\target\release\sokoworld.exe .\win\
win
dirRun the script:
./release_linux.sh
The course code is released under the Unlicense, see LICENSE for full details.
The license does not apply to the other assets, they fall under their own terms (see above). Assets created by me, Brett Chalupa, for the game are CC0 (Public Domain).