跳到正文

AtlasSync: Server World Map

作者:kozhin

高效的服务端权威世界地图,支持客户端实时同步、交互式路径点、结构追踪、洞穴地图以及广泛的模组兼容性。

收藏

截图

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

2.0.0 版本预计明天或后天发布,以下是更新内容:

1. 生物群系名称更加准确,现在还会显示生物群系和结构的命名空间。
2. 玩家图层现在更加明亮,并使用表面渲染器;基础结构禁用规则现在更加动态,可以识别自定义模组中的要塞等结构;修复了复制坐标时逗号也会被复制的问题。
3. 重新设计了航点界面,让它更实用、更易用;现在删除航点也更方便了。
4. 现在可以切换是否将地图中某个已探索结构 ID 的所有结构都标记为已探索。
5. 新增“进度”界面,它是航点界面中的一个新标签页,会显示结构探索进度,包括各维度的进度。你可以在这里查看整合包包含多少种结构,以及已经发现或探索了多少种。
6. 优化了大型模组整合包中结构过多时的地图性能;地图渲染整体性能大幅提升。
7. 按系列隐藏结构时,现在会使用名称标签的最后一部分。这有助于隐藏所有带编号或不同类型、但前缀完全相同的结构变体。
8. 新增结构编辑器界面。你可以直接修改结构在世界中的生成方式;如果你是 OP,数据会动态发送到服务器。它的功能类似 InControl,但专门用于结构。你可以轻松找到生成频率异常的结构,并直接调整其生成率,不再需要费心配置。界面还提供了工具和信息,方便你进行配置。
9. 优化了游戏内航点和信号标记的渲染性能,并修复了它们的一些问题。
10. 新增服务器端结构禁用机制,客户端无论使用什么筛选器都无法看到被禁用的结构。
11. 重新整理了上下文菜单,让它更加清晰,并新增了更多选项。
12. 新增了一些地图工具和功能:现在可以将地图锚定在任意位置;右键即可编辑结构;可以设置结构在地图上的显示筛选条件;可以查看服务器生成的区块信息;地图中的大多数操作都新增了按键绑定;结构现在还可以显示标签,并按稀有度着色。
13. 新增地图指南界面,帮助你了解地图、工具和各项功能的用法。
14. 缓存上限调整为 4096,可用于极限缩小地图视图,但会占用更多内存,请谨慎使用。
15. 现在 Waystones 模组为可选项。我之前不知道它不是可选的,现在也修好了。 
此外还有许多其他改动和错误修复。

后续如果出现问题,我会继续修复。考虑到这是一次大型更新,还需要进行测试,我会再等几天才上传。不过这次主要是客户端更新,应该不会有什么问题;除了新增的结构功能外,其余改动都只是界面相关。

 

 

 

🗺️ AtlasSync:服务器世界地图

一款高性能、由服务器权威控制的世界地图模组,可在多人游戏中实现无缝同步。


🌟 概述

与传统的客户端地图模组不同,后者需要玩家亲自探索世界才能揭开地图;AtlasSync 会在服务器上生成地图,并将其传输给客户端。这意味着玩家一进入游戏,就能看到服务器所掌握的完整世界地图。

本模组采用自定义的高效.rpg二进制区域格式,并搭配智能区块缓存系统,因此服务器负载极低,同时还能在客户端呈现精美的交互式地图。


✨ 主要特性

  • 服务器地图:所有区块的地表地图都由服务器生成,因此你的朋友探索过的区域也会显示在你的地图上。此外,这适用于所有区块:即使区块是由 DistantHorizon 或 Chunky 生成的,地图也仍会创建并发送给所有玩家。
  • 实时同步:地图数据、玩家位置和全局路径点会在服务器与所有已连接的客户端之间无缝同步。
  • 多层地图:轻松切换不同地图层:地表地图由服务器生成,数据缓存在客户端和服务器; 洞穴/深度地图仅在玩家查看地图时由客户端生成,且 数据保存在客户端; 玩家图层地图仅在玩家查看地图时由客户端生成,数据不会保存,用于导航复杂地形。路径点和其他数据会共享,不必担心。
  • Waystones 集成:自动检测并与 Waystones 模组同步——已激活的传送石碑会立即成为地图路径点!
  • 实时标记系统:注视方块时按下[1](或点击地图),即可向服务器上的所有玩家发送视觉标记。
  • 可切换的结构标记:默认情况下,地图会标记结构。我排除了要塞等重要结构;如果愿意,也可以关闭结构标记,不会强制显示。 

 

 


