<audio id="audio" title="12 | 理解心流：如何达到专注的沉浸体验？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/42/93/42a5454aaedf0358463b320c46dyyc93.mp3"></audio>

你好，我是Rocky。

今天我们来谈谈心流，以及心流在体验设计中的运用。

什么是心流呢？举个例子，当你坐在回家的地铁上，听郭德纲相声非常入神，导致坐过了站，又或者是为了追一部剧不知不觉直接通宵。**这种完全忽视了时间、空间，甚至自己的存在的体验就是心流体验。**当你从心流状态出来后，就会感觉恍如隔世一般。

心流是注意力的高级阶段。指的是当人们沉浸在当下的某个任务时，全神贯注、全情投入、无法自拔并享受其中的一种精神状态。

## 心流模型

为了帮助你更好理解这个概念，我们一起来看一下经典的心流模型图。在心流模型中，人根据挑战程度和技能水平的差异性，可以有八种不同的体验。顺时针依次为：兴奋、心流、控制、放松、无聊、冷漠、烦恼和焦虑。其中右侧4种是正向体验，左边4种是负向体验。

<img src="https://static001.geekbang.org/resource/image/bc/30/bce9ed20b2173dbc0fbd92189fafed30.png" alt="">

如果要达到心流状态，需要很高的技能要求与挑战难度，并且二者还要达到某种匹配或者平衡。正因这么高的门槛，心流被誉为世界上最美妙的感受之一。

- 如果技能要求高但是挑战性适中，你仅仅会感受到控制感。比如你开车过程就是这种体验。
- 如果挑战难度够了但是你的技术水平适中，这时候你会处于一种兴奋状态中，因为你还在探索自己的技能水平上限。比如小孩子刚刚学会滑板。兴奋状态比控制状态，更容易激发心流的产生。
- 如果挑战再次降低，远低于你的技能水平，你会感受到一种放松。比如你已经是一个滑板高手了，那么你在曾经练习滑板的空地上接着滑，你感受到的不是兴奋而是放松。
- 如果挑战性不高，但是技能要求适中，一般人都不喜欢做，会让人觉得无聊。比如干家务、做饭。
- 当然如果挑战适中，但技能水平很低，人会感觉烦恼。如果挑战难度再增加，人就会越发觉得焦虑。比如背单词这种枯燥体验。

在这个图中，越远离中心，你的这种感觉就会越强烈（不管是哪种状态）。拿心流为例，在你的技能水平越来越高后，你会尝试更具挑战的任务，然后你的心流体验就会越发强烈。

在用户体验领域，能让用户进入心流状态是非常困难的。但至少我们要注意，在上面那个图中，左边的四种体验在设计过程中我们要尽量避免，而右边的四种体验是我们可以去考虑的和努力争取的。

游戏设计的情况会更复杂一些。游戏的做法有些欲擒故纵。为了提升用户对游戏的兴趣，增加粘性，一般游戏会走两条路径逼近心流体验，参见下图。

- **恐怖类游戏**通常把挑战保持在远高于玩家能力可达到的水平，持续累积用户焦虑感，然后通过训练技能，跨过兴奋阶段达到心流体验。
- **放松类游戏**会先将挑战的水平保持在用户能力水平以下，待用户轻松上手后慢慢培养控制感，逐步达到心流体验。

<img src="https://static001.geekbang.org/resource/image/f9/d2/f97c34972e0463ac680de76fa91c92d2.png" alt="">

那么一个优秀的设计要如何做到心流体验，或者帮助用户达到心流体验呢？客观地说，很难。毕竟心流体验需要主观和客观条件都具备才行。优秀的设计无非是去创造更容易达成心流体验的客观条件。

那么达到心流状态的客观条件有哪些呢？以下几种条件非常重要：

- 在一个特定时间段里，有一个清晰有效的目标。这个目标必须明确。满足SMART原则，也就是必须是明确的（Specific）、可衡量的（Measurable）、可实现的（Achievable）、现实的（Realistic）、有截止时间的（Time-bound）；
- 在行动中，必须能够得到可测量、可感知到的及时反馈；
- 提供探测人效率极限的机会和途径，让人有主控感；
- 屏除干扰，有可以让人完全沉浸的环境营造。

