每日打字练习:我们的连续天数如何避免让你倦怠

每天的最低要求越小,每日打字练习的效果就越好。在本站,保持连续天数只需每个 UTC 日完成一次有效测试,30 秒的测试和一个小时的练习算法一样。我们这样设计,是因为打字练习的连续记录应该让你愿意回来,而不是变成一件让你厌烦的苦差事。

我们争论最久的功能,不是竞速赛道,也不是反作弊,而是连续天数。

连续天数确实有效。用过语言学习应用的人都知道那种感觉:晚上 11 点 50 分打开应用,只为打一句话,好让数字不归零。我们想要前者,不要后者。下面是我们做出的决定和具体数字,你可以自己判断我们做得对不对。

什么算入打字连续天数?

连续天数是至少完成一次有效测试的连续天数。一次就够。四分钟的练习和一个小时的练习延长连续天数的效果相同,当天之后做的任何事都不会改变它。禅模式不算,因为禅模式的成绩从不上传,而且我们不希望一个不做测量的模式来承载习惯指标。

日期按 UTC 计算,我们预计这是被问得最多的决定。原因和代价写在下文。

提醒,以及它不会做什么

如果你最后一个计入的日子是昨天,而今天还没打字,连续天数就处于“即将中断”状态,首页上的连续天数标签会这样显示。提醒就只有这么多。没有推送通知,没有邮件,图标上没有红点,除非你主动订阅了每周摘要,它每周会用一行纯文本提一次你的连续天数。

这是有意为之,也很可能让我们少了一些回访用户。在习惯类应用里,“连续记录即将中断”的推送通知是常见的召回手段,而按我们的经验,也是最招人烦的手段之一。我们的方案写的是“除非用户主动订阅,否则不发送连续记录中断通知”,我们也一直坚持了下来。

如果某条成绩的时间早于你最后一个计入的日子(比如笔记本时钟不准,或离线成绩延迟同步),我们会计入这次测试,但不改动连续天数。时钟误差不该让任何人损失一百天。

XP 和等级如何计算

XP 是衡量练习时间的“货币”。它刻意不作为排名依据,原因见后文。

每次有效的非禅模式测试:

  • 基础 XP 为每秒有效打字时间 2 点,再按准确率折算。30 秒、准确率 95% 得 57 XP。“有效”指计入的时长减去离开键盘的秒数,所以把标签页开着不动是得不到任何 XP 的。
  • 每次测试最多计 600 秒,所以 30 分钟的测试和 10 分钟的测试基础 XP 相同,马拉松式练习不会占绝对优势。
  • 加成倍数相加计算:100% 准确率 +50%,引文测试 +50%,开启标点 +40%,开启数字 +10%。一次开启标点的完美引文测试按 2.4 倍计算。
  • 固定奖励:UTC 日首次测试 +50,参加每日挑战 +50,参加竞速 +25,赢得竞速再 +25,刷新个人最佳 +20。

等级曲线比较平缓:从等级 L 升到 L+1 需要 100 × L^1.3 XP。累计下来,100 XP 升到 2 级,约 1,370 XP 升到 5 级,约 7,700 XP 升到 10 级,约 40,300 XP 升到 20 级,约 343,000 XP 升到 50 级。

换算成练习量来看 50 级:一次完美的 30 秒测试在奖励前得 90 XP(基础 60,加上完美准确率的 50%),所以大约需要 3,800 次这样的测试。每天练 15 分钟、准确率 95%,加上首测奖励约得 1,760 XP,大约六到七个月可以达到 50 级。100 级需要约 170 万 XP。等级名称从“新手”开始,经过“打字员”“键匠”和“文字匠”,到 50 级的“传奇”和 100 级的“不朽”。没错,最顶上那几个名字是故意起得有点夸张的。

以访客身份使用时,你的浏览器会对本地副本应用同样的规则。登录才能把连续天数和每日排名保存在账号上;如果你用新账号登录,本地进度会合并一次,上限为 5,000 XP、500 次测试和 30 天连续记录。设置上限是为了防止有人借合并制造纪录;这也是为什么只有登录账号才能拿到 100 天徽章。

连续天数的里程碑在 3、7、14、30、60、100、180 和 365 天,其中 3、7、30、100 和 365 天有徽章。我们预计 365 天徽章几乎没有人能拿到,这正是它存在的意义。

为什么连续天数要这样设计

连续天数由五条规则决定。每一条都来自同一个问题:一个习惯指标应该奖励什么?

排名里没有“量”的分数

XP 衡量投入的时间,所以奖励的是练习量。设想两个打字者。一个速度 60 WPM,每天只做一次 30 秒测试,准确率 98%,得约 59 XP,加上 50 的首测奖励,每天约 110。另一个速度 45 WPM,每天以 95% 的准确率练 15 分钟,得约 1,760。打得慢的那个人得到的 XP 是前者的 16 倍。

