Map generation for games
Go to file
2020-09-04 12:47:46 +02:00
demo Added exit modifier 2020-09-04 12:47:46 +02:00
src Added exit modifier 2020-09-04 12:47:46 +02:00
.gitignore Basic demo app 2020-08-31 14:13:52 +02:00
.travis.yml Added Travis CI 2020-08-31 11:48:44 +02:00
Cargo.toml Version 0.1.2 2020-09-03 22:03:59 +02:00
LICENSE-APACHE init 2020-08-31 11:45:59 +02:00
LICENSE-MIT init 2020-08-31 11:45:59 +02:00
README.md Added exit modifier 2020-09-04 12:47:46 +02:00

Game Map Generator

Build Status Crates.io mapgen.rs

Generate procedural maps for games.

This library is based on the code from the Roguelike tutorial. I highly recommend it for learning how to write Roguelike in Rust.

Demo app

If you want to check how the maps look like, then:

  • Clone this rep
  • Go to the demo folder
  • Run demo app (cargo run)

Features

Dungeons

  • Map generators
    • BSP Interior
    • BSP Room
    • Cellular automata
    • Diffusion-Limited Aggregation (DLA)
    • Drunkard's walk
    • Maze
    • Prefabs
    • Voronoi hive
    • Wave Function Collapse
  • Map modifiers (filters)
    • Area exit point
    • Area starting point
    • Cellular automata
    • Cull unreachable areas
    • Voronoi spawning

Usage

Add dependency to your project

mapgen = "0.1"

Using single map generator:

use rand::prelude::*;
use mapgen::dungeon::{
    MapGenerator,
    cellular_automata::CellularAutomataGen
};

let mut rng = StdRng::seed_from_u64(100);
let gen = CellularAutomataGen::new(80, 50);
let map = gen.generate_map(&mut rng)

Use MapBuilder for chaining map generator and modifiers

use mapgen::dungeon::{
    MapBuilder,
    map::{Map, Point, TileType},
    cellular_automata::CellularAutomataGen,
    starting_point::{AreaStartingPosition, XStart, YStart},
    cull_unreachable::CullUnreachable,
};

let map = MapBuilder::new(Box::new(CellularAutomataGen::new(80, 50)))
            .with(AreaStartingPosition::new(XStart::CENTER, YStart::CENTER))
            .with(CullUnreachable::new())
            .build_map();

For more information check the doc

License

Licensed under either of

at your option.

Contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.