← Back to Home

每张地图的生成步骤

  1. 定尺度。在 40 到 400 之间抽一个数 $S$,抽法是对数均匀:40 到 80、80 到 160、160 到 320 这几段机会一样多。所以有的地图产出普遍几十,有的普遍几百。
  2. 挑分布家族。从下面六种里等概率挑一种,再在各自的范围里抽形状参数。
  3. 生成 300 个块。每个块的产出 = $S$ × 从这个分布里抽一个数。
  4. 定换块费用。费用 = 本图产出中位数 × 一个比例,比例在 5% 到 60% 之间对数均匀抽。所以从费用推不出中位数。
  5. 加强版再加两样。每张图抽一个波动幅度 σ(0.2 到 0.6),每个块抽一个挖空概率(平均 8%,最高 35%)。每次挖到的量 = 真实水平 × 一个均值为 1 的随机倍数,挖空那轮得 0。

基础版每局开始时公布本图属于哪一种家族(面板上有一行"本图的产出分布",代码里读 state.dist),尺度、形状参数、换块费比例都不公布。 加强版什么都不公布。

下面六种家族按尾巴从轻到重排。每种先用人话说它怎么生成、地图长什么样、对玩家意味着什么, 再画一张真实生成的地图:左图是 300 个块产出的直方图,右图是把 300 个块从低到高排一排。点"换一张图"重新生成。 所有家族里的 S 都是那张图的尺度,40 到 400 之间随机,不公布。

六种家族的尾巴有多重

"最好的块比排在前 5% 的块高多少倍"是衡量尾巴轻重的一个直观指标。下面是每种家族 100 张地图的平均值,来自 data/node-farm-tail.js

家族均匀正态尾巴轻 Beta尾巴重 对数正态两堆尾巴极重 幂律
最好块 / 前 5% 块1.1 倍1.2 倍1.5 倍3.9 倍3.2 倍6.7 倍
最好块 / 中位数2.0 倍1.8 倍3.6 倍22 倍8.5 倍22 倍

尾巴越重,多探几块的价值越大,因为"更好的块"和"挺好的块"差得越远。均匀分布上探 20 块就够,幂律上探 60 块还在涨。

加强版:同一个块每次挖到的量

一个真实水平 100 的块,连续挖 40 次,挖空概率取 10%。上面一条是波动 σ = 0.2 的地图,下面一条是 σ = 0.6 的地图。空心点是挖空。

σ = 0.2(上下两成)
σ = 0.6(上下一倍)

σ = 0.6 时挖一次看到 200 或 50 都不奇怪。多挖几次的平均才靠近 100,但每多挖一次都花一轮。