# minecraft随机地形生成 **Repository Path**: no_homework/map_making ## Basic Information - **Project Name**: minecraft随机地形生成 - **Description**: 此项目为我的世界随机地形生成,支持生成schem,schematic,mcstructure,txt4种格式,支持平原,高山,河流三种地形,支持修改顶部方块,同时支持生成后3d预览建筑,支持大建筑生成 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-26 - **Last Updated**: 2026-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 随机地形生成器 (map_making) 一个基于浏览器的 Minecraft 随机地形生成器,支持生成后 **实时 3D 预览**。 这是一个开源项目,仓库地址:, 基于 MIT 协议开源(见 [LICENSE](LICENSE))。 - **浏览器界面**:亮色 / 暗色双主题,参数面板 + 3D 预览双标签页 - **Go 生成引擎**:地形生成速度比原 Python 实现快约 **80-100 倍** - **多格式导出**:Sponge .schem / 基岩版 .mcstructure / 旧版 .schematic / setblock 指令 TXT - **一键 3D 预览**:生成完成后弹窗询问,点击即在浏览器内查看立体地形 --- ## 快速开始(源码运行) ### 环境要求 - Windows 10/11 - Python 3.9+(仅用于启动本地服务) ### 运行 1. 安装 Python 依赖: ```bash pip install -r requirements.txt ``` 2. **首次使用**如需重新编译 Go 生成引擎(需已安装 Go 1.18+): ```bash cd go_src go build -o terrain_gen.exe . ``` 或直接双击 `go_src/build.bat`。仓库已附带编译好的 `terrain_gen.exe`,通常无需重新编译。 3. 双击 `start.bat`(或执行 `python main.py`)。 4. 浏览器会自动打开 `http://127.0.0.1:8123`。 ### 使用 1. 在「生成参数」页选择地形类型(平原 / 高山 / 河流 / 自定义), 预设会自动调整高度与缩放,也可手动微调。 2. 设置尺寸、最大高度、表面方块;可选填随机种子。 3. 勾选需要导出的格式(schem / mcstructure / schematic / TXT 指令文件)。 4. 点击「生成地形」。所有导出文件统一保存在**软件目录下的 `buildings` 文件夹**里, 完成后界面会显示保存路径;同时弹窗询问是否查看 3D 效果,日志区也提供下载链接。 5. 生成完成后顶部会出现「重新生成」按钮:所有参数不变,换一个随机种子再生成一次。 6. 界面默认亮色主题,可点右上角按钮切换为暗色(仅作用于生成参数页,3D 预览保持默认暗色)。 --- ## 打包 exe(可选) 安装 PyInstaller 后执行: ```bash pip install pyinstaller python -m PyInstaller --noconfirm --clean --onefile --console --name RandomTerrainGenerator --icon icon.ico --version-file version_info.txt main.py ``` 把 `dist/RandomTerrainGenerator.exe` 与 `web/`、`converter/`(含运行库 DLL 与 assets)、 `go_src/terrain_gen.exe` 放在同一目录即可直接运行;导出文件保存在该目录的 `buildings` 里。 --- ## 性能对比 地形生成(含写入 .schem)耗时对比: | 尺寸 | Python 版 | Go 版 | 加速比 | |------|-----------|-------|--------| | 64×64 h=20 | 0.68s | 0.02s | 34× | | 128×128 h=30 | 2.53s | 0.06s | 45× | | 256×256 h=40 | 10.30s | 0.11s | **91×** | | 512×512 h=60 | ~40s | 0.50s | ~80× | 瓶颈原本在纯 Python 的 OpenSimplex 噪声计算(占 99%)。Go 版精确移植了 OpenSimplex 2D 算法(输出值与 Python 库逐位一致),并用多核并行加速。 --- ## 项目结构 ``` . ├── main.py # 启动入口(启动服务 + 打开浏览器) ├── server.py # 本地 HTTP 服务:生成 / 转换 / 下载 / 进度 / 静态托管 ├── terrain.py # 地形算法元信息(噪声后端探测,实际生成由 Go 完成) ├── schem_converter.py # .schem -> TXT(setblock) 转换 / 区块化 ├── start.bat # Windows 一键启动 ├── version_info.txt # PyInstaller 版本资源(打包 exe 用) ├── requirements.txt ├── LICENSE # MIT 协议 │ ├── go_src/ # Go 地形生成引擎 │ ├── simplex.go # OpenSimplex 2D 噪声(移植自 opensimplex) │ ├── terrain.go # 地形高度 + 地层填充(多核并行) │ ├── nbt.go # NBT 编码器 │ ├── formats.go # schem / mcstructure / schematic 输出 │ ├── main.go # 命令行入口 │ ├── build.bat │ └── terrain_gen.exe # 编译产物(仓库附带) │ ├── converter/ # 结构文件 -> 3D JSON 转换器(来自 See It Easy) │ ├── converter.cpp # C++ 源码 │ ├── build.sh # 编译脚本(需 MinGW-w64) │ ├── assets/ # 方块映射表等运行时资源 │ └── converter.exe # 编译产物(仓库附带,含 MinGW 运行库 DLL) │ ├── web/ # 前端(浏览器界面) │ ├── index.html # 生成器主界面 │ ├── view.html # 3D 查看器页(See It Easy viewer) │ ├── main.js # 3D 渲染逻辑 │ ├── js/three.min.js │ └── textures/ # 方块贴图 │ └── _legacy/ # 旧 PyQt5 版本存档(不再使用) ``` --- ## 接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/ping` | 健康检查 | | GET | `/api/killswitch` | 集控开关(服务端代理远程令牌文件) | | POST | `/api/generate` | 提交生成任务,返回 `job` id | | GET | `/api/progress?job=` | 查询进度 / 状态 / 种子 / 输出格式 / 保存目录 | | GET | `/api/result?job=` | 取回转换好的 3D JSON | | GET | `/api/download?job=&fmt=` | 下载指定格式结构文件 | | POST | `/api/convert?job=` | 上传结构文件转 JSON | --- ## 技术说明 - **地形生成**:Go 实现的 OpenSimplex(无周期重复)+ 多倍频噪声; 平原 / 高山 / 河流三套参数;河流类型额外挖出河床并填充水面。 - **3D 预览**:生成的 `.schem` 经 `converter.exe` 转成统一 JSON, 再由 Three.js 体素渲染器构建(隐藏面剔除 + InstancedMesh 合并 + 视锥剔除)。 - **多格式导出**:Go 引擎直接生成三种结构文件,均通过 `converter.exe` 验证可解析。 - **水 / 草配色**:原版灰度贴图在浏览器内按 plains 群系配色运行时染色, 水面呈原版蓝色(#3F76E4)。 --- ## 作者 - **作者**:Unstoppable. - **QQ**:1638374808 - **交流群**:947026433 - **源码仓库**: ## 开源协议 本项目基于 [MIT License](LICENSE) 开源,欢迎自由使用、修改与二次分发。 第三方组件版权信息: - 3D 查看器与结构转换器来自 **See It Easy**(作者:Unstoppable.,MIT 协议), 版权与署名见 `web/main.js` 头部及 `converter/`。 - OpenSimplex 噪声算法移植自 [opensimplex](https://github.com/lmas/opensimplex)(Kurt Spencer 原始算法)。 - 渲染:Three.js。