docs(levels): report what round 2 measured, including the number it overturns
The round accidentally ran every level twice, which turned into the most useful thing it produced: 45 retest pairs on this exact set. 84% of them replayed the identical action sequence, so the agent is near-deterministic and a second run of a level buys almost nothing — the mechanical metrics retest at r = 1.00 for that reason, not because they survived a hard test. The ratings do not. Difficulty retests at r = 0.55 here, against the 0.93 this project had on record from a smaller sample, and every pair that disagreed had played the same trajectory: same moves, same outcome, different number. The report now prints the reliability it measured rather than quoting the older figure, and says which one it replaces. Averaged by band over ~20 runs, though, the ratings finally track the curve — 2.00 / 2.05 / 2.40 with stuck at 1.21 / 1.15 / 1.74, where round 1 was a flat line. So the rule is not "ratings are useless", it is "ratings are a band statistic, never a per-level rank", and that is what the rules section says. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+20
-18
@@ -98,10 +98,10 @@ footer{margin-top:56px;padding-top:20px;border-top:1px solid var(--rule);color:v
|
||||
<header class="head">
|
||||
<div class="eyebrow">HEX TRAILS · 关卡调优</div>
|
||||
<h1>调出 50 关难度合适、好玩的关卡,交付人工审核</h1>
|
||||
<p class="meta mono">第 1 轮 · 更新于 09-14 16:45 · 本页每 60 秒自动刷新</p>
|
||||
<p class="meta mono">第 2 轮 · 更新于 09-14 16:45 · 本页每 60 秒自动刷新</p>
|
||||
<div class="progress">
|
||||
<div class="bar"><i style="width:62%"></i></div>
|
||||
<div class="lbl"><span>13 / 21 项完成</span><span class="mono">62%</span></div>
|
||||
<div class="bar"><i style="width:86%"></i></div>
|
||||
<div class="lbl"><span>18 / 21 项完成</span><span class="mono">86%</span></div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -110,20 +110,20 @@ footer{margin-top:56px;padding-top:20px;border-top:1px solid var(--rule);color:v
|
||||
<div class="tile ok"><div class="k">候选关卡</div><div class="v">50 <span style="font-size:14px;color:var(--ink3)">/ 50</span></div><div class="n">当前关卡集</div></div>
|
||||
<div class="tile ok"><div class="k">盲转 / 关</div><div class="v">0.00</div><div class="n">目标 0</div></div>
|
||||
<div class="tile ok"><div class="k">转错方向 / 关</div><div class="v">0.00</div><div class="n">目标 0</div></div>
|
||||
<div class="tile ok"><div class="k">猴子 动作÷棋子</div><div class="v">6.53</div><div class="n">目标 ≥3.0(不无脑)</div></div>
|
||||
<div class="tile ok"><div class="k">猴子 动作÷棋子</div><div class="v">6.43</div><div class="n">目标 ≥3.0(不无脑)</div></div>
|
||||
</div>
|
||||
|
||||
<div class="scroll"><table>
|
||||
<thead><tr><th>最少旋转数</th><th class="n">候选关数</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>1 转</td><td class="n">3</td><td class="sub">浅</td></tr>
|
||||
<tr><td>2 转</td><td class="n">10</td><td class="sub">浅</td></tr>
|
||||
<tr><td>3 转</td><td class="n">31</td><td class="sub">浅</td></tr>
|
||||
<tr><td>4 转</td><td class="n">3</td><td class="sub">中</td></tr>
|
||||
<tr><td>5 转</td><td class="n">3</td><td class="sub">中</td></tr>
|
||||
<tr><td>1 转</td><td class="n">5</td><td class="sub">浅</td></tr>
|
||||
<tr><td>2 转</td><td class="n">5</td><td class="sub">浅</td></tr>
|
||||
<tr><td>3 转</td><td class="n">24</td><td class="sub">浅</td></tr>
|
||||
<tr><td>4 转</td><td class="n">12</td><td class="sub">中</td></tr>
|
||||
<tr><td>5 转</td><td class="n">4</td><td class="sub">中</td></tr>
|
||||
|
||||
</tbody></table></div>
|
||||
<p class="sub">路线家族分布:v05 ×13 · switchback ×7 · weave ×18 · orbits ×10 · spiral ×2 终局可走朝向分布:{"1":5,"2":22,"3":21,"4":1,"5":1}</p>
|
||||
<p class="sub">路线家族分布:v05 ×10 · spiral ×2 · switchback ×12 · weave ×18 · orbits ×8 终局可走朝向分布:{"3":44,"4":5,"5":1}</p>
|
||||
|
||||
<h2><span class="num">B</span>什么叫「难度合适且好玩」</h2>
|
||||
<div class="callout"><p class="sub">旋转是免费的、是这个游戏的特色,玩家应该频繁做——所以不该限制旋转次数。该限制的是每一次旋转值不值:转了有没有棋子出来、能不能看出来该转哪、以及转完之后有没有「原来这么简单」的反差。评分里只有 difficulty(复测 r=0.93)和 stuck(r=0.85)可信,rotation / clarity / fun 是噪声(0.32 / 0.19 / 0.56),所以「好玩」全部换成机械代理。 另外,演出本身就是奖励——棋子沿弯路走出去的那几秒是减压点,所以开局必须有得看,而不是只有两枚贴边棋子和 0.3 秒。</p></div>
|
||||
@@ -162,8 +162,8 @@ footer{margin-top:56px;padding-top:20px;border-top:1px solid var(--rule);color:v
|
||||
<li class="done"><div class="t"><span class="tid">T1.2</span><span class="tt">解除 rotations===3 的硬限制,允许 4/5/6+</span><span class="tag good">完成</span></div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T1.3</span><span class="tt">反差感指标进 deepLevelStats 并作门槛</span><span class="tag good">完成</span></div><div class="note">contrastStats 已进 deepLevelStats 并作门槛;实测 weave 22–33、switchback 29、spiral 18–24、orbits 12–17,petals 仅 2.0–5.7、crossing 3.8–5.5</div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T1.4</span><span class="tt">每转释放 ≥2 枚的门槛</span><span class="tag good">完成</span></div><div class="note">改为按朝向配额插棋(每个朝向 ≥2 枚在等),取代原来的随机比例——随机比例会留下空转的朝向</div></li>
|
||||
<li class="doing"><div class="t"><span class="tid">T1.5</span><span class="tt">扩产到 ≥120 候选并去重、家族均衡</span><span class="tag live">进行中</span></div><div class="note">扩产到 400 种子(8 片并行)。目的不是多,是为了付得起两道新闸门的代价:双向死转态 ≤2 只留 16%,在 94 个候选上会只剩 8 关</div></li>
|
||||
<li class="blocked"><div class="t"><span class="tid">T1.6</span><span class="tt">终局三枚互锁(hero+gate+tail)</span><span class="tag bad">受阻</span></div><div class="note">深关卡的主要死因:5 转以上有 60% 死在「终局单出口」。实测终局是锁链自己的三枚棋子在 6 个朝向里堵死 5 个。双向释放约束只覆盖了 hero/tail 两枚,三枚组合覆盖不到——这是可达状态的性质,构造时难保证。当前对策是提高扫描量靠筛选拿到,不是修构造</div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T1.5</span><span class="tt">扩产到 ≥120 候选并去重、家族均衡</span><span class="tag good">完成</span></div><div class="note">扫了 480 + 240 个种子,得 684 个候选;过两道新闸门后 228 关。扩产的目的是付得起闸门的代价,不是数量本身</div></li>
|
||||
<li class="blocked"><div class="t"><span class="tid">T1.6</span><span class="tt">终局三枚互锁(hero+gate+tail)</span><span class="tag bad">受阻</span></div><div class="note">仍是深关卡的瓶颈:684 个候选里深度≥4 的只有 67 个,过闸门后剩 16 个——后档只能做到平均 4.1 转,是供给限制不是设计选择</div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T1.7</span><span class="tt">开局展示位(快速爽到)</span><span class="tag good">完成</span></div><div class="note">实测整个构造的开局中位只有 2 枚可点、最佳演出 0.57s——锁链开局全锁死。在构造里预留 2 个开局位(立即可点且路线长到值得看),实测开局可点 2→3 枚、最佳演出 0.72s→1.12s</div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T1.8</span><span class="tt">离场演出封顶</span><span class="tag good">完成</span></div><div class="note">计时原本线性无上限,最长一次 17.4s,正式关 18.8% 超过 2s。拐点 2.4s 以下完全不变,以上加速逼近 3.2s 上限。labs/exit-timing 可同步对比</div></li>
|
||||
</ul>
|
||||
@@ -182,18 +182,18 @@ footer{margin-top:56px;padding-top:20px;border-top:1px solid var(--rule);color:v
|
||||
<h3><span class="pid">P3</span>迭代:跑几轮把曲线调平</h3>
|
||||
<ul class="tasks">
|
||||
<li class="done"><div class="t"><span class="tid">T3.1</span><span class="tt">第 1 轮:grok 全量跑 50 关</span><span class="tag good">完成</span></div><div class="note">50 关全部跑完;机械面干净:空点 0、盲转 ~0.3/关、全部通关。总体读数:整批偏易一档(2 分 vs 刚好的 3 分)</div></li>
|
||||
<li class="doing"><div class="t"><span class="tid">T3.2</span><span class="tt">按实测曲线调整选关,重选</span><span class="tag live">进行中</span></div><div class="note">R1 唯一可用的是总体读数「偏易」,不是逐关排名。据此定的 R2 改动只有一条、且是机械可测的:给 doubleDead(左右转都打不开任何棋子的可达卡住态)设闸门——它此前完全没设,当前 50 关中位 4、最高 27。这正是用户说的「无效转动就会很无聊」,也是 agent 后段反复写的「短暂以为转错了方向」</div></li>
|
||||
<li class="todo"><div class="t"><span class="tid">T3.3</span><span class="tt">第 2 轮验证</span><span class="tag idle">待办</span></div></li>
|
||||
<li class="todo"><div class="t"><span class="tid">T3.4</span><span class="tt">收敛判定(难度曲线单调、stuck 达标)</span><span class="tag idle">待办</span></div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T3.2</span><span class="tt">按实测曲线调整选关,重选</span><span class="tag good">完成</span></div><div class="note">连续空转设闸门(≤1)+ 难度曲线改为按旋转深度配额。同一规则机器人对照:盲转 0.24→0.12,最长连续盲转 4→1,决策数不变</div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T3.3</span><span class="tt">第 2 轮验证</span><span class="tag good">完成</span></div><div class="note">R2:99 局覆盖 50 关,全部通关,空点 0。难度按档 2.00 / 2.05 / 2.40,无解感 1.21 / 1.15 / 1.74 —— 评分第一次出现梯度</div></li>
|
||||
<li class="doing"><div class="t"><span class="tid">T3.4</span><span class="tt">收敛判定(难度曲线单调、stuck 达标)</span><span class="tag live">进行中</span></div><div class="note">机械面已收敛:空点 0、不可解态 0、连续空转≤1、终局朝向≥3。难度未达标:后档 2.40 vs 目标 3。瓶颈是深关卡供给(见 T1.6),正在扫第二批种子。注意逐关评分复测 r=0.55 且同轨迹会打出不同分,只有按档≈20 局才可读</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="phase">
|
||||
<h3><span class="pid">P4</span>交付</h3>
|
||||
<ul class="tasks">
|
||||
<li class="todo"><div class="t"><span class="tid">T4.1</span><span class="tt">50 关关卡集</span><span class="tag idle">待办</span></div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T4.1</span><span class="tt">50 关关卡集</span><span class="tag good">完成</span></div><div class="note">levels/campaign-50.json + src/levels-c50.js,已注册为可玩版本 c50,198 项测试全绿</div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T4.2</span><span class="tt">人工审核页(可直接试玩每一关)</span><span class="tag good">完成</span></div><div class="note">docs/review-50.html:50 张开局盘面缩略图 + 机械指标 + agent 实测 + 试玩直达;并标注「哪些数字能信」,把感知类问题(路线长度、紧贴)显式交给人眼</div></li>
|
||||
<li class="todo"><div class="t"><span class="tid">T4.3</span><span class="tt">后续关卡制作流程的优化总结</span><span class="tag idle">待办</span></div></li>
|
||||
<li class="done"><div class="t"><span class="tid">T4.3</span><span class="tt">后续关卡制作流程的优化总结</span><span class="tag good">完成</span></div><div class="note">docs/level-process.html:两轮对照、复测可信度表(本批现算)、五条规则各带证据、被否掉的做法清单</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -204,7 +204,8 @@ footer{margin-top:56px;padding-top:20px;border-top:1px solid var(--rule);color:v
|
||||
<div class="scroll"><table>
|
||||
<thead><tr><th>批次</th><th class="n">关数</th><th class="n">difficulty</th><th class="n">stuck</th><th class="n">盲转/关</th><th class="n">多转/关</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>R1 · grok xhigh</td><td class="n">49</td><td class="n">2.06</td><td class="n">1.41</td><td class="n">0.16</td><td class="n">0.31</td></tr>
|
||||
<tr><td>R2 · grok xhigh</td><td class="n">99</td><td class="n">2.16</td><td class="n">1.37</td><td class="n">0.12</td><td class="n">0.24</td></tr>
|
||||
<tr><td>R1 · grok xhigh</td><td class="n">50</td><td class="n">2.10</td><td class="n">1.44</td><td class="n">0.24</td><td class="n">0.38</td></tr>
|
||||
<tr><td>Codex CLI · gpt-6-astra low</td><td class="n">18</td><td class="n">2.44</td><td class="n">1.44</td><td class="n">1.17</td><td class="n">1.22</td></tr>
|
||||
<tr><td>Codex CLI · spark xhigh</td><td class="n">18</td><td class="n">3.11</td><td class="n">2.28</td><td class="n">1.17</td><td class="n">1.17</td></tr>
|
||||
<tr><td>Grok Build CLI · xhigh</td><td class="n">18</td><td class="n">2.39</td><td class="n">1.83</td><td class="n">1.17</td><td class="n">1.22</td></tr>
|
||||
@@ -219,6 +220,7 @@ footer{margin-top:56px;padding-top:20px;border-top:1px solid var(--rule);color:v
|
||||
|
||||
<h2><span class="num">F</span>日志</h2>
|
||||
<ul class="log">
|
||||
<li><b>R2 结果</b>难度评分按档 2.00/2.05/2.40(R1 是三档全平),无解感 1.21/1.15/1.74。意外把每关跑了两次,得到 45 对复测:84% 重放了完全相同的动作序列,机械指标 r=1.00,难度评分 r=0.55——且评分分歧的那几对全是同轨迹。结论:agent 近乎确定性,同一关不必跑两遍</li>
|
||||
<li><b>R2 依据</b>后段 14 条抱怨里两类:路线太长(感知,已对照 v0.5 基线否掉)与「转了没反应」(机械,可设闸门)。只改后者:endgameMinOpen 2→3、doubleDead 无闸门→≤2。两条合计只留 16% 候选,所以先扩池</li>
|
||||
<li><b>未擅自改动</b>agent 33 条抱怨里两大主题是路线太长(68 格 27 弯)与紧贴易看漏。但已上线的 v0.5 在这两项上更严重(最长 88 格 vs 84 格),属于游戏本来的性格;且文字盘面会同时夸大和缩小感知问题。因此只在审核页标出,不擅自设闸门</li>
|
||||
<li><b>R1 结论</b>难度评分在这批关卡上无区分度(26/27 都是 2 分),原因是文字 bench 把判断白送给了 agent。结论:agent 轮次用于抓缺陷(死局、盲转、空点、演出),难度排序只能靠机械假设 + 人工审核。这条改变了后续流程的设计</li>
|
||||
|
||||
Reference in New Issue
Block a user