🖥️ 交互式地图界面(按“M”打开)

客户端地图界面包含许多强大又易用的功能,让导航更加轻松。以下是部分功能:

  • 高级路径点管理器:创建、编辑路径点并为其设置颜色。将路径点整理到自定义路径点组中,切换组的显示状态,甚至可以全局分享路径点,让服务器上的所有玩家都能看到。
  • 智能结构追踪:结构会自动标记在地图上。将鼠标悬停在结构上可查看详情,右键可将其标记为已搜刮(✓),也可以完全隐藏特定类型的结构(例如“隐藏所有村庄”或“隐藏指定结构:沙漠神殿”)。
  • 动态提示:将鼠标悬停在地图上,即可查看精确坐标、区块/区域数据、生物群系名称、温度和湿度。
  • 流畅导航:用鼠标自由拖动地图,使用滚轮平滑缩放,或点击“重新居中”按钮锁定自己的位置、跟随其他玩家或查找他们。
  • 地图切换菜单:你可以通过此菜单打开其他维度或其他世界的地图,还可以编辑这些地图。 

 

 


⚙️ 命令详解

此模组提供一套完善的命令,供服务器管理员管理地图数据,也提供客户端命令来自定义界面。

🛡️ 服务器/管理员命令

需要权限等级 2(OP)。基础命令:/worldmap

  • /worldmap retrogen ...(生成旧地形地图)
    用于为安装模组之前已存在的区块生成地图数据,也可补全世界生成速度过快时遗漏的区块。由于性能优化模组的影响,重新生成旧地形可能会变慢,但仍能顺利完成。
    • start [replace] [safe] [force_gen] [does_nothing] [minX minZ maxX maxZ] – 启动旧地形重新生成器。
      • replace: 如果为 true,则覆盖现有地图数据。
      • safe: 如果为 true,运行速度会更慢,但能确保服务器 TPS 不会受到太大影响。
      • force_gen: 如果为 true,会强制将生成了一半的区块完整生成,以便绘制地图。这不会生成新区块;这些区块已经存在,只是尚未完全生成。
      • does_nothing: it does nothing I removed this flag.
      • minX minZ maxX maxZ: 指定要生成的区块区域。
    • stop – 当前区域处理完毕后,安全取消正在进行的 Retro-Gen 进程。

 

  • /worldmap rebuild ...(重建指定数据)
    • index_file – 重建 index.dat 文件。如果服务器崩溃或忘记了哪些区块已绘制地图,请使用此命令。运行 Retro-Gen 前务必先执行,以免遗漏区块。
    • <flags> <dim> <rx1> <rz1> [rx2] [rz2] – 快速重建区域内的指定属性。可用标记包括 -biome_tags、-structure_tags 或 -both, biome_tags also include color data。

 

  • /worldmap delete region <dim> <rx1> <rz1> [rx2] [rz2]
    删除指定维度和区域坐标对应的 .rpg 物理文件,并清除缓存。

 

  • /worldmap chunkgen [with_radius chunkX chunkZ radius] | [with_region_range regionStartX regionStartZ regionEndX regionEndZ]
    又一个区块生成器,使用 Minecraft 生成器来生成区块。它与 Chunky 或 DistantHorizons 的预生成方式相同,但你可以使用地图坐标,还能在地图界面中查看生成进度。

 

  • /worldmap config <key> <value>
    无需重启即可实时编辑服务器属性:
    一次

    • mapgenerator.useMutiThreadedLoading: this is only for the retro gen its not really safe but tries to make the game load mulitple chunk。
    • mapgenerator.threadpoolSize:用于地图绘制的线程数。地图会在主线程之外生成。默认值为 3,但也可以调得更高,因为它不会占用太多线程。它支持多线程,因此可以跟上世界生成速度,同时不会持有区块数据或占用过多服务器 RAM;RAM 占用受下方命令限制。
    • mapgenerator.chunkQueueSize: 可暂存的区块数量,默认值为 128。此设置只影响 RAM,不影响性能;128 个区块约占 75MB。如果世界生成速度过快,而你把 threadpoolSize 和 chunkQueueSize 设得太低,就会看到很多区块地图缺失。我个人使用默认设置,因为我的服务器性能不太好,但很少遇到地图缺失;即使出现,也可能是服务器 TPS 太低导致的,并非模组的问题。遇到这种情况时,我会运行 /worldmap retrogen start 来检查并补齐所有缺失的地图。我还使用 Distant Horizons,它能非常快地生成区块。以上情况是在给这个模组分配 75MB 内存和另外三个线程各 1% 的资源时出现的。
    • mapgenerator.biomeGridSize:生物群系混合的细节等级(4、8 或 16)。推荐使用 16;如果更看重磁盘占用和性能,也可以尝试其他值。
    • server.playerSyncFps:每秒向客户端同步玩家位置的频率,也就是玩家指示器的 FPS。

