A现在的状态
路线家族分布:v05 ×10 · spiral ×5 · switchback ×13 · orbits ×9 · weave ×13 终局可走朝向分布:{"3":44,"4":6}
B什么叫「难度合适且好玩」
旋转是免费的、是这个游戏的特色,玩家应该频繁做——所以不该限制旋转次数。该限制的是每一次旋转值不值:转了有没有棋子出来、能不能看出来该转哪、以及转完之后有没有「原来这么简单」的反差。评分里只有 difficulty(复测 r=0.93)和 stuck(r=0.85)可信,rotation / clarity / fun 是噪声(0.32 / 0.19 / 0.56),所以「好玩」全部换成机械代理。 另外,演出本身就是奖励——棋子沿弯路走出去的那几秒是减压点,所以开局必须有得看,而不是只有两枚贴边棋子和 0.3 秒。
- 旋转要深:难度来自「需要转很多次」,不是「转错受罚」。旋转数随关号上升,不设上限(求解器最少旋转数)
- 每转都有回报:每一次旋转至少放出 2 枚棋子;无效转动 = 0(deepLevelStats.releasePerTurn / 规则机器人)
- 演出是回报:开局就要有得看:可点 ≥3 枚、其中最好的一条离场演出 ≥0.9s;全关长巡游(≥0.9s)≥3 次(showStats,用真实动画计时)
- 反差感:平均反差 ≥12:棋子在某个朝向看着像噩梦(长路线多弯),转过去就是几步走出(代价 = 格数 + 2×弯数)(六朝向逐棋子代价差)
- 不无脑:猴子 动作÷棋子 ≥3.0(v0.5 全库 1.67 = 乱点就能过)(生成时算)
- 不挫败:stuck ≤2.0;终局任一朝向卡住时,左右转都能开(grok 抽样 + 求解器)
- 不重复:盘面签名互不相同,路线家族分布不偏科(deepLevelKey)
C任务
P0判据:先说清楚什么叫「好」
T0.1难度曲线与旋转配额定义完成
50 关分三档,0 转关卡死 10% 上限(用户硬要求)
T0.2机械验收门槛完成
盲转=0、转错=0、终局可走朝向≥2 —— 前两项已由改锁结构达成
T0.3「好玩」的机械代理指标完成
猴子 APT ≥3.0。fun 评分复测 r=0.56 不可用,改用「乱点过不了」当代理
P1产能:解除旋转上限,把反差感做进筛选
T1.1growDeepLevel 扩展到 6 个朝向完成
现在只在朝向 0/1/2 插棋子,所以最少旋转恒等于 3 —— 这是「太简单」的根因
T1.2解除 rotations===3 的硬限制,允许 4/5/6+完成
T1.3反差感指标进 deepLevelStats 并作门槛完成
contrastStats 已进 deepLevelStats 并作门槛;实测 weave 22–33、switchback 29、spiral 18–24、orbits 12–17,petals 仅 2.0–5.7、crossing 3.8–5.5
T1.4每转释放 ≥2 枚的门槛完成
改为按朝向配额插棋(每个朝向 ≥2 枚在等),取代原来的随机比例——随机比例会留下空转的朝向
T1.5扩产到 ≥120 候选并去重、家族均衡完成
两批共 720 个种子 → 1113 个候选 → 过闸门 369 关(原 228)。家族 weave 262 / switchback 58 / orbits 39 / spiral 10
T1.6终局三枚互锁(hero+gate+tail)受阻
量化了:扫 1113 个候选,过闸门后深度≥4 的只有 23 个(2%)。第二次扩池把种子数翻倍,深关卡只从 16 涨到 23 —— 难度上限是构造的供给瓶颈,不是筛选问题。后档平均 4.0 转就是这个供给能支撑的上限
T1.7开局展示位(快速爽到)完成
实测整个构造的开局中位只有 2 枚可点、最佳演出 0.57s——锁链开局全锁死。在构造里预留 2 个开局位(立即可点且路线长到值得看),实测开局可点 2→3 枚、最佳演出 0.72s→1.12s
T1.8离场演出封顶完成
计时原本线性无上限,最长一次 17.4s,正式关 18.8% 超过 2s。拐点 2.4s 以下完全不变,以上加速逼近 3.2s 上限。labs/exit-timing 可同步对比
P2标定:把机械指标映射到真实难度
T2.1grok 抽样跑候选池,收集 difficulty / stuck完成
R1:grok-4.6 xhigh 全量跑 50 关,收齐 difficulty / stuck / 机械指标与自由文本抱怨
T2.2拟合 difficulty ~ 机械特征受阻
做不成,且不是样本量问题:27 关里 26 关 difficulty 都打 2 分,响应几乎无方差,回归的是常数。根因在 bench 本身——文字盘面把每颗棋子的路线、挡路者、紧贴者直接列成清单,agent 不必用眼睛顺线走,而那正是这游戏的难点。agent 原话:「挡路名单已经写全,不用顺着格子数」。为解释它另建的 legibility 指标与评分相关 -0.02,同样无效,已记录为负结果不采用
T2.3用模型给全部候选打分并按曲线选 50 关完成
select-50 按机械特征打分并均匀铺开,家族上限 36%。权重是设计假设而非拟合结果(见 T2.2),由人工审核裁定
P3迭代:跑几轮把曲线调平
T3.1第 1 轮:grok 全量跑 50 关完成
50 关全部跑完;机械面干净:空点 0、盲转 ~0.3/关、全部通关。总体读数:整批偏易一档(2 分 vs 刚好的 3 分)
T3.2按实测曲线调整选关,重选完成
连续空转设闸门(≤1)+ 难度曲线改为按旋转深度配额。同一规则机器人对照:盲转 0.24→0.12,最长连续盲转 4→1,决策数不变
T3.3第 2 轮验证完成
R2:99 局覆盖 50 关,全部通关,空点 0。难度按档 2.00 / 2.05 / 2.40,无解感 1.21 / 1.15 / 1.74 —— 评分第一次出现梯度
T3.4收敛判定(难度曲线单调、stuck 达标)完成
收敛判定完成。机械面:空点 0、不可解态 0、连续空转≤1、终局朝向≥3、三轮全部通关。难度面:三档 2.00 / 2.05 / 2.17,单调但后档低于「刚刚好」的 3 分——上限由深关卡供给决定(见 T1.6),且这项评分复测 r=0.55,本身不足以再往下调。剩下的交人工审核
P4交付
T4.150 关关卡集完成
levels/campaign-50.json + src/levels-c50.js,已注册为可玩版本 c50,198 项测试全绿
T4.2人工审核页(可直接试玩每一关)完成
docs/review-50.html:50 张开局盘面缩略图 + 机械指标 + agent 实测 + 试玩直达;并标注「哪些数字能信」,把感知类问题(路线长度、紧贴)显式交给人眼
T4.3后续关卡制作流程的优化总结完成
docs/level-process.html:两轮对照、复测可信度表(本批现算)、五条规则各带证据、被否掉的做法清单
E已有的 agent 实测
difficulty 3 = 刚刚好;stuck 越低越好。这两项是评分里唯二复测可信的(r = 0.93 / 0.85)。
F日志
- 一个差点报错的对照levels/campaign-50-r2.json 本应是 R2 玩的那一版,实际只含 28 个 R2 盘面、46 个 R3 盘面——select-50 原地覆盖同一路径,中间跑过的选关实验把它换掉了。改为从 run 反建(run 自带完整盘面与序号),并删掉该快照
- R3 结果第三轮只改一个变量:桶内按反差取关。后档反差 27.9→28.5、旋转深度不变,后档评分 2.39→2.17。以 r=0.55 的复测可信度,十几关上的这点差距分不出胜负——记为「未证实」,第三版保留的理由是设计面的(反差是策划点名的好玩机制)与家族均衡(两家族 30/50 → 26/50)
- 供给瓶颈扩池两轮共 720 种子、1113 候选,深度≥4 的过闸门后只有 23 个(2%)。种子翻倍只让深关卡从 16 涨到 23,说明 growDeepLevel 难以造出需要四转以上的关卡——这是后档难度的硬上限
- R2 结果难度评分按档 2.00/2.05/2.40(R1 是三档全平),无解感 1.21/1.15/1.74。意外把每关跑了两次,得到 45 对复测:84% 重放了完全相同的动作序列,机械指标 r=1.00,难度评分 r=0.55——且评分分歧的那几对全是同轨迹。结论:agent 近乎确定性,同一关不必跑两遍
- R2 依据后段 14 条抱怨里两类:路线太长(感知,已对照 v0.5 基线否掉)与「转了没反应」(机械,可设闸门)。只改后者:endgameMinOpen 2→3、doubleDead 无闸门→≤2。两条合计只留 16% 候选,所以先扩池
- 未擅自改动agent 33 条抱怨里两大主题是路线太长(68 格 27 弯)与紧贴易看漏。但已上线的 v0.5 在这两项上更严重(最长 88 格 vs 84 格),属于游戏本来的性格;且文字盘面会同时夸大和缩小感知问题。因此只在审核页标出,不擅自设闸门
- R1 结论难度评分在这批关卡上无区分度(26/27 都是 2 分),原因是文字 bench 把判断白送给了 agent。结论:agent 轮次用于抓缺陷(死局、盲转、空点、演出),难度排序只能靠机械假设 + 人工审核。这条改变了后续流程的设计
- 演出离场动画封顶定稿(拐点 2.4s / 上限 3.2s),最长 17.4s→3.5s;拐点以下手感不变。同时发现开局演出是结构性缺陷并在构造里修掉
- P1 进展旋转深度打开:生成分布从「全部恒为3」变成 {3,4,5,6,7,8,9}。两次结构性猜测失败并已撤回(插入端多朝向出口过滤实测零效果)。深关卡的瓶颈定位为终局三枚互锁,改用扩大扫描量应对
- 方向修正旋转配额的思路被推翻:旋转免费且是核心特色,不该限次数,该限的是每次旋转的回报与可读性。实测发现 17 关最少旋转全部恒为 3(生成器写死),且 petals/crossing 两个家族几乎没有反差感(平均 2.0–5.7 对比 weave 的 22–33)
- 起点已完成前置工作:擦碰漏报修复(113/581 例)、终局单出口门槛、锁结构改为双向可开 —— 规则机器人盲转/转错/多转已全部归零