我早期在设计文档中写了一句话,今天它几乎可以作为每个涉及机会的系统决策的测试:“秩序会的科学解释可能是错误的,但服务器算术不会。”我开始把它写成一个漂亮的传说短语。直到后来我才明白,这也是一种工程约束——而工程约束会耗费实际工作,而不仅仅是文本。
承诺本身造成的问题
如果我保证赔率是公开的——基础外观、修饰效果、保底、克制选择、有效率,所有可见——这意味着,无一例外,任何专注的玩家都可以通过将确认除以观察结果来计算实际赔率。这里没有中间立场:要么我发布足够的数据供社区审核数学,要么我不发布,承诺就变成了空洞的口号。我选择发布,因为我知道这意味着系统的秘密永远不能存在于数字中——它只能存在于种子和随机生成器的实现中,无论如何,这才是它应该存在的地方。
为什么有两层注册,而不是一层?
秩序会登记簿是全球性、永久性的:首次确认每个物种的首次确认者、署名、全球观测数量、科学状态、赔率,为每个人一次发布。野外手册记录了:每个玩家从待考到已编目的个人轨迹,他们自己的目击事件,他们自己的收容措施,他们自己的历史。
之所以有两个,而不仅仅是一个,是我后来才发现的一个问题:如果只有一个全球注册表,那么最专注的玩家会在第一周内对测试版的一百二十个物种进行编目,而后来加入的每个新玩家都会发现一个百分百编目的世界——整个发现弧线,这是玩游戏的原因之一,对于任何迟到一个月的人来说都会在发布时死亡。分离这两层可以解决这个问题,而无需发明新机制:这两个术语已经存在于游戏词汇中,只是直到我为后来加入的玩家设计了入门流程后,我才意识到需要将它们分开。
我必须学会正确使用的统计标准
在没有上下文的情况下发布罕见事件的原始计数会产生误导——如果一个物种在一百次观察中得到三个确认,那么这与在三个观察中得到三个确认不是一回事,即使数字“三”在两个屏幕上看起来相同。这就是为什么注册机构的扩展审计使用 95% 的 Jeffreys 区间(技术公式为贝塔分布(k+0,5, n−k+0,5),恰好适用于罕见事件,在这些事件中,更简单的统计方法表现不佳)。而一个物种只有在积累了至少五十个自然确认后才会离开“未校准”状态,且相对余量足够窄且样本比当前版本的规则更旧——如果基础概率发生变化,旧样本将不再用于校准。
这意味着,在一段时间内,游戏本身将公开承认“我还没有足够的数据来确认这个比率”——而且我认为这比假装自己对该比率胸有成竹更好。
日常生活中哪些事情是故意不出现在屏幕上的
并非我发布的所有内容都会出现在野外手册的主屏幕上 - 有些内容位于扩展的审核层中,对于那些寻找它的人来说是可见的,但不会推送给那些只想玩的人:VIP 与非 VIP 玩家的聚合参与数据,完整的统计范围始终可用,即使对于已经编目的物种,当样本仍然太薄时,“未校准”状态也会被标记。我写了一行话,作为对自己(而不仅仅是玩家)的明确警告:任何将外观与收容混合在一起的推论都是误导性的,因为当保底、VIP、修饰效果和规则版本变更都同时运行且重叠时,提交除以观察的简单比率并不代表真正的基础。看到最终的数字,很容易认为计算很简单。事实并非如此,假装它是真实数据的另一种撒谎方式。
我选择接受、而不是强行消除的张力
发布累计计数有一个不可避免的后果:社区将能够以越来越高的精度,通过交叉我已经发布的数字来推断出真实的基数。没有办法同时发布准确的计数并保守基本秘密——这两件事在数学上是互斥的。我认为这是系统工作方式的一部分,而不是需要修复的缺陷。秘密从来不需要存在于概率数值里。它需要详细讨论随机生成器是如何实现和播种的,这是秘密真正保护任何东西的唯一地方。
我还没完成的事
当机会基础或怜悯上限有一天重新校准时的公共计数器转换——这需要在不消除任何人积累的进度的情况下发生——已经有一个封闭和发布的公式,但它从未在实际生产中运行,混合了来自真实玩家的真实计数器。这种事情只有在我需要真正使用它的那一天才能被证明是正确的,我宁愿你知道这个公式存在并且尚未经过实际生产检验,而不是让你认为它已经存在了。