
AtlasSync: 服务器世界地图
一个高效、服务器权威的世界地图,支持实时客户端同步、互动航点、建筑追踪、洞穴测绘及通用模组兼容性。
查看大图2.0.0 版本将于明天或两天后发布,以下是变更内容:
1. 生物群系名称更加精确,生物群系和结构的命名空间现在也会显示。
2. 玩家图层现在更亮,并使用表面渲染器,基础结构屏蔽现在更加动态,可以捕捉自定义模组中的要塞等结构,修复了复制坐标时包含逗号的问题。
3. 重做了路径点屏幕,使其在用户界面和实用性上更有用,现在删除路径点也更加容易。
4. 现在你可以切换是否将地图上所有相同 ID 的已探索结构标记为已探索。
5. 新增了一个“进度”屏幕,它是路径点屏幕内新增的一个标签页,会告诉你有关结构探索进度的所有信息,包括基于维度的进度,这里会显示你的整合包包含多少种结构类型,以及你已经发现或探索了多少种。
6. 修复了在拥有大量结构的重度模组整合包中地图的性能问题,地图渲染器的性能普遍比以前更好。
7. 现在按族隐藏结构使用最后的名字标签,这对于在结构有编号或类型且有相同前缀时隐藏所有结构变体很有用。
8. 新增了一个结构编辑器屏幕,在这里你可以实际修改结构生成在世界中的方式,如果你是 OP,数据会动态发送到服务器。它的工作方式类似于 incontrol,但针对结构。你可以轻松找到嘈杂的结构并动态改变它们的生成率,屏幕提供了工具和信息,方便你进行配置。
9. 改进了世界内路径点和 Ping 渲染器的性能,它们之前有一些问题,我已经清理了,现在性能更好了。
10. 新增了一个机制,可以从服务器屏蔽结构,这样客户端无论其过滤器如何都看不到它们。
11. 重新排列了上下文菜单,使其更清晰,并增加了更多选项。
12. 添加了一些新的地图工具和功能,现在你可以锚定到你想要的任何位置,你可以通过右键编辑结构,你可以通过一些选项过滤结构在地图上的渲染方式,你可以从服务器获取关于已生成区块的信息,并且为地图中绝大多数或所有操作添加了按键绑定,现在结构可以拥有标签并且稀有度也有颜色。
13. 新增了一个地图手册屏幕,它帮助你理解地图以及如何使用工具和功能。
14. 将缓存限制更改为 4096,你可以为极端缩放设置此限制,但这会更占用内存,请小心。
15. 现在 Waystones 模组是可选的,我之前不知道它不是,所以也修复了这个问题。
以及许多其他更改和错误修复。
我会修复任何后续问题,不用担心,这是一个巨大的更新,需要测试,我会在上传前给它几天时间,但由于这更像是客户端更新,应该没有问题,除了新结构功能外,它们都是 UI 内容,那些是服务器端的。
🗺️ AtlasSync:服务器世界地图
一款专为无缝多人同步设计的高性能、服务器权威的世界地图。
🌟 概览
与传统的客户端地图模组(需要玩家自己探索世界来揭示地图)不同,AtlasSync 在服务器端生成地图并将其流式传输到客户端。这意味着玩家可以立即看到服务器所知的完整世界。
该模组采用自定义的高度优化的 .rpg 二进制区域格式和智能区块缓存系统,以最小的服务器开销运行,同时在客户端提供一个渲染精美的交互式地图。
✨ 关键特性
- 服务器地图:每个区块的表面地图都由服务器生成,这意味着你朋友探索过的区域也会同步给你。这也适用于任何区块,意味着即使它们是由 DistantHorizon 或 Chunky 生成的,地图仍然会被创建并发送给所有玩家。
- 实时同步:地图数据、玩家位置和全局路径点在服务器和所有已连接的客户端之间无缝同步。
- 多层地图:在由服务器生成的表面地图(其数据在客户端和服务器上都缓存)、仅在玩家在地图上时才由客户端生成的洞穴/深度地图(其数据保存在客户端),以及仅在玩家在地图上时才由客户端生成且数据不保存的玩家图层地图之间轻松切换,以导航复杂地形,路径点和其他数据会被共享,不用担心。
- 传送石碑集成:自动检测并与传送石碑模组同步——你激活的传送石碑会立即成为地图上的路径点!
- 实时 Ping 系统:在看向一个方块时按下 [1] 键(或点击地图),向服务器上的所有玩家发送一个视觉 Ping。
- 可切换的结构标记:结构默认会标记在地图上,我排除了诸如要塞之类的重要结构,但你可以根据需要禁用结构,这不是强制性的。
🖥️ 交互式地图屏幕(按 'M' 键)
客户端地图屏幕充满了强大且用户友好的功能,使导航变得轻而易举,以下是其中的一些功能:
- 高级路径点管理器:创建、编辑路径点并为其着色。将它们组织到自定义的路径点组中,切换组的可见性,甚至可以全局共享,将路径点发送给服务器上的所有人。
- 智能结构追踪:结构会自动映射。悬停查看详情,右键标记为已搜刮 (✓),或完全隐藏特定的结构类型(例如,“隐藏所有村庄”或“精确隐藏:沙漠神殿”)。
- 动态提示框:悬停在地图上查看精确坐标、区块/区域数据、生物群系名称、温度和湿度。
- 流畅导航:用鼠标自由平移,使用滚轮进行平滑缩放,或点击“重新居中”按钮锁定你的玩家,跟随其他玩家,或找到他们。
- 地图切换器菜单:你可以从此菜单打开其他维度的地图,或其他世界的现有地图,并且还可以编辑它们。
⚙️ 详细命令指南
该模组包含一套强大的命令,供服务器管理员管理地图数据,以及供客户端自定义用户界面。
🛡️ 服务器 / 管理员命令
需要权限级别 2 (OP)。基础命令: /worldmap
/worldmap retrogen ...(生成旧地形地图)
用于为模组安装前已存在的区块生成地图数据,或在世界生成速度非常快时为遗漏的区块生成数据。由于性能模组的影响,retrogen 可能会变慢,但可以毫无问题地完成工作。start [replace] [safe] [force_gen] [does_nothing] [minX minZ maxX maxZ]- 启动 Retro-Generator。- replace: 如果为true,则覆盖现有的地图数据。
- safe: 如果为true,运行速度较慢,但确保服务器 TPS 不会受到严重影响。
- force_gen: 如果为true,强制半生成区块完全生成以便可以映射,这不会生成新区块,这些区块已经存在但未完全生成。
does_nothing: 此标志不执行任何操作,我已移除它。- minX minZ maxX maxZ: 定义要生成的特定区块区域。
stop- 在当前区域完成后安全地取消活动的 Retro-Gen 进程。
/worldmap rebuild ...(重建特定数据)
index_file- 重建index.dat文件。如果服务器崩溃或忘记了哪些区块已被映射,请使用此命令,在运行 retrogen 之前始终运行此命令,以免遗漏任何区块。<flags> <dim> <rx1> <rz1> [rx2] [rz2]- 快速重建区域中的特定属性。标志包括-biome_tags,-structure_tags或-both, biome_tags 也包括颜色数据。
/worldmap delete region <dim> <rx1> <rz1> [rx2] [rz2]
删除指定维度和区域坐标对应的物理.rpg文件并清除缓存。
/worldmap chunkgen [with_radius chunkX chunkZ radius] | [with_region_range regionStartX regionStartZ regionEndX regionEndZ]
另一个区块生成器,它使用原版生成器来生成区块,这与 Chunky 或 DistantHorizon 预生成器功能相同,但你可以使用地图坐标并在地图屏幕上查看生成进度。
/worldmap config <key> <value>
无需重启即可实时编辑服务器属性:mapgenerator.useMutiThreadedLoading:这仅用于 retro gen,它并不真正安全,但会尝试让游戏一次加载多个区块。mapgenerator.threadpoolSize: 用于映射的线程数,地图在主线程外生成,默认为 3,但你可以设置得更高,因为它不会占用太多线程,它是多线程的,所以可以跟上世界生成速度而不会占用区块数据,并占用服务器 RAM,这受以下命令限制。- mapgenerator.chunkQueueSize: 一次可以容纳多少个区块,默认为 128,此设置仅影响 RAM 而非性能,128 个区块大约 75MB,如果世界生成太快并且你将
threadpoolSize和 chunkQueueSize 设置得很低,你会看到很多缺失的区块地图,我个人使用默认设置,因为我的服务器性能很差,但我很少看到缺失的区块(也可能是因为服务器 TPS 低,而不是我的模组的问题),当出现这种情况时,我只需运行 /worldmap retrogen start 来检查并完成所有缺失的地图,并且我还使用了 Distant Horizon,它生成区块非常快,这只在你给模组分配 75MB 和 1% 的三个其他线程时才会发生。 mapgenerator.biomeGridSize: 生物群系混合的细节级别(4、8 或 16),推荐 16,但如果你优先考虑磁盘使用率和性能,可以测试使用其他值。server.playerSyncFps: 每秒将玩家位置同步到客户端的频率,玩家指示器的帧率。
💻 客户端命令
基础命令: /worldmap_client
/worldmap_client config ...(视觉自定义)
自定义世界中标记和 Ping 在屏幕上的渲染方式。global render_distance <value>: 设置世界中标记可见的最大距离(以方块为单位)。global map_ping_color <hex>: 设置地图 Ping 的默认颜色(例如#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 缓存。你可以在地图 UI 中调整缓存限制。它会安全地丢弃旧的地图纹理,以防止 GPU 锁定。
- 自定义二进制格式:地图数据存储在专门的
.rpg文件中,与标准图像渲染相比,极大地减少了磁盘占用。 - 限速 I/O 线程:地图生成依赖于一个以最低优先级运行的自定义 ThreadPoolExecutor。如果负载过高,它将有意丢弃映射请求,而不是拖慢服务器的主 tick 线程。
已知限制和注意事项:
- 大量 Retro-Gen:在成千上万个区块上运行
/worldmap retrogen将花费时间和 CPU 资源。强烈建议在运行的服务器上使用safe参数(设置为 true)以避免 TPS 下降,同时性能模组不会让该模组获取它想要的所有区块,所以无论哪种方式,这个过程都可能很慢,但可以保持最高的服务器 TPS,这意味着可以在后台运行时自由游玩。 - 索引不同步:如果服务器突然崩溃,
index.dat文件(告诉服务器它映射了哪些内容)可能会丢失最后几秒的数据。如果玩家报告他们知道已生成的“黑色区块”,请运行/worldmap rebuild index_file来修复,在运行 retrogen 之前始终运行此命令。 - 光影:世界中的路径点和 Ping 渲染得很好,但重度修改的光影管线偶尔可能会导致深度排序问题。
正在加载版本记录…















正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。