作为练习货币,这个结果是对的,因为练习需要的正是在键盘上花的时间。可作为排名,它就错了,排名应该说明谁打得最快、最干净。如果按 XP 排榜,第二个人会排第一,而往上爬的办法就是多花时间。

所以 XP 从不用于给任何人排名。排行榜按速度排名,并设有准确率门槛;XP 只显示在你的成绩和个人主页上,从不出现在榜单上。竞速的结果页也遵循同样的逻辑:名次、WPM 和准确率排在前面,XP 那一行字很小,放在下面。

没有任何东西可买

没有可消费的货币,没有商店,没有外观升级,也没有不登录就会衰减的东西。连续天数是你练习过的日子的记录。一旦其中任何一部分可以花钱买,这个数字的意思就变成了“练过,或者付过钱”,也就什么都说明不了了。商店还会让网站有动机去制造你对失去进度的焦虑,因为焦虑正是“保护”服务的卖点。我们不想让代码里存在这种动机。

历史记录不设付费墙

你的历史记录不限数量、完全免费,连续天数也从不依赖任何付费功能。连续天数存在的意义,是生成历史记录页上的 90 天趋势图,而这张图是检验习惯是否奏效的唯一诚实方式。把旧成绩锁起来,会藏住你最需要看到的平台期。

没有“失败”页面

连续天数中断时(它一定会中断),标签显示为 1,你的最佳连续天数保持不变。不会弹出恢复它的提议。

习惯研究支持在这里宽容一些。在伦敦大学学院 Phillippa Lally 主持的一项研究中,对于研究者能够建模的参与者,养成一个新习惯平均需要 66 天,而错过一次机会“并没有显著影响习惯形成过程”。把错过一天当成灾难,会让人觉得这个习惯很脆弱,有些人宁可放弃,也不愿从 1 重新开始。

我们考虑过语言学习应用出售的那种“连续天数冻结”,最后认定:让中断的连续记录感觉像一次错过的购买,恰恰是我们想避免做出来的东西。

UTC 日期

日期的分界必须对所有人相同,否则排行榜和每日挑战就没法共用它。如果用本地时间,每日引文对每个访客的更换时刻都不一样,“今日最快”榜单比较的也就不是同一天。UTC 是服务器无需询问浏览器就能算出的唯一分界。

代价是,对加州的打字者来说,日期在下午 4 点或 5 点翻篇,对德里的打字者来说是早上 5 点 30 分。我们考虑过为每个账号设置小时偏移,但第一版决定不做:它多了一条需要解释的规则,而一个需要一整段文字来解释的连续天数,已经输了一半。每日挑战的倒计时会显示当前这一天还剩多少时间。如果以后重新考虑这个问题,会采用一次性设置的偏移,本文也会注明。

应该多久练一次打字?

把最低要求定得低一点。需要 15 分钟才能保持的连续天数,在第一个忙碌的日子就会断掉;状态不好的日子,一次 30 秒的测试就够了。40 到 80 WPM 练习计划就是围绕这一点设计的:完整练习 15 分钟,最低要求是一次测试。

不要在半夜追首测奖励。+50 的存在,是为了让短时间练习也值得,不是为了让你熬夜。如果已经是 UTC 时间晚上 11 点 55 分、你也累了,那连续天数没有睡眠重要。

把每日挑战当作默认的练习。它只有一段引文,通常不到一分钟就能完成,榜单每天重置,所以榜首是够得着的。游戏化设计师周郁凯(Yu-kai Chou)也持同样观点:“标准的从第一名到最后一名的排名,只能激励靠近顶部的一小群人”,他建议让重置频率与人们行动的频率相匹配,频繁的行动就每天重置。

看趋势线,而不是连续天数。历史记录页上的 90 天图表,才是连续天数的意义所在。如果曲线在上升,即使连续天数断了,它也已经完成了使命。如果曲线连续一个月持平,说明连续天数让你一直在打字,却没让你变快,这时就该打开练习里的薄弱按键练习,而不是做平常的测试。

我们在观察什么

我们还没有可以公布的留存数据。等有了,我们要回答的问题是:保持 30 天连续记录的人,从 90 天趋势来看是否在变快,还是只是在保持连续记录。如果是后者,那就是设计错了,而第一个要改的,就是让每日挑战成为计入连续天数的那件事。

常见问题

应该多久练一次打字?

要养成习惯,少量多次胜过偶尔的马拉松。我们的连续天数每天只要求一次有效测试;练习计划建议有空时练 15 分钟,没空时做一次短测试。

每日连续天数什么时候重置?

UTC 午夜。每日挑战的倒计时会显示当前 UTC 日还剩几个小时,无论你住在哪里,都能看到“今天”何时结束。

每日挑战需要完美的准确率吗?

不需要。你想玩多少次都行,取最佳成绩,但只有准确率达到 90% 或以上的成绩才会进入每日榜单的排名。

资料来源