先看结论:每 10 分,少一帧
在当前版本里,难度值从 30 开始。每得 10 分,容错帧数减 1;分数达到 280 之后,难度固定在 2 帧,不再继续下降。对应到代码就是这一行:level = 30 - Math.floor(score / 10),并且只在分数小于 281 时更新。
这里的“帧”不是画面帧率,而是游戏主循环被调用的次数。两次点击之间,计时器每走一帧加 1;走到当前难度值还没有新的点击,这一轮就结束。
| 分数 | 容错帧数 | 60Hz 下约等于 | 体感 |
|---|---|---|---|
| 0–9 | 30 | 500 毫秒 | 很宽裕,来得及看清 |
| 50–99 | 25–21 | 417–350 毫秒 | 需要开始专注 |
| 100–149 | 20–16 | 333–267 毫秒 | 要提前看下一块 |
| 150–199 | 15–11 | 250–183 毫秒 | 接近日常反应极限 |
| 200–249 | 10–6 | 167–100 毫秒 | 必须靠预判与节奏 |
| 250–279 | 5–3 | 83–50 毫秒 | 几乎没有犹豫空间 |
| 280 以上 | 2 | 约 33 毫秒 | 固定最高难度 |
30 帧到底有多长
如果屏幕以 60Hz 刷新,30 帧大约是半秒;20 帧约三分之一秒;10 帧约六分之一秒;2 帧只有约 33 毫秒。这个换算能解释为什么 100 分以后会突然“变难”:不是台阶变复杂了,而是留给你确认方向的时间少了一半。
刷新率更高的设备上,同样的帧数对应更短的真实时间。120Hz 屏幕上,30 帧只有约 250 毫秒。所以同一个分数,不同手机的手感可能不一样;这不是错觉,而是计时方式决定的。
为什么“点得快”不等于“跳得远”
每次成功跳跃会播放 26 帧动画。只有动画结束、帧计数回到 0 时,新的点击才会被判定为下一次跳跃并加分。动画还没结束时点击,会重置“多久没点”的计时,但不会立刻加分。
这意味着连点可以让这一轮不因超时结束,却不能代替判断方向。真正有效的节奏是:等奶蛙落稳,确认下一块台阶在左还是右,再点对应的一侧。点得早不如点得准。
不同分数段,练的东西不一样
- 0–100 分:练“视线提前”。奶蛙还在空中时,眼睛已经移到下一块台阶,别追着角色看。
- 100–200 分:练“先判断再点”。这个阶段时间还够,但已经不允许先点再找方向。
- 200–280 分:练节奏。此时容错低于普通反应时间,更多依赖手指的固定节拍和对台阶位置的预判。
- 280 分以上:难度不再增加,后面比的是稳定性和耐力,而不是新的机制。
三个常见误区
误区一:台阶有固定规律。当前版本里,每一步的方向都是独立随机生成的,左右各一半,并不会因为前几步连续向左就“该向右了”。
误区二:障碍物决定该点哪边。实际判定只看下一块台阶在左还是右,障碍物不参与点击判定。具体可以看障碍生成与判定的拆解。
误区三:分数越高,动画越快。动画长度固定是 26 帧,缩短的只有两次点击之间的容错时间。画面看起来更急,是因为你必须在更短的空档里做出决定。
怎么自己验证这条曲线
最直接的方法是录屏:用系统自带的 60fps 录屏,记录从奶蛙落稳到这一轮结束之间的画面,数一数大约隔了多少帧。也可以只记录“从多少分开始明显来不及”,再和自己的反应时间对照。两种方法都不需要改游戏,只需要多玩几轮。
如果你想把障碍因素单独拆出来,可以先把注意力只放在台阶方向上,暂时忽略障碍图案。等方向判断稳定了,再把障碍加回视野。
本文的帧数、分数阈值和动画长度来自当前版本源码中的难度计算与 26 帧跳跃动画。实际手感还会受屏幕刷新率、系统调度、设备性能和小程序版本影响;如果后续版本调整了参数,以游戏内实际表现为准。