LAB STORE
/ 2026-05-17
Lens Hunt
// daily · 2026-05-17 · #01

Lens Hunt 放大镜寻物

2026-05-17 · 第 1 轮加速循环原型 · `accelerated_cycle.md` 流程产出

GO 建造像素风

▶ 立即试玩 // play in browser

↗ open in new tab

📖 上手教学 // how to play

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,未通关按到达关数给降级。

控制

  • 鼠标移动 → 放大镜跟随
  • 单击 → 命中判定(容差 ±14 px)

设计意图

详见 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 同步双份

📊 评分维度 // verdict

30 秒可理解9
操作反馈9
核心循环9
复玩动力8
爽感8
策略空间7
开发完成度9
商业扩展潜力8
≥ 89
≥ 79

🚀 扩展路径 // what's next

5 段必填(acceleration_rules 精简版 Expansion)

1 · 好玩证据

  • 综合 8.4 GO(rubric 8 项,5 项 ≥ 8)
  • 5 镜头通过率 5/5(gameplay_principles §一)
  • Juice 5/12(≥ 4 最低线)
  • 难度 3 问全 ✓
  • 513 系列首次「视觉搜索 + 局部放大镜 + 隐藏目标」机制,差异化清晰
  • 单局 10-20s 紧凑 + 8 关 2-3 分钟整游 = 抖音零食式时长,传播潜力大

2 · 核心体验定义

「在杂乱信息海里找出唯一不同」的瞬间多巴胺
  • 视觉爽:放大镜里红色目标"啵"地放大 + 14 颗金粒子炸开
  • 认知爽:从"完全混乱"到"我找到了"的认知跃迁,每关都重新经历一次
  • 控制爽:放大镜跟手 < 16ms,扫描节奏完全在玩家掌控

不是「反应类」也不是「策略类」,是「认知集中类」

3 · 3 个变体方向

变体一句话核心机制
lens-hunt-pair 找一对屏幕上有两个一样的东西,其它都不一样视觉搜索 + 对比识别(更高维度)
lens-hunt-anomaly 找异常100 个图标都在做 A,1 个在做 B行为模式异常识别(关卡引入运动)
lens-hunt-coop 双人协作一人拿放大镜,一人指路同设备协作,社交场景

4 · 2 个美术方向

方向描述商业匹配
侦探暗夜风暗灰底 + 黄铜放大镜框 + 衰弱光晕 + 复古字体中重度,可走"福尔摩斯解谜" 主题付费
童趣发现风明亮配色 + 卡通图标海 + 圆润放大镜 + 萌系反馈轻度,可走"找小怪兽" 主题,亲子向

5 · 1 周垂直切片

任务
D1加音效(命中"叮"+ 错误"咚"+ 接近目标低频脉冲)+ 色弱 toggle
D2触屏长按 = 放大镜逻辑改造 + 关 8 调难度
D34 主题包(默认 + 侦探暗夜 + 童趣发现 + 科幻霓虹)切换功能
D4排行榜 + 每日挑战(一局固定种子)
D5找一对 / 找异常 两个变体玩法
D6QA + 5 人玩家盲测
D7上 itch.io demo 试水

门槛:D2 结束验证触屏;D4 结束验证排行榜留存;D7 公测验证留存率 > 30%。

💡 设计文档 // design

一句话定义

玩家通过控制圆形放大镜在密集噪点海里搜索一个目标像素,单击命中。

5 镜头通过分析(gameplay_principles §一)

镜头实现位置通过
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

难度曲线(gameplay_principles §三)

通过
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 12 调料实现清单(≥4 项)

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 项 = 通过

关卡递增表

噪点颜色形状闪烁时限
1800#FF2030 纯红dot20s
21200#DD2828dot18s
31500#AA2222 暗红dot16s
41800#882244 紫红dot14s
52200#7B3A2A 棕红dot12s
62500#A04848square12s
72800#A04848square0.5s 闪烁11s
83000#A04848square10s(brightHint 极弱光晕辅助)

