一直都听说心流理论和游戏的关系很大。在寒假的时候,我也抽出时间去阅读了心流理论的原著《Flow》,感觉里面提到了很多非常有趣的想法,只可惜自己因为懒癌一直没有整理成文。前段时间又看了一遍陈星汉的将心流理论运用到游戏中的论文,也在冰岩游戏组做了一个分享。这里就把分享的内容整理一下,也写一点自己简单的分析。
这篇分析将主要基于陈星汉的论文Flow in Games展开,辅以自己的一些思考www
心流是什么
心流(Flow)是一个心理学概念,由心理学家Mihaly Csikszentmihalyi提出。它代表了一种极度专注、投入、愉快的精神状态——我们完全沉浸于当前所做的事中,以致于暂时忘却了它以外的所有事物。
心流的状态是非常愉快而且具有奖励性的,在紧张比赛中的运动员、上台演出的舞蹈演员、进行极限运动的运动员等,在各自的活动中都有着不同的心流体验,但心流的特质是相同的。一个活动要达成心流,一般要包括以下的核心部分:
- 是一个要求技能的挑战性活动
- 行动和知觉的统一 [1]
- 明确的目标
- 直接的反馈
- 专注于当前的目标
- 有控制的感觉
- 失去对自我的把握 [2]
- 时间尺度的变化 [3]
[1] 原句为The merging of action and awareness. 个人的理解是从感受到外界信息到做出行动不需要做出思考,更倾向于直接反应,就如同身体自己知道要怎么做一样。
[2] 原句为The loss of self-consciousness. 这里的意思所有的精力都专注在了要做的事情上,以致于忘记了自我的存在。
[3] 也就是说自己感觉过了很久实际上只过了一瞬间,或反之。比如很专注玩游戏的时候会觉得一不留神一天就过去了。
在游戏中创造心流
游戏和心流有着非常密切的关系。心流理论的创始人也说过:游戏是最容易产生心流的玩意儿。正由于它是一个“心流机器”,能让人很轻松的进入到愉悦状态当中,所以我们才会对游戏乐此不疲。作为游戏设计师,应该如何在游戏中创造心流呢?陈星汉在它的毕业论文《Flow in Games》中提出了以下三点:
- 具有内在的奖励
- 提供和玩家能力相匹配的适当挑战
- 在游戏活动中的控制感
可以对照上面“心流是什么”的列表看一看,可以发现很多对应点。
首先说说内在奖励。内在奖励意味着游戏的意义是由内而发的,而不依赖外界的因素。举个例子:我写代码为了赚钱,那么写代码是由外界奖励驱动的;我写代码是因为写代码很好玩,那么写代码是由内在奖励驱动的。对应到游戏,它应该具有它本身的价值,让玩家有兴趣来主动探索。
然后是控制感的问题。玩家需要在游戏过程中有“自己能通过特定的操作达到想要的目标”的感觉,而游戏应该维持这种感觉的真实性和稳定性。例如,对于《血源诅咒》这样的ACT游戏,玩家就应该可以通过精确的时间判定来躲避,抢刀,反击和击杀怪物。而操作的结果应该以即时的形式反馈给玩家,让玩家知道自己的行为带来的结果,进而产生直观的感觉。
最后,游戏需要提供和玩家能力相匹配的适当挑战,而难点是在于我们要如何适应玩家的能力。
<img src=/images/flow-graph-1.png width=50% height=50%/>
要达到心流状态,游戏提供的挑战必须对应玩家的能力。挑战太低会感觉无聊,而挑战太高则会带来焦虑。在玩家不断成长的同时,我们也得提供和其成长的能力相对应的挑战。
<img src=/images/flow-graph-2.png width=50% height=50%/>
然而,不同人的心流曲线不尽相同。硬核玩家可能要求更高的挑战,而新手玩家需要游戏更简单一些。
因此,我们的游戏不能是静态的,它必须通过某种形式来动态的调整它的挑战。
静态难度调整
这种方法主要基于游玩测试(Playtesting)。找出一些玩家(通常是该游戏的受众玩家)来试玩该游戏,并根据他们的反馈来调整游戏的难度,在适应试玩家的偏好过程中,找出潜在的最优体验。
这样做是存在一些问题的。首先,这样调整出来的难度还是静态的,无法适应不同种类的玩家。其次,试玩的玩家不一定代表受众群体。
我们可以引入游戏的多难度选项来给玩家选择自己合适的难度,但是这样的难度其实还是静态的。在玩家选择难度时,它对该难度下的游玩体验如何并没有太多的预期,而只能简单估测。
动态难度调整
为了解决静态的难度无法适应多种玩家的问题,我们引申出动态难度调整(Dynamic Difficulty Adjustment, DDA)的概念。DDA需要內建在游戏的系统里。它通常需要检测玩家的表现和实力水平,根据他的水平动态的调整游戏难度。(通过生成怪物、怪物伤害和行为、补给数量等)。
一些比较明显的动态难度调整的例子包括L4D的导演系统、美国末日的动态补给生成等。
被动心流调整
需要注意的是,游戏的难度和玩家能力匹配不一定代表玩家一定进入心流状态。比如在超级马里奥这样的游戏里,玩家可能在关卡里随便跳来跳去都觉得很开心,但是动态反馈系统可能觉得玩家的表现很糟糕(因为他没有前进)。
因此,我们想要让玩家达到心流,就需要从难度调整更进一步,建立一个被动心流调整系统:
<img src=/images/flow-passive-flowadj-1.png width=80% height=80%/>
我们从玩家的行动获取数据,然后通过一个分析系统将数据进行分析,反馈给游戏系统,让它进行对应的行为改变。
很遗憾,这样的系统是很难制造出来的,因为:
<img src=/images/flow-passive-flowadj-2.png width=80% height=80%/>
可以看到,每一步操作,我们得到的数据都是不精确的。我们要怎么检测玩家的心流活动呢?他的游戏中表现并不能告诉我们他是否处于心流当中。而我们后续的数据分析和反馈都是基于一个不确定的数据,导致整个系统是不可靠的。
我们没法让游戏主动的改变来给玩家心流,这条路行不通。但陈星汉在论文中还提出了另外一个思路:主动心流调整。
主动心流调整
主动心流调整中的“主动”主要指的是玩家。如果在玩家的能力-挑战图中,让我们的游戏提供各种各样的选择:
<img src=/images/flow-active-adjust.png width=50% height=50%/>
在游戏的任意进程点,玩家都可以选择具有不同挑战度的各种行为。如果玩家觉得挑战太过简单,他可以选择进行更难的任务,或反之。
这样的话,我们的游戏系统是不变的,但玩家就可以根据自己的能力水平来选择自己想干的事了。这样的设计思路其实很像现在的各种沙盒游戏,但这个理念显然可以应用到任何游戏中。陈星汉本人就做了一个叫FlOw的游戏来验证他的这个观点,真的超厉害。
总结
我们可以通过以下这些方法建立游戏中的心流:
- 提供不同的难度和风格的游玩体验
- 创建一个动态难度调整系统,让玩家选择自己的游玩节奏
- 把动态难度调整选择放入游戏核心机制,让玩家在游玩过程中做出调整难度的选择