feat(acceptance): 验收读数重测批·初稿——模拟批1200局+日志批+掷点流种子偏置核心发现(2026-09-19,独立 worktree 分支;真人位留空)——①执行面:worktree 检出 d236d9f 冒烟 317 项 0 失败,MC 两关×N=30×种子4200+30×both 共 1200 局,log_analysis.py+专项脚本判读;②核心发现=掷点流结构性种子偏置:日志掷点与 armor_roll 流逐 scope 首输出逐位一致,派生种子头部面值聚类(4227 头部 30 scope 4 个 18 点 vs 4211 零个),短局×种子复用放大 40 倍,真实消费模式复现 18 点 +57%≈20σ,纯随机种子对照均匀排除引擎本体——单局 d20 体验随种子漂移(0%→20% 18点率),AC 档位设计地基受损;预热无效/splitmix 未达标,建议立项掷点修复批(黄金向量重登记+阶段一重跑义务,五流连带核查);③阶段一=零承伤轮 PASS/nat20 PASS(污染注记)/档位分布与 EV FAIL(归因 RNG)/Boss 血量锚过期(58 现值)/快照 buffs 非空盲区口径已破/battle_end 行序伪影 1 局一条;④阶段二初稿=L1 完美档 87% 越 gate 上界+承伤 p10=13/p90=25 远低于带(压力不足),F4 两关全 PASS,台阶倒挂消失,判定顺延掷点修复后(§4e 边界1 先查实现缺陷);⑤07⑦ 刷新经济基线已采(弃图率完美档 ~0.1 次/局、normal 0、每轮刷新率 ≤0.6%)——log_analysis.py 新增弃图率/每轮刷新率两读数列,阈值仍归调参批;07⑥ 速杀占比不可推导注记后延;⑥判读报告 production/qa/acceptance-rerun-20260919.md(真人 3–5 局缺位,k 系数待补后终稿);active.md 快照节+台账 84(分支内,主工作区合并时人工对账)
This commit is contained in:
1 parent
87fec0278a
commit
8178394489
4 files changed
+154
-9
No files matched your search
@@ -0,0 +1,124 @@
|
||||
# 验收读数重测批——判读报告(初稿,真人位留空)
|
||||
|
||||
- **日期**:2026-09-19
|
||||
- **口径依据**:`docs/acceptance-ap6-ac.md` v1.0(定稿判读规则全文照搬执行)
|
||||
- **被测构建**:master @ d236d9f(技能池新效应词汇批后;乘区接线+削弱续时+甲效换装+充能退役+rider 五次数值行为变更叠加后的首次全量重测)
|
||||
- **执行环境**:独立 worktree `D:\code\g-plan2-acceptance-rerun`(分支 `acceptance-rerun-20260919`)——绕开主工作区并行会话未提交改动
|
||||
- **数据源状态**:① 模拟批 ✅ 完成(两关 × N=30 × 种子 4200+30 × 策略 both,共 1200 局)② 日志批 ✅ 完成 ③ **真人批 ⬜ 缺位**(3–5 局基线档待用户补跑,k 系数待并入)——按口径「三数据源全部跑完再判读」,本报告全部结论为**初稿**,终稿待真人批合入
|
||||
- **前置验证**:worktree 冒烟 317 项 0 失败(run_smoke 三闸全过)✅
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 核心发现:掷点流存在结构性面值偏置(本批最重要产出)
|
||||
|
||||
**一句话**:d20 掷点在单局内不是均匀分布——每个种子的冒险只消费掷点流头部约 17~40 个 scope,而「派生种子 → PCG 首输出」在头部 scope 区间有系统性面值聚类,玩家的实际掷点体验随种子漂移(有的种子 18 点频发、有的种子整局零 18 点)。阶段一多数 gate 失败归因于此,按口径 §4e 边界 1「先查实现缺陷再谈调参」,**压力验收判定顺延至掷点修复批之后**。
|
||||
|
||||
### 证据链(可复现,探针脚本形态见附录)
|
||||
|
||||
1. **逐位比对**:种子 4227 首局前 23 个日志掷点与 `rng.open_stream("armor_roll")` 逐 scope 首输出序列**完全一致**——日志掷点 = 派生种子首输出,无其他变换。
|
||||
2. **种子级头部偏置**:种子 4227 头部 30 scope 含 4 个 18 点(13%);种子 4211 头部 30 scope **零 18 点**。真实日志按种子聚合:4227 → 120 个 18 点(4.1× 期望)、4211 → 0 个。MC 每局平均仅 ~17 次掷点、每种子被 20 个配置格复用 → 头部偏置被放大 40 倍,与日志完全定量吻合(120 ≈ 40 局 × 头部 3 个 18 点)。
|
||||
3. **真实消费模式复现**:按「30 种子 × 40 局 × 每局 8~31 掷」模拟聚合,复现日志失真签名:18 点 1876/23822(期望 1191,**+57%**,≈20σ)、16 点 +26%、4 点 +23%、1/2/3 点 −25% 量级缺口。
|
||||
4. **排除项**:纯随机种子首输出均匀(4 万次最大偏差 2.7σ,正常);同流长短序列聚合均匀(2 万 scope)——缺陷特定于「派生种子族 + 头部窗口」的组合。
|
||||
|
||||
### 影响面评估
|
||||
|
||||
- **玩家体验(真实影响,非测量伪影)**:一局冒险 = 一个种子 = 只吃该种子头部窗口。d20 均匀假设是 AC 档位设计(全额 55%/×0.75 15%/×0.5 20%/×0.25 10%、EV 减免 21.25%)的地基;现状下不同局的实际掷点分布随种子系统性漂移,暴击率与档位体验逐局不可比。这属于**引擎级机制缺陷**,不是调参问题。
|
||||
- **测量有效性**:本批全部掷点面 gate(档位分布/EV 减免/nat20)读数被污染,判为失败不能归因到机制实现或数值配置。
|
||||
- **连带怀疑面**:同一派生公式服务全部五条流(board_gen/reward_roll/encounter/armor_roll/behavior_roll),其他流的消费窗口同样偏头部——棋盘布局、奖励摇号、遭遇骰的逐种子行为同理存疑,修复批应一并核查。
|
||||
|
||||
### 修复方向试探(均在探针级验证,未动游戏代码)
|
||||
|
||||
- 单次预热(丢弃首输出取第二输出):**无效**(相关性在种子空间不在生成器内部)。
|
||||
- 派生种子过 splitmix64 非线性混淆后再喂 PCG:**部分改善未达标**(最大面偏差 685→369,仍 ≈11σ),需专门验证批找正确混入方式。
|
||||
- 结构性候选:armor_roll 改「每冒险一条持久生成器顺序取号」(标准做法,代价 = 牺牲注册表登记的逐 scope 独立复放语义);或重设计派生公式并配黄金向量回归。
|
||||
- **处置建议**:登记 06 待办立项「掷点流种子偏置修复批」(改 `rng_service.gd` 属架构面,须用户拍板修复方案);修复批自带义务=黄金向量重登记 + 冒烟断言 + 修复后重跑本验收阶段一。
|
||||
|
||||
---
|
||||
|
||||
## 阶段一:机制验收(日志批,gate 判读——全部受发现①污染,仅记录现状)
|
||||
|
||||
数据:两份 MC 日志共 318,626 行、1200 局、20,945 次掷点。
|
||||
|
||||
| 指标 | 读数 | 期望带 | 判读 | 注记 |
|
||||
|---|---|---|---|---|
|
||||
| 零承伤轮(窄口径) | 0 / 8076 攻击落地轮 | 0 | ✅ PASS | 伤害下限 1 生效 |
|
||||
| 零掉血轮(宽口径) | 6706 / 13364 敌战轮(50.2%) | observe | 记录 | 与真人旧读数对照待真人批 |
|
||||
| nat20 暴击率 | 4.53% | 5%±2pp | ✅ PASS(带污染注记) | 种子头部偏置使逐种子暴击率漂移大 |
|
||||
| 档位分布(敌→主角) | 全额 50.8%/×0.75 15.0%/×0.5 21.6%/×0.25 12.6% | 55/15/20/10 各±2σ | ❌ FAIL | 归因=RNG 偏置为主 + 护甲强化增益抬 AC 混入(全额缺口方向与增益一致,但幅度超增益可解释范围) |
|
||||
| 玩家侧全额率 | 主角→敌 EV 减免 0.00% | 100% 全额 | ✅ PASS | 敌 AC 关内 0 生效 |
|
||||
| EV 减免(敌→主角) | 23.98% | 21.25%±2pp | ❌ FAIL | 同上归因 |
|
||||
| Boss 血量锚 | 表值 hp=58(蛛化卓尔精灵) | r_boss=150÷153.5≈0.98 | ⚠️ 锚过期 | 口径写于压缩批与卓尔加血前(150→÷3→58);锚值重校准归调参批,本批记录现状 |
|
||||
| 增益战斗期复原 | 三类可复原(attack_up/weaken/减伤族) | observe | ✅ 记录 | 复原面工作正常 |
|
||||
| 快照 buffs 非空 | **8790/14402** | 恒空(盲区口径=0) | ⚠️ 盲区口径已破 | rider/状态批后快照开始携带 buffs(疑 duration-2 状态使衰减段后仍有存留)——**好消息**(盲区闭合),口径文档需改写该节 |
|
||||
| 数据质量·解析失败 | 0 | 0 | ✅ PASS | |
|
||||
| 数据质量·未配对 battle_end | **1200(系统性 1/局)** | 0 | ⚠️ 行序伪影 | 每局恰 1 条 battle_end 落到 run 行切分点之后(level_end 先于 battle_end 落盘);不影响核心统计(分析器不依赖 battle_end),行序归因待核 |
|
||||
|
||||
## 阶段二:压力验收(模拟批基线格,初稿判读——顺延至掷点修复后终判)
|
||||
|
||||
### 第一关(生死带主判据格:MC perfect 基线格 atk+0%/hp+0%,n=30)
|
||||
|
||||
| 指标 | 读数 | gate | 判读 |
|
||||
|---|---|---|---|
|
||||
| 整关承伤分布 | p10=13.0 / p50=18 / p90=25.0 / max=28 | p10∈[35,45] 且 p90∈[55,65] | ❌ FAIL(远低于带下沿——压力不足方向) |
|
||||
| 通关率 | 87% | [35%, 65%] | ❌ FAIL(越上界) |
|
||||
| 通关余量 | 胜局剩余 HP 均 7.4 | p90≤13 且 p10≥3(收敛后 gate) | observe(未收敛) |
|
||||
| 平均轮数 | 16.4 | observe | 记录 |
|
||||
| 盲挖档(normal 基线格)通关率 | 73% | observe(生死带下 0% 为预期态) | 记录——73% 与生死带预期相悖,同证压力不足 |
|
||||
|
||||
### 第二关(对照面,无独立 gate)
|
||||
|
||||
| 指标 | 读数 |
|
||||
|---|---|
|
||||
| 完美档基线格通关率 / 承伤 p50/p90 | 87% / 15.5 / 21.2 |
|
||||
| 盲挖档基线格通关率 | 83% |
|
||||
| 台阶倒挂 | L1 87% vs L2 87%——倒挂消失(旧读数 65vs90→65vs80→本批持平),方向性好转 |
|
||||
|
||||
### F4 满配格(gate:普通场 ≤20% / Boss 场 ≤50% 生效 max_hp)
|
||||
|
||||
| 关卡 | 普通场 | Boss 场 | 判读 |
|
||||
|---|---|---|---|
|
||||
| L1 | 6.5% | 15.7% | ✅ PASS |
|
||||
| L2 | 5.9% | 22.8% | ✅ PASS |
|
||||
|
||||
### 战斗级承伤带(普通 ≤20% / Boss ≤50%,全网格聚合)
|
||||
|
||||
全部 9 个(关×类型×深度)分组 ✓ PASS;Boss 战单独出列读数:L1 Boss 场均承伤 26.7% max_hp / 5.9 轮,L2 Boss 35.7% / 5.0 轮——Boss 承伤占比显著高于普通场(设计方向:Boss 是主要伤害来源),无不可控死法迹象(败北节点全部集中于 Boss 位,普通位败北为 0)。
|
||||
|
||||
### 阶段二初稿结论
|
||||
|
||||
双 gate(承伤带 + 通关率)双败,方向一致=**压力不足**(完美档太容易通关、承伤远低于生死带)。按归因规则本应走 §4e 阶梯(敌方输出侧),但发现①属实现缺陷且优先级在前(§4e 边界 1)——**建议顺序:掷点修复批 → 阶段一重跑 → 阶段二调参批**。附带提醒:修复掷点会轻微改变承伤/通关读数(掷点分布变了),调参批应在修复后的重测读数上工作。
|
||||
|
||||
---
|
||||
|
||||
## 07⑦ 刷新经济监控——基线读数(本批搭车项,2026-09-19 首批基线)
|
||||
|
||||
分析器已新增两读数(`log_analysis.py` 关卡级统计:弃图率=每局受理刷新次数,与 MC 刷新/局同口径;每轮刷新率=刷新次数÷结算轮数)。**首批基线**:
|
||||
|
||||
| 数据面 | 弃图率(次/局) | 每轮刷新率 | 样本 |
|
||||
|---|---|---|---|
|
||||
| MC L1 完美档基线格 | 0.23 | — | 30 局 |
|
||||
| MC L2 完美档基线格 | 0.03 | — | 30 局 |
|
||||
| MC 全网格 L1 完美档 | 0.08 | 0.006 | 300 局 |
|
||||
| MC 全网格 L2 完美档 | 0.01 | 0.001 | 300 局 |
|
||||
| MC 全网格 normal 档(两关) | 0.00 | 0.000 | 600 局 |
|
||||
| 真人日志参照(并行会话今日 600 局模拟,非本批数据) | 完美档 0.12 | 0.008 | 供交叉参照 |
|
||||
|
||||
解读起点(供调参批参考,非结论):完美档低频弃图(~0.1 次/局量级)、normal 档零弃图——与「完美档卡死才刷新」的口径一致(auto_player 刷新=卡死解除手段);normal 档零使用提示 1 RAP 定价对普通玩家可能偏贵或无感知,真人批数据将回答。**阈值数字仍归调参批**(口径不变:现在定是拍脑袋)。
|
||||
|
||||
**顺带核查项**:07⑥ 速杀退化预警的读数(战斗结束未开资格格占比)经核对**现役日志不可推导**——battle_end 行仅含 result+hero_hp,无格面开格状态面。采集义务需等埋点(board 状态入结算快照或独立行),本批不硬做,注记后延。
|
||||
|
||||
---
|
||||
|
||||
## 待办与回流
|
||||
|
||||
1. **真人批**(用户):基线档 3–5 局 → k 系数 + 零掉血轮宽口径真人对照 → 本报告终稿。
|
||||
2. **掷点流种子偏置修复批**(新立项,须拍板):登记 06 待办;修复方案选择 + 黄金向量重登记 + 重跑阶段一。
|
||||
3. **口径文档连带修订**(归合并批):`docs/acceptance-ap6-ac.md` 快照 buffs 盲区节改写、Boss 血量锚参照值重校准(58 现值)、§2 消费读数行补刷新两读数;`06-待办清单`「刷新经济性监控」条目保留至调参批定阈值。
|
||||
4. **曲线调参批门**:确认改为「掷点修复批后」起跑(原门=验收读数)。
|
||||
|
||||
## 附录:探针脚本(复现用)
|
||||
|
||||
本批全部 RNG 探针为一次性 `/tmp` 脚本(rng_probe*.gd),核心复现路径:
|
||||
① 从日志抽种子 4227 首局前 23 掷与 `open_stream("armor_roll")` 逐 scope 首输出逐位比对;
|
||||
② `SALT_ARMOR_ROLL ^ (seed + scope×GOLDEN) & 0x7FFF…` 直喂 `RandomNumberGenerator.randi_range(1,20)` 画头部直方图;
|
||||
③ 按 30 种子×40 局×8~31 掷聚合复现失真签名。诊断用工程内探针 `smoke/rng_face_probe.gd` 已随批删除,不留残留。
|
||||
Reference in new issue
Block a user