{"id":16694146,"url":"https://github.com/philschatz/puzzlescript-rust","last_synced_at":"2025-05-14T15:14:25.747Z","repository":{"id":38330875,"uuid":"194802427","full_name":"philschatz/puzzlescript-rust","owner":"philschatz","description":":video_game: Play PuzzleScript games in Rust","archived":false,"fork":false,"pushed_at":"2022-06-06T21:43:57.000Z","size":6572,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-17T04:28:31.568Z","etag":null,"topics":["game","game-engine","puzzle-game","puzzles","rust"],"latest_commit_sha":null,"homepage":"https://gitpod.io/#https://github.com/philschatz/puzzlescript-rust","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philschatz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-02T06:32:30.000Z","updated_at":"2024-03-29T16:55:03.000Z","dependencies_parsed_at":"2022-08-24T02:40:35.597Z","dependency_job_id":null,"html_url":"https://github.com/philschatz/puzzlescript-rust","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philschatz%2Fpuzzlescript-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philschatz%2Fpuzzlescript-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philschatz%2Fpuzzlescript-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philschatz%2Fpuzzlescript-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philschatz","download_url":"https://codeload.github.com/philschatz/puzzlescript-rust/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254170077,"owners_count":22026220,"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","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","game-engine","puzzle-game","puzzles","rust"],"created_at":"2024-10-12T16:44:08.706Z","updated_at":"2025-05-14T15:14:25.705Z","avatar_url":"https://github.com/philschatz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What is this?\n\nIt is a [PuzzleScript][puzzlescript-url] interpreter written in Rust to play games in your terminal!\n\n## Try it out!\n\n[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/from-referrer/)\n\n# Screencaps\n\nHere are some screencaps of games being played.\n\n### Gravirinth ([original](https://pedropsi.github.io/gravirinth.html))\n\n(click to see the ascii screencast)\n\n\u003ca href=\"https://asciinema.org/a/262824\"\u003e\u003cimg width=\"300\" alt=\"video of the beginning of Gravirinth\" src=\"https://asciinema.org/a/262824.png\"/\u003e\u003c/a\u003e\n\n### Mirror Isles ([original](http://www.draknek.org/games/puzzlescript/mirrors.php))\n\nThis screencast shows playing the game in a terminal using ASCII and ANSI colors.\n\n![mirror-isles](https://user-images.githubusercontent.com/253202/47133542-ce0d1700-d26e-11e8-851f-233d27aaf0b8.gif)\n\n\n### Pot Wash Panic! ([original](https://hauntpun.itch.io/pot-wash-panic))\n\n(click to see the ascii screencast)\n\n\u003ca href=\"https://asciinema.org/a/188014?t=25\"\u003e\u003cimg width=\"300\" alt=\"video of install and a couple games\" src=\"https://asciinema.org/a/188014.png\"/\u003e\u003c/a\u003e\n\n\n### Hack the Net ([original](http://www.draknek.org/games/puzzlescript/hack-the-net.php))\n\n\u003ca href=\"https://asciinema.org/a/188016\"\u003e\u003cimg width=\"300\" alt=\"video of a couple levels of Hack-the-Net\" src=\"https://asciinema.org/a/188016.png\"/\u003e\u003c/a\u003e\n\n### Skipping Stones to Lonely Homes ([original](http://www.draknek.org/games/puzzlescript/skipping-stones.php))\n\n\u003ca href=\"https://asciinema.org/a/189279?t=20\"\u003e\u003cimg width=\"300\" alt=\"video of the beginning of Skipping Stones (BIG)\" src=\"https://asciinema.org/a/189279.png\"/\u003e\u003c/a\u003e\n\n### Entanglement ([original](http://www.richardlocke.co.uk/release/entanglement/chapter-1/))\n\n\u003ca href=\"https://asciinema.org/a/212372?t=18\"\u003e\u003cimg width=\"300\" alt=\"video of the beginning of Entanglement\" src=\"https://asciinema.org/a/212372.png\"/\u003e\u003c/a\u003e\n\n\n# Install\n\n1. Install Rust\n1. Clone this repository\n1. Run `cargo run --release` to get the help message\n1. Run `cargo run --release -- ./games/{game}.parsed.json` to play a game\n    - As you complete levels, it will create a save file in the same directory as the game\n\n# Test\n\n- `./test.bash` : runs all the tests\n- `cargo test` : runs unit tests\n- `./test_solutions.bash` : replays real games and verifies the solutions still work\n\n## Flamegraph\n\nFlamegraphs are great for finding performance problems. Here's how to generate one:\n\n```bash\necho \"DDD\" | sudo cargo flamegraph ./games/roll-those-sixes.parsed.json -- --level 0 --scripted\necho \"S.D.S.D.DWAASAWWW..............q\" | sudo cargo flamegraph ./games/entanglement-one.parsed.json -- --level 3 --scripted\n```\n\n# TODO\n\n- [ ] Build WebAssembly version and add example of using it in a browser\n- [ ] Add a parser so the original `script.txt` files can be used instead of the `*.parsed.json` files\n\n\n[puzzlescript-url]: https://github.com/philschatz/puzzlescript","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilschatz%2Fpuzzlescript-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilschatz%2Fpuzzlescript-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilschatz%2Fpuzzlescript-rust/lists"}