{"id":22143535,"url":"https://github.com/brettchalupa/sokoworld","last_synced_at":"2025-10-07T17:19:28.128Z","repository":{"id":253591512,"uuid":"841219027","full_name":"brettchalupa/sokoworld","owner":"brettchalupa","description":"Classic box pushing puzzler Sokoban (built in Rust with Macroquad)","archived":false,"fork":false,"pushed_at":"2024-11-15T02:12:12.000Z","size":1039,"stargazers_count":6,"open_issues_count":12,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-21T11:46:01.105Z","etag":null,"topics":["game","macroquad","open-source-game","public-domain","puzzle-game","rust","sokoban"],"latest_commit_sha":null,"homepage":"https://brettchalupa.itch.io/sokoworld","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brettchalupa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-12T00:30:01.000Z","updated_at":"2025-02-11T00:04:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"461b14ef-d06d-4de1-accf-9d45e8b9bf7a","html_url":"https://github.com/brettchalupa/sokoworld","commit_stats":null,"previous_names":["brettchalupa/sokoworld"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/brettchalupa/sokoworld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brettchalupa%2Fsokoworld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brettchalupa%2Fsokoworld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brettchalupa%2Fsokoworld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brettchalupa%2Fsokoworld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brettchalupa","download_url":"https://codeload.github.com/brettchalupa/sokoworld/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brettchalupa%2Fsokoworld/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278811887,"owners_count":26050191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game","macroquad","open-source-game","public-domain","puzzle-game","rust","sokoban"],"created_at":"2024-12-01T22:13:22.195Z","updated_at":"2025-10-07T17:19:28.081Z","avatar_url":"https://github.com/brettchalupa.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SokoWorld\n\nFree and open source Sokoban client made with Rust and Macroquad.\n\n[Play the game!](https://brettchalupa.itch.io/sokoworld)\n\nAlternate install instructions:\n\n- [Download the latest release from GitHub](https://github.com/brettchalupa/sokoworld/releases)\n\n## OS Notes\n\nIf you're playing the game on Linux, it defaults to Wayland and falls back to X11.\n\nIf you want to have the game's assets live separately from the binary, you can specify either of the following:\n\n- `--assets` arg: `./sokoworld --assets /some/path/assets`\n- set the `SOKOWORLD_ASSETS` environment variable: `SOKOWORLD_ASSETS=/some/path/assets ./sokoworld`\n\n## Defining Levels\n\nLevels are collected in Packs, which are\n[TOML](https://toml.io/en/) files that describe the pack and\nthe data for each level within it.\n\nThe benefit of using TOML is that it's much more human readable\nthan XML but provides a bit of structure and mark-up. It\nstrikes a nice balance of easy to map to data structures while\nalso being human editable.\n\nSee [level-format.txt](./level-format.txt) for the meaning of\ncharacters in the level files.\n\n## Dev Tools\n\nIn debug builds, \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eEsc\u003c/kbd\u003e quits quickly.\n\n### Play a Specific Level\n\nRun a specific pack and level with:\n\n```console\ncargo run -- -p=assets/yoshio-murase-automatic.toml -l=2\n```\n\nwhere `-p=` is the path to the level pack and `-l=` is the number of level in the levels table.\n\n### Reload the Current Level from Disk\n\nPress the \u003ckbd\u003e9\u003c/kbd\u003e key to reload the current level from disk. This is useful for iterating on the design of a level.\n\n## Developing\n\n1. Install Rust (version 1.80.1 used for initial development)\n2. Install ancillary dependencies to assist with development: `./deps.sh`\n3. Run the project: `cargo run`\n\nThere's also `./serve_wasm.sh` to boot up a simple web server to test WASM builds, which can be rebuilt with `./build_wasm.sh`\n\n## Dev Notes\n\n- the JS shims in web are explicitly checked in in case they disappear \u0026 to have versions match\n\n## Deployment\n\nThe game is currently hosted on itch at https://brettchalupa.itch.io/sokoworld\n\n### Web\n\nWASM builds can be built and pushed by running:\n\n```console\n./release_wasm.sh\n```\n\nIdeally in the future this would push builds for desktop operating systems, create tags, etc., but this works for development.\n\n### macOS\n\nmacOS uses [cargo bundle](https://github.com/burtonageo/cargo-bundle):\n\n1. Install cargo bundle: `cargo install cargo-bundle`\n2. Build the bundle: `cargo bundle --release`\n\nThere's a `release_macos.sh` script to build and upload a Universal app for macOS (works on both Intel and Apple Silicon Macs).\n\n### Windows\n\nNot ideal but functioning\n\n1. `cargo run --release`\n2. `mkdir win`\n3. `cp .\\target\\release\\sokoworld.exe .\\win\\`\n4. copy the assets folder into the `win` dir\n5. zip it up\n6. upload it to itch.io manually\n\n### Linux\n\nRun the script:\n\n```console\n./release_linux.sh\n```\n\n## Credits\n\n- Programming: Brett Chalupa\n- Sprites\n  - Kenney set: [kenney.nl](https://kenney.nl) (CC0)\n  - Retro set: Brett Chalupa\n  - Marble set: [Vellidragon](https://opengameart.org/content/sokoban-clone-tiles) (CC0)\n  - Doggo set: [Chrysalis](https://opengameart.org/content/tic-80-sokoban-tileset-8x8) (CC-BY 4.0)\n- Sound Effects\n  - melos: Melos Han-Tani of Analgesic Productions (non-commercial usage)\n\n## License\n\nThe course code is released under the Unlicense, see [LICENSE](./LICENSE) for full details.\n\nThe 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).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrettchalupa%2Fsokoworld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrettchalupa%2Fsokoworld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrettchalupa%2Fsokoworld/lists"}