瑞士国土面积 41,285 平方公里。从马焦雷湖岸的 193 米海拔,到杜富尔峰顶的 4,634 米,垂直落差达 4,441 米。在原版 Minecraft 仅有数百格的高度限制下,哪怕截取一段阿尔卑斯山脉,山顶也会被天空盒切断。
瑞士独立开发者 Beda Good 近期发布了名为 Blocks 的工程项目。该项目把整个瑞士按 1 个方块对应 1 米的物理尺度塞进了 Minecraft。用官网的原话说,这个世界从日内瓦湖一直铺到东端的 Val Müstair,马特洪峰的高度与陡度跟实地一致。这套规模庞大的体素国土,由算法基于官方开放测绘数据程序化编译而成。
4634米垂直落差冲破引擎高度上限
瑞士全境最低点位于马焦雷湖,海拔 193 米。最高点为杜富尔峰,海拔 4,634 米。两地垂直落差超过 4,400 米。早期原版 Minecraft 仅支持 256 格高度,现行版本上限也只有 384 格。
按比例缩放高程会破坏 1:1 的行走纵深感。截断山体则破坏地貌连贯性。制作团队选择退回 2017 年发布的 Java 1.12.2 版本。该决策的核心考量,在于 Cubic Chunks 模组在这一环境下的稳定性。
该模组重构了 Minecraft 的世界存储架构。它将传统的 256 格区块柱重构为 16×16×16 的立方体区块,移除了引擎固有的高度限制。高耸山体只在玩家垂直移动时动态加载对应区块,让 4,634 米的高差得以平稳展现。
客户端必须运行在 Java 8 与 Forge 框架下。基岩版、主机端与移动端由于缺乏底层模组支持,无法运行这一自制世界。
图:艾格峰北壁垂直落差达标,1 格严格对应现实 1 米。来源:Blocks 官网
虚拟世界内的空间坐标直接锚定瑞士官方参考系。该项目应用了联邦测绘局的 CH1903+ / LV95 投影系统。坐标换算遵循固定算式:横坐标减去 2,480,000,纵坐标用 1,300,000 减去北向坐标,高度轴严格对应实际海拔。
玩家在控制台输入特定坐标指令,即可实现精确位置传送。例如输入少女峰顶坐标 /tp 160188 4164 145928 -180 4,角色便会降落在积雪峰峦。输入 /tp 159300 2548 139700 -68 -10,视角立刻切换到艾格峰北壁前三公里处。这种点对点的坐标映射,赋予了体素世界可量测的测绘工具属性。
七类异构开放数据压进同一套方块语义
构建虚拟世界的原料来自公开测绘成果。瑞士联邦地形局 swisstopo 自 2021 年起推行开放数据政策,允许公众免费调用高精度地理信息并用于商业场景。项目团队调用了 swissALTI3D 地形模型、swissSURFACE3D 林冠高度数据、swissBATHY3D 湖底测深网格以及 swissTLM3D 矢量地物。地质岩性则引用了五十万分之一的 GeoCover 图集。
地表之下的隐藏构造同样需要科研数据支撑。苏黎世联邦理工学院与瑞士冰川监测网络公开的历史编目提供了冰川演进轮廓。学者 Grab 在 2020 年发表的冰厚模型给出了三维冰川体数据。瑞士联邦森林、雪与景观研究所及联邦环境署的生境调查,确定了草地、砾石、农田与葡萄园的分布边界。
公开数据源就绪只解决了输入问题。不同维度的原始数据格式高度离散。激光雷达点云记录空间离散坐标,建筑与水体是矢量多边形,冰厚数据是连续体素,植被分布则是二维栅格分类。
数据编译管线必须充当统一的空间仲裁器。程序在每个 1 米网格处决断属性归属,并赋予单一的方块识别码。体素化过程的本质是科学多维数据向游戏语义的强行坍缩。
图:从 Eggishorn 视角俯视大阿莱奇冰川,游戏内截图。来源:Blocks 官网
以大阿莱奇冰川为例,冰面之下蕴含着数万方实体冰块。编译管线结合地表高程与冰厚模型计算出基底岩床深度,填充出数十米厚的坚冰体素,并在表层结合卫星影像铺设碎石方块。苏黎世市甚至接入了单株树木名录,将现实树木一一转化为对应的树干与树冠。
边走边算卸下60GB磁盘与内存负载
瑞士全境世界包的压缩文件体积达到 24 GB。导入游戏客户端并解压之后,磁盘占用空间膨胀至约 60 GB。系统运行要求至少配备 16 GB 物理内存,并分配 8 GB 专属内存给游戏进程。即便在搭载锐龙 7 7800X3D 与 RTX 4070 显卡的测试平台上,初次加载仍需要预先构建远景数据。
1 格对应 1 米,意味着 4.1 万平方公里地表上的每一格都要先判定属性归属。全部离线预生成的话,存档体积与读写开销都会失控。开发团队因此采用了按需生成的运行时动态架构。
分发包内部仅封装高度压缩的特征数据图层与名为 Fernsicht 的远景几何体。细致的 1 米实体方块预先并不存在于存档文件中。只有当角色移动至特定视野半径内时,本地计算线程才会触发地表构建。这种策略利用本地处理器的实时计算,换取了世界包在存储和传输层面的可行性。
图:伯尔尼高地劳特布龙嫩谷地。来源:Blocks 官网
这种设计在角色高速移动时会表现出明显的计算延迟。整合包内置了 1 倍到 100 倍的飞行速度切换工具,最高飞行时速可达每秒 1 公里。当移动速度超过 20 倍时,区块生成线程便难以追赶视野移动。玩家脚下的实体方块会暂时消失,视野中只剩低精度的远景壳体,直到角色停下等待数据解算完毕。
原始地理测绘覆盖决定体素拟真上限
世界包覆盖的地理范围是一个包含瑞士国境的外接矩形,不可避免地延伸至周边邻国。一旦跨出国境线,瑞士官方的高精度激光雷达数据便戛然而止。境外地势只能退守采用欧洲航天局 Copernicus DEM GLO-30 提供的 30 米网格高程数据。地表采样精度瞬间下降数十倍。
在缺少瑞士官方建筑数据的边境境外地区,生成管线无法获取建筑物矢量轮廓。算法并未尝试推断房屋样貌,而是统一在空地上种植森林。整片外境街区因此被林木覆盖。
程序化生成的拟真程度高度依赖上游测绘数据的先验密度。开发者在项目主页坦承,1:1 指的是空间比例尺,并不等同于人工逐米雕琢的复刻。虽然宏观山川与湖盆走向准确,但局部桥梁仍会出现断裂,道路容易陷入地形切面。低洼水体的深度在离散采样时还会出现下陷孔洞。
用林木遮盖缺失要素体现了工程折中的思路。在缺乏建筑物立面与轮廓的前提下,算法无法生成合理的房屋形体。强行拼凑只会制造杂乱几何体,退守自然植被反而降低了破绽。自动化体素世界的质量天花板,始终由底层地理数据的覆盖边界严格锁定。
用免费切片验证配置再开放本土分发
团队推出了 2,400 平方公里的免费切片,用于降低硬件试错成本。体验区选在著名的少女峰-阿莱奇世界自然遗产地。切片包含艾格峰、僧侣峰与阿莱奇冰川,压缩包精简至 1.1 GB。全球任何地区的玩家无需注册即可直接下载测试。
全境早期体验版本采取了梯度收费策略。基础档位售价 5 瑞士法郎,用于平衡下载服务器的带宽成本;标准许可档位售价 15 瑞士法郎,包含后续水体与岩壁表现的改进更新;48 瑞士法郎的峰顶档位对应瑞士境内 48 座四千米级雪峰,购买者可在官网荣誉册留名。
深度定制的 Java 1.12.2 与模组环境对硬件配置十分挑剔。提供完整机制的免费切片并声明全境版本不支持退款,目的在于让用户在付款前提前跑通本地硬件测试。全境版本的结算流程仅开放给拥有瑞士本地地址的用户。这种地域限制兼顾了地理数据授权合规要求,也避免了单人维护的下载带宽遭遇突发冲击。
该项目支持通过自建 Forge 服务端展开多人联机。但与常规联机架构不同,每位进入世界的玩家本地都必须持有完整的 24 GB 数据包,以支持各自独立的远景渲染。开发者后续还基于同套高程数据产出了 3D 打印地形实体模型。整个工程保持了浓厚的极客实验风格。
从少女峰冰川到苏黎世行道树,Blocks 跑通了地理数据转化的链路。这套工程的核心在于跨源数据编译。游戏引擎的渲染压力退居次席。
庞大数据通过按需生成分流给了玩家终端。但体素无法还原所有现实细节。站在边境遥望 30 米网格的粗糙山脊,反差尤为明显。虚拟世界能达到的真实极限,始终由测绘员与遥感卫星丈量的精度决定。
参考链接:
- Blocks 官方技术说明与世界下载(Manifold)。
- swisstopo 开放地球数据与数字高程模型(瑞士联邦地形局)。
- 瑞士冰川编目与厚度测量数据集(GLAMOS / ETH Zürich)。
- 瑞士生境图与森林覆盖调查(EnviDat / BAFU / WSL)。
- 瑞士 20 Minuten 媒体关于 Blocks 项目报道。