在希望用户能沉浸在心流体验的用户体验设计中，任何不利于以上4个客观条件的设计，都是要避免的。那么具体一些，如何让设计满足上述客观条件，从而辅助用户更容易达成心流体验呢？下面我给你提了五个设计建议，你可以参考一下。

## 进度跟踪器

首先，在交互上我们要告诉用户当下任务进展到哪里了。如果我们要用户在整个任务的体验中是沉浸连续的，那么就需要有进度显示。这里的进度跟踪并不是指需要花费非常多时间的间断性查询任务（如快递寄送查询之类），而是沉浸式任务的进度跟踪。

进度跟踪应该告知用户：

<li>
他们当下完成了什么子任务？
</li>
<li>
目前的进展，用户在整个大的任务中的当前进展？
</li>
<li>
还需要哪些步骤？还需要多久？
</li>

不仅仅是游戏，有很多交互体验任务需要进度跟踪的。比如在线订购、复杂表单填写、复杂系统安装、应用和硬件设备开机首次使用的导引等等。下图是一个复杂表单填写的进度跟踪设计。

<img src="https://static001.geekbang.org/resource/image/7d/b7/7d5792d8bcdf19f6e74574a3ee9f00b7.png" alt="">

在进度跟踪设计中，不要欺骗用户。你要尤其注意以下两点：

- 不要出现嵌套进度，这样会让用户感到进度跟踪的混乱；
- 剩余时间要符合真实的执行周期。不要出现一个任务很快完成99%，但剩下的1%却要占用超长时间的情况，这样用户会有被欺骗的挫败感。

## 让用户选择，但不对用户提出问题

第二，在沉浸式交互过程中，要减少提问对话式的交互。减少用户被迫做决策的机会。

我举一个非常沉浸式的体验场景：三国里的三英战吕布。四方都沉浸在对战的心流体验中，刀光剑影，在马上打的近百回合，难解难分，这场战斗才会传为佳话。

我们来设想一下，如果三英战吕布像回合制游戏设计的那样，英雄们在每一回合战斗时都有个弹窗提醒，让英雄选择是是攻击还是躲避，如果是攻击的话还需要选择攻击目标以及招数等等。这样的话还会有沉浸式的精彩打斗吗？

所以说不要在心流体验过程中出现对话框。提供的选择很重要，但是实现方式并不是对话框，而是如让用户主动来选择。**让必要的选择近在咫尺，同时提供快捷键供专家用户使用。**不要让用户在多个选择中简单去寻找，不然用户的专注力一定会被破坏。

设计师的艺术创作是一种典型的心流体验。很多设计工具都提供工具栏，让用户自己随手就可以用各种小工具来操作。Photoshop不仅仅让常用的快捷工具方便获得，而且还隐藏掉一部分不常用的小工具以提升画布的尺寸，让设计师更容易沉浸在设计创作中。

<img src="https://static001.geekbang.org/resource/image/1a/0c/1ac3308b18d1d13facb616a5356c980c.jpg" alt="">

## 提供不打扰式的反馈

第三，提供不打扰式的反馈。当用户交互时候，清晰地显示操作的状态和效果非常重要。这些交互信息必须容易看到且容易理解，但不能干扰或者阻止当前的动作，不打断正常的活动流和交互。

很多工具软件都有状态、导航栏。画板类工具比如Photoshop，还有标尺、缩略图、图层信息，在你放大画布图片的时候，会立即出现滚动条来暗示当前的屏幕聚焦画布的位置。这些都是很好的不打扰式的状态反馈指示。当用户想起看，自然会看一眼，如果不想看，就会忽略它。下图我用红框圈起来的部分就是一些不干扰式状态反馈。

<img src="https://static001.geekbang.org/resource/image/61/3b/61c32ec92081yybed4b1dc9268e1073b.jpg" alt="">

很多游戏中都有类似游戏角色血量的设计。比较普通的设计就是有一个血量的状态条来显示当前还剩下多少血量，类似水笔的笔芯。有没有更好的沉浸式血量设计呢？

