用途:为游戏提供程序化内容生成能力,包括地图、地牢、战利品、地形、NPC 行为变化与世界构建,类型无关,适用于 roguelike、生存游戏、放置游戏、开放世界等需要可重玩性的项目。
主要能力:以种子驱动确定性生成;用 BSP 生成地牢房间与走廊;用 Perlin/Simplex 噪声生成连续地形;用加权随机表生成战利品;用波函数坍缩生成基于瓦片的世界;用元胞自动机生成洞穴;用 L 系统/Voronoi 生成城市与道路。强调先设预算约束再生成、分层生成、生成与校验分离。
使用方式:先定义种子与 RNG 策略,使用可播种 PRNG(如 mulberry32),避免 Math.random();从世界种子派生各子系统子种子。按内容类型选择算法,并在生成前定义房间数、敌人密度、物品数、路径长度等最小/最大值及 maxRetries。生成后校验,失败则重试,重试耗尽返回 null。昂贵内容按种子缓存,廉价内容按需重生成。示例用法:new DungeonGenerator().generate('my-seed-123', {...});LootTable 支持 add 权重、withGuaranteed 与 roll。
适用场景:需要可重玩关卡、随机地图、掉落系统、程序化地形或世界模拟的游戏项目。
限制与注意:避免无限重试循环;32 位种子在大规模下可能碰撞,需考虑 64 位或字符串种子;不同 JS 引擎的 Math.random() 不一致,必须使用显式 PRNG;不要同时存储生成内容与种子;WFC 邻接规则过严会导致无法坍缩;修改算法需对生成器版本化,否则旧种子结果改变。前置技能包括 game-economy-design 与 postgres-game-schema。