Skip to content

procedurally generated roguelike game written with rust and amethyst

Notifications You must be signed in to change notification settings

radium-io/sanity

Repository files navigation

Moonsanity

screenshot

This game is an exploration of three things:

  1. Rust
  2. Amethyst
  3. Spooky Moon Dungeons

I was able to combine Amethyst with the wonderful WaveFunctionCollapse implementation by @stevebob to achieve a procedurally generated roguelike dungeon based on an arbitrarily chosen tilemap. You can load any tilemap you like in to the editor and generate a file compatible with the game engine allowing you to swap out the tileset as you like.

Additional thanks to Elthen for the wonderful free sprite sets available here, and Adam Saltsman's Sci Fi Sprites (psst check out Overland)

How to Play

cargo run --bin sanity to run the game. Or download at https://wastrel.itch.io/moonsanity

How to use Editor

cargo run --bin editor Left click to select a tile. Right click to choose southern compatible tiles. Hold D and right click to select eastern compatible tiles. Push S to save a .ron file with the information about compatible pairs.

The ron file may need to be edited manually to mark walkable tiles and null tiles (blank). Some constants are still present in the game source and will need to be modified to enable level generation. See sanity-bin/src/state/room.rs and sanity-bin/src/map.rs

Setup

  1. Clone this repo.
  2. Install required tools below for your OS.
  3. Run cargo run
  4. ???
  5. Profit

Tools

Ensure that the cargo bin directory (usually ~/.cargo/bin) is in your PATH. Ensure that the python bin directory is in your PATH.

Required

  • XCode (Mac OS only, must be full version not just command line tools, for using metal gfx backend)
  • cmake (for building vulkan libraries)
  • rust-analyzer
    Works best with VSCode, disable official Rust plugin.

Optional but suggested:

  • cargo-edit - cargo install cargo-edit
    for upgrading/adding/deleting dependencies.
  • cargo-outdated - cargo install cargo-outdated
    for checking if dependencies are out of date.
  • grip - pip install grip
    for editing README.md