规则页面现在描述的是我们真正上线的游戏
规则书、指南和「怎么玩」页面早已与游戏脱节。三者全部重写,指南新增六张图片,另有五个全新的参考页面加入。

通俗版
解释 opolyx 的四个页面,悄悄落后于它们所解释的游戏。团队模式在规则书和指南里一次都没出现过,尽管你在大厅里就能选到它。第 20 格被叫作「免费停车」,可它几个月来一直是「大奖」——而规则书里根本没提过大奖。监狱那节说三次尝试失败后就会被释放,实际上是被收取保释金。租金规则漏掉了收藏卡带来的加成。「怎么玩」页面还给出了一张游戏里根本不存在的出狱卡。
最糟的一句在指南里:「在第 20 回合之后赢下一局真实对局,你会获得一张地产卡外加 200 经验」。门槛是五个回合而不是二十,而且自进度更新以来每个座位都能获得经验——那句话同时在十种语言里都是错的。四个页面全部对照代码重写:规则书从 13 节增加到 17 节并覆盖所有模式,指南从 22 节增加到 26 节。

指南也终于有了图片:十张配图而不是四张,全部取自真实对局。购买、拍卖、建造、还债、极速骰和大奖现在各有一张截图,另有三张旧图重拍,因为它们呈现的是我们已经不再上线的棋盘。
此外还有五个新的参考页面,给喜欢细节的人:来自约四千局模拟对局的统计、逐格的棋盘参考、建议来自那些统计而非个人观点的策略指南、十八个术语的词汇表,以及与 Monopoly One 的一份诚实对比——opolyx 正是以它为蓝本。
技术细节
文档之所以会漂移,是因为它是一份副本。可行之处的解法就是不再抄写:指南里的模式对比表原本是把各模式设置手工誊抄一遍,现在直接由那些设置生成。
// components/GuideDoc.tsx — the comparison table reads the real configuration
const columns = MODE_COLUMNS.map((mode) => ({ mode, cfg: modeConfig(mode) }));
return [
row('cash', (c) => c.startingCash.toLocaleString('en-US')),
row('turn', (c) => `~${c.turnSeconds}s`),
row('cap', (c) => String(c.roundCap)),
row('die', (c) => (c.speedDie ? `✓ (${c.speedDieFromRound}+)` : '—')),
];
// modeConfig() is what the game server reads when a game starts, so the table
// cannot drift from the rules actually being applied.缺图这件事有一个值得记住的机械原因。只有当某一节映射了截图时,指南才会渲染它的图注——于是五条已经写好、审校并译成十种语言的图注,从来没有被任何人看到过。把截图补上,让五十条译文重新开始工作。
统计页面是全站唯一无法从别处照搬的东西:它由真实引擎——运行你对局的同一份代码——在所有模式、所有人数下运行数千次生成。它同时也在检验自己:实测的双骰率为 16.68%,理论值为 16.67%,并有一个测试断言二者吻合,因为这是证明模拟没有被悄悄弄坏的最便宜方式。
