Tilemap 自动生成技术调研
调研范围:算法库、引擎内置方案、独立工具、AI 辅助生成 适用决策:2D 游戏/应用中的 Tilemap 自动生成方案选型 三条主路线 当前主流技术路线分三大方向: 约束传播类(WFC 及变体):以 Wave Function Collapse 为代表,通过样例学习约束规则自动生成视觉一致的 tilemap,是近年最受社区关注的方向,适合有样例地图、追求局部一致性的场景。 传统程序化生成(PCG):包括 BSP 分割、随机游走、噪声函数(Perlin/Simplex)、房间连接算法等,技术成熟、可控性强,是引擎内置方案的主流实现基础,适合工程化生产环境。 AI/ML 辅助生成:包括 GAN、扩散模型、强化学习等方向,处于学术探索阶段,少数工具已产品化,适合内容需求量极大且愿意投入训练成本的团队。 核心选型建议: 快速上手 + 风格一致 → WFC(fast-wfc 或引擎插件) 工程稳定 + 高可控 → Perlin Noise + BSP/房间算法(引擎原生) 编辑器辅助 + 团队协作 → LDtk + Auto-layer 规则 大规模内容生成研究 → PCGML 方向(学术) 一、约束传播类:WFC 及变体 技术原理 Wave Function Collapse(WFC)由 Maxim Gumin 于 2016 年提出,本质是一种约束传播 + 回溯搜索算法。输入一张样例 tilemap,算法自动提取相邻关系约束,再在新画布上逐格"坍缩"——每格从所有可能 tile 中选一个满足邻居约束的值,直到整张图确定。 核心优势: 无需手写规则,从样例自动学习 输出视觉上与样例风格高度一致 可保证局部邻接关系合法(无穿墙、无悬空) 核心缺陷: 可能出现矛盾(contradiction),需重试 全局结构控制弱(无法保证有入口/出口) 大地图生成速度较慢 主要项目对比 项目 语言 Stars(约) 许可证 特点 适用引擎 mxgmn/WaveFunctionCollapse C# ~23k MIT 原版实现,含 Overlapping 和 Tiled 两种模式 任意(命令行) fast-wfc C++ ~1.1k MIT 性能优化版,支持并行;适合嵌入 C++ 项目 任意 godot-wfc GDScript ~300 MIT Godot 4 插件,直接操作 TileMapLayer Godot 4 unity-wave-function-collapse C# ~800 MIT Unity 集成,支持 3D Tile Unity wfc-rust(多个实现) Rust ~200-400 MIT 高性能,适合服务端生成 任意 Tessera C# ~600 MIT Unity 插件,扩展了 WFC 支持约束自定义 Unity superpositioned TypeScript ~150 MIT 浏览器端 WFC,带可视化 demo Web/JS WFC 变体与改进方向 变体 解决的问题 代表实现 Constraint-augmented WFC 加入全局约束(保证连通性) BorisTheBrave 的多篇博客 + 参考实现 Hierarchical WFC 先生成大结构再细化 学术论文方向,暂无成熟库 WFC + A* 生成后用寻路验证可玩性 需自行组合 Automatic Tiling(Auto-Tile) 非约束传播,基于位掩码规则自动选 tile RPG Maker、Godot Terrain、LDtk Auto-layer 二、传统程序化生成(PCG) 核心算法类型 算法 原理 典型用途 优点 缺点 Perlin/Simplex Noise 连续随机函数生成高度图 地形/海拔/生物群系 平滑自然,速度极快 难以控制宏观结构 BSP(二叉空间分割) 递归分割空间生成房间 地下城、室内关卡 结构规整,无重叠 风格单一,走廊感强 随机游走(Drunkard’s Walk) 随机方向掘进生成通道 洞穴、有机地形 风格有机,实现简单 不可预测,需大量后处理 Cellular Automata 生命游戏规则迭代平滑 洞穴地形、平滑地貌 视觉自然,易于理解 生成结果不确定,难以调控 房间+连廊(Room & Corridor) 先放房间再连接通道 RPG 地下城 可控性强,标准做法 需要额外的装饰逻辑 Voronoi 分割 以随机种子点划分区域 地区划分、生物群系 视觉多样,可配合 Noise 实现稍复杂 L-System 文法规则递归展开 植被、分形结构 视觉有层次感 调参复杂,学习成本高 主要库与框架对比 项目 语言 Stars(约) 定位 主要功能 libtcod C/C++/Python ~1.5k 经典 Roguelike 工具库 BSP、随机游走、FOV、寻路 rot.js TypeScript ~2.3k 浏览器端 Roguelike 工具库 多种地图算法、随机数、FOV gdungeon(Godot) GDScript ~500 Godot 专用地下城生成 BSP + 走廊连接 dungeon-generator(npm) JavaScript ~200 轻量地下城生成 房间+连廊 noise.js / open-simplex-noise JavaScript ~1k+ Noise 函数库 Simplex/Perlin 多维噪声 FastNoiseLite C/C#/多语言 ~3k 高性能 Noise 库 多种 Noise 类型,Unity/Godot 均有移植 mapgen4 C++ ~700 岛屿地图生成 Voronoi + 物理侵蚀模拟 引擎内置 PCG 能力 引擎 内置 Tilemap 生成支持 典型方案 Godot 4 TileMapLayer + Terrain 系统(Auto-tile) 内置地形自动拼接;PCG 需脚本实现 Unity Tilemap + Rule Tile + Scriptable Tiles Rule Tile 可做简单 Auto-tile;复杂 PCG 靠插件 GameMaker 内置 tilemap 函数 需手动实现算法 Phaser 3 内置 Tilemap(配合 Tiled) 无原生 PCG,靠 JS 脚本 LÖVE2D 无内置 tilemap,靠社区库 STI(Simple Tiled Implementation)读取 Tiled 数据 三、AI/ML 辅助生成(PCGML) 技术路线概览 方法 原理 成熟度 代表工作 GAN(生成对抗网络) 训练生成器模仿真实地图分布 🟡 中(学术可用) DCGAN for Mario levels(Volz 2018) VAE(变分自编码器) 学习地图潜空间,插值生成 🟡 中 Latent Variable Evolution 扩散模型(Diffusion) 图像级地图生成,细节丰富 🟡 中(2023-2024 新兴) ControlNet 配合 tileset 风格化 Transformer/LLM 把 tilemap 当序列,自回归预测 🟡 中 GPT-2 生成 level 序列 强化学习(RL) 训练 Agent 设计关卡 🔴 低(难以实用) PCGRL(Khalifa 2020) Markov Chain 基于转移概率的序列生成 🟢 高 简单实现,效果有限 Evolutionary Algorithm 遗传算法优化地图适应度 🟡 中 配合可玩性评估函数 新兴方向:LLM 辅助关卡设计 近期(2024-2025)出现了用 LLM 作为关卡设计助手的实验性方向: ...