💻 客户端命令

基础命令:/worldmap_client

  • /worldmap_client config ...(视觉自定义)
    精确自定义世界内标记和信号在屏幕上的呈现方式。
    • global render_distance <value>:设置世界内标记可见的最大距离(方块数)。
    • global map_ping_color <hex>:设置地图标记(例如 #FF0000)的默认颜色。
    • map.player_layer_mode_mapper_y_offset:玩家图层模式会根据玩家的 Y 坐标 + y_offset,将地图映射至基岩层或虚空。
    • player_color <name> <hex>:为特定玩家的追踪器指定自定义颜色。
    • <marker_type> <component> <property> <value>:深度自定义标记(类型:map_ping、player_ping、waypoint_marker、player_marker)。

 


🚀 性能、缺陷与技术细节

高性能的实现方式:

  • 严格的内存限制:客户端使用严格的 LRU 缓存管理显存。你可以在地图界面中调整缓存上限。为防止 GPU 卡死,系统会安全地清除较旧的地图纹理。
  • 自定义二进制格式:地图数据以专用格式存储在 .rpg 文件中,与标准图像渲染相比,可大幅减少磁盘占用。
  • 限流的 I/O 线程:地图生成依赖以最低优先级运行的自定义 ThreadPoolExecutor。负载过高时,它会主动丢弃地图生成请求,而不是拖慢服务器主线程的 tick。

已知限制与注意事项:

  • 大规模回溯生成:在数万个区块上运行 /worldmap retrogen 需要时间并消耗 CPU 资源。强烈建议在运行中的服务器上将 safe 参数设为 true,以避免 TPS 下跌。性能模组会限制该模组一次处理的区块数量,因此无论如何,这个过程都可能较慢;不过这样可以让服务器保持最高 TPS,你也能在后台运行期间正常游玩。
  • 索引不同步:如果服务器突然崩溃,index.dat 文件(用于记录服务器已绘制的区域)可能会遗漏最后几秒的数据。如果玩家报告已生成的区块显示为“黑色”,请运行 /worldmap rebuild index_file 修复;回溯生成前务必先运行此操作。
  • 光影:世界内的路径点和标记显示效果很出色,但经过大量修改的光影渲染管线偶尔可能导致深度排序异常。

常见问题

AtlasSync: Server World Map 支持哪些 Minecraft 版本?

AtlasSync: Server World Map 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

AtlasSync: Server World Map 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

kozhin 的其他作品

查看全部 →