地图池机制
DungeonMaster 这样设计,就是为了让开本更快、更稳。
这个设计到底解决什么问题
副本服最容易出问题的地方,通常都在这些地方:
- 玩家一进本就要等很久
- 高峰期开多个本时,地图复制拖慢开本速度
- 上一局打坏的地图残留到下一局
- 实例世界越积越多,最后开始乱
地图池就是专门解决这些事的。
它负责:
- 提前准备空闲副本地图
- 玩家进本时快速拿图
- 旧实例打完后安全销毁
- 再补回干净的新实例
对服主最直接的好处
开本更快
因为地图会提前准备一部分空闲实例,所以玩家进本时不一定每次都要现场现复制。
最直接的感受就是:
- 热门本进入更快
- 连续开本更顺
- 玩家不容易在入口处卡很久
高峰期更稳
如果所有地图都临时复制,高峰期一旦多人同时开本,磁盘和主线程加载压力就会集中爆发。
地图池把这件事提前摊掉了一部分,所以它对高峰期特别有价值:
- 突发开本时更容易顶住
- 不容易因为一波开本把整台副本服打抖
- 热门地图可以重点照顾
更不容易出现脏图
当前版本走的是这套思路:
- 旧实例销毁
- 池子再补新图
这对服主来说非常重要,因为它更稳。
好处就是:
- 上一局的破坏不容易带到下一局
- 地形残留、机关状态残留、奇怪方块状态残留会全部清理
- 地图问题更容易控制
世界管理更可控
地图池会受总槽位和空闲池上限控制,不会无限开图。
这意味着你不会很容易遇到这种情况:
- 热门图一直补
- 冷门图也一直占资源
- 最后世界实例堆了一大堆
性能表现
地图池带来的收益,主要体现在“稳定”和“峰值处理能力”上。
你通常会看到这些变化:
- 平时开本更快
- 多人同时进本时更稳
- 热门图不会每次都从零开始准备
- 世界残留和异常实例更少
它本身也有成本。
你要知道这几个 trade-off:
预生成数量越高,进本越快,但启动和补池成本越高复制并发数越高,爆发开本越快,但磁盘和 CPU 压力越大最大实例总数越高,承载能力越大,但资源上限也会被拉高
对 DM 的价值
DungeonMaster 本身是实例型副本框架。
只要你开始做这些内容,地图池就会变得很重要:
- 热门日常本
- 高频扫荡本
- 多队伍并发本
- 活动本
- BC 群组里的副本节点
原因很简单:
副本会反复开、反复进、反复销毁和回收。
地图池就是拿来把这条链路做稳的。
服主最该关心的几个配置
位置在:
yaml
世界管理:
预生成数量: 1
前缀: dm_inst_
复制并发数: 2
最大实例总数: 20
空闲池上限: 5
孤立世界清理间隔: 300预生成数量
决定“提前备多少张空闲地图”。
服主视角下可以这样理解:
- 太低:省资源,但首次进本和高峰期开本会慢
- 太高:进本更快,但会多占资源
大多数服从 1 开始最稳。
最大实例总数
决定整台服最多允许同时存在多少实例世界。
这是保护服性能的总闸门。
它的价值在于:
- 防止实例越开越多
- 防止副本服被世界数量拖爆
- 让你能明确给服务器设上限
空闲池上限
决定单张地图最多留多少张备用图。
这个字段很实用,因为它能避免:
- 冷门图也长期占着资源
- 热门图无限补池
- 地图池膨胀得太夸张
复制并发数
决定同时复制几张地图。
服主不用把它想复杂,直接记住:
- 太低:高峰期开本跟不上
- 太高:磁盘会更忙,机器差时反而更抖
一般不用一开始就拉很高。
孤立世界清理间隔
负责定时扫掉那些已经没人管、但还残留在服务器里的实例世界。
这个设计的好处很直接:
- 减少垃圾实例堆积
- 降低长期运行后的脏环境风险
- 让副本服更适合长时间稳定运行