Sortis: 一款使用计算可约性的纸笔帝国游戏
Sortis 是一款纸笔帝国游戏,旨在提供类似 Minecraft 或 OGame 的程序化、自动化资源开发游戏的体验,而无需使用计算机。该游戏的核心设计理念围绕着“计算可约性”,允许玩家在无需模拟每一回合的情况下计算其帝国的未来状态。
通过 LFSR 进行程序化地图生成
Sortis 使用在单个字节上运行的线性反馈移位寄存器 (LFSR) 来生成 256x256 的网格世界。这种方法允许玩家仅使用纸和笔来创建程序化生成的地图,从而避免了使用骰子或计算器的需求。
生成算法
为了生成地图,玩家需要选择两个种子 ($s_x$ 和 $s_y$),范围在 0 到 255 (0x0–0xFF) 之间。每个轴的序列使用以下公式生成:
$$\text{step}(s) = ((s \ll 1) & \text{0xFF}) \mid (b_8 \oplus b_7 \oplus b_2 \oplus b_1)$$
对于任何给定的方格 $(x, y)$,地形值 $v$ 是 X 序列中第 $x$ 个数与 Y 序列中第 $y$ 个数的异或结果:
$$v(x, y) = \text{LFSR}^x(s_x) \oplus \text{LFSR}^y(s_y)$$
地形与矿石等级
地形由 $v$ 的值决定:
| Value | Terrain |
|---|---|
| $v < \text{0x75}$ | Water |
| $\text{0x75} \leq v < \text{0xE0}$ | Forest |
| $v \geq \text{0xE0}$ | Mountain |
对于山脉方格,矿石等级由该值二进制表示中的末尾零的数量决定。例如,值 0xE0 (二进制 11100000) 有五个末尾零,因此它是 ore(5)。这创造了一种分布,使得 ore(n+1) 的平均稀有度是 ore(n) 的两倍。
游戏机制与资源进度
玩家需要协调代理人 (agents) 来进行探索、清理土地并建造结构,以提高工作坊 (workshop) 的等级,这是游戏的主要目标。
建筑类型与成本
建筑成本遵循指数曲线 ($2^n$),其中 $n$ 是建筑的等级。
- House: 成本为 $2^n$ wood。每个等级增加一个代理人容量。
- Workshop: 成本为 $2^n$ ore(n)。需要用于建造或升级其他建筑至等级 $n$。
- Extractor (Sawmill/Mine): 成本为 $2^n$ wood (sawmill) 或 $2^n$ ore(0) (mine)。每回合产生 $n+1$ 个单位。
- Smelter: 成本为 $2^n$ ore(n)。将 $2^n$ ore(n) 和 $2^{n+1}$ wood 转换为 1 ore(n+1)。
- Road Segment: 成本为 ore(d)。在陆地上,$d=0$。对于桥梁, $d = \text{distance from shore} + 5$。
代理人规则与物流
代理人是游戏中的主要参与者。他们必须物理上位于某个方格上才能执行动作。
Locality: 资源必须位于目标方格上才能进行建造。
Action Economy: 代理人每回合执行一个动作 (move, clear, build, or operate)。
Authorization: 代理人必须访问等级 $\geq n$ 的 workshop 以获得在等级 $n$ 建造的授权。
Movement: 移动成本因地形而异:清理过的土地/道路为 1 回合,森林为 2 回合,山脉为 3 回合。水域是无法通过的。
回合管理与计算可约性
Sortis 不鼓励玩家模拟每一回合,而是鼓励玩家使用闭式公式来预测资源积累和代理人移动。
回合日志
玩家维护一个一个回合日志,仅记录重大事件 (例如,建筑升级或代理人行为的变化)。由于生产是恒定的,玩家可以跳过数百个回合,直接跳转到满足特定资源目标的时间点。
代理人预测
对于循环移动的代理人 (例如,在两点之间运输资源),玩家可以使用模运算来确定代理人 $t$ 回合后的位置, closed-form formulas 能够实现这一点。
社区讨论与澄清
早期采用者的讨论突出了原规则中的几处模糊之处:
"The rules say mountains have 'an ore level equal to the number of trailing zeros in their hex value.' But the worked example shows E0 as ore(5), which only works if you count trailing zeros in binary."
此外,用户还提出了关于初始 ore(0) 获取、载具容量的准确公式 (列为 $2N$),以及捡起或放下资源是否计入消耗回合的动作。