Godot Procedural Generation 是一个面向 Godot 4.x 的程序化生成技能,用于在实现或调试确定性生成系统时提供方法指导。其基本主张是把程序化系统构建为可复现的数据变换,并带有显式约束:先生成并校验布局,再改动场景树。
用途:在 Godot 4.x 项目中实现或排查确定性程序化生成,涵盖带种子的随机数、Roguelike 房间、地牢图结构、带约束的放置等场景。
主要能力与工作方式:
一、先检查再设计。定位 project.godot 并读取 Godot 特性与版本标签,在可用时确认可执行文件版本;检查现有世界场景、网格尺度、TileMap/TileMapLayer 使用情况、TileSet 源 ID 与地形设置、房间场景、入口标记、导航、存档数据、autoload 及测试框架;找出所有已有随机调用,判断游戏是否已拥有种子或 RandomNumberGenerator 实例;识别被持久化的程序化数据,因为改变生成顺序或规则会使旧种子失效;保留项目支持的 API,仅当检查到的 Godot 4.x 版本支持时才为新输出优先使用 TileMapLayer;若房间数量、边界或连通性等需求未知,应主动询问,不擅自添加隐含约束。
二、定义生成契约。在写算法前先写契约:输入种子与生成模式版本;网格形状、坐标原点、边界与房间/世界尺度;精确或范围化的输出数量;要求的连通性及允许的环或死胡同;房间度数、接口、重叠、间距与朝向规则;起始、出口、Boss、奖励、钥匙等必需角色;角色间的图距离与排序约束;尝试/工作量预算与显式失败结果;必须保存与可重新生成的数据。硬约束(拒绝布局)与软偏好(仅影响评分或权重)需分开;不可满足的硬约束必须在有界时间内失败而非无限循环。
三、采用分阶段流水线:请求 -> 带种子的布局数据 -> 结构校验 -> 内容分配 -> 语义校验 -> 场景/瓦片实现 -> 服务器同步 -> 发布。把布局单元、边、接口、房间角色与生成记录保留为数据;为生成使用私有 RNG 而非全局 rand* 函数;返回包含成功、种子、数据、尝试次数与失败原因的结果;仅在验