拍几张照片,就把你家周边环境1:1搬进 Minecraft?这个屌炸天的开源工具叫做 Arnis!

423 阅读4分钟

作为一个 Minecraft 的忠实玩家,你有没有想过,把你家所在的城市、地标甚至自然景观搬进 Minecraft 是什么体验?今天要聊的,就是一个可以实现这种“脑洞”的工具——Arnis,一个用 Rust 编写的开源项目。用它,你可以在 Minecraft Java 版中生成细节丰富的真实世界地形和建筑。

image.png


Arnis 是什么?

简单来说,Arnis 是一个工具,它通过读取 OpenStreetMap(简称 OSM)的地理数据,将现实中的地理区域转换成 Minecraft 的世界。无论是城市街道、建筑物,还是自然景观,比如河流、农田,Arnis 都能帮你在方块世界里一一还原。

亮点功能:

  • 以高细节生成现实世界的地理和建筑。
  • 支持从小型社区到大规模城市的生成。
  • 提供命令行和图形界面两种操作方式,满足不同使用习惯。

如何使用 Arnis?

安装和运行 Arnis 并不复杂。以下是具体的步骤。

1. 下载或编译项目

你可以直接下载编译好的版本,或者克隆代码库自行编译:

git clone https://github.com/louis-e/arnis.git
cd arnis
cargo build --release

编译完成后,可以通过以下命令运行 Arnis:

cargo run --release -- --path="C:/YOUR_PATH/.minecraft/saves/worldname" --bbox="min_lng,min_lat,max_lng,max_lat"

参数说明:

  • --path:指定 Minecraft 保存的世界路径。
  • --bbox:定义需要生成区域的经纬度边界(例如:--bbox="120.12,30.27,120.20,30.30" 代表杭州某区域)。

2. 图形界面操作

如果你不熟悉命令行,也可以使用 Arnis 的图形界面:

  1. 打开 Arnis 图形界面。
  2. 用矩形工具选择目标区域。
  3. 点击 “Start Generation”,Arnis 就会自动生成你的 Minecraft 世界。

建议:在生成之前,建议先在 Minecraft 中创建一个“平坦世界”。


Arnis 的工作原理

从数据到 Minecraft 世界的生成过程其实非常有趣,大致分为以下几个步骤:

流程图:Arnis 的数据处理管线

1. 数据获取和解析

Arnis 利用 Overpass API 从 OpenStreetMap 获取地理数据。这些数据包括:

  • 节点(Node):描述坐标点,如建筑物的角点。
  • 路径(Way):连接多个节点形成线段或多边形,比如道路或建筑轮廓。
  • 关系(Relation):将多个节点或路径聚合成更复杂的对象,比如河流或公园。

2. 转换为 Minecraft 坐标

接着,Arnis 会将这些数据的地理坐标转换为 Minecraft 的方块坐标。比如一个节点 (120.12, 30.27) 会映射到 Minecraft 的 (x, y, z)

3. 按优先级生成

为了避免生成冲突(比如建筑和道路重叠),Arnis 会按照优先级排序:

  • 优先生成地基和自然地形(如草地、河流)。
  • 然后生成建筑物、道路等。
  • 最后生成更细致的装饰物,比如喷泉、桥梁。

代码片段展示建筑物生成逻辑:

fn generate_building(nodes: Vec<Node>, tags: HashMap<String, String>) {
    for node in &nodes {
        let (x, y, z) = map_to_minecraft_coords(node.latitude, node.longitude);
        place_block(x, y, z, "minecraft:stone");
    }
    println!("Building generated at {:?}", nodes);
}

4. 保存和加载

所有生成的方块数据会被保存到 Minecraft 的区域文件(.mca)中,完成后就可以在游戏里直接加载和游玩了。


Arnis 为什么选择 Rust?

项目的初版其实是用 Python 开发的,但后来被移植到 Rust。这背后有几个关键原因:

  1. 性能:Rust 的内存管理和并发能力让程序运行更高效,特别是处理大规模数据时。
  2. 可靠性:Rust 的编译器严格保证了内存安全,减少了运行时错误的可能性。
  3. 学习和扩展:开发者借此机会深入学习 Rust,并优化生成算法。

Arnis 和类似工具的对比

市面上还有其他一些能实现类似功能的工具,比如 WorldEditAmulet Editor,但它们在功能和使用场景上有所不同。以下是对比:

工具功能特点使用门槛数据来源性能表现
Arnis自动生成真实世界地图,支持大规模生成中等OpenStreetMap高效
WorldEdit手动编辑 Minecraft 世界,适合定制化较低无地理数据较高
Amulet世界转换工具,可编辑和转换不同 Minecraft 版本中等无地理数据中等

Arnis 是一个让人眼前一亮的工具。它将现实地理数据和 Minecraft 结合,让我们可以用方块构建属于自己的现实世界。无论你是想重现家乡风貌,还是探索世界名城,Arnis 都是一个值得一试的选择。