
2026-05-17 · 第 1 轮加速循环原型 · `accelerated_cycle.md` 流程产出
2026-05-17 · 第 1 轮加速循环原型 · accelerated_cycle.md 流程产出
513 系列首次:「视觉搜索 + 局部放大镜 + 隐藏目标定位」机制
双击 build/index.html,PC 浏览器(Chrome / Edge 推荐)。
亦可触屏(手指拖 = 放大镜,手指离开 = 点击该位置)。
| 你是 | 一个用放大镜搜索的人 |
| 你做 | 在 600x600 的噪点海里找出红色目标,单击命中 |
| 你输 | 8 关全过 OR 时限到 OR 点错 5 次 |
| 一局 | 10-20 秒,全 8 关约 2-3 分钟 |
放大镜内能看到 3 倍放大的细节。目标比噪点亮(前期),到后期目标颜色与噪点高度相似 / 形状区分 / 闪烁等待 / 1 像素亮度差,依次升级难度。
每关:100 基础 + 时间奖励(剩余 × 10)+ 关数奖励(NN × 50)。
通关后按总分给评级 S/A/B/C,未通关按到达关数给降级。
详见 DESIGN.md;本轮玩法体系遵从 prompts/gameplay_principles.md(5 镜头通过率 5/5 + Juice 5 项 + 难度 3 问回答全 ✓)。
2026-05-17-01-lens-hunt/
├── README.md
├── DESIGN.md
├── CHANGELOG.md
├── PLAYTEST_REPORT.md ← Acceptance 阶段
├── ACCEPTANCE_REPORT.md ← Acceptance 阶段
├── EXPANSION_PLAN.md ← Expansion 阶段
├── DAILY_REPORT.md
├── JOURNEY_MAP_FEEDBACK.md ← Step 7.5 走读
├── USER_PERSONA_FEEDBACK.md ← Step 7.5 走读
├── ACCEPTANCE_UPGRADE_FEEDBACK.md ← Step 7.5 走读
├── src/{index.html, main.js}
└── build/{index.html, main.js} ← 与 src 同步双份5 段必填(acceleration_rules 精简版 Expansion)
「在杂乱信息海里找出唯一不同」的瞬间多巴胺
不是「反应类」也不是「策略类」,是「认知集中类」。
| 变体 | 一句话 | 核心机制 |
|---|---|---|
| lens-hunt-pair 找一对 | 屏幕上有两个一样的东西,其它都不一样 | 视觉搜索 + 对比识别(更高维度) |
| lens-hunt-anomaly 找异常 | 100 个图标都在做 A,1 个在做 B | 行为模式异常识别(关卡引入运动) |
| lens-hunt-coop 双人协作 | 一人拿放大镜,一人指路 | 同设备协作,社交场景 |
| 方向 | 描述 | 商业匹配 |
|---|---|---|
| 侦探暗夜风 | 暗灰底 + 黄铜放大镜框 + 衰弱光晕 + 复古字体 | 中重度,可走"福尔摩斯解谜" 主题付费 |
| 童趣发现风 | 明亮配色 + 卡通图标海 + 圆润放大镜 + 萌系反馈 | 轻度,可走"找小怪兽" 主题,亲子向 |
| 天 | 任务 |
|---|---|
| D1 | 加音效(命中"叮"+ 错误"咚"+ 接近目标低频脉冲)+ 色弱 toggle |
| D2 | 触屏长按 = 放大镜逻辑改造 + 关 8 调难度 |
| D3 | 4 主题包(默认 + 侦探暗夜 + 童趣发现 + 科幻霓虹)切换功能 |
| D4 | 排行榜 + 每日挑战(一局固定种子) |
| D5 | 找一对 / 找异常 两个变体玩法 |
| D6 | QA + 5 人玩家盲测 |
| D7 | 上 itch.io demo 试水 |
门槛:D2 结束验证触屏;D4 结束验证排行榜留存;D7 公测验证留存率 > 30%。
玩家通过控制圆形放大镜在密集噪点海里搜索一个目标像素,单击命中。
| 镜头 | 实现位置 | 通过 |
|---|---|---|
| L1 · 0.2s 反馈 | main.js drawLens() requestAnimationFrame 每帧重绘,鼠标移动 → 放大镜内容立刻刷新(< 16 ms) | ✓ |
| L2 · 3s 上手 | UI 一句话提示「移动鼠标搜索 · 放大镜里有 3x 细节 · 单击疑似位置」+ 第 1 关高对比度,玩家第一次移动就能看到红色目标 | ✓ |
| L3 · 60 局不重复 | buildLevel(lv) 每次随机生成 noise 位置 + 目标位置;8 关 × 8 种参数组合(颜色 / 形状 / 闪烁 / 亮度差)= 不会感到重复 | ✓ |
| L4 · 失败有情绪 | 点错:屏幕震动 + 红光闪 + "-3s" toast;时限到:弹出"差一点 — 它就在那里"提示(不羞辱) | ✓ |
| L5 · 再来一局钩子 | 结算屏显示评级 S/A/B/C + "+1234" 分数 + 一键再来按钮;通关后还能挑战更高分 | ✓ |
通过率:5/5 ✅
| 问 | 答 | 通过 |
|---|---|---|
| Q1 · 第 1 局难不难 | 关 1:800 噪点 + 纯红 #FF2030 + 20s 时限。新手 5-10s 内能完成;不会 0 秒输(最少需要扫描时间) | ✓ |
| Q2 · 第 3 局还想不想玩 | 关 3:1500 噪点 + 暗红 #AA2222。玩家发现"目标不那么显眼了",主动放慢扫描节奏,有"我能做得更好"的钩子 | ✓ |
| Q3 · 第 5 局有没有变化 | 关 5 引入 #7B3A2A 棕红(极接近噪点);关 6 切到"形状区分"(方块 vs 圆点);关 7 闪烁;关 8 1 像素亮度差。每 1-2 关引入新维度 | ✓ |
| Juice | 实现位置 |
|---|---|
| J1 粒子 | main.js:spawnParticles(x, y, 14, '#ffd700') 命中时喷 14 颗金色粒子,受重力,0.6-1.0s 消散 |
| J2 屏幕震动 | main.js:triggerShake(6, 0.18) 点错时 6 px 偏移,180 ms 衰减;stage.style.transform 注入 |
| J4 缩放反馈 | main.js:state.targetScale = 1.4 命中瞬间目标 1.0→1.4→1.0 弹性 500 ms |
| J5 颜色闪烁 | main.js:flashColor('rgba(255,210,90,0.55)', 240) 命中金光 240ms;flashColor('rgba(255,30,30,0.45)', 140) 错误红光 140 ms |
| J6 放大镜拖尾 | main.js:state.lensTrail 维护 4 帧位置历史;drawTrail() 以 25%/15%/8%/3% alpha 描白色圆环 |
实现 5 项 / 最低 4 项 = 通过
| 关 | 噪点 | 颜色 | 形状 | 闪烁 | 时限 |
|---|---|---|---|---|---|
| 1 | 800 | #FF2030 纯红 | dot | — | 20s |
| 2 | 1200 | #DD2828 | dot | — | 18s |
| 3 | 1500 | #AA2222 暗红 | dot | — | 16s |
| 4 | 1800 | #882244 紫红 | dot | — | 14s |
| 5 | 2200 | #7B3A2A 棕红 | dot | — | 12s |
| 6 | 2500 | #A04848 | square | — | 12s |
| 7 | 2800 | #A04848 | square | 0.5s 闪烁 | 11s |
| 8 | 3000 | #A04848 | square | — | 10s(brightHint 极弱光晕辅助) |
| 维度 | 本轮 | 与已有 121 个原型对照 |
|---|---|---|
| input | 鼠标 X-Y 连续位置 + 单击 | 与 04-wave-rider / 07-shadow-mirror / 10-trail-spike 同方向,但 concrete「同时看放大镜内 + 屏幕全局」是 split attention 类,未有 |
| action | 局部放大镜 + 视觉搜索 + 隐藏目标定位 | ⭐ 513 系列首次(区别 02-pop-chain 全局连锁、05-charge-volley 瞄准发射、07-one-wash BFS 染色) |
| loop | 8 关递增 + 累计分 | 与 07/12/13 同方向 ✅ |
| failure | 时限到 / 点错 5 次双限 | 组合形式新(与 03/05/06/08 各项相似但组合不同) |
1⭐ + 3✅ 通过 ≥3 维换题门槛。
| 时刻 | 玩家动作 | 设计意图 | 实测推演 |
|---|---|---|---|
| 0 - 3s | 看 UI 看一句话提示 → 移动鼠标 | L2 上手 | 第 1 关 800 噪点 + 纯红,玩家移动放大镜立刻看到红色目标 |
| 3 - 8s | 把放大镜移到红色处 → 单击 | 命中验证 | 命中容差 ±14 px,玩家 3-5 次扫视内能找到 |
| 8s | 命中后看 J1 J4 J5 J6 反馈 | 爽点验证 | 14 颗金粒子 + 全屏金光 + 目标弹性放大 + 拖尾 → 第一次"啊哈" |
| 8-30s | 关 2 关 3 关 4 | Q2 第 3 局 | 噪点逐步加多 + 颜色变暗,玩家感受到"需要更仔细" |
| 30-60s | 关 5 关 6 | Q3 第 5 局 | 关 6 切到方块形状区分,玩法瞬间不同;玩家可能错一次后理解 |
| 60-90s | 关 7 关 8 | 极限测试 | 关 7 闪烁要等时机 = 张力陡升;关 8 1 像素亮度差 + 微光晕辅助 = 终极考验 |
| 结算 | 看评级 + 一键重试 | L5 钩子 | 没通关:"差一点 — 它就在那里" → 再来;通关:"S/A 评级" → 再来挑战更高分 |
答:刚好。关 1 时限 20s + 800 噪点 + #FF2030 纯红,新手 5-10s 内能找到。不会 0 秒输(需要至少 1-2 次扫视)。有"差一点"感(如果点错一次扣 3s,玩家依然有时间)。
通过:✓
答:想。关 3 把目标颜色降到 #AA2222(明显暗了),玩家会主动放慢扫描节奏,自己产生"我能扫得更仔细"的钩子。同时关数 +1 + 时间限 -2s 形成双重紧迫感。
通过:✓
答:有,每 1-2 关引入新维度:
不只是难度递增,是机制变化。
通过:✓
3 问全 ✓ → 复玩动力 + 策略空间 两项不被压低。
| 声明 | 代码验证 | 实测 |
|---|---|---|
| J1 粒子 | spawnParticles 函数 L116 + 命中处调用 L290 | ✓ |
| J2 屏幕震动 | triggerShake L143 + 错误处调用 L308 + stage.style.transform L160 | ✓ |
| J4 缩放反馈 | state.targetScale L249 + 命中处 L294 设 1.4 + 每帧 L353 衰减 | ✓ |
| J5 颜色闪烁 | flashColor L165 + 命中处 L291 调金光 + 错误处 L309 调红光 | ✓ |
| J6 放大镜拖尾 | pushTrail L170 + drawTrail L178 + 主循环 L357 调用 | ✓ |
5 项全部真实生效,无虚报。
| 维度 | 评 |
|---|---|
| 紧张感 | 时限倒计时 + 错误次数双限 → 后期高 |
| 张弛对比 | 命中后 0.7s 缓冲(J4 弹性 + J5 金光淡出 + 自动进下关)→ 张弛分明 |
| 反馈即时性 | 全 ≤ 16 ms(每帧重绘)✓ |
| 失败可恢复 | 错误只扣 3s 不结束(5 次累计才结束)→ 恢复空间充足 |
| 心流走廊 | 关 1-2 易→放松;关 3-5 难度上升→进入心流;关 6-8 机制变化→挑战极限 |
node --check src/main.js 通过(exit 0)drawImage 越界),但视觉合理(看不到屏幕外)→ 不修复✅ build/index.html 双击可直接打开(无 import、无 fetch、无外部资源)
✅ HUD / 结算 / 重试按钮均挂载 DOM 事件
✅ 触屏路径(mousemove → touchmove → click → touchend dispatch)已经过推演
俄罗斯方块 lite · 7 种方块下落 · 消行得分 · 顶到顶 = GG
点击地图节点放置塔 · 自动攻击 · 10 波敌人 · 守住基地
鼠标瞄准 + 单击发射 + 3+ 同色相邻 = 消除 + 浮动消失 + 通关或泡泡触底
拖拽画几条斜板 → 按 GO → 看小球被重力 + 反射推进,落入篮筐 = 过关。
鼠标瞄准 + 单击释放 + 同级球碰撞自动合成升级 + 容器顶部红线 = Game Over
—