JavaScript · 项目报告

majidmanzarpour/threejs-procedural-dungeon

Real-time procedural dungeon generator in Three.js - deterministic seeds, Delaunay/MST graph layouts, room semantics, five themes, and a custom bloom/tilt-shift pipeline.

已完成 打开 GitHub
M
386星标
66Fork
0Issue
MIT许可证

分析结果

项目分析

这是一个基于 Three.js 和 Vite 的实时程序化地牢生成器前端项目。项目通过单一随机种子驱动完整生成流程,包括房间散布、碰撞分离、Delaunay 三角剖分、最小生成树连接、回环添加、房间语义标注、瓦片雕刻、装饰物生成和 WebGL 渲染。它支持 5 种主题、可视化生成过程、图结构叠加、难度热力图、Bloom 与 Tilt-shift 后处理,并使用 InstancedMesh 优化大量瓦片和装饰物的渲染性能。项目更偏向技术演示、游戏原型、算法学习和 WebGL 视觉实验,而不是可直接用于生产的完整游戏框架。

适用领域 WebGL / Three.js / 程序化内容生成 / 游戏开发 / 地牢生成 / 图算法 / 前端可视化 / 实时渲染 / 创意编码 / 独立游戏原型
配置难度 中等偏高。运行和部署很简单,只需要 Node.js、npm 和浏览器;但如果要深入修改地牢生成算法、抽离为游戏模块、优化渲染管线或迁移到其他引擎,需要理解图算法、瓦片地图、Three.js 渲染、InstancedMesh、后处理和前端交互逻辑。对于有 Three.js 和游戏开发经验的开发者难度中等;对于普通前端开发者,算法和渲染部分会有一定学习成本。
商业价值 该项目的直接商业价值主要体现在技术验证、原型开发和视觉 Demo 展示上。它可以帮助游戏团队快速验证程序化地牢布局、种子复现、主题化关卡和 WebGL 实时渲染效果;也可以作为独立游戏、网页游戏、桌游地图生成器、关卡编辑器或创意工具的基础参考。由于 MIT 许可,商业项目可以较自由地复用代码,但若要变成产品级系统,需要进行模块化重构、补充工程化测试、抽象生成 API、优化移动端性能,并与实际游戏玩法系统集成。
01

技术亮点

  • 确定性生成:同一个 seed 可以复现完全相同的地牢,包括房间、走廊、装饰和灯光
  • 完整生成管线可视化:scatter、separate、Delaunay、MST、loops、semantics、carve、rasterize、decorate 等步骤清晰展示
  • 使用 Delaunay 三角剖分和 MST 构建自然且保证连通的房间图
  • 支持回环连接,避免地牢变成单调的树状结构
  • 通过 BFS 计算深度和难度,并分配入口、战斗、精英、宝藏、神龛、Boss 等房间语义
  • 内置 Ancient、Molten、Frost、Grim、Verdant 五种主题,并支持根据 seed 自动选择
  • 大量使用 InstancedMesh,适合渲染数千个瓦片、墙体和装饰物
  • 自定义后处理管线,包括 bloom、模糊、tilt-shift、色彩分级、暗角和胶片颗粒
  • 提供图叠加、难度热力图、对象层开关和性能统计,非常适合调试和教学
  • 无后端、无外部素材,部署简单,适合作为静态网页 Demo
02

目标用户

  • 希望学习程序化地图生成的前端开发者
  • Three.js 和 WebGL 开发者
  • 独立游戏开发者
  • 游戏关卡生成算法研究者
  • 需要地牢或房间图生成参考实现的开发者
  • 想制作 roguelike、ARPG、桌游地图工具的开发者
  • 学习 Delaunay、MST、BFS 在游戏关卡中应用的学生或工程师
  • 需要可视化技术 Demo 的创意开发者
03

配置要求

  • Node.js 18+
  • 现代浏览器,需要支持 WebGL
  • 建议使用支持硬件加速的桌面浏览器以获得更好帧率
  • 项目主要依赖 Three.js 和 Vite
  • 不需要后端服务
  • 不需要数据库
  • 不需要外部美术资产管线,纹理、几何体和后处理均在浏览器端生成
  • 如果部署到静态站点,需要正确配置 SPA/静态资源路径,通常 Vite 默认配置即可
  • 移动端可运行,但复杂场景、后处理和高房间数量可能影响性能
04

适用场景

  • 作为程序化地牢生成算法的学习案例
  • 作为 WebGL/Three.js 实时渲染和后处理管线参考
  • 用于游戏原型中的地牢布局生成逻辑参考
  • 用于演示种子驱动的确定性生成系统
  • 用于研究房间图、最小生成树、回环连接和难度曲线设计
  • 作为互动式网页技术 Demo 部署到 Netlify、GitHub Pages 或 itch.io
  • 提取其中的地图生成逻辑,迁移到 Unity、Godot、Unreal 或自研游戏引擎
  • 作为教学材料,展示程序化生成从图结构到瓦片网格再到渲染的完整流程
05

部署与配置

  • 确保本地安装 Node.js 18 或更高版本
  • 克隆仓库:git clone https://github.com/majidmanzarpour/threejs-procedural-dungeon.git
  • 进入项目目录:cd threejs-procedural-dungeon
  • 安装依赖:npm install
  • 启动开发服务器:npm run dev
  • 在浏览器访问 Vite 输出的本地地址,通常是 http://localhost:5173
  • 构建生产版本:npm run build
  • 本地预览生产构建:npm run preview
  • 将 dist/ 目录部署到任意静态托管服务,例如 Netlify、GitHub Pages、Vercel 或普通静态服务器
06

风险与注意事项

  • 核心逻辑集中在单个 main.js 文件中,模块化程度较低,后续维护和二次开发成本可能较高
  • 项目更像完整技术 Demo,而不是可插拔的 npm 库,直接集成到大型项目需要重构
  • 算法、渲染、UI、材质、输入控制高度耦合,提取单独功能时需要理解整体代码
  • 复杂场景加后处理在低端设备或移动端可能存在性能压力
  • README 描述功能较完整,但如果缺少 API 文档,开发者需要直接阅读源码理解实现细节
  • 没有提到自动化测试,算法改动后可能较难保证生成结果和视觉表现稳定
  • 如果用于商业游戏,需要补充存档、碰撞、寻路、实体系统、战斗系统、资源加载和编辑器能力
  • Three.js 版本升级可能影响颜色管理、灯光、后处理和渲染结果,需要注意兼容性

历史记录

热榜历史快照

2026-07-12 第18名 新收录 · github_search
2026-07-11 第26名 新收录 · github_search
2026-07-10 第25名 新收录 · github_search
2026-07-09 第29名 新收录 · github_search
2026-07-08 第26名 新收录 · github_search