5个不稳定版本

0.3.0 2023年2月22日
0.2.1 2023年1月31日
0.2.0 2022年8月27日
0.1.1 2022年3月18日
0.1.0 2022年3月18日

#799 in 算法

32 每月下载量

MIT/Apache

77KB
2K SLoC

Here Be Dragons

Crates.io here_be_dragons

生成用于游戏的进程性地图。

致谢

这个crate基于mapgen.rs。感谢Krzysztof Langner为这个crate实现了许多地图生成算法所付出的辛勤工作。

地图过滤器

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

实现的过滤器

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

使用方法

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

here_be_dragons = "0.1"

使用单个地图生成器

use rand::prelude::*;
use here_be_dragons::{Map, MapFilter};
use here_be_dragons::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 here_be_dragons::{
    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许可证的定义,将根据上述方式双许可,不附加任何额外条款或条件。

依赖项

~240–485KB