Dynmap:Minecraft 3D在线地图插件评测
Minecraft服务器Dynmap插件详细评测。等距3D地图渲染,内置Web服务器配置,兼容性及与Nginx的集成。
Minecraft服务器Dynmap插件详细评测。等距3D地图渲染,内置Web服务器配置,兼容性及与Nginx的集成。
依赖项:
加载器:Paper / Spigot / Fabric / Forge
Minecraft版本:1.20.x – 1.21.x
在Minecraft多人游戏中,玩家之间的协调、寻找空地建筑以及追踪广阔区域内的活动往往非常困难。基础工具只提供局部的纸质地图,它们不能覆盖整个世界并且不会实时更新。Dynmap工具通过创建一个可通过普通网页浏览器访问的交互式游戏世界地图来解决这个问题。它的工作原理与Google地图等地理信息服务相同,显示详细的地形、玩家位置、私有区域的边界以及游戏聊天信息。
渲染引擎的工作原理与切片保存
Dynmap功能的核心是其自带的渲染管线,该管线将Minecraft的3D区块数据转换为一组2D图形文件(切片或tiles)。
渲染与投影类型
该插件支持三种主要的世界显示选项:
平面视图(Flat):经典的2D地图,从上向下的视角。在生成过程中消耗的磁盘空间和CPU资源最少。
等距3D视图(Surface):带有角度的体积3D投影,使您能够评估地形的高度差异、建筑物的建筑风格和水体的深度。
洞穴视图(Cave):渲染地下空洞和矿井,显示地表下的洞穴结构。
文件保存与磁盘负载
所有生成的地图切片都作为标准的PNG或JPG图像保存在plugins/dynmap/web/tiles/文件夹中。每次玩家更改方块(建筑、破坏、爆炸)时,Dynmap都会启动增量更新过程——只有直接落入更新区块区域的切片才会被重绘。
在世界的初始渲染期间,服务器的磁盘子系统会承受巨大的负载(I/O操作)。在高分辨率下,大型地图的切片文件夹可以达到几十甚至几百吉字节,这就需要使用快速的SSD驱动器并限制世界边界(WorldBorder)。
alt: [浏览器中显示出生点等距3D视图的Dynmap Web地图界面]
Web服务器基础设施:Jetty与Nginx
Dynmap提供两种Web界面的部署方案,具体取决于服务器的规模和预期负载。
内置Web服务器Jetty
默认情况下,安装后插件会自动在端口8123上启动集成的Jetty Web服务器。此选项不需要任何额外配置:管理员只需在主机上打开端口8123,之后即可通过http://服务器IP:8123/访问地图。

与外部服务器(Nginx或Apache)集成
对于在线人数众多的公共服务器,由于每个Web用户都直接通过游戏服务器消耗流量,内置的Jetty会给Java游戏进程带来额外的负载。为了优化,建议配置通过独立的Nginx或Apache Web服务器来提供切片。
在此设置中,Nginx被配置为直接处理web/tiles/文件夹,从而绕过Minecraft游戏进程的核心。这有几个重要的优势:
保护游戏线程:浏览器请求由单独的Web服务器处理,消除了游戏内的微小卡顿(TPS下降)。
HTTPS加密:能够轻松配置免费的Let's Encrypt SSL证书,以实现安全连接。
离线可用性:即使在Minecraft游戏服务器重启或关闭期间,地形的Web地图仍然可以浏览。
配置设置与渲染管理
插件的主要参数在plugins/dynmap/configuration.txt文件中进行编辑。

