Skip to content

地图池机制

DungeonMaster 这样设计,就是为了让开本更快、更稳。

这个设计到底解决什么问题

副本服最容易出问题的地方,通常都在这些地方:

  • 玩家一进本就要等很久
  • 高峰期开多个本时,地图复制拖慢开本速度
  • 上一局打坏的地图残留到下一局
  • 实例世界越积越多,最后开始乱

地图池就是专门解决这些事的。

它负责:

  • 提前准备空闲副本地图
  • 玩家进本时快速拿图
  • 旧实例打完后安全销毁
  • 再补回干净的新实例

对服主最直接的好处

开本更快

因为地图会提前准备一部分空闲实例,所以玩家进本时不一定每次都要现场现复制。

最直接的感受就是:

  • 热门本进入更快
  • 连续开本更顺
  • 玩家不容易在入口处卡很久

高峰期更稳

如果所有地图都临时复制,高峰期一旦多人同时开本,磁盘和主线程加载压力就会集中爆发。

地图池把这件事提前摊掉了一部分,所以它对高峰期特别有价值:

  • 突发开本时更容易顶住
  • 不容易因为一波开本把整台副本服打抖
  • 热门地图可以重点照顾

更不容易出现脏图

当前版本走的是这套思路:

  • 旧实例销毁
  • 池子再补新图

这对服主来说非常重要,因为它更稳。

好处就是:

  • 上一局的破坏不容易带到下一局
  • 地形残留、机关状态残留、奇怪方块状态残留会全部清理
  • 地图问题更容易控制

世界管理更可控

地图池会受总槽位和空闲池上限控制,不会无限开图。

这意味着你不会很容易遇到这种情况:

  • 热门图一直补
  • 冷门图也一直占资源
  • 最后世界实例堆了一大堆

性能表现

地图池带来的收益,主要体现在“稳定”和“峰值处理能力”上。

你通常会看到这些变化:

  • 平时开本更快
  • 多人同时进本时更稳
  • 热门图不会每次都从零开始准备
  • 世界残留和异常实例更少

它本身也有成本。

你要知道这几个 trade-off:

  • 预生成数量 越高,进本越快,但启动和补池成本越高
  • 复制并发数 越高,爆发开本越快,但磁盘和 CPU 压力越大
  • 最大实例总数 越高,承载能力越大,但资源上限也会被拉高

对 DM 的价值

DungeonMaster 本身是实例型副本框架。

只要你开始做这些内容,地图池就会变得很重要:

  • 热门日常本
  • 高频扫荡本
  • 多队伍并发本
  • 活动本
  • BC 群组里的副本节点

原因很简单:

副本会反复开、反复进、反复销毁和回收。
地图池就是拿来把这条链路做稳的。

服主最该关心的几个配置

位置在:

yaml
世界管理:
  预生成数量: 1
  前缀: dm_inst_
  复制并发数: 2
  最大实例总数: 20
  空闲池上限: 5
  孤立世界清理间隔: 300

预生成数量

决定“提前备多少张空闲地图”。

服主视角下可以这样理解:

  • 太低:省资源,但首次进本和高峰期开本会慢
  • 太高:进本更快,但会多占资源

大多数服从 1 开始最稳。

最大实例总数

决定整台服最多允许同时存在多少实例世界。

这是保护服性能的总闸门。

它的价值在于:

  • 防止实例越开越多
  • 防止副本服被世界数量拖爆
  • 让你能明确给服务器设上限

空闲池上限

决定单张地图最多留多少张备用图。

这个字段很实用,因为它能避免:

  • 冷门图也长期占着资源
  • 热门图无限补池
  • 地图池膨胀得太夸张

复制并发数

决定同时复制几张地图。

服主不用把它想复杂,直接记住:

  • 太低:高峰期开本跟不上
  • 太高:磁盘会更忙,机器差时反而更抖

一般不用一开始就拉很高。

孤立世界清理间隔

负责定时扫掉那些已经没人管、但还残留在服务器里的实例世界。

这个设计的好处很直接:

  • 减少垃圾实例堆积
  • 降低长期运行后的脏环境风险
  • 让副本服更适合长时间稳定运行

TQ Minecraft Server Plugin Docs