不做(约束声明)

  • 不接图片资源(纯 Canvas 渲染)
  • 不接音频(pure visual,本轮压缩范围)
  • 不存 localStorage
  • 不联网

与 dedup 4 维去重对照

维度本轮与已有 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 染色)
loop8 关递增 + 累计分与 07/12/13 同方向 ✅
failure时限到 / 点错 5 次双限组合形式新(与 03/05/06/08 各项相似但组合不同)

1⭐ + 3✅ 通过 ≥3 维换题门槛。

🧪 自测报告 // playtest

试玩路径推演

时刻玩家动作设计意图实测推演
0 - 3s看 UI 看一句话提示 → 移动鼠标L2 上手第 1 关 800 噪点 + 纯红,玩家移动放大镜立刻看到红色目标
3 - 8s把放大镜移到红色处 → 单击命中验证命中容差 ±14 px,玩家 3-5 次扫视内能找到
8s命中后看 J1 J4 J5 J6 反馈爽点验证14 颗金粒子 + 全屏金光 + 目标弹性放大 + 拖尾 → 第一次"啊哈"
8-30s关 2 关 3 关 4Q2 第 3 局噪点逐步加多 + 颜色变暗,玩家感受到"需要更仔细"
30-60s关 5 关 6Q3 第 5 局关 6 切到方块形状区分,玩法瞬间不同;玩家可能错一次后理解
60-90s关 7 关 8极限测试关 7 闪烁要等时机 = 张力陡升;关 8 1 像素亮度差 + 微光晕辅助 = 终极考验
结算看评级 + 一键重试L5 钩子没通关:"差一点 — 它就在那里" → 再来;通关:"S/A 评级" → 再来挑战更高分

难度 3 问(gameplay_principles §三)

Q1 · 第 1 局难不难?

:刚好。关 1 时限 20s + 800 噪点 + #FF2030 纯红,新手 5-10s 内能找到。不会 0 秒输(需要至少 1-2 次扫视)。有"差一点"感(如果点错一次扣 3s,玩家依然有时间)。

通过:✓

Q2 · 第 3 局还想不想玩?

:想。关 3 把目标颜色降到 #AA2222(明显暗了),玩家会主动放慢扫描节奏,自己产生"我能扫得更仔细"的钩子。同时关数 +1 + 时间限 -2s 形成双重紧迫感。

通过:✓

Q3 · 第 5 局有没有变化?

:有,每 1-2 关引入新维度:

  • 关 5:颜色相似度极致(#7B3A2A 棕红 ~ 噪点深色)→ "颜色不够区分了"
  • 关 6:换形状(方块 vs 圆点)→ "玩法换了"
  • 关 7:闪烁要等时机 → "等待 + 反应"
  • 关 8:1 px 亮度差 + 微光晕辅助 → "极限识别"

不只是难度递增,是机制变化

通过:✓

3 问全 ✓ → 复玩动力 + 策略空间 两项不被压低。

Juice 核对(Builder 声明 vs 真实生效)

声明代码验证实测
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 机制变化→挑战极限

bug / 边界

  • node --check src/main.js 通过(exit 0)
  • ✅ Canvas 初始化未对 fillRect 等 API 用异常路径
  • ⚠️ 放大镜在屏幕边缘 < LENS_R/3 时(鼠标接近角落)放大镜画面会黑掉一半(drawImage 越界),但视觉合理(看不到屏幕外)→ 不修复
  • ⚠️ 第 8 关 brightHint 光晕可能让人觉得"作弊";如未来调整可移除

静态可达

build/index.html 双击可直接打开(无 import、无 fetch、无外部资源)

✅ HUD / 结算 / 重试按钮均挂载 DOM 事件

✅ 触屏路径(mousemove → touchmove → click → touchend dispatch)已经过推演