游戏《死亡空间》将关键战斗状态反馈融于游戏角色画面中（而不是浮现在屏幕上）。角色血量就显示在背后的生命系统数据槽中，而基于武器的数据则依附于武器本身。这种更为沉浸式的体验，已经把非打扰式状态反馈做到了极致。

<img src="https://static001.geekbang.org/resource/image/d9/f9/d94d25a295736ddc092e69277a6465f9.jpg" alt="">

## 异常出现的快速修复

第四，要考虑到异常出现的快速修复，毕竟再好的软件也很难做到没有Bug。心流体验的任务都有着较高挑战性和技能要求。对设计师、作家而言，任何一个创作过程都是宝贵的心流体验。如果不提供自动保存，一旦出现异常情况（比如断电、电脑死机等）导致整个创作过程丢失，损失是惨痛的。这也是用户最为抓狂的糟糕体验。

我憎恨word之类的软件，因为它们的自动保存做得很差。每次关掉word，都要蹦出一个对话框问我是否需要保存，如果不保留将临时提供文件最新副本云云。而真正到了自动恢复的时候，竟然还要提醒我要不要恢复到自动保存。

因为word有几次恢复后反而让我丢掉关键信息的糟糕体验，我在恢复还是放弃恢复之间经常会纠结很久。微软这种弹窗交互明显就是甩锅的设计，完全没有照顾到心流体验。

<img src="https://static001.geekbang.org/resource/image/c2/cf/c22d536e424e5606913c572cf53f99cf.jpg" alt="">

这里，我要感谢石墨在线文档编辑软件的自动保存。石墨完全是后台默默做着自动保存，即便电脑异常退出，重新打开后也不会出现询问是否恢复到自动保存的弹窗。我在使用石墨的过程中，也确实没有再被打断过创作灵感。

## 自动屏蔽不重要的打扰

最后，在沉浸式应用中，交互要帮助用户自动屏蔽不重要的干扰。用户沉浸在心流体验时，任何外部的干扰都要做到最小化影响。

最令沉浸在游戏中的用户崩溃的事情莫过于在通关关键时刻，猝不及防给你来一个电话，或者是一不小心误触到了某个通知消息，眼睁睁看着游戏界面被切出去导致游戏中断。

所以手机厂商纷纷推出了游戏模式/游戏助手，通过通知勿扰、最小打扰式来电胶囊显示、小窗口回复微信等手段，带给用户更好的沉浸式游戏体验。你可以参考下图里的华为游戏助手，通过这样的设计，如果你在吃鸡游戏中收到微信，就能快速回复并回到游戏中。

<img src="https://static001.geekbang.org/resource/image/0f/ed/0f2ca48fae0e8a39f9f32327453512ed.gif" alt="">

## 总结

好了，讲到这里，今天的内容也就基本结束了。最后我来给你总结一下今天讲的要点。

心流是注意力的高级阶段。心流是指当人们沉浸在当下的某个任务时，全神贯注、全情投入并享受其中而体验到的一种精神状态。在心流模型中，人根据挑战程度和技能水平的差异性，可以有兴奋、心流、控制、放松、无聊、冷漠、烦恼和焦虑八种不同的体验。

如果要达到心流状态，需要很高的技能要求与挑战难度，并且二者还要达到某种匹配或者平衡。在设计中我们要尽量避免用户感到无聊、冷漠、烦恼、焦虑。控制、放松、兴奋和心流的状态是我们可以去考虑的和努力争取的。

游戏的体验会分为两种路径让人达到心流状态，一个始于焦虑，一个始于放松。

满足心流的客观条件是：目标清晰，及时反馈和屏蔽干扰。要达到这样的条件，在体验设计中要考虑以下几点：

- 提供清晰的进度跟踪器；
- 通过工具栏或快捷栏方式提供选择，而非对话框；
- 提供不打扰式的状态栏、导航栏类似的反馈；
- 自动保存，异常出现快速修复，不要给用户弹窗决策；
- 在沉浸体验过程中，自动屏蔽不重要的打扰。

## 作业

最后，我给你留了一个小作业，从今天我讲的内容，结合你当下从事的设计，哪些点考虑到了减少对人心流的干扰呢？你最近一次进入心流状态是因为什么？
