用途:在 Godot 4.3+ 中实现程序化生成,示例全部面向 4.3+,不包含已弃用 API,先给 GDScript 再给 C#。
主要能力:
- 种子随机:用 RandomNumberGenerator 实例并设置 seed,保证可复现;避免全局 randf()/randi()。
- 噪声生成:用 FastNoiseLite 做高度图、生物群系与 2D 地形;关键参数为 noise_type(Perlin/Simplex/Cellular/Value)、frequency(越低特征越大)、seed;按瓦片坐标采样并阈值化选瓦片。
- BSP 地牢:递归把矩形切分为更小矩形,在叶子中挖房间,用走廊连接兄弟节点,生成网格对齐的类 roguelike 地牢。
- 细胞自动机洞穴:以约 45% 密度随机填充墙/地板,迭代 4-5 次“8 邻域中墙≥5 则变墙”,得到有机洞穴形状,无笔直走廊。
- 波函数坍缩:给定带邻接规则的瓦片集,选最低熵单元坍缩为合法瓦片并传播约束,重复至完成;实现不简单。
使用方式:生成前设置 rng.seed;字符串种子可用 "MyLevel".hash() 生成可分享关卡码;噪声频率建议 0.01–0.05;洞穴 fill_chance 用 0.40–0.50、迭代 4–6 次;BSP 切分位置要为 min_room_size 留缓冲;大地图用 await get_tree().process_frame 分摊到多帧或放到线程,避免卡顿。
限制与注意:文档指向 references/noise-generation.md、bsp-dungeons.md、cellular-automata.md、wave-function-collapse.md 获取完整实现细节,主文只列要点;常见问题包括未设种子导致每次关卡相同、跨平台结果不同(应使用独立 RandomNumberGenerator)、噪声块状(频率过高)、洞穴全墙或全地板(填充率或迭代次数不当)、BSP 房间重叠、WFC 矛盾(邻接规则过严或需回溯)、生成耗时过长。相关技能:2d-essentials(TileMapLayer)、3d-essentials(3D 地形网格)、math-essentials(向量与变换)、godot-optimization(分块加载与性能)。是否收费、定价、平台支持等暂未提供。