从两周写出的原型,到能生成月球与火星
Arnis 是一个开源项目,它把 OpenStreetMap 等来源的真实世界数据,转换成可以在 Minecraft 中自由探索的世界。维护者 Louis Erbkamm 回忆,早期版本用 Python 手写,只接入 OpenStreetMap,生成一座小镇相当耗时。为了测试,他挑选了德国的小镇 Arnis——项目便沿用了这个独特名字。官方介绍提到,项目的 GitHub 下载量已接近 90 万次,贡献者约 70 人,并被翻译成约 20 种语言。
改变是逐步发生的:加入高程数据后,生成的地形不再是一马平川,来自各地的地理爱好者开始主动讨论如何把高程更好地整合进来;在把代码从 Python 移植到 Rust 之前,Louis 同样在 GitHub 上公开征集意见。此外,后续版本的地形范围已经延伸到地球之外,加入了月球和火星。
数据如何变成方块
流程并不复杂。用户选定区域后,Arnis 向 OpenStreetMap 查询该范围内所有已标注的要素,读取每个要素的坐标与类型,再据此摆放方块。对于地图无法描述的精细结构,例如纽约的自由女神像、里约热内卢的基督像,Arnis 会把 3D 模型转换成 Minecraft 方块。
这条链路也解释了它的能力边界:凡是 OpenStreetMap 上没有标注的要素,Arnis 就无法放置。一个小例子是垃圾箱——Louis 发现自己的城市里有不少垃圾桶,而生成的世界里一个都没有;Minecraft 没有专门的垃圾桶方块,他便把问题抛给社区,最终一起找到了合适的替代方块。
适用的场景
- 课堂教学。Louis 最喜欢的用法是在学校:教师生成所在城市或一处社区公园,然后把生成结果变成竞赛——所有学生从同一片生成区域出发,用 Arnis 和 Minecraft 改造附近的公园或游乐设施,最后全班一起查看各自的作品。
- 个人探索。从地图上选一个你熟悉的地方,生成后在世界里走走,寻找“少了什么”。
目前的限制
作为唯一的维护者,Louis 需要亲自审阅每一个拉取请求,这些请求会堆积起来。他通常在晚上或周末处理项目,社区因此需要等待。
生成性能对细节很敏感。以路灯为例,只要有一处计算出错,就可能让整座城市的生成时间大幅变慢。为了排查这类风险,他会在 GitHub Copilot 应用中打开大型拉取请求做整体概览和性能评审,并让其在后台寻找可降低内存占用或生成耗时的改动;同时,他也在尝试启动若干子代理,专门检查需要格外小心的代码区域,补充边界用例,避免新版本引入回归问题。他表示,把这些繁琐工作交给 Copilot 之后,自己可以腾出精力看更核心的开发议题,而代码评审和文档的产出都有增加。
此外,成果质量直接受制于 OpenStreetMap 的标注密度:地图上缺什么,世界里就缺什么。
如何上手
从 github.com/louis-e/arnis 下载,在地图上选一个地点,指定出生位置,点击 Start Generation,几分钟后世界即可在 Minecraft 中打开。Louis 建议挑一个你有印象的地方,比如家乡,或者大峡谷、尼亚加拉瀑布这样到过的地方。接着留意生成结果里缺失的细节——可能是一张实际存在却没被生成的长椅。你可以在 OpenStreetMap 上补上标注,或者把这个问题当作缺陷反馈给维护者。
接下来的方向
Louis 希望 Arnis 在持续贴近现实的同时保持易用:细节更丰富、生成更快,并进入更多学校。他的表述很直接——社区中来自不同领域的人聚在一起,共同推进一个最初只是业余项目的作品,是他遇到的最好的事情。
资料来源:Arnis turns any place on Earth into a Minecraft world(2026-11-03)。
一起聊聊
留下你的想法,评论审核通过后展示。