这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
15.2 六分之六通过闸门
正式判定六个品类变体 6/6 通过闸门,并给出 6 变体 × 5 判据 = 30 格的通过矩阵。权威输入是 13.3 的 out/gd_proto_13_gate.json,但本节不照抄——重跑六个内核重新判五条,再断言与权威输入逐格一致;另加一层扰动幅度稳健性扫描,报告通过状态保持的幅度区间,只软告警不硬失败。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
正式判定六个品类变体 6/6 通过闸门,并给出 6 变体 × 5 判据 = 30 格的通过矩阵。权威输入是 13.3 的 out/gd_proto_13_gate.json,但本节不照抄——重跑六个内核重新判五条,再断言与权威输入逐格一致;另加一层扰动幅度稳健性扫描,报告通过状态保持的幅度区间,只软告警不硬失败。
把 13.3 的闸门报告当基线、把 14 章的距离口径并进来,合成一套回归套件,对六个品类变体重跑一遍并断言结果不变——回归 = 稳定性,不是正确性。三层:结构回归(六变体规格骨架同构)、数值回归(六条 digest 逐字相同)、判据回归(五条闸门判据的通过状态不变),并附一个负例证明回归不是恒真。
把 6×6 距离矩阵读出来,并老实交代三条边界:距离依赖维度选择(留一维度敏感性实测 Δ 在 33~63‰,最近一对在 4/10 次留一下改判)、整数地板除的量化误差上界(归一化传播到 L1 每对 ≤20、千分比每格 <1),以及「距离只是代理指标、只做相对比较、禁绝对化」,并给出与风格距离矩阵的分工。
先逐维 min-max 归一化到 0..1000,再用整数 L1 定义距离、用 floor(1000×d/maxd) 归一化成千分比,落成 6×6 对称矩阵,并验证对称性、三角不等式与「最小非零距离 > 0」的可区分性。实测塔防↔自走棋最近(268‰)、自走棋↔放置最远(1000‰),全部整数、无浮点。
给六个品类各造一个十维整数特征向量:机制计数、状态字段数、策略空间对数与熵、非支配率、状态空间对数、决策深度、随机结构计数、相变宽度、平均步数。说明每维的选择理由与「机制无关 vs 品类特有」的边界,从规格文本数出六维、从内核真跑出四维,落成可复现的 6×10 矩阵。
给六个品类变体定一套统一的五条判据——确定性、不变量、终态可达、契约同构、扰动非退化——逐个判通过或不通过,落成机器可读的 out/gd_proto_13_gate.json 并在正文逐字贴出。平台跳跃的种子轴惰性(16 个种子只出 1 个结果桶)如实记录、不掩盖;胜率与主桶占比都显式声明为代理指标。
把六份规格各自真跑一遍——卡牌构筑(本体)/ 塔防 / 三消 / 平台跳跃 / 自走棋 / 放置——并列成一张表:规格 id、规则段条目数、状态段字段数、参数字段数、不变量条数、确定性 digest。表同时证明结构同构(快照都投影进同一套 12 个契约槽位)与内容不同(四组计数与 digest 两两不同)。
把六份品类规格投影到同一份六段 schema(id / naming / state / rules / params / invariant):本体要一层 view 投影,五个品类变体本来就在这六段上。划出「不变量」——骨架一致、naming 的 8 个槽位、无浮点、invariant 非空——与「自由度」——规则条目 11~52、参数字段 2~8、内容指纹两两不同。
把「手感」操作化为三条可断言的帧级不变量——反馈延迟上界、缓冲窗口内输入不丢失、土狼窗口单调——再用真断言跑一遍。另给一个代理指标 responsePermille(响应率千分比),并显式声明它只是 proxy:只做相对比较、禁绝对化,粒度粗到 baseline 与 noCoyote 同为 1000,必须靠帧级不变量才分得开。
把手感参数可计算化:八个参数全是整数,帧数类与单位类都能断言逐位相等;只有帧到毫秒的感知派生量要按声明容差(60 fps 下一帧约 17 ms)断言。给出土狼时间与输入缓冲的整数边界、击退衰减的精确整数递推,并用一张敏感度表划清改时序与只改表现的参数。
把手感从渲染层剥出来,写成整数帧的确定性状态机:输入采样 → 缓冲 → 状态推进 → 反馈触发。同一段输入脚本、同一段美术表现,只改土狼时间与输入缓冲两组窗口参数,就得到四条互不相同的帧序列——手感差异全部落在可断言的整数帧上,并由 7 条 P 层断言固定住。
把 enemyAttack 从 8 扫到 48,序参量取「slot1 严格支配 slot4 的种子比例」(千分比):参数小时为 1000‰,调大后一路下滑。粗扫步长 4 框住跨越 500‰ 的区间,二分两轮到临界 enemyAttack=30,步长 1 全网格复验一致,相变带宽 13,全程 41 格 656 次 run。
用固定下标族 slot0…slot4 在 16 个种子上跑出得分矩阵,算严格/弱支配对、支配策略缺失度(千分比)与结果分布的 Shannon 熵(×1000):没有支配策略(缺失度 1000‰),但 slot4 被其余四条策略严格支配——策略空间既没被解死、也不是全有效,是一个有真实弱选项的可玩空间。
把《灰烬牌库》的战斗拆成三组可断言字段——伤害结算(min 截断与守恒)、时序(出牌次序与谁先手)、资源(能量门控与三分区守恒),每组各绑内核里一段确定性代码:S 层枚举手牌全排列,同一手牌同能量总伤害从 6 变到 20(极差 14);P 层六条断言全绿。
把自我决定理论的三要素映射成三个可算的代理指标——自主看可选升级路径数、胜任看升级成功间隔、关联看里程碑间隔——并在同一份规格上扫五档升级成本增长率(1020 至 1100),验证三个指标同向移动;全文显式声明它们只是 proxy,只做相对比较、禁绝对化、不证明好玩。
把放置的增长曲线钉成整数:升级成本给递推与 BigInt 闭式两种口径并实测整数溢出边界(Number 幂在 n=7 越过 2^53、n=103 起失真、n=104 起 NaN);再扫升级成本增长率,粗扫加二分找到里程碑达成率跌破 500‰ 的临界点 1042,端相分别对应进度失控与进度卡死。
把放置的五个机制字段——自动产出、离线收益、升级成本、里程碑、转生——各绑到 core/genre/idle.ts 里一段确定性代码:增长曲线用整数递推与 BigInt 闭式两种口径,规格骨架与 play_spec.json 同构、只覆盖 rules / params 两段;W 层把五格画进单文件 HTML 并真玩,P 层逐格断言 15 条全绿。
把纸面规则表与纸面记录机械地转成与 play_spec.json 同构的结构:字段一一对应,标出哪些能机械转(M)、哪些必须人工裁决(X)。X 补齐后回放纸面记录覆盖的动作序列,摘要必须与原始规格逐字一致——「机械部分无信息丢失」这才算被证明。
纸面推演只有结论就是无法复现的轶事。本节把一次两回合推演记成「动作序列 + 每步全量整数状态」的 JSON,再用引擎回放它、逐字段比对,误差必须是 0;每步还校验牌数、伤害、能量、格挡四条守恒。负对照把第 7 步抄错 1 点,回放必须精确定位到那一步。
把规则先写在纸面上,不写一行代码就能判断它是否完整:纸面规则表把每条规则写成触发、条件、效果、状态增量,脚本再校验它是「可执行的全函数」——没有悬空状态变量、条件可判定、引用不越界,并用负对照证明检查非空。这是《灰烬牌库》从纸面走向可执行规格的第一步。