#map #game #map-generator

mapgen

游戏地图生成器(地牢、世界等)

12个版本

0.6.0 2022年12月19日
0.5.2 2021年8月26日
0.5.0 2021年6月28日
0.4.2 2021年1月14日
0.4.1 2020年11月3日

398游戏开发 中排名

每月下载 48

MIT/Apache

305KB
1.5K SLoC

游戏地图生成器

Build Status Crates.io mapgen.rs

为游戏生成程序化地图。使用 WebAssembly 在浏览器中尝试

地图过滤器

此库包含不同的地图过滤器,可以组合以创建自定义地图生成器。

实现的过滤器

  • 区域出口点
  • 区域起点
  • BSP内部
  • BSP房间
  • 细胞自动机
  • 删除不可达区域
  • 扩散限制聚集(DLA)
  • 醉汉行走
  • 迷宫
  • 噪声生成器
  • 预制件
  • 最近的房间走廊
  • 简单房间
  • 沃罗诺伊蜂巢
  • 波函数坍缩

用法

将依赖项添加到您的项目中

mapgen = "0.4"

使用单个地图生成器

use rand::prelude::*;
use mapgen::{Map, MapFilter};
use mapgen::filter::CellularAutomata;

let mut rng = StdRng::seed_from_u64(100);
let gen = CellularAutomata::new();
let map = gen.modify_map(&mut rng, &Map::new(80, 50));

使用MapBuilder来链接地图生成器和修饰符

use mapgen::{
    MapBuilder,
    filter::{
        NoiseGenerator, 
        CellularAutomata,
        AreaStartingPosition,
        XStart, 
        YStart,
    },
};

let map = MapBuilder::new(80, 50)
        .with(NoiseGenerator::uniform())
        .with(CellularAutomata::new())
        .with(AreaStartingPosition::new(XStart::CENTER, YStart::CENTER))
        .with(CullUnreachable::new())
        .with(DistantExit::new())
        .build();

有关更多信息,请参阅文档

此库基于Roguelike教程中的代码。我强烈推荐您学习如何在Rust中编写Roguelike。

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献都应作为上述双重许可,不附加任何额外条款或条件。

依赖项