ur-fault / TMaze

TMaze is an experience combining immensely complex maze-generation algorithms and mind-numming mazes to solve.
Other
17 stars 3 forks source link
game maze maze-game maze-generator rust terminal-game tui

TMaze

Simple multiplatform maze solving game for terminal, written entirely in Rust

Install with cargo install tmaze and run with tmaze


Crates.io

Packaging status

Screenshot of in-game

What's this

Features

Rationale

Since I'm a student, I've got to attend classes, but even when I'm listening I wanted to do something more than sit there. Also at the time this project came to life, I started to learn Rust, so it seemed to make sense to make some kind of game, but since my notebook is not the newest and I wanted to make it as lightweight as possible, I decided to make it for a terminal. It's also pretty cool.

Another requirement was that it would be multiplatform so that I could play it anywhere. A bonus was that I could play it on the server.

And it ended up as maze solving game because I just couldn't find any other.

Credits and thanks

How to run

Using package managers

Scoop - Scoop's official repository

  1. Make sure you have the latest version of Scoop installed
  2. Add games bucket using scoop bucket add games if you did not before
  3. And finally, install tmaze with scoop install games/tmaze

Scoop - Henshouse repository

  1. Make sure you have the latest version of Scoop installed
  2. Add games bucket using scoop bucket add henshouse https://github.com/henshouse/henshouse-scoop if you did not before
  3. And finally, install tmaze with scoop install henshouse/tmaze

Feature flags

TMaze uses cargo features to enable/disable some features. In Github release binaries, they are all enabled. From version 1.14.0, all features are enabled by default and should be disabled manually. To disable them, use --no-default-features flag. After disabling them, enable specific ones you want with --features <feature1>,<feature2>,... flag.

The features are:

How to build from source

Enabling/disabling features

After cargo command add --features to enable features, such as updates. To disable default features, such as hashbrown, add --no-default-features. To enable all featueres add --all-features.

Install it using cargo from crates.io

  1. Make sure you have cargo installed
  2. Run cargo install tmaze
  3. It's recommended that you have ~/.cargo/bin in the PATH, so that you don't need full path to run it

Or directly from Github

  1. Make sure you have cargo installed
  2. Clone GitHub repository or download it as zip, then extract it
  3. Go to that folder
  4. Run command cargo run --release to run (or you can just build it with cargo build --release without runing it)
  5. You can find compiled executable in the directory ./target/release/ with name tmaze or tmaze.exe , which you can move or link somewhere else

If you are Docker enjoyer, you may use it too

  1. Make sure you have Docker installed
  2. Build the image with docker build -t tmaze . --tag tmaze inside the repository folder, image is not published on Docker Hub yet
  3. Then you have multiple options of actually running it (and ofc more)
    1. Run it one time only: docker run --rm -it tmaze
    2. Run it with persistent storage for config and saved data: docker run -it --rm -v tmaze_data:/root/.config/tmaze tmaze
      • In this case you can edit config using somthing like docker run --rm -it -v tmaze_data:/root thinca/vim:latest