常规渲染与保存设置
参数 | 默认值 | 描述 |
|---|---|---|
|
| 默认定义渲染模板的质量( |
|
| 选择地图切片的存储方式。可用选项: |
|
| 检查并渲染更新队列中切片的时间间隔(秒)。 |
|
| 更新队列中的切片数量,超过此数量将加速渲染间隔。 |
|
| 当队列超过阈值时的加速渲染间隔(秒)。 |
|
| 同时渲染的切片数量(建议设置为处理器核心数的一半)。 |
|
| 渲染线程的优先级。如果为 |
|
| 在服务器关闭或重启时保存未完成的渲染任务队列。 |
|
| 在开始渲染更改的方块之前的延迟时间(秒)。防止由于自动化(红石、活塞等)而不断重绘切片。 |
|
| 启用切片哈希。如果渲染后切片图像没有改变,则不会覆盖磁盘上的文件,从而节省磁盘资源。 |
|
| 在生成地图时计算平滑光照(与游戏中一样)。 |
|
| 切片图像的格式和质量(默认为90%质量的JPG)。可以更改为 |
|
| 使用游戏生成的纹理(与客户端的资源包匹配)而不是静态纹理。 |
|
| 支持资源包中的连接纹理模块(Connected Texture Mod)。 |
|
| 支持资源包中自定义的生物群系和树叶颜色。 |
|
| 启动切片渲染队列的游戏事件列表(放置/破坏方块、树木生长、爆炸)。 |
Web基础设施与文件路径
参数 | 默认值 | 描述 |
|---|---|---|
|
| 插件目录中的路径,图形地图文件(切片)将保存在此处。 |
|
| 指向静态地图Web文件(HTML、JS、CSS)的路径。 |
|
| 插件启动时自动更新静态文件(如果使用自定义Web界面,则设置为 |
|
| 内置Jetty Web服务器将运行的TCP端口。 |
|
| 禁用内置的Web服务器(在通过外部Nginx或Apache Web服务器设置提供切片时非常有用)。 |
|
| 内置Web服务器上的最大并发会话数,以节省资源。 |
|
| 允许Web服务器遵循符号链接(symlinks)。 |
|
| 启用用户授权系统以查看地图或聊天。 |
|
| 要求登录帐户才能查看Web地图。 |
|
| 受信任代理服务器的列表,用于通过 |
Web界面组件设置(Web聊天,标记,玩家)
参数 / 类 | 默认值 | 描述 |
|---|---|---|
| 组件类 | 负责传输有关玩家状态、聊天和地图更新的数据。注意:如果使用外部Web服务器(Nginx),则必须将此类更改为 |
|
| 在地图上显示玩家的健康指示器。 |
|
| 在地图上显示玩家的确切位置。 |
|
| 允许从Web界面向Minecraft游戏聊天发送消息。 |
|
| Web聊天中消息之间的延迟时间(秒)(防止垃圾邮件)。 |
|
| 如果玩家潜行(sneaking),则在地图上隐藏玩家。 |
|
| 如果玩家处于旁观者模式(spectator mode),则在地图上隐藏玩家。 |
|
| 如果玩家受到隐身药水的影响,则在地图上隐藏玩家。 |
| 组件类 | 管理地图上的标记图层。允许显示出生点( |
|
| 在地图标记上显示玩家的脸部(皮肤)。 |
|
| 直接在地图上玩家图标上方显示生命条。 |
优化与CPU性能限制(TPS/MSPT)
参数 | 默认值 | 描述 |
|---|---|---|
|
| 执行完整渲染( |
|
| Dynmap在游戏的一个刻(1/20秒)内可以加载到内存中的最大区块数。降低此参数可以减少服务器上的延迟。 |
|
| 渲染线程每刻的目标时间限制(以毫秒为单位)。 |
|
| 如果服务器的TPS低于此值,Dynmap将自动暂停切片更新的渲染。 |
|
| 如果服务器的TPS低于此值,Dynmap会停止执行世界的完整渲染( |
|
| 允许执行缩小(zoom-out)地图级别的计算的最小TPS。 |
|
| 地形快照缓存中的区块数。 |
|
| 为区块缓存使用软引用(Soft References)。如果存在OutOfMemory错误的风险,允许JVM清除地图缓存。 |
configuration.txt中的优化参数
为了保持服务器性能,值得关注以下配置文件变量:
deftemplatesuffix— 渲染质量后缀。值vlowres(非常低的质量)或lowres(低)可以显着加快地图生成,并且与标准hires相比,文件大小减小4-8倍。tilespath— 允许您将地图的保存重定向到服务器的另一个硬盘驱动器,以保护主驱动器免于溢出。webserver-port— 连接到地图的端口(而不是默认的8123)。
渲染管理命令
地图的生成由等级为4的操作员通过服务器控制台控制:
/dynmap fullrender <世界>— 启动指定世界的完整渲染。建议仅在完全预生成区块(chunk pre-generation)之后以及在线玩家较少的期间执行。/dynmap radiusrender <半径>— 仅更新玩家周围特定半径内的地图,这在建设大型城市后很方便。/dynmap cancelrender— 在CPU过载的情况下停止当前正在进行的渲染过程。/dynmap pause all— 暂时暂停所有地图计算,释放资源以稳定TPS。
结论
Dynmap插件是一个强大的工具,用于可视化世界并增强大型Minecraft服务器上的玩家互动。凭借其等距3D渲染和Web界面的集成,它将地图变成了该项目的一个完整的综合信息门户。
与替代方案(如使用繁重的WebGL进行全3D查看的BlueMap,或专门提供没有3D模型的快速2D地图的Squaremap)相比,Dynmap提供了最佳的功能平衡。然而,高磁盘空间要求和对I/O系统的持续负载要求管理员密切关注世界边界和正确分辨率的选择。该插件是大型生存、无政府状态或RP世界服务器的绝佳选择。
安装
一次典型安装大约 5 分钟。流程相同,只是 Loader 和对应构建不同。
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











