目录

封面

扉页

版权

内容提要

其他

作者简介

译者序

前言

第一部分 互动叙事基础

第1章 故事叙述

1.1 故事叙述的历史

1.2 两种思维方式

1.3 故事的本质

1.4 视觉效果的专制

1.5 空间思维

1.6 时间的不连续性

1.7 本章小结

第2章 交互性

2.1 我对交互性的界定

2.2 第二人称视角的洞察力

2.3 人类理解模型

2.4 自我克制

2.5 交互的程度

2.6 那又如何

2.7 本章小结

第3章 互动叙事

3.1 互动叙事作为游戏概念的外延

3.2 互动化的电影

3.3 情节与交互性

3.4 独一无二的互动叙事

3.5 个体化

3.6 互动叙事中不能包含什么

3.7 本章小结

第二部分 思维方式

第4章 抽象机制

4.1 公正问题

4.2 科学

4.3 金融

4.4 上述例子的中心思想

4.5 扮演上帝的角色

4.6 把中心思想转译为故事

4.7 本章小结

第5章 用动词思考

5.1 动词与名词

5.2 案例聚焦：多媒体

5.3 动词思考方式入门

5.4 本章小结

第6章 数学之苦劳

6.1 拥抱数学

6.2 因果关系

6.3 作为比喻的建模过程

6.4 本章小结

第7章 两种文化的问题

7.1 神经生理学基础

7.2 游戏与故事的交往史

7.3 劝诫和预测

7.4 本章小结

第三部分 进化式策略

第8章 分支树

8.1 整体游戏结构

8.2 解决方案：状态变量

8.3 本章小结

第9章 互动小说

9.1 文字冒险游戏

9.2 图像冒险游戏

9.3 互动小说（Interactive Fiction，IF）：文字冒险的继承者

9.4 谜题

9.5 真实案例

9.6 互动小说机理剖析

9.7 互动小说算是互动叙事吗

9.8 互动小说的未来

9.9 本章小结

第10章 角色扮演游戏

10.1 动词

10.2 RPG缺乏创新的余地

10.3 考拉熊与山羊：过度特化的弊端

10.4 MMORPG有希望吗

10.5 受众的问题

10.6 本章小结

第11章 电子游戏

11.1 固化的故事

11.2 多种结局

11.3 分支树

11.4 开放式故事

11.5 完全由玩家驱动的故事

11.6 故事叙述与成本问题

11.7 本章小结

第四部分 组件技术

第12章 建模

12.1 媒体

12.2 建模基础

12.3 增加复杂性

12.4 抽象化的步骤

12.5 关键细节

12.6 本章小结

第13章 有界数值

13.1 超限

13.2 有界数值

13.3 钟形曲线与人

13.4 技术细节

13.5 调和操作

13.6 布尔运算

13.7 本章小结

第14章 人格模型

14.1 完备

14.2 精炼

14.3 正交

14.4 对行为的界定

14.5 过度特化

14.6 人格属性的类型

14.7 在三个核心人格属性的基础上扩展

14.8 外形特征

14.9 情绪

14.10 倾向性的计算公式

14.11 两道练习题

14.12 本章小结

第15章 命运驱动故事世界

15.1 倾听

15.2 思考

15.3 发言

15.4 计分系统

15.5 本章小结

第16章 动词与事件

16.1 动词的数量问题

16.2 通用的动词处理机制

16.3 句子结构

16.4 计划与事件

16.5 HistoryBooks

16.6 本章小结

第17章 语言

17.1 通过输入设备“说话”

17.2 Sapir-Whorf假说

17.3 模拟现实语言

17.4 创建新语言

17.5 本章小结

第18章 脚本语言

18.1 互动叙事所需的语言设施

18.2 文本生成的脚本示例

18.3 本章小结

第19章 互动叙事引擎

19.1 基于事件的互动叙事引擎

19.2 基于时间点的引擎

19.3 基于情节的引擎

19.4 本章小结

第20章 高层结构

20.1 剧情节点

20.2 目标

20.3 预期的问题

20.4 本章小结

第五部分 回顾与展望

第21章 学术研究

21.1 戏剧管理器

21.2 为非玩家角色指定目标

21.3 新式的Comme il Fault互动叙事引擎

21.4 Prom Week

21.5 关门放狗

21.6 IRIS项目

21.7 本章小结

第22章 展望未来

22.1 互动叙事前途无量

22.2 消极的预测

22.3 积极的预测

22.4 本章小结

延伸阅读

索引

游戏设计与开发

游戏大师Chris Crawford谈互动叙事

方舟　译

[美]Chris Crawford　著

人民邮电出版社

北京

图书在版编目（CIP）数据

游戏大师Chris Crawford谈互动叙事/（美）克劳福德（Crawfor,C.）著；方舟译．--北京：人民邮电出版社，2015.5

ISBN　978-7-115-38806-3

Ⅰ．①游…　Ⅱ．①克…②方…　Ⅲ．①游戏——软件设计　Ⅳ．①TP311.5

中国版本图书馆CIP数据核字（2015）第060255号

版权声明

Chris Crawford on Interactive Storytelling (2nd Edition)

ISBN: 978-0-321-86497-0

Copyright © 2013 Chris Crawford.

Authorizcd translation from the English language edition published by New Riders.

All rights reserved.

本书中文简体字版由美国New Riders出版公司授权人民邮电出版社出版。未经出版者书面许可，对本书任何部分不得以任何方式复制或抄袭。

版权所有，侵权必究。

◆著　[美]Chris Crawford

译　方舟

责任编辑　陈冀康

责任印制　张佳莹　焦志炜

◆人民邮电出版社出版发行　　北京市丰台区成寿寺路11号

邮编　100164　　电子邮件　315@ptpress.com.cn

网址　http://www.ptpress.com.cn

北京天宇星印刷厂印刷

◆开本：800×1000　1/16

印张：18.5

字数：423千字　　2015年5月第1版

印数：1-3000册　　2015年5月北京第1次印刷

著作权合同登记号　图字：01-2012-8612号

定价：59.00元

读者服务热线：(010)81055410　印装质量热线：(010)81055316

反盗版热线：(010)81055315

内容提要

互动叙事是一个新兴的领域，它超越了以往的电子游戏概念，试图在既有的人机交互基础上开辟出更加引人入胜的娱乐体验。本书的作者是电子游戏领域的“鼻祖”级人物 Chris Crawford，书中凝结了作者在互动叙事领域众多的经验和思考。

全书分5个部分，分别从互动叙事基础、思维方式、进化式策略、组件技术和回顾和展望几个方面介绍了互动叙事。作者根据自身的经验，对互动叙事做出了尽可能详细的阐释，极大地扩展了人们对已有娱乐体验和娱乐形式的认知。

本书重在介绍互动叙事的基础理论，同时也涉及一些和游戏设计相关的内容。游戏设计师以及希望在其他产品或服务中纳入游戏娱乐元素的从业人士都可以阅读本书，你将从中收获很多值得反思、参考和借鉴的内容。

其他

本书献给 Storytron 开发团队的 Louis Dargin、Facundo Dominguez和Laura Mixon，你们把互动叙事技术提升到了新的高度。

作者简介

Chris Crawford 于 1975 年在美国密苏里大学（University of Missouri）获得物理学硕士学位。在从事了数年物理教学工作之后，他于 1979 年加入 Atari[1] 并成为游戏设计师，任职期间开发了数款游戏，包括Energy Czar（关于能源危机的教育模拟游戏）、Scram（核电站模拟游戏）、战争游戏Eastern Front（1941）、Gossip（社交游戏），以及关于亚瑟王传说的游戏Excalibur。

随着Atari在1984年的解体，Crawford转向Macintosh平台的游戏开发，其间开发的游戏包括策略游戏《Balance of Power》、战争游戏《Patton Versus Rommel》、社交游戏《Trust ＆ Betrayal》、生态环境模拟游戏《Balance of the Planet》，以及战争游戏《Patton Strikes Back》。时至1992 年， Crawford 决意离开游戏设计领域，倾力专注于他看好的互动叙事（interactive storytelling）领域，创建了互动叙事系统化技术并于1997年予以专利化。他目前通过其公司网站storytron.com[2] 致力于该技术的商业化发展。

Crawford 拥有5 本著述：The Art of Computer Game Design（计算机游戏设计艺术，1982 年），现已被公认为游戏设计领域的经典之作；Balance of Power（1986年）；The Art of Interactive Design （互动设计艺术，2002 年）；Chris Crawford on Game Design（2003 年）；Chris Crawford on Interactive Storytelling（本书第一版，2004 年）。

Crawford 于1987年创立了游戏设计领域的第一本期刊Journal of Computer Game Design。他还创立了 Computer Game Developers’Conference（计算机游戏开发者大会，现已更名为 Game Developers’Conference，GDC）并担任主席。

他在全球范围内的会议上和院校里发表了数以百计的演讲，还发表了为数众多的杂志文章和学术论文。

Crawford 在 1999 年和 2002 年的 NASA Leonid MAC 空间任务中担任计算机系统设计师和顾问，另外他还从事一些数据分析的工作。他和妻子住在美国俄勒冈州南部地区。你可以在他的个人网站www.erasmatazz.com上找到更多关于他的信息。

注　释

[1].以出品电子游戏及相关设备著称的公司，其历史详见：http://en.wikipedia.org/wiki/Atari

[2].目前该网站已暂停商业运营，处于“休眠”状态。Chris Crawford 在网站上撰文两篇，总结了阶段性失败的经验教训，并阐述了未来的计划。详见：http://www.storytron.com/

译者序

传奇人物Chris Crawford

作为电子游戏领域的“鼻祖”级人物，Chris Crawford 是一个颇具争议的传奇。他在 20 世纪 80年代的经历成就了他在游戏产业的至高地位：他设计开发了的几部意义重大的电子游戏产品；他撰写了游戏设计领域的第一本经典著作《计算机游戏设计艺术》（The Art of Computer Game Design）；他在自家客厅举办的沙龙逐渐发展成为延续至今的游戏产业规模最大的专业性年会游戏开发者大会（Game Developers Conference，GDC）。

他始终把电子游戏当做一种艺术形式来探索，这使得他与在商业上逐渐走向成熟的游戏产业最终产生了隔阂。他承认自己关于游戏设计的观点是不同寻常和具有争议性的：他批评那些只提供感官刺激的打打杀杀的游戏，说那只不过是“跑来跑去、杀人或者被杀”的简单把戏；他认为文字冒险游戏“与冰箱里的照明灯一样有趣”；他觉得 Commodore 64 和 Apple II 等早期个人计算机的功能“太弱”，以至于“在它们上面做不出什么有趣的游戏”。

终于，在 1992 年的计算机游戏开发者大会（CGDC，即后来的 GDC）上，Chris Crawford 发表了他自认为最优秀的“巨龙演讲（Dragon Speech）”。在这次演讲中，他把作为艺术媒体的电子游戏比喻为巨龙，声称他与电子游戏产业的目标相左；他认为游戏产业专注于“深度”（即在既有形式上予以丰富），而自己则专注于“广度”（即探索全新的娱乐形式）。他得出的结论是自己必须离开游戏产业，转而追寻“广度”的梦想。最后，他以出人意料的方式结束了演讲。

“我追寻巨龙已久，我投身其中……突然之间，我看到了它！它就在那里，就在我面前……你比我想象的大得多，但是我并不喜欢你这副样子。你光芒四射、美不胜收，但是你也丑陋无比。你的气息里弥漫着死亡的臭味……是的，你可以鄙夷地看着我。你不但吓到了我，还伤害了我！我感到你的利爪撕裂了我的灵魂！我终有一死，但是在那之前，我要面对你，与你针锋相对。我要看穿你的双眼，刺探你的灵魂深处。我现在还没有那个实力，我的经验也还不足，所以我要从现在开始努力。今天，此时此地，我要与你开始战斗！拿剑来！”。

他拿起准备好的剑，喊道：“为了真理！为了大美！为了艺术！进攻！”然后，径直走出了演讲大厅，象征着他从此退出电子游戏界。一代游戏大师从此踏上了互动叙事的坎坷征途。

互动叙事之蹊径

自1992年的激情演讲之后，他历经十几年的默默探索，终于在2008年公布了自己设计的互动叙事系统Storytron。令人遗憾的是，Storytron最终于2012年年底停摆。在Storytron网站发表的两篇文章当中，Chris Crawford 总结了自己的失败教训，并且展望了未来的计划。他认为，Storytron失败的原因在于系统太过复杂，以至于鲜有人能够完全理解并且掌握如何创作足够有趣的故事世界；因此他接下来的计划是简化整个互动叙事系统，以便让更多创作者能够掌握并且使用。时至今日（2014年年底），他仍然在潜心探索的过程当中（目前他正在埋头设计开发代号Siboot的故事世界），并且不断地在个人网站（www.erasmatazz.com/）上发表文章，公布自己的探索进展和心得。

本书的价值和意义

不难看出，在 Chris Crawford 投身互动叙事 20 多年之后的今天，互动叙事仍然是超前甚至激进的，这一点也很好地体现在本书当中。

• 全书中探讨的各类议题，往往是点到为止，让人欲罢不能，却又感到继续深入的难度。作者自己也明确表示，由于互动叙事的相关理论都还处在萌芽阶段，因此深入探讨技术实现的细节往往意义不大。

• 作者对互动叙事当中各种基本概念的阐释仍然存在诸多含混不清、模棱两可，甚至自相矛盾的地方。恰恰因为互动叙事是一个全新的、鲜有人涉足的领域，所以没有人能够完全说清楚它究竟是什么，基本概念也尚无定论。作者深知这一点，所以他的态度是读者们应该同他一起探索、一起思考，而不应该一味地接受他的观点或思路——正如作者自己所说：“如果你认同本书中的所有观点，那么只能说明你读得还不够深入、不够仔细”。

• 本书没有提供设计和开发互动叙事系统的完整指南。作者根据自身的经验，对互动叙事可能涉及的重要议题做了力所能及的阐释。然而完整的互动叙事系统到底应该如何设计和开发，作者并没有给出答案。这一方面是因为他自己可能也不知道答案，另一方面也是因为他不希望让自己的想法限制读者的思路。

那么这样一本书，到底有哪些阅读的价值和意义呢？

• 拓展思路，探索未知。本书极大地扩展了我们对娱乐体验和娱乐形式的认知，告诉我们除了既有的娱乐形式之外，还可以有全新的发展。作者提醒我们，正处主流、如日中天的电子游戏并不是终极的娱乐体验和形式；面对取之不尽的故事叙述文化和不断壮大的计算机能力，一切皆有可能。

• 大师洞察，无出其右。作为互动叙事领域的核心探索者，Chris Crawford所积累的数十年的经验是该领域最宝贵的财富（且不说他在游戏设计领域积累的深厚经验）。作者从多次失败的实践经历当中获得的真知灼见很好地补充了学术研究的成果，是任何互动叙事探索者不可或缺的参考。

• 旁征博引，大开眼界。为了探讨互动叙事的潜力，作者不仅介绍了其他互动叙事探索者、研究者的理论和成果，还追根溯源，向我们介绍了互动叙事背后的庞大知识体系。从故事的本质到叙事理论，从人机交互到数学建模，从语言理论到社会学、心理学，作者为我们搭建的互动叙事知识体系不仅让人大开眼界，还是入门者的指路明灯。

互动叙事超越了既有的电子游戏概念，目标直指人类最根本的故事叙述活动，试图在既有的人机交互基础上开辟出更加引人入胜的娱乐体验。如此宏大的理想，岂是几年甚至几十年就能完全实现的！作者撰写本书的目的，正是抛砖引玉，吸引更多人涉足互动叙事领域，与他共同踏上激动人心的探索和创新之路。

此外，虽然作者在书中反复强调互动叙事与电子游戏的区别，并且认为互动叙事绝对不可能演化自电子游戏，作为译者的我仍然认为本书中阐述的许多内容对于游戏设计而言具有非常高的参考和借鉴价值，原因有三。

• 其一，互动叙事的基础知识体系与游戏设计的知识体系有交叠之处，游戏设计师以及希望在其他产品或服务当中纳入游戏娱乐元素的从业人士都可以从中找到值得反思、参考和借鉴的东西。

• 其二，互动叙事与游戏之间的区别并不是绝对的。对互动叙事的界定还有许多模拟两可和值得商榷的地方，连作者自己也常常在本书的阐述当中用游戏的概念泛指互动叙事产品，因此两者的交融似乎并不是完全不可能。

• 其三，游戏界内部同样存在希望实现突破性创新的从业人士；现今我们已经能看到不少志在创新的独立游戏开发者以及他们独树一帜的游戏作品。他们最终成败与否姑且不谈，充分吸收和借鉴互动叙事领域的做法完全有可能成为实现新突破的契机。

译后记

最初接触 Chris Crawford 的互动叙事理论大约是在 2005 年前后，对游戏设计感兴趣的我拜读了的作者 2003 年的著作 Chris Crawford on Game Design 之后，发现了互动叙事一书的第一版（2004 年出版）。几经周折买到了台湾译本《游戏大师谈数位互动剧本创作》，当即被作者描绘的互动叙事之宏大愿景深深吸引，从此踏上了互动叙事的“探索之路”。时至今日，我在 Storytron 提供的故事世界创作系统 SWAT 当中艰难跋涉的情景还历历在目。对于作者提出的一些激进观点，我大多持保留意见，认为凡事都没有那么绝对——这也正是 Chris Crawford 希望我们具备的心态。他撰写本书的根本目的是抛砖引玉，而不是言传说教。

与本书第一版相比，第二版在基本理念和概念的阐述上更加丰富和严谨。作者谦虚地承认自己文笔很糟糕，导致在阐述时经常胡言乱语，让人不知所云。作为译者，我的感觉是这么说有一半谦逊，也有一半事实。由于互动叙事当中的诸多基本概念没有达成领域内的共识，因此作者不得不从其他领域的术语当中选取自己认为合适的措词来描述互动叙事的概念。概念的借鉴和沿用难免造成界定上的困难和理解上的困扰（比如他有时候还会把互动叙事产品称为游戏）。译者在遇到书中含混不清或自相矛盾的地方时，尽可能地进行了行文上的梳理，并且在必要的时候追加了译注，以方便读者了解作者的用意。作者在书中提到了大量的理论和文化概念以及历史事件等，我尽可能地追加了相关译注，方便读者进一步参考。

由于“interactive storytelling”术语尚无统一的中文译法（有译作“交互式故事叙述”的），因此译者在采用“交互式故事叙述”译法的同时，借鉴采用了本书第一版的台湾译本的译法“互动叙事”。与前者相比，“互动叙事”显得更加简洁，方便行文和阅读。

对于书中频繁出现的一些关键术语，由于它们的中文译法有可能重叠——比如“storytelling （故事叙述、叙事）”与“narrative （叙事、叙述）”，“character （人物、角色）”与“role （角色）”——因此译者在翻译的时候根据上下文酌情进行了调整，同一术语在不同的语境中酌情采用了不同译法。归根结底，基本原则是在不影响理解的前提下方便阅读，尽量避免因为中文译法的措词而反复辨析的情况出现。

致谢

首先感谢人民邮电出版社的相关编辑，你们的辛勤工作使得本书的出版成为可能。感谢友人和编辑陈冀康邀请我翻译此书，更要感谢你对翻译工作的大力支持和宽容态度（我轻轻擦了擦额头上的汗）。感谢我的妻子于沛娟，感谢你容忍我利用本来可以伴你左右的大量业余时间投入翻译工作，并且对一些翻译和行文问题提供了建议。这本译作献给Marlene。

交流与反馈

关于本书的批评、赞美、意见、建议，特别是翻译错误，欢迎读者通过如下方式与我联系：

Email：noah.ark@gmail.com

新浪微博：@kingofark

Twitter:@kingofark

本书的勘误在Chris Crawford 豆瓣小组中持续维护，网址是：

www.douban.com/group/chriscrawford/

方舟·K][NGofARK

2014年秋于加拿大密西沙加市望云书斋

前言

互动叙事（Interactive Storytelling）[1] 是一个新兴的领域，于 20 世纪 80 年代末提出，于 90 年代得到了试验性的实践，在21世纪之前并未获得过高度关注。时至2010年，互动叙事已然成为热门话题。该领域的不成熟体现在诸多千差万别的发展思路和各执己见的激烈讨论当中。这种情形恰如盲人摸象：每个人都从自身特定的角度来考察互动叙事。影视制作人将它看作电影形式之一；电子游戏业内人士声称它是电子游戏领域的延伸；计算机科学家觉得它是范畴更宽广的人工智能领域的一部分；即兴表演艺术家们则认为它是即兴表演[2] 技艺的数字化形式。

然而实际上，互动叙事并非任何哪个领域的延伸或变体，我们必须把它当作独特的新事物来予以考察。关注上述所有其他及更多相关领域，固然有助于我们了解互动叙事所面临的挑战，然而以其中任何一个作为框架来对互动叙事进行考察则是大错特错的。互动叙事领域没有现成的思考框架。我们必须纵身跃进汹涌的波涛之中，蹬腿挥臂划水，尽全力一路游下去。

许多领域都会以其他更基本的领域为基础：优秀的电影制作人不但必须掌握叙事技巧，还必须了解光学原理、人类视觉系统和摄像技术。优秀的游戏设计师必须同时了解编程、游戏和用户界面等相关知识。互动叙事也不例外，它同时站在包括游戏、电影、故事叙述、编程及数学在内的诸多领域的肩膀上。鉴于互动叙事尚属鲜为人理解和参透的新兴领域，所以本书会从许多不同的角度来对其进行考察。书中还为负面观点留出了探讨余地——了解互动叙事“不是什么”，有助于我们更好地理解它“是什么”。

我于 2004 年写就了本书第一版，此后辗转 8 年，天下事物瞬息万变，唯独互动叙事背后的最基本原则是一成不变的。在本书第二版当中，我纳入了8年来收获的经验和教训，以更明晰的方式阐述这些原则。第二版还包含了更多技术性细节探讨——20 年之内这些技术细节必然会有所更替，届时我便会推出本书的第三版。

有必要提醒读者的是：我的写作风格不拘传统，也许会让你望而却步（在此我要对本书编辑Robyn Thomas 表达感激之情，他修订了我最糟糕的语言表达，理顺了我那盘根错节的行文，拯救了具有愤世嫉俗倾向的我）。笔者的写作目的不是向读者炫耀学识，而是帮助读者理解互动叙事这个艰涩的主题。我会采用最强硬、最尖锐的方式表达想法，从而迫使你进行深入思考。我不会用浮华的词藻和言之无物的泛泛空谈来浪费读者的时间。同时，我也相信读者有能力辨析文中的破绽。如果你认同本书中的所有观点，那么只能说明你读得还不够深入、不够仔细。我更愿意奉上干辣椒而不是白米饭来供你品尝。

我的互动叙事之旅

我对互动叙事的探求始于 1983 年。那时我开始认识到，当电子游戏最终走向成熟从而演化为一种艺术表达的媒体时，它必须是关乎人本（people）的，而不是关乎物件（things）[3] 的。所有其他艺术和娱乐媒体从根本上都是以人为中心的；而单单电子游戏是以“物件”为重心的。在游戏当中，我们追赶“它”，它也追赶我们；我们冲“它”开枪，它也冲我们开枪。我们搜寻“它”、获得它、引导它、移动它、消灭它——我们面对的始终都是它、它、它，却从未与游戏中的其他人物发生过戏剧性的交互（interactions）[4] 。我认定这一点正是游戏与其他媒体的根本区别所在，也是我必须着手解决的核心问题。

那么，所谓关乎人本的游戏会是个什么样子呢？我早在 1983 年就设计过一个基于人际交互（interpersonal interactions）的游戏，名为《流言蜚语》（Gossip）[5] ；玩家要与游戏中的其他角色“通电话”，讨论“谁喜欢谁/谁讨厌谁”之类的话题。如图1 所示，屏幕上共有 8 名角色，玩家扮演左上角的那位。

图1 笔者早期设计的关乎人本的游戏《Gossip》

《Gossip》这款游戏的基本玩法就是：给别人打电话，闲聊谁对谁是否有爱恨之情等小道消息。玩家可以针对通话对方角色的偏好来组织自己的发言，从而在人际圈当中积累人气、受到他人的青睐。

可惜的是，负责发行游戏的 Atari 公司在《Gossip》推出之后不久便解体了，这款游戏也因此未能取得商业上的成功。

我于1987 年对人本游戏进行了第二次尝试，设计了《Trust ＆ Betrayal》[6] 。虽然这款游戏看似怪异，但是我仍然将其看作自己设计过的最优秀、最具创意的游戏。当时我已经意识到，人本游戏的核心问题在于语言上的障碍。如果我们无法以某种方式与他人进行语言交流，那么也就没有办法与他人形成任何互动。于是我决定打造一个语言系统（如图2所示）。

图2 《Trust ＆ Betrayal》是笔者设计得最好、最具创意的游戏

这款游戏的故事背景是外星球，其中有许多智慧生物种族能通过心灵感应进行沟通。笔者创建了一个简单的语言系统，通过 87 款图标来实现语言表达。在这款游戏里，我首次运用了逆向解析器（inverse parser）[7] ，运用了人格模型（personality model）和基于脸谱的情感表达方式，突出了对动词的运用，还采用了故事安插（interstitial stories）等手法。然而，这款游戏也没有取得商业上的成功。

经历两次失败后，我并未放弃。我于 1992 年开始设计第三款人本游戏《Le Morte D’Arthur》，如图3 所示。这是一款关于亚瑟王传说的游戏，我为此专门研发了我的第一款通用的互动叙事引擎系统。同时，我还打造了一个图形系统，专门用于展现各个游戏角色的脸部表情，从而实现情感化表达。

可惜的是，我没能获得足够的投资来完成这款游戏。

几年之后我获得了投资，便着手继续开发互动叙事系统，旨在让普通的计算机用户也能借此创建自己的故事世界（storyworlds）。我深陷其中，创建了名为 Erasmatron 的庞大系统（如图4所示），该系统包含了脚本语言、开发编辑器、具备高级语法处理功能的强大的故事叙述引擎，以及能让用户为游戏角色设计脸谱图案的图形编辑器。

图3 《Le Morte D’Arthur》包含了展现游戏角色面部表情的图形系统，用于实现角色的情感化表达

然而我也因此遇到了之前无法预见的阻碍：该系统太过复杂，几乎没有人能够使用，更不说普通的计算机用户了。我的团队运用该系统创建了一些有趣的故事世界[8] ，但它们仍然不够完整，达不到足够好的娱乐效果，因此Erasmatron也以失败告终。

到了2007 年，我收编了Laura Mixon、Louis Dargin和Facundo Dominguez 三人，一起着手打造名为Storytron的新一代互动叙事技术（如图5所示）。Storytron较前一代系统有了长足进步，超越了本书中描述的诸多技术。我们实作出来的技术比本书中描述到的还要强大得多。

Storytron 遇到的问题与失败的 Erasmatron 遇到的一样：系统太过复杂。尽管有忠实的故事世界创作者一直追随，但是始终没有人能够创建出完整、可用，并且具备足够的娱乐效果的故事世界。我自己创建了《Balance of Power 21st Century》故事世界，但是它很糟糕。最终，我们于2010年放弃了Storytron系统[9] 。

图4 计算机用户可以通过Erasmatron系统创建自己的故事世界

图5 用Storytron创建的游戏

自此以后，笔者消化吸收之前失败的经验教训，仍然继续着对互动叙事的思考和探索。我已经带着新的设计理念，再次踏上了互动叙事的征途。失败了这么多次，我怎么会再走错路呢？

注　释

[1].Interactive Storytelling 目前并无统一的中文译法，常见的译文包括“交互式故事叙述”、“交互故事叙述”、“互动性叙事”和“互动叙事”等。考虑到简洁性，本书以“互动叙事”的译法为准，并酌情保留英文术语。“Storytelling”一词将根据上下文酌情译为“故事叙述”或“叙事”。

[2].对即兴表演的核心理念感兴趣的读者，不妨参见Keith Johnstone关于即兴表演的经典著作《Impro: Improvisation and the Theatre》。

[3].作者在此强调了“以人为中心”与“以物件为中心”的对立。“Things”泛指非人的事物，强调其“物件”的概念。

[4].所谓的社交游戏（social games）是否实现了作者所说的人与人之间的“戏剧性交互”呢？作者的回答也许会是否定的，不过这仍然是个值得思考的问题。

[5].参见：http://en.wikipedia.org/wiki/Gossip_(video_game)。

[6].参见：http://en.wikipedia.org/wiki/Trust_＆_Betrayal:_The_Legacy_of_Siboot。

[7].此处的“解析器（parser）”是语言处理意义上的概念，参见：http://en.wikipedia.org/wiki/Parsing。

[8].所谓“故事世界”，是指通过互动叙事系统创建出来的互动叙事环境。参见：http://www.storytron.com/Authors Guide/ag-storyworld-components.html。

[9].在 Storytron 网站上，Chris Crawford 撰文两篇，回顾了过去的经验教训，展望了未来的计划，非常值得一读。参见：http://www.storytron.com/。

第一部分 互动叙事基础

要理解互动叙事（interactive storytelling），首先就要很好地理解其两个组成部分：交互性（interactivity，也称互动性）和故事叙述（storytelling，即叙事）。然后，还需要对两者合二为一的情形有个基本认识。

第1章：故事叙述历史悠久，相关著述颇丰，但我们仍然没有对其获得彻底的理解。故事叙述作为艺术形式，相关著述汗牛充栋，这一方面我无可附加。本章我会从“神经生理学（neurophysiology）”这样一个独特的视角来考察故事叙述的概念。

第2章：自个人电脑革命[1] 以来已三十载有余，人们还是缺乏对“交互性（interactivity）”的深入理解。不妨将其看作发生在用户与计算机之间的对话[2] ，然后把Crawford软件设计第一定律[3] 吃透。

第3章：如果我们把“交互性（interactivity）”和“故事叙述（storytelling）”放到一起，就得到了一种全新的表达媒体——“互动叙事（ interactive storytelling）”。它不是硬生生粘上了互动性的电影形式，也不是硬生生粘上了故事性的电子游戏，而是全然一新的、独特的媒体形式。

第1章 故事叙述

最有代表性的讲故事（storytelling，即故事叙述）场面，大概是一帮年轻人围坐在篝火旁，聆听老人娓娓道来的景象。这幅景象能唤起人们心中源自快乐和情谊的那种温暖、舒适的感觉。然而，故事叙述并非是被作为消磨时间的休闲活动而发展出来的—它具有严肃的目的，是人类文化得以发展的要件。

不妨设想两只正在玩耍的幼年猫咪。其中一只跟着另一只，在其身后悄悄潜行，突然向前一个猛扑；两只猫咪随即滚作一团，互相厮打抱踹。它们的行为如此可爱，我们会不禁笑出来，同时羡慕它们玩得那么尽兴。的确，猫咪们是在玩耍，但是其目的却不是消磨成年之前的美好时光。玩耍的目的是严肃的，因为它们是在借此学习今后所需的生存技能。潜伏追踪、猛扑突袭、缠斗扭打、爪抠嘴咬……这些都是猫的关键生存技能。真以为捉老鼠很容易吗？反正笔者我是捉不到的。不妨这么考虑该问题：你（作为猫）最好的武器（嘴里的尖牙）离你身体最脆弱的部位（眼睛）只有不到几厘米的距离。假如老鼠在挣扎当中戳中了你的眼睛，那么你就瞎了，猎食生涯随即结束。如何让嘴中利齿足够接近猎物的同时，又能保护毫厘之外的眼睛呢？

这是个刺手的问题，需要大量练习才能熟能生巧。事实上，猎食过程中的每一个环节都不容易掌握，都需要通过大量的练习才能做到。这正是小猫咪一直在做的事情：追踪潜伏、猛扑突袭、抓踢咬踹，在捕食者和猎物的角色之间不断转换，磨炼这些技能。被我们认为是“猫咪玩耍”的事情其实更是“猫的生存教育”。这个教育过程饱含乐趣绝非偶然，因为乐趣是学习活动中的情感驱动要素。

故事叙述（storytelling）于人类具有类似的作用和意义。故事叙述不是消磨时间，而是在复杂社交方面的严肃教育。虽然我们也有其他的玩耍形式，但是故事叙述是最重要的一种。它如此重要，以至于我们一生都受尽其用。倘若没有故事叙述之本领，那么人类就无法进行复杂的信息交流，从而无法发展出文化。故事叙述不光是人类文化的特征之一，更是人类文化存在的绝对要件。

1.1 故事叙述的历史

故事叙述的出现是人类进化过程中自然而然、几乎不可避免的结果。原始人为了应对环境中的生存挑战，大脑得到了相应的发展。每一次重大的挑战都会致使人体发生特定的变化。如果某个问题可以通过脑力来解决，那么大脑某些特定的区域就会接手来处理该问题，并因此而得到发展。多数情况下，这些新发展的心智能力由大脑多个部分组合完成，无法被定位到大脑中某一个特定的区域。随着大脑的发展演化，这些“心智模块（mental modules）”就被组合来解决新的、类似相关问题。

由于所谓的心智模块在大脑中没有单一明晰的区隔，因此科学家们也无法以解剖学的精度来对它们进行界定。大脑功能的复杂性导致心智模块也是互相交融的。如此一来，辨识心智模块就成了具有主观性的工作，科学家们各有不尽相同的区隔方式。尽管如此，还是有一些辨识出来的模块较其他模块更能获得广泛认可。下面就是4种基本的心智模块。

• “视觉—空间（visual-spatial）”模块负责处理视觉感知（visual perception）和空间想象（spatial imagination）能力。人通过此模块来判别自身与物体的距离，辨识物体的形状特征，以及在所处环境中实现定位。“视觉—空间”模块是大脑中唯一区域比较集中的心智模块，主要集中在大脑的后部。脑袋后面被击中之后你之所以会“眼冒金星”，正是这个原因。

• 社会推理（social reasoning）模块负责预期他人的行为。这里有个社会推理发挥作用的例子，是通过黑猩猩群体观察到的：一群黑猩猩外出觅食，每一只负责搜索不同的地段。其中一只看到了可口的水果。它认识到，近旁的猩猩首领若看到就会把水果夺去，于是它就表现得好像自己没看见一样。等到 5 分钟之后整个群体都走远了，这只猩猩又偷跑回来准备吃自己发现的水果。然而猩猩首领刚才已经注意到它不自然的举止，早就料到它会耍这般把戏，这时便从一棵树后现身，把水果抢了过去。想想这两只猩猩在整个过程中所包含的思考和算计，这正是我们所说的“社会推理”。

• 环境知识（environmental knowledge）模块负责保存关于真实世界中的事物如何运作的记忆。不要将其想象成计算机数据库，因为该模块不会像计算机数据库那样保存数字编码。环境知识模块以冗长的“if-then（如果-那么）”列表形式来保存这些记忆。

♦ If（如果）松软的尘土中留有动物的足迹，then（那么）它不久之前定从此经过。

♦ If（如果）干硬的泥土中留有动物的足迹，then（那么）它一定在早些时候从此经过。

即使是那些我们认定是“回忆起来的图景和声音”，其实也是由诸多if-then的事实构造起来的。

♦ If（如果）羚羊的两只角顺直又平行，then（那么）这种羚羊就是石羚[4] 。

♦ If（如果）羚羊的两只角各有一个旋，then（那么）这种羚羊就是非洲大羚羊[5] 。

人脑里保存着成千上万条诸如此类的if-then关联信息。

• 语言模块负责处理与他人进行的复杂沟通。语言深刻地改变了人脑的运作方式。在产生语言之前，一切都很简单：人类遇到的任何问题都会被导向某个特定的心智模块，该心智模块便尽可能地解决问题，指导人做出恰当的行为反应。语言则不然，它把解决问题的触角延展到了所有的心智模块；倘若语言模块无法访问“视觉—空间”模块，那么我们就不能通过语言表达眼前所见。语言模块将所有其他心智模块链接到一起，这种链接引发了人类思维的跃迁：遇到的问题与心智模块不再是一一对应的关系了，任一心智模块都有可能对问题的解决产生影响。如此一来，人类的创造力实现了爆发性演化。同时，这也让我们变得犹豫起来。我们无法确定第一个出现在脑海中的主意是否就是最佳方案。更好的主意随时可能从另一个心智模块里冒出来，让我们变得犹豫不决。

1.2 两种思维方式

人类思维方式存有两种截然不同的机制。占主导地位的是基于模式（pattern）的机制。神经系统最初就是由此发展出来的。基于模式的思维方式又快速又强大：由外界输入的模式一旦进入大脑，大脑就利用既有的模式来处理新输入进来的模式，从而产生反应模式。比如说，一只小动物从眼前看到的场面当中辨识出“巨齿、大眼、利爪”的模式，它的大脑便立刻处理之，然后立即确定反应模式，即激活不同的肌肉组织，实现转身，迅速逃离是非之地。

基于模式的思维机制有一个至关重要的好处：无论输入模式多么模糊不明确，大脑总能以特定的方式来解释它。我们看到云，就辨识出人脸或者动物形象；暗夜里的黑影看起来就像妖魔鬼怪；风吹过发出的微弱噪音听起来就像活物的声音。

在大约一两亿年前，称为序列式思维（sequential thinking）的新思维机制发展了出来。基于模式的思维是即时而应的，无法参透一系列事件所蕴含的深意。不妨做这样的设想：在大约一亿五千万年前侏罗纪晚期的森林里住着两只形似老鼠的小动物。其中一只“远古鼠”只有基于模式识别的思维能力，而另一只则搭载了最先进的神经科技——序列式思维。现在有一只凶神恶煞的巨型恐龙正向它们这边接近，沿途寻找猎物借以饱餐一顿。两只远古鼠都听见了恶龙的脚步声，连忙躲闪逃窜。恶龙走近来，四下张望，没发现活物的踪迹，便缓步走远了。那只“旧式”基于模式识别的远古鼠因为还能听见恶龙沉重的脚步声，所以就认定，“啊！重重的脚步声！有危险！”于是继续躲着不敢现身。而另一只具备序列式思维的新式远古鼠则通过辨识一系列脚步声的强弱来认定，“脚步声越来越远，那恶龙看来是走开了”，于是它便走出来继续觅食了。如此一来，新式鼠吃到了旧式鼠本来可以吃到的食物，最终谁存谁亡也就不难猜到了。

不过新的问题又出现了：脑神经元最初并不是为序列式推理（sequential reasoning）这样的思维能力而“设计”的。要实现序列式思考，需要一大堆神经元组合发生作用。然而序列式思维带来的好处实在是太大，以至于许多动物（特别是哺乳动物）在千百万年的演化过程中逐渐发展出越来越大、越来越复杂的大脑，而且其中大部分都被用来实现序列式处理机制。经过演化，人类的硕硕大脑已经能够实现我们最擅长的极其复杂的序列式思维了。

先期发展出来的“视觉—空间（visual-spatial）”心智模块和社会推理（social reasoning）心智模块完全依靠基于模式的思维方式。环境知识（environmental knowledge）心智模块同时运用基于模式的思维和序列式思维。而语言心智模块几乎完全是以序列式结构为基础的——单词是声音序列，句子是单词序列，书是句子序列。语言处理需要大量的序列式思维过程。

1.2.1 心智模块之间的互动

随着语言的发展，各个心智模块之间实现了相互沟通，由此引发了模块之间的奇妙互动。环境知识模块与社会推理模块之间就能发生惊人的互动。环境知识模块驱使人类探查在所处环境中观察到的各种现象之缘由，试图辨识出简单的 if-then 规则以便保存记忆。然而世界是复杂的，简单明晰的缘由通常都是找不到的。对于人类早期的农夫来说，特别重要的问题就是“为什么会下雨”，或者更确切地说是“为什么有时候下雨”。

当语言模块把环境知识模块和社会推理模块牵联到一起的时候，两者就发生交互作用，尝试得出对问题的合理解释，比如猜测是大能的诸神制造了各种自然现象。但凡一种现象缺乏明显的来由，大脑似乎就很顺理成章地将其解释为神灵的作用，认定是神灵的喜怒导致了看似反复无常的现象发生。社会推理模块不但对问题给出了解释，而且还提供了解决方案——祭拜诸神。每次遇到新的问题，祭司总能搬出新的神灵来予以解释。如此一来，大部分古代社会都“解释出”诸多神灵，分别管辖各自的现象范畴。例如在古希腊，人们认为海神波塞冬（Poseidon）掌管水域，因此出航之前祭奠他，顺他心意总会好些；如果要打仗，那最好能得到战神阿瑞斯（Ares）的关照；如果是为情所困，则应诉诸爱情、美丽和性欲之神阿芙罗狄蒂（Aphrodite）的眷顾；如此等等。

鉴于诸神数量众多、类别纷繁，势必就需要专门负责与神进行沟通的人员。那时候，担此重任的人从来就不稀缺——基本上来说，谁能通神，谁就能占据统治地位。

另一方面，环境知识模块也跟语言模块发生相互作用，由此产生了“经由序列式思考得出的环境知识”，被称为科学（science）。这种层次的序列式思维经历了漫长的发展过程，最终逻辑和数学的概念站稳了脚跟，科学便由此诞生。从心智模块的视角来比较科学与宗教，两者之间的冲突就明确很多。两者都源自环境知识心智模块；两者都旨在解释我们生活的世界。宗教借由社会推理（social reasoning）与环境知识交互作用发展出来，而科学则借由序列式逻辑（sequential logic）与环境知识交互作用发展而来。我们更认同其中哪一种，也许多多少少与两者在人脑中的相对强弱有关系吧。

除了上述两种模块之间的交互之外，还有 4 种交互有待考察。我把其中两种合二为一：“视觉—空间”模块同时与环境知识模块和社会推理模块的交互作用催生了所谓“再现艺术（representational art）”[6] 。

“视觉—空间”模块和语言模块的结合作用催生了写作（writing），进而引发了文化层面上的革新演进。语言模块与社会推理模块的结合则催生了故事叙述（storytelling）。

倘若你的空间推理比语言推理要强一些，那么不妨参考图1.1 来回顾一下各个模块交互作用的结果。

图1.1 心智模块的交互作用

1.2.2 故事叙述的崛起

由于故事叙述是一种言语行为（linguistic action），因此它理所当然是从语言的发展当中孕育出来的。能表达一定意义的最小语言单位是句子；个别词语的表意能力就颇为有限了。完整的句子能传达重要的信息，比如“羚羊正往远处跑去”——而把同一件事情用过去式[7] 来表达，就形成了一个迷你小故事。过去式语法与故事叙述之间的确有着难以脱开的联系。可见，故事叙述是语言发展的必然结果。

故事叙述是普遍存在的。人类学家从未发现过没有发展出故事叙述的文明（cultures）。那么，它为什么会普遍存在呢？最显而易见的回答当然在于：故事是文化知识（ cultural knowledge）得以代代相传的载体。故事这种形式诚然不是传承文化的唯一方式，但是它在传承文化信息的过程中扮演着颇为重要的角色。可以说，故事叙述、语言和文化三者是一起发展而来的。

那么，为什么所谓文化信息一定要通过故事这种形式来传达呢？为什么诸多文明不能把文化知识编译为简单明了的“真理清单”，然后让年轻一代通过背诵来牢牢记住呢？这种方式难道不比绕弯子的故事叙述系统更为便捷有效吗？为什么从来没有哪种文明采用了这种看似更好的方式呢？

上述问题的答案要通过信息传送的特征来寻得。故事所包含的大部分信息都关乎社会推理（social reasoning）。虽然有些故事与环境知识模块更相关，但是大部分故事都主要关乎人际行为（interpersonal behavior），比如可靠度、忠诚度、坚毅度等。心智模块是通过模式识别（pattern recognition）来处理社会关系的，由此产生了一个麻烦的问题：如何经由语言这种序列式媒体，向只能进行模式识别的心智模块传达模式信息呢？用计算机来打比方，这相当于企图通过串行线以并行方式传输数据；也好比对着西班牙人说中文——数据格式完全不匹配嘛！

要解决这个问题，就需要某种格式转换器，能在两种不同的思考机制之间进行格式转换。故事叙述正是所需的转换器，它是在语言发展早期，为了应对上述不匹配问题应运而生的临时解决方案[8] 。

我们可以把一个故事看作多个事件的线性序列；故事的架构（architecture）被称为“情节主线（plotline）”。这种线性特征是使用语言进行故事叙述不可避免的产物：我们不可能瞬间讲完整个故事。故事只能通过一个接一个的事件来讲述。如果不能接收到故事所涉的完整内容，就无法实现对故事的透彻理解。倘若是一封电子邮件下载到 90%的时候突然断网，那么我们基本上还是能看到邮件内容并理解其意涵的。但如果是在电影院里看电影，看到 90%的时候突然停播，那么要求全价退票则似乎是理所当然的，因为缺少了电影剩下的那10%的内容，故事就完全没有办法形成一个整体。

故事可被看作被切分为线性序列的模式（patterns）。这又是如何做到的呢？下面我用一个图来作比喻（对于习惯视觉思考的读者来说便更是一目了然的）。不妨把知识假想成一个互联的概念网络图。年轻猎人关于羚羊的知识大概可以表达为图1.2 所示的样子。各个概念在图中是随意摆放的，没有位置上的特殊性；真正重要的是概念之间相互关联的方式（即模式）。

一位老猎人可能会向年轻猎人讲述自己的一次狩猎经历：

那天我们出去打猎，看见远处有头羚羊。当时我们走近它，就快要走到可以扔石头猎杀它的距离之内了。突然起了风，从我们这儿往羚羊那边吹。结果它闻到我们的气味，跑掉了。

根据此次经历，我们可以画出故事中各个事件的关系示意图，如图1.3所示。

图1.2 头脑中知识的示意图

图1.3 猎杀羚羊的故事

于是，年轻猎人就试图把听到的故事叠加到自己既有的知识上，如图1.4所示。

图1.4 尝试将狩猎羚羊的故事与既有知识进行融合

年轻猎人不难看出两者之间的相似性，但是还未能将两者有机融合起来。当天晚上，在年轻猎人进入梦乡的时候，他的大脑对关联记忆（associative memory）进行了重组，把当天得到的经验整合进既有知识当中去了。第二天早上起来，年轻猎人就会具有如图1.5 所示的新的知识结构。

这正是我们通过故事叙述习得知识的最简单方式。然而故事叙述还通过另一种更重要的方式来改变我们的记忆内容，即直接使既有知识发生改变。

现在假设年轻猎人又听到了另一则狩猎的故事。这次我们抛开故事中无关紧要的部分，只考察关键的故事段落：

我们不停地朝羚羊扔石头，把它伤得跑不快了。然后我们靠近并抓住了它，用一块大石头猛砸它的头，就这样羚羊被我们杀死了（如图1.6所示）。

图1.5 将狩猎故事整合到既有知识之后的知识结构

图1.6 关键故事段落示意图

如此一来，年轻猎人又把这个新听来的故事与既有知识网络进行叠加，如图1.7所示。

接下来，重要的事情发生了：当晚，年轻猎人又在梦乡中将新获取的知识整合进现有记忆内容——大脑会整理记忆结构，使其更加简洁明了。

值得注意是：在更新后的知识网络中，由于加入了两条新的知识（即图中的“羚羊跑不快了”和“我们抓住羚羊并用石头击打其头部”），“杀死羚羊”与“扔石头”之间的直接关联因此被打断了——在近处扔石头并不会杀死它，只会让它慢下来，真正能杀死羚羊的办法是用大石块击打羚羊的头部。另外，“扔石头杀死羚羊”和“要吃羚羊须先杀死它”这两条既有知识的相对位置也发生了变化。有些知识之间的关联变得更远（即更间接），另一些则变得更紧密——这正是习得新知的时候会发生的事情，记忆中所有相关的知识都会因为新知识的引入而发生特定的变化。

图1.7 新故事被叠加至既有知识记忆当中

1.2.3 恍然大悟

上述这种知识习得过程有时候能使人的思考方式发生剧烈变化；有时候我们会明确地意识到这样的剧烈变化。Martin Gardner（马丁加德纳）把这种情形称为“Aha! insights（恍然大悟）”，因为彼时的心情会让人情不自禁地发出“啊哈（aha）”或者“原来如此”[9] 这样的感叹。

在知识网络突然发生演变的时候，往往会发生恍然大悟的情况（第2章“交互性”还会对此做详细探讨）。

故事叙述发源自千百万年前，要就相互关联的复杂概念进行沟通，它仍是最有效用的媒体。

1.3 故事的本质

对故事本质的探讨已汗牛充栋，若我再来“补充两句”似乎也是在班门弄斧了。尽管如此，笔者还是希望强调几个基本要点，以便读者更好地理解贯穿全书的核心概念。

1.3.1 健壮的结构

故事必须满足一些结构上的要求，才能称为故事。我见过的许多对故事概念的定义都太过宽泛和学术化。虽然任何陈述性的语句序列都可以用来构造故事，但是这样的界定仅仅从学术角度来看才是有意义的。虽然我也无法明确地界定所谓故事的结构，但是我敢说，就连4岁小孩也对故事的概念有着切实的理解。下面用两个例子来说明。第一个例子如下：

小小蜘蛛爬上喷头；

阵阵小雨把它冲走；

雨后天晴水干止流；

小小蜘蛛旧地重游。

如上所示，只用四个句子就能组成一个简单明了的故事。这个故事有主角（蜘蛛），有戏剧冲突（下雨），有挫折（被雨水冲走），有大结局（重新爬回），甚至还有寓意（坚持不懈的价值）。

再看第二则故事：

从前有一位年轻英俊的王子住在辉煌的城堡里。有一天他骑着漂亮的白马出城堡，进入了森林。在森林里，白马不慎跌到洞里，结果王子和白马都死了。

这一则故事具备绝大部分故事元素——以经典的“从前……”开场，有英俊的王子、漂亮的白马、城堡和森林。这些元素都很常见，但故事的结局就完全出人意料了。倘若把这个故事讲给 4 岁小孩子们听，那么他们一定会抱怨，“这不是故事！”他们的判断没错。无论这则故事具备了何种结构性故事元素，它都不会被认为是“合格”的故事，因为它违背了人们对故事的根本期望。

读者不妨尝试归纳一下能界定“故事”概念的准则，该准则要能判定关于小蜘蛛的叙述才是故事，而关于王子不慎死亡的叙述则不是故事。对我来说，这简直是不可能完成的任务！

要点1

故事要具有复杂的结构，要满足许多难以界定的需求。

1.3.2 人物

故事是关于人的。这个基本事实是如此简单，以至于在夸夸其谈的叙事理论（ narrative theory）的分析当中都很少被提到。对人的指涉有时候是间接的或象征性的——比如在小蜘蛛的故事当中，小蜘蛛当然并不真的是人，但故事的听众自然会形成“小蜘蛛代表着人”的理解。关于对人的指涉的间接性，有个极端的例子就是 1982 年的电影《失衡的生活（Koyaanisqatsi）》[10] 。该片没有主角，也没有对白，只是呈现了一系列关于自然和人类文明世界的艺术化影像，使两者形成鲜明对比。尽管如此，该片的故事却显得明晰有力。在片尾，导演采用超长镜头首先展现了火箭升空，越升越高并随后爆炸的场面，然后追随最大的爆炸碎片，展现了其不断下坠，最终落至地面的情景——这一系列结尾画面完美地对全片故事做了总结，采用的象征手法深邃有力，讲述了“人类已经演变为如此这般”的故事。

叙事者除了要在故事中强化人的角色之外，还要对外界事物的角色做最大程度的弱化。我们得把注意力集中在人这个要素上面，同时避免对外界事物的角色的过度解读。

[11] 但是有很多故事都是围绕外界事物展开的呀！比如《马耳他之鹰》[12] 、《夺宝奇兵》[13] ，还有《指环王》[14] 。难道不是吗？

不是。这些影片中涉及的物件并不是故事的中心角色。《指环王》并不真的是关于魔戒的故事的，而是在讲主角佛罗多（Frodo）的痛苦挣扎。假如把魔戒替换为魔袜、魔帽或魔法眼镜，其故事主体都不会受太大影响；但是如果把主角佛罗多替换成了韩·索罗（Han Solo）[15] 、堂吉诃德或者哈克·芬（Huck Finn）[16] ，那么故事本身恐怕就会面目全非了。故事始终是关于人这个主体的，而不是关于客体事物的。这一基本事实足以解释为什么电子游戏的败笔总是出在游戏性与故事叙述的有机结合上——电子游戏往往以特别机械化或强制的方式来讲故事。

电子游戏总是拘泥于外界事物[17] ：你获得“东西”、使用“它”、毁灭“它”，如此等等。这正是电子游戏缺乏“感性”的原因——戏剧性张力来自于作为角色的人及其面对的问题，而不是来自于外界事物。电子游戏并不是“反社会的（antisocial）”，而只是不具备社会性（asocial）而已；它没有把人的因素纳入游戏的范畴来考量，而只是把人的角色当作了行使机械化功能的“玩偶”物件。

要点2

关键在于人，而不是外界事物！

1.3.3 冲突

所有的故事都包含某种冲突（conflict）。这种冲突有时候是直接的、暴力性的，比如《星球大战》或者《指环王》里面的冲突。好人容光焕发、仪表堂堂，坏人则贼眉鼠眼、丑陋猥琐——对于世界观尚为简单的青少年来说，这种黑白分明的故事最好不过。但是，也存在不那么直接的冲突，这种间接的冲突可以是社会性的，也可以是象征性的，但归根结底还是某种形式的冲突。

《侏罗纪公园》系列电影的第二部《失落的世界》里面就表现了上述第二种间接的冲突。该片的主要冲突集中在数学家（正面角色）与利欲熏心的商人（反面角色）之间；在影片开始部分，当男主角拽住商人的衣服时，商人警告性地嘲讽道：“当心点儿！你一辈子的学费都不如我这套衣服贵。” 随着故事的发展，影片绘声绘色地表现了张牙舞爪的恐龙出逃、无辜路人死在恐龙的利齿和踩踏之下的情节。然而，恐龙并不是该片的反面角色（antagonist），而只是被描绘成“局外人”[18] ；它们并没有邪恶的用心，只是在行使其作为恐龙的动物本能而已。全片的核心冲突是间接的：商人对其手下做出种种吩咐，数学家则通过徒劳的恳求和严词警告来进行反驳。即使导演斯皮尔伯格（Speilberg）把恐龙角色整个去掉（省下巨额成本），也不会影响该片故事的完整性——只不过影片就没那么精彩刺激了。

至少电子游戏在表现冲突这方面是做得极好的嘛！

也不尽然。电子游戏确实包含不少冲突，但是其形式却总是限于最简单直接的暴力，而缺乏其他形式的冲突（比如社会性冲突）。游戏设计师在制造冲突方面，可谓是贫乏技穷，非“暴力”不用。

要点3

故事是关于冲突的，最常见的是社会性冲突。只有暴力冲突的故事就流于简单了。

莎士比亚的戏剧《麦克白》、《哈姆雷特》和《罗密欧与朱丽叶》，到剧终所有人都死了，还不是只有暴力冲突。难道因此你就说它们也都流于简单吗？

这些戏剧里面的暴力元素并不是冲突的要素，而是故事结局（resolution）的要素。如果用一句话来概括上述3部戏剧的话，就是：复杂的个人冲突以暴力方式做下悲惨的了结。用故事叙述的语汇来说，其中的暴力元素是故事的收场（denouement），而不是故事的高潮（climax）。

1.3.4 谜题

故事并不等同于谜题（puzzle）。谜题经常是故事组成的元素，在侦探故事里确实扮演了重要角色。然而，侦探故事里的谜题主要是关于人的。这类故事专注于描绘侦探如何施展计策来诱使别人揭示关于谜案的重要线索。

但是也有不少非社交性质的刑侦吧！比如系列电视剧《犯罪现场调查》讲的就是运用科学技术的手段来调查犯罪，并不依赖人际交互，还不是照样很受欢迎。

这么说虽然没错，但是让那些故事变得精彩纷呈的并不是科学技术，而是形象鲜明的人物角色和耐人寻味的故事情节。如果没有这些人物角色的精彩互动，那么《犯罪现场调查》也就会沦为平庸之作。

故事总是包含某种问题或挑战——主人公如何解决故事中的冲突？如果这种问题是需要逻辑来解决的智力问题，那么它就成了谜题。

尽管如此，智力游戏的手法也几乎从来都不是故事的核心。有时候，正面角色会向其他角色寻求帮助，或者经历重大的人格转变，借以发现解谜的途径。最精彩的故事当中所呈现的挑战，始终是关乎个人的和社会性的，而不是关乎逻辑或者智力的。

要点4

谜题并不是故事的要件。

1.3.5 选择

故事还关乎角色做出的选择。的确，许多故事的要义都是通过主人公做出的关键选择来揭示的。《星球大战》当中那句“卢克，要相信原力（Trust the Force, Luke）”就是这种关键决定。在《麦克白》中，这个关键决定指的就是主人公决定通过谋杀的途径来实现野心和抱负。在《黑客帝国 3：矩阵革命》当中，这个关键决定在于主人公尼奥（Neo）选择了牺牲自己。在诸多不同版本的亚瑟王传说故事中，这个关键决定在于王后格尼薇儿（Guinevere）决定将自己对兰斯洛（Lancelot）的爱付诸行动。在所有这些例子当中，故事都是围绕着那些关键的选择来建立和展开的。

当然，关键选择只是故事中最具戏剧性的亮点，故事中还会出现其他选择，用以塑造人物形象。《黑客帝国》系列电影中的主人公尼奥一开始并不愿意接受自己是“救世主”的事实，他通过一系列的小举动来表达了这种不情愿的态度。随着故事的发展，尼奥逐渐接受了这个事实，这种接受是通过他所做出的选择来表达的，体现在他对自身能力获得了更大的自信。

1.3.6 场面

新奇的体验能具备一定程度的娱乐价值，依靠的就是自身的“新鲜度”。有时候你去品尝异国美食，完全只是为了体验“试试没从吃过的东西”的简单乐趣。相当一部分音乐，特别是流行音乐，依靠的也是新奇的音效。摇滚乐正是通过创造非传统的乐音得以发扬光大：电吉他、音频反馈效果[19] 、模糊音（fuzzbox）[20] 等诸多音响效果在摇滚乐历史中都扮演着主要角色。

新奇的乐趣在视觉形式方面就表现为场面（spectacle），以令人惊异的图像作为娱乐载体。现如今，大场面主宰了电影。最早期的电影是没有故事情节的场面串联，比如火车撞车等。无论是1977 年的《星球大战》、1991 年的《侏罗纪公园》，还是 1999 年的《黑客帝国》，都是大场面魅力的极佳示例。

电子游戏便是借此而实现发展的。最早期的游戏形式只是方块在屏幕上移动而已，电子游戏演进发展的主导方向正是通过不断寻求更逼真的图像效果来呈现更精彩的场面（spectacle）。它在过去二十多年以来的进步的确是惊人的，其未来的发展更是让人拭目以待。

然而不幸的是，效果出众的绚烂场面也给大部分年轻人造成了一种误解，让他们混淆了“故事”与“场面”的概念。许多人把“场面”与“故事”紧密地联系到了一起，以至于认为场面是故事必不可少的要件。

人们把故事错误地当作场面来理解，其程度之深，从我的一次遭遇可见一斑：在观看了查理·卓别林（Charlie Chaplin）的经典默片《淘金记》之后，我向一位年轻朋友津津乐道该片的故事魅力，并推荐他跟我一起看。这位朋友不大情愿地答应了，可是在影片放了还不到四分之一的时候，他还是起身走开了。卓别林的伟大作品让他觉得乏味。

影片中的场景（scene）都很“单调”，故事节奏缓慢，还是黑白的，连声音都没有。我哪儿能指望他忍受这样一部“无聊”的电影呢？在我这位朋友看来，没有华丽大场面的电影根本不值得观看。

然而，古希腊的亚里士多德在其经典著作《诗学》当中，只把所谓“场面”列为故事六大元素中最不重要的一个（这六大元素依重要性依次为：情节、人物、思想、措辞、歌曲以及场面）。

2000 多年之后的现今，事情已经发生了变化嘛！亚里士多德看低“场面”的价值，说不定是因为那时候的电脑动画效果真的很差嘛！

毫无疑问，大场面确实很吸引人；卖座的电影通常都包含有精彩的大场面。然而场面与卖座之间只是相关关系，而非因果关系。诸如 2001 年的《最终幻想》、2004 年的《猫女》和 2012 年的《异星战场》这样的影片都充满了大场面，但是它们都是既不叫座也不叫好的失败作品。而诸如1973 年的《骗中骗》、1972 年的《教父》和 1994 年的《阿甘正传》这样的影片，虽然都没有什么大场面，但是却因为其优秀的故事而获得了巨大成功。

在2001年的两部影片《最终幻想》和《怪物史瑞克》之间的对比也许是个更好的案例。《最终幻想》号称是技术最先进、效果最逼真的电脑动画电影。

该片的制作方炫耀道，光是片中女主角的头部，就用电脑软件制作生成了30000根独立的头发丝。影片的图像效果确实令人震惊。相比之下，《怪物史瑞克》采用的电脑动画技术就逊色多了。然而，《怪物史瑞克》的故事却比《最终幻想》的优秀得多。两部影片的反响也就可想而知了：前者的票房是后者的很多倍。

对“场面”的趋之若鹜只不过是新近一时的风尚。文学作品从来都不依赖于场面，戏剧艺术对它的依赖也是有限的，而每一次技术进步则使它在电影形式中获得了爆发性发展（科学技术自 19世纪 90 年代始发，到 20 世纪 30 年代乐音技术得到发展，20 世纪 40 年代彩色显示技术得到发展，70 年代特效技术开始发展并持续至今）。每一次技术进步都掀起了一阵滥用的热潮，而这种热潮又在随后的几年中逐渐消退，使得新技术重新回到了陪衬“故事”的配角角色。

要点5

场面撑不起故事。

1.4 视觉效果的专制

许多观察家都注意到，视觉图像（image）已经逐渐在我们的文化中取得了统治地位，还有人出版了一本名为《图像的兴起和文字的衰落》的专著[21] 。毫无疑问，图像在现今的文化中扮演了重大角色，胜过以往任何时期。从许多方面来看，这当然是好事。如果新闻媒体里充斥着表现战争的残酷现实的照片，那么要对战争予以美化就困难得多了。在虚构表现形式中亦是如此。在当年的战争老片当中，中枪的受害者只能捂着胸部、脸背对着观众倒下。而在现今诸如《拯救大兵瑞恩》之类的影片中，就能表现头部被炸飞或者躯体四分五裂的情景，其视觉效果是如此逼真，以至于我的一位朋友在观影后表示，他实在是无法理解为什么还会有人支持战争。

人们在提高图像质量方面付出了极其巨大的努力。计算机图像的研发资金数以亿计，成千上万的顶尖人才在此发挥着他们的聪明才智。一部主流电影中参与计算机图像制作的人数以百计，他们的辛勤劳动则以票房上的丰收而获得回报。随着高清电视在 2012 年进入主流，图像质量又一次获得了巨大提升。

随着网络带宽的飞速增大，尺寸越来越大、逼真度越来越高的图像得以实现高速传输。文字信息所需容量较小，通常以千字节（KB）计就够了，而图像信息对容量的要求则高得多，动辄就在兆字节（MB）的数量级上。

笔者不打算要怪罪图像在现今文化中的崛起，也不会对文字的衰落而感到唏嘘。不妨让我们来考察一下视觉化思维方式（visual thinking）如何主宰了人们的思考，同时还排挤了更微妙的认知。

当我注视着眼前的场景时，我意识到自己所见只是现实很小的一部分而已，犹如视觉上的井中之蛙。然而我不仅能看到一棵树，而且还能意识到“树”这个视觉图像之外的许多事物。我可以想象水分缓慢地渗透过这棵树的形成层（cambium）[22] ，叶子上发生着光合作用，土壤里的养分被树根吸收，等等——所有这些肉眼看不见的过程才是这棵树维持生命的核心要件。所见之处只露毫厘，所见之外才是万千。

值得注意的是，我受过的教育驱动了我对眼前的树的认知。正是由于学过生物学、物理学及树的相关知识，我才具备了更深入理解眼前所见的能力。我对世间万物的感知都离不开我具备的知识和自身的感官。

不妨再做个比喻：在观看黑白影片时，虽然我们看到屏幕上的苹果是灰色的，但是我们明白那其实是红色的。肉眼看到的是灰色苹果，“心灵之眼”却能赋予它红的颜色。不妨再进一步假想，倘若我们还能看到在苹果内部的细节和过程，比如苹果光滑的表面纹理，或者果肉中正在发生的氧化作用等，那又会是怎么样的情形。即使被局限在视觉的感官世界里，我们“看到（无论是用肉眼还是心灵之眼）”的世界也不仅仅局限于视觉图像。

沃卓斯基兄弟[23] 在影片《黑客帝国》中就用绝妙的视觉比喻来描绘了这种“不受视觉局限”的情形。在电影结尾的高潮段落，主人公尼奥（Neo）死而复生，并获得了看透“母体（the matrix）”[24] 的超能力。当他睁眼看到大楼内的走廊和3位敌对特工的时候，他看到的不仅是往常肉眼看到的景象，还看到了用来实现这些虚拟景象的程序代码。整段情节采用的图像表现向观众传达了“透过视觉现实看到其背后内部运作机理”的概念。用视觉形式来表现“跳出视觉化思维桎梏”的概念——这倒是颇具讽刺意味，不是吗？

要点6

故事叙述不能以视觉化思考主导。

1.5 空间思维

与视觉化思维（visual thinking）密切相关的是空间思维（spatial thinking）。空间推理（spatial reasoning）乃是人脑最伟大的能力。要想伸手去捡掉到冰箱背后的东西，就得动用空间推理能力。我们还经常通过比喻的方式，把它应用到非空间问题上，比如“Joe 和我的关系不是很近”，或者“你的陈述离题太远了”——这样的应用非常凑效。然而，如果我们把空间推理之应用生搬硬套到故事叙述上面来的话，那么就会出问题。在戏剧艺术（drama）的范畴内，空间推理之应用就显得格格不入了，因为戏剧是关于人的，而不是关于物件的。

笔者设计的互动叙事系统采用了简单的处理办法：空间是由各自独立的舞台（stage）组成的，舞台之间并没有空间关系。我把所谓“舞台”界定为“包含人物和道具的地点”。人物可以退出这个舞台，然后出现在另一个舞台当中。同一舞台当中的人物可以自由互动，而不用考虑他们之间的空间关系。我建立的这种“舞台”模型既简单又耐用，非常接近绝大部分故事中空间的运作方式，还可以应用到舞台剧（theatre）、电影和文学等任何其他故事叙述媒体当中。

你怎么能忽略了故事中的空间元素呢？《星球大战》中的天行者卢克（ Luke Skywalker）与黑武士（Darth Vader）必须互相靠近才能使用激光剑对战嘛。如果韩·索罗（Han Solo）与莉亚公主（Princess Leia）凑得不够近，那么他们就不可能接吻嘛。如果天行者他们不登上死星（Death Star），又怎么可能解救公主呢？

可是在那种交互当中，演员之间的空间关系什么时候起到过关键作用呢？天行者卢克与黑武士对战这个情节的关键并不在于他们之间的距离（距离的远近并不重要），而是在于表现天行者卢克下定决心要与黑武士抗争到底。韩·索罗与莉亚公主之所以会接吻，也并不是因为他们恰好靠得很近，而是出于他们两情相悦。拯救公主也主要是表现卢克做出了戏剧性的重大决定。

我们不要让对电影的了解主导了我们对故事这个概念的思考。不妨考虑一种并不内含空间因素的媒体，比如文学（literature）。

文学经典《奥德赛》[25] 的核心是围绕地中海展开的回乡旅程的故事。这是否就意味着，这部作品从根本上就具有空间特性呢？旅程[26] 是在文学中反复出现的主题，从《奥德赛》，到《哈克贝利·芬历险记》[27] ，再到《星球大战》，关于旅程的故事比比皆是。那么，空间运动因此就是故事的核心了吗？当然不是。故事中的空间运动只是毫无实质性空间关系的舞台转换吗？是的。故事中空间元素的虚幻本质有一条重要的证据：在故事中，具体的空间关系从来都不会被精确地界定。《奥德赛》的主人公奥德修斯（Odysseus）踏上旅程许多天，最后来到了食莲族（Lotus Eaters）的领地——那么请问，这片土地具体在哪里，离女海妖斯库拉（scylla）有多远，离海怪（Charybdis）有多远，离特洛伊城（Troy）近还是离伊萨卡城（Ithaca）近呢？这种具体的空间关系全都没有在故事中具体交代——因为它并不重要。

其他“旅程”主题的故事也有同样的情况。虽然《哈克贝利·芬历险记》故事的发生地点能在地图上实际找得到，但是许多空间关系的细节仍然是缺失的。主人公哈克具体是在哪里发现他父亲的尸体的呢？发现尸体之处离他们惩治两个骗子的小镇又有多远呢？拯救了哈克之后却不幸惨遭杀害的贵族家庭究竟住在哪里呢？读者无从得知这些具体的空间关系信息，因为这些信息对于故事中的戏剧性情节表达来说无关紧要。

不妨再来看看浪漫小说中的典型情节，比如：“他情不自禁地一把搂住她忘情狂吻。” 倘若要包含对空间因素的考虑，那么句子就会变成这样：“他情不自禁走到她跟前，一把搂住了她，将头凑到她面前稍微转动以避免碰了鼻子，然后用嘴唇贴上她的嘴唇，忘情地接吻。”句子这么一改，就显得怪傻的，不是吗？剧情中的空间细节并没有那么重要。在表演过程中，如果演员需要改变空间位置，自然就会直接做出动作来实现，我们根本没有必要关注其具体的实现细节。故事终究是关乎情感演绎的，而不是关乎身体动作的。

历经数十年、成百上千人共同建立的《星际迷航》系列[28] 的世界设定也很好地说明了问题。该系列巨细靡遗的百科全书列出了故事世界中不计其数的细节信息，包括各类太空船和设备的技术规格、诸多外星种族历史及星球详情，等等。然而，这令人咋舌的海量数据当中竟然缺少最简单的信息——地图。没有任何信息能告诉我们Vulcan星球[29] 是离Klingon星球[30] 更近还是离地球更近。

Andoria 星球[31] 在哪里？从哪个方向前往 Raisa 星球[32] 或者 Cardassia 星球[33] ？《星际迷航》包含了数百集故事，却从来没有出现过地图。

要点7

故事发生在舞台上，而不是地图上。

1.6 时间的不连续性

正如故事中的空间被打散为离散的舞台，故事中的时间也被动了手脚：故事中的时间可以间断，可以来回跳跃，甚至可以被完全跳过。演员扮演的角色在启程之后直接就可以抵达目的地，旅行的时间则被跳过去了；一句“许多年之后……”就能跳过大段时间；一句“与此同时……”就能表现同时发生的事情；回闪（flashback）能让我们穿越到过去之后再跳回到现在。故事时间与物理时间在运作方式上大不相同，完全是按照故事的需要来展开的。

人的时间推理能力不如空间推理能力来得那么根深蒂固（下意识、情不自禁地发生作用），因此我们几乎总能理解故事叙述者对时间的自由运用。电子游戏设计师在考察互动叙事的时候，也应该摆脱游戏中常见的那种物理时间的概念。

1.7 本章小结

本章并没有大谈故事叙述理论，而是探讨了几个关于故事概念的独立观点，这些观点是互动叙事的重要考虑因素。故事叙述与人类本性和文化密不可分，或许我们永远也不能把所谓的故事本质完全想清楚。但如果要创建互动叙事系统，那么在我们考察交互性（interactivity）概念之前，就必须对本章谈到的观念具备清楚的认识。

第2章 交互性

毫无疑问，交互性（interactivity）[34] 是被无故误解和无情滥用得最严重的计算机术语。这个概念已经被使用了如此长的时间，以至于我们大家都觉得自己很了解它。然而问题在于：每个人对交互性有着不尽相同的理解，而且大部分对它的描述都是模糊不清的（附带大量辅助性的手势说明）。更糟糕的是，许多关于交互性的理解都是完全错误的。

2.1 我对交互性的界定

笔者是这样定义交互性概念的：

发生在两个或多个活跃主体[35] 之间的循环过程，各方在此过程中交替地倾听、思考和发言，形成某种形式的对话（conversation）。

在上述定义里，“倾听”、“思考”和“发言”必须被当作隐喻来理解。严格来说，计算机当然不会真的“倾听”，但是它能够监听来自鼠标和键盘等输入设备的输入。计算机当然也不太会“发言”，但是能通过屏幕回显来达到类似于说话的目的。计算机当然更不可能进行真正意义上的思考，但是能够处理数据或者进行计算。笔者当然也可以采用诸如“接收输入”、“处理输入”和“输出结果”这样的字眼，但是这些术语都是面向计算机领域的专业化表述，不免显得狭隘。相比之下，“倾听”、“思考”和“发言”则显得人性化（尽管也是同样的狭隘）——无论如何，我们采用的这种宽泛的概念恰恰能阐明交互性概念的组成。

上述的交互性概念的定义的价值体现在其对“对话”这个概念的引用上。“对话”是一种广为理解的交互形式，我们对它的理解在软件设计领域得到了有效的运用。显然，对话的整体质量依赖于对话过程中各个环节——倾听、思考、发言——的质量，更重要的则是三者组合的方式。许多人认为，要使交互性的质量得到最大提升，只需要实现各个环节的质量最大化即可。然而，实际情况则比那微妙得多。

对话的整体质量并不单独依赖于哪一个环节的质量，而是要求每个环节都能得到很好地执行。你有遇到过对方心不在焉的情形吗？如果对方根本没有在倾听，那么无论你多么有思想、有口才，你与对方都无法形成有效的对话，而成了单向的演讲。同样，你肯定也遇到过对方听不懂你在说什么的情形，这种对话同样是令人沮丧且毫无意义。你也许还遇到过对方不苟言辞、有话说不出的情形，这样的对话同样是注定失败的，因为倘若对方不能发言，那么再怎么倾听和思考也是无济于事的。

要点8

交互性（无论是人与人之间的还是人与计算机之间的）的整体质量依赖于倾听、思考和发言三个环节的有机结合，而不是单独依赖于某一环节的质量。要实现良好的交互，必须同时实现良好的倾听、良好的思考和良好的发言。

笔者对交互性的界定拒斥了一些被误解为“具有交互性”的情形。比如，无论“反应（reaction）”有多么强烈，它也与交互有着天壤之别。假设我们在观看一部很精彩的电影，激动得心砰砰直跳，紧张得手握拳发抖——即便如此，我们也绝不是在和电影发生交互，因为影片可没在在听我们发言，更谈不上思考了。影片只是在冲着我们进行强有力的精彩发言（尽管这当然是很好），而不是在与我们进行交互。

你说的不对！观众一边看电影，一边还在主动地对影片内容做出自己的解释——观众并不只是被动的呀！

名为《视频游戏的互动叙事》的书中也提到了与闹场克里斯相同的观点，引述如下：

认为伟大的艺术作品没有交互性，是“交互时代（interactive age）”产生的错觉之一。虽然艺术作品并不总是具有可以点击的按钮或者网络超链接，但是所有经久不衰、有深度的艺术作品都是以特定的方式具备了某种参与性（participatory）。无论是直接激发了观者的情感，还是促使观者进一步解读作品本身，任何经久不衰的艺术都是多层次的，其能够揭示的内涵随着观者的反复检视而加深。对我来说，这正是交互性的精髓之所在：邀请观者不断进行更深入的解读……艺术作品能唤起观者的反应（reaction）——电子游戏对于艺术家来说是个绝妙的媒介，这也是原因之一。

上述观点的问题在于，“主动和被动”的概念与“交互式的（ interactive ）和反应式的（reactive）”概念被混淆到了一起。虽然所谓反应（reaction）的确是一种动作（action），但是这不足以使其成为交互（interaction）[36] 。观者可以主动地进行思考活动，但是艺术作品本身却无法进行哪怕是抽象意义上的“思考”。电影作品与观众之间的关系从根本上来说就是单方向的：电影包办了“发言”环节，观众包办了“倾听”和“思考”两个环节。但观众并没有针对电影内容主动实施动作（act on），而只是对电影做出反应（react to）。

实现交互（interaction）要求动作（action）交互地（inter-）发生于两个主体。如果动作是单向的，那么它就不是交互的（inter-），而只是反应式的（re-）。

笔者会反复强调这个观点，因为有太多人拒斥它——其原因或许在于，交互性正是当下的时髦概念，人们似乎就觉得它应该代表着“最新、最好、最热门、最酷”的事物。如此一来，我声称“电影没有交互性”似乎就在暗示电影是“陈旧、落后、乏味”的东西，这样的说法一般总会被人拒斥。

需要澄清的是，笔者并没有贬低电影这种艺术形式。笔者喜欢电影，对某些电影作品情有独钟，每年还会在美国电影导演 D.W. Griffith[37] 的生日那天观影纪念。电影是一种得到高度发展的媒体，充分发挥了自身的优势。然而，每一种媒体都有其利弊——电影并没有交互性。电影以精心构思好的方式进行叙事，而互动叙事则是随着情节的不断发展逐步建立起来的，不可能具备电影里那种精巧的叙事结构。因此，电影与互动叙事是两种完全不同的媒体。

2.2 第二人称视角的洞察力

所有伟大的艺术家都具备某种特定的洞察力，这种洞察为其作品赋予了深度。优秀的作曲家总能“听”出音乐的感觉；优秀的画家能“看”到画作的形式、形状和颜色表达；高水平的作家能经由对语言的超凡体悟而创作出美妙的语句。同样，创作互动叙事的互动艺术家（interactive artist）也需要具备某种特定的洞察能力，即一种鲜有人具备的对艺术的敏锐洞察力。笔者把这种能力称为“第二人称视角的洞察力（second-person insight）”——具备这种洞察的互动艺术家能够站在观众的立场，考察观众如何体会互动叙事的艺术性表达。

你说的这种敏锐洞察并不是互动叙事特有的，所有的艺术家都会考虑其作品的艺术表达如何被观众接受嘛！

这么说虽然没错，但那并不是其他艺术家的首要关注点。富于表达的艺术家的主要任务是寻求恰当的表现方式，而不是观者会怎么看。作家总是会先写出一份初稿，然后才会尝试以读者的心态来审视自己的稿子。换句话说，他们的首要关注点是艺术表达本身，其次才是作品观赏者的视角问题。艺术家不会因为其作品得不到大众的理解就去“自挂东南枝”——观者怎么看永远是第二位的。

对于艺术家来说，无论是剧作、画作，还是电影、小说、诗歌，观者不能理解其作品是观者自身的问题，而不是艺术家的问题。

对于绘画、雕塑之类的纯艺术的艺术家来说固然如此，但是面向娱乐的艺术家难道不是以迎合观众口味为要务的吗？所谓的“第二人称视角之洞察（ second-person insight）”与娱乐艺术家具备的对观众的敏感度相比，难道不是一样的吗？

虽然娱乐艺术家也需要这样的洞察力，但是它与互动叙事设计师所具备的“第二人称视角洞察力”相比，有两点不同。首先，娱乐艺术家的洞察力本质上需要具备一定的通用性，娱乐艺术只需要迎合主流观众的平均口味，倘若有个别观众没听出笑点、没看懂某个情节，或者没记住某个故事人物的历史与当下情节的关联，那么都是完全可以接受的。相比之下，互动叙事艺术家则需要更充分地迎合更广泛的观众口味，做到在平均水平之上也能抓住观众的心。

其次，两者对观众反应的诉求具有不同的深度。娱乐艺术的表达本质上是一次性的：笑话、曲折的情节，或者劲爆场面能唤起观众的反应，就算达到了娱乐的目的。相比之下，互动叙事则需要纵深好几个层次来考虑观众的反应：如果观众的反应是 X，那么以 Y 来回应是否妥当？如果观众对Y做出反应Z，那么接下来该如何做出进一步的回应？互动叙事设计师须要跟象棋师一样，每次都往前考虑很多步，而娱乐艺术家则专注于每次只考虑当下的一步。

由此可见，第二人称视角的洞察需要我们在看问题的态度上实现深邃的、根本性的转变。我们必须训练自己的心智，跳出自我的思考范畴，彻底地站在观众的立场进行思考。

第二人称视角的洞察有两方面事宜。其一，要强化同理心：在深度上要远远超越“从情感上体会观众状态”的普通水平的同理心。不光要能体悟大家共有的情感状态，还要能体悟我们自身未曾有过的情感。可能我们构思故事世界（storyworld）某个细节时想表现的是悲怆的情感，而互动叙事玩家[38] 对此做出的反应却是愤怒。面对这种情形，我们不能拒斥或者压抑玩家自身的情感反应，而是必须预期和尊重这种情况的出现。其二，要处理知识层面的问题：我们必须能够生动逼真、绘声绘色地料想玩家在互动叙事体验当中可能遇到的种种困惑。

玩家心里会提出什么样的问题，会做出什么样的假设，其想法会如何与互动叙事设计师的想法产生共鸣和冲突，如何构思故事世界来尽可能避免这种冲突——这些都是需要考虑的问题。

恰恰因为我们一直是以自身的视角来考虑问题的（对于正常人来说这是每时每刻不间断的），所以从别人的视角来看问题始终是异常艰难的。能认识到别人的思维方式与自己的可以迥然不同，这样的人少之又少。教师就是其中一份子。第一次授课是种令人不寒而栗的经历：你站在学生们面前，试图用只言片语向他们揭示知识的奥妙，却吃惊地看到他们的一脸不解；于是你思索片刻之后，换个说法又把刚才的意思重复了一遍，换来的竟还是学生们的一脸不解。教授的过程基本上就是寻求无数种方式来传达想法的过程。至少在智力层面上来看，优秀的教师是具备第二人称视角洞察力的。

要想测试一下自己的第二人称视角洞察力，有个简单的方法：假设你正在用手机或者平板电脑与一位朋友进行视频通话，如果你通常是用手拿着设备进行的，那么就说明你的第二人称视角洞察力不足。由于拿着设备的手总不免会晃动，所以这位朋友看到的的屏幕画面就会抖动，从而可能引起眩晕。倘若你能站在朋友的立场来思考的话，那么就会认识到这一点，从而选择把视频通话设备静止置放。

2.3 人类理解模型

对人类理解能力的深入考察有助于我们澄清第二人称视角洞察力的角色并揭示交互性（interactivity）的重要性。考察要从关联记忆（associative memory）的概念说起。信息在人类心智当中的存储方式与计算机那种用文件和文件夹齐整分类的方式截然不同。在人类心智当中，概念是通过关联（association）的方式组织起来的。比如，虽然信用卡和银行账号在概念上与“钱”是不同的，而且它们也并不包含实际的钱币和钞票，但是大部分人还是会把它们与钱币和钞票联系在一起。人们会想象钞票从银行账户进进出出的情形，虽然实际上并没有钞票真的进出，而只是数字加减而已。这种联想还扩展到了更多概念：工资从公司移进了银行账户，房租从银行账户移出，账户里的钱生出了利息、被转移到定期，或者被挪走做了股票投资等——这些脑海里假想的过程都是依据各个概念之间的关联性被塑造出来的（如图2.1所示）。

图2.1 结构化记忆与关联式记忆的对比

对我们来说，很多关联都是不言自明且合乎逻辑的，只不过不同的人可能会具有不同的思考重心。在你的概念关系网络当中，可能活期帐户是中心；而对另一个人来说，也许信用卡才是中心；而一个颇有金融头脑的人则可能根本不以任何为重心，转而关注大局，在股票、债券、国库券、现金帐户及黄金等多个方面寻求平衡。

对于考察交互性而言，更重要的一点在于：上述的这种关联很多时候都具有独特性。有些人的概念关系网与另一些人的大相径庭；有些人虽然与其他人有一定的共通之处，但大家各自又各有不同的重心。对安然公司（Enron）[39] 做过很多股票投资的人大概会对股票这个概念形成强烈的情感关联，而在2000年及之后几年里买过很多互联网公司股票的人则会形成相当不同的情感关联。

看惯了祖父放在保险箱里那成堆的股票证券的人，自然会把股票的概念与纸质凭证联系起来。现今的股票交易早就不再使用那种纸质凭证了，因此而产生的莫名焦虑感是其他人很难理解的。倘若那位祖父还经常用那低沉、亲切的嗓音语重心长地对我说，“孩子啊，说起股票，有个靠谱的投资组合是绝对错不了的”，那么我的概念关系网络又会因为这段难忘的记忆而被塑造成什么样呢？假如祖父最后投资失败，身无分文地撒手人寰了，这又会对我的概念关联产生何种影响呢？

人类的记忆和认知正是经由上述这种关联式概念网络建立起来的。随着人的不断学习和成长，这个概念网络通过一个个概念及概念之间的关联关系逐步发展出来。作为同在一片天空下成长的人类，我们的概念网络经常具有基本的相似性；同时，我们各自不同的经验和阅历又使得概念网络因人而异。了解到这一点，也就不难理解为什么人与人之间经常会产生误解了。你和我也许对股市的概念具有大致相同的理解，然而你借以理解它的关联关系与我的却可以大相径庭，以至于我们会根据各自的理解产生完全不同的看法。就此，你还可以耐心而坚定地向我解说你的观点背后的道理，但是如果我的心智网络与你的并不那么近似的话，那么我是很难彻底参透你的观点的。

这种在体验和理解方面的差异是我们人类所固有的，我们只能耸耸肩，接受现实，还可以嘟囔道：“萝卜白菜，各有所爱[40] 吧！”如果观众拒斥艺术家的作品，这位艺术家大可以嗤之以鼻，料定那只不过是观众的猪脑子无法理解其作品而已——你看不懂，可惜的是你自己。

交互性（interactivity）的颠覆性价值就在于，交互可以跨越上述的理解鸿沟。我们不妨换个视角来看待教师的授课行为，不要把它看做是照本宣科的宣讲过程，而是看做交互式的对话过程。在教授过程中，教师仔细地从学生的提问当中辨识出更深层次的关键点，由此逐渐地探测出学生的知识网络。在这个探测过程中，教师的第二人称视角洞察力就是区分教学水平的关键：优秀的教师能够较快地推测出学生的知识网络，并且辨识其中摆放位置有误的知识节点或者权重设置不够妥当的关联关系，随后便能有的放矢，引导学生修正其知识网络。刚开始的时候，学生可能会对教师试图施加的修正产生抵触，试图把教师传授的内容以不影响现有知识网络的方式纳入其中。最终，教师的坚持会让学生的知识网络得到修正，学生会在彻底领悟的那一刻随即发出“原来如此”的感叹。

这就是交互的力量——它能揭示艺术家与观众在知识网络上的差异，并且同时让艺术家有机会操控这种差异，从而让艺术家获得深入人心、打动观众的强大影响力。这才是交互性的力量之所在，它足以弥补互动叙事在情节构思之精妙程度上的不足。

我们必须理解这样一个事实，即人们只会接受他们愿意接受的事物——见其所想见，闻其所想闻。因此，要有效地运用交互性，我们必须透彻地理解人们的欲求。做得妥当还远远不够，我们必须能够通过他人的视角来考察我们所认为的“妥当”。

与许多其他艺术天赋一样，第二人称视角洞察力意味着某种程度上的心理“超常”。艺术表达之所以有价值，就是因为它是非同凡响的，或者至少是不那么显而易见，从而蕴含深意的。在做到非同凡响的艺术表达的同时，我们还必须能够从观者的诸多视角来考察自己的这种表达。这样的思考方式的确有些与众不同，或许只有少数天赋异禀的人才能做得到吧。

2.4 自我克制

除了上述的第二人称视角洞察力，互动艺术家还须要具有铁打不动的坚定决心，把观众的喜好和欲求放在首位，而把自己的放到次要位置；必须压制那种一味追求自我表达的艺术态度，转而把观众的视角作为关注的重心。

那你的意思岂不就是要我们放弃自身的艺术追求，转而对观众“投其所好”吗？这听着像是大马戏团玩杂耍[41] 而不是米开朗基罗搞艺术创作。

当然不是那个意思！笔者并不是建议我们应该放弃自己的艺术追求——毕竟我们才是创作的主体。然而，在作品中表达我们自己的想法只是互动叙事里相对简单的部分，困难的部分是让观众“听”到我们的艺术表达。因此，我们必须克制对自我表达的一味追求，用心辨识观众的诉求。

这里不妨做个比喻来说明笔者的观点。假设一位欧洲中世纪的国王正在思索需要动用多少国家的财富来满足他自己的生活，他可能这样想：“作为国王，我是本国最重要的决策者，我必须免受生活艰辛和生存压力的干扰，这样才能让我专注国家大局，运筹帷幄。所以在吃穿住行上让我享受最好的待遇，于大局而言其实是对大家最好的。”

这位国王的私利之心在字里行间一览无余。倘若一位艺术家说出下面这样的话，我们又该作何感想：“作为艺术家，我的想法是最重要的，我必须免受观众喜好的干扰，这样才能让我专注于实现伟大的艺术理想。所以在艺术表达上完全以我自己的观念、目标和兴趣来实现，于大局而言其实是对大家最好的。也许会有一些观众无法理解我的作品，但那也无妨大局。”

当然，上述的比喻只适用于互动叙事所属的互动艺术（interactive art）。其他领域的艺术家忽略观众的诉求，是完全可以理解的，因为其观众群体往往太过巨大，倘若要同时兼顾所有人的诉求，那么结果只会是一缸毫无特色的大杂烩。伟大的希腊雕刻家波利克里托斯（Polyclitus）用一次简单的实践证实了这一看法。他把正在创作中的雕刻作品展示给诸多鉴赏家看，并且逐个向他们征求改进意见；然后，他把所有人的意见全部在作品中付诸实现；最终的结果是一个丑八怪作品。不难看出，展示性的艺术必须具有独立、统一的艺术愿景，把观者的所有想法和建议全都付诸体现到艺术作品当中，只会“把水搅浑”。

从这个意义上来说，互动艺术与其他艺术形式是天壤之别，因为互动艺术作品是被每一位观众单独体验到的。所有人都能看到梵蒂冈西斯廷教堂（the Sistine Chapel）穹顶上由米开朗基罗创作的画作《创世记》，而且每个人看到的都是毫无差别的同一幅图像。与之截然不同的是，虽然所有人都可以经由交互式故事世界（storyworld）来进行互动叙事的娱乐，但是每个人的体验都不尽相同，每个人都会拥有别人没有的体验。因人而异正是交互性的意义所在——互动叙事针对每个人做出不尽相同的反应。有鉴于此，作为互动艺术家的我们也没有办法拿“大众的诉求趋于平庸化”作为借口来自我掩饰。我们必须面对每一位交互式故事世界的玩家，实现“因地制宜”。

2.5 交互的程度

交互性并不是像“生死”那样非此即彼的概念（不是活着就是死了），而是像“体重”那样的数量概念（体重可以多一点或者少一点）。笔者想到的最好的“交互性低”的例子就是冰箱的指示灯：冰箱门一开，指示灯就亮；门一关就灭——这不就是交互性吗（冰箱指示灯“倾听”冰箱门的开关举动，以“门开就亮”的简单逻辑进行“思考”，通过亮灯的举动来“发言”[42] ）？当然，这只能算是简单的交互，也许还能让三岁小孩痴迷片刻，再大点的孩子恐怕就会觉得很乏味了。

高交互性的例子莫过于性爱。激情迸发的性爱是两人之间所能发生的最强烈、最深刻的互动，难怪我们对情爱这种事情乐此不疲。

要点9

互动设计的最高理想是让观众与作品之间产生最高程度的交互性。

叙事的交互程度由3个因素决定：速度、深度和选择。

2.5.1 速度

决定交互性高低的3个因素当中，速度是最容易理解的一个。反应缓慢的软件几乎是没有交互性的，而反应速度越快，实现交互性的潜力就越大。我们不妨用 3 个例子来说明这一点：VisiCalc电子表格软件、BASIC编程语言以及互联网。

先看第一个例子。VisiCalc 是第一款适用于个人电脑的电子表格处理软件[43] ，计算机历史学者们普遍认同它对个人电脑革命[44] 的影响是最大的。VisiCalc 并不是首款电子表格软件，在它之前存在许多可运行在大型主机上的电子表格软件，但是这些大型主机软件都是批处理程序[45] 。你必须把数据通过打孔的形式体现到打孔卡[46] 上，然后把卡片交给计算机中心，等到第二天才能拿到程序运行的输出结果。

接下来，你得查看打印出来的结果，对初始数据做些微调整，再把调整过的数据打到新的卡片上，最后重新提交计算任务。如果运气好的话（或者你在计算中心熬到凌晨三点，等没有其他人提交的时候），你也许在几个小时之内拿到新的计算结果——这样熬一宿还能多计算几次结果。

由于VisiCalc必须在微型计算机上运行，所以在功能上并不如大型主机上运行的电子表格软件强大。不仅如此，个人电脑的屏幕尺寸相对较小，屏幕上只能显示表格的一小部分内容。与之相比，计算中心里的“货真价实”的电子表格则可以打印到足够大幅面的纸上，显示所有表格内容。在功能、显示器和计算能力方面，VisiCalc 都无法与传统的大型主机电子表格程序相比，它只有一个优势：在 VisiCalc 里改变表格中的数值，表格数据因此而发生的变化会立刻体现到屏幕上。VisiCalc在交互性方面比传统主机程序快千万倍，这个差异也成就了它。

交互性的速度因素的第二个例子是20 世纪60 年代于美国达特茅斯学院（Dartmouth College）发明的 BASIC 程序设计语言。当时已经有好几种针对学生、旨在强调编程简易的程序设计语言了，而让 BASIC 脱颖而出的其实是当时谁都没注意到的一个特性，即它较高的交互性。BASIC 是一种解释语言，而不是编译语言。许多计算机语言都是编译语言，编写的程序代码需要通过编译器转换为计算机可以执行的机器语言代码，然后才能运行程序查看结果。在过去，编译过程通常耗时好几分钟，所以那个时候的人在开始执行编译之后，往往会喝杯咖啡休息一下，然后再回来查看编译是否成功。

在遇到常见的编译错误时，还须要对代码进行修改，然后重新进行编译，这又得等好一会儿。反复进行这样的过程，改了等，等了又改，一天下来进展缓慢也是常有的事。

与编译语言不同，BASIC 是解释语言，可以不用经过编译就直接运行，一旦编写好代码就可以运行程序，从而立刻得到运行结果。如果程序有问题（bug），修改之后随即运行查看修改后的运行结果。这样的方式简单快捷，再也没有不得已而为之的喝咖啡间歇，让使用者沉浸在与电脑的交互之中。

BASIC 由此风靡全球，在几年之内就成了学习编程的首选语言。实际上，BASIC 是一门设计欠佳的语言（主要还是因为它是解释型的，而不是编译型的[47] ），不但在语言功能上存在诸多问题，而且还助长了不好的编程习惯。尽管如此，在交互速度上的优势仍使其脱颖而出。

关于交互性速度因素的第三个例子是更具现代感的互联网，也被戏称做“互等网（World Wide Wait）”[48] 。自 20 世纪 90 年代至 21 世纪初，我们一直都是通过接入电话线路的调制解调器来访问互联网的。那时候的网速很慢，等待网页加载都是件令人沮丧的事情。而当笔者第一次通过宽带连接上网的时候，那种畅游网络带来的激动心情是令人难忘的——整个世界跃然“网”上。显然，响应时间的缩短让人的感受产生了巨大变化。

数码相机也是体现交互性价值的绝佳例子。过去人们使用传统的胶片相机时，必须先一直拍照片，直到胶卷用完，然后把胶卷送到店里洗照片，过一段时间之后才能拿回照片进行查看。每次往往都有不少拍得欠佳的照片，人们经常会因为关键照片没拍好而感到惋惜。

有了数码相机，我们随时拍照随时查看。经由这种快速呈现拍摄结果的能力，我们可以与所拍的画面发生互动，尝试不同的拍法，然后选择效果最好的留下。

要点10

快速响应总是好过慢速响应。

2.5.2 深度

有些活动是不需要动脑筋的：浏览网站并不需要我们全神贯注。虽然电子游戏可能会紧张刺激，但是那也不会动用我们大脑中最重要的功能。另一些活动却需要我们全神贯注，并且由此发生更深入的互动。比如象棋游戏，虽然进展可以很缓慢，但是下象棋所涉及的互动就比五子棋的要深入得多。

所谓交互之“深度”，指的是“触及人性本质的程度”。电脑可以轻松地赢你一局五子棋，然而你并不会太在意，毕竟五子棋无关人生大计。

但是，倘若你的女友弃你而去，跟着一台电脑跑了，那么情况就不同了。“对不起，亲爱的，跟我的 iMac 比起来，你不如他那么让我心动，不如他那么善解人意，不如他那么令我满足。虽然他全身银白，但是再怎么说他才是个真正的男人。”倘若女友这么对你说，那么这个打击可是够大的了。虽然这个例子很极端，但是却能很好地描绘上述所谓“触及人性本质”的意义。

有许多维度的深度可供艺术创作者斟酌。电子游戏只涉猎人类认知最简单的几个方面，最主要的4个挑战分别是手眼协调、解谜、空间推理，以及资源管理。与之不同的是，互动叙事涉及的首要方面是社会推理（social reasonning）能力。人类社交关系的动态复杂性变幻无穷，正是互动叙事取之不尽的素材源泉；其核心在于如何借由算法来实现这种艺术表达。要想把复杂的社交机制提炼成数学形式，同时又不牺牲其丰富性，须要我们把艺术洞察和数学机理精妙地有机结合在一起。这个议题会在第14章“人格模型”里得到探讨。

要点11

交互的整体质量依赖于速度和深度两个要素。

2.5.3 选择

卡尔·冯·克劳塞维茨（Carl Von Clausewitz）[49] 在其里程碑式的著作《战争论》中提到，战役之于战争，如同付款之于商务。商务人员可以定下交易、编写合同、制造产品、获得资金投入，甚至安排外汇转换事宜；但归根结底，客户付款才是一笔生意的决定性时刻，之前所有其他步骤都是对其的铺垫。类似地，将军可以拿到武器、训练军队，并且通过巧妙的战略来排兵布阵；但归根结底，实际发生的战役才是决定性的时刻。同样的道理也可以用来描绘思考的过程：选择之于思考正如同战役之于战争。我们可以整天思索酝酿，但是思考的最终结果还是做出某种选择。有时候有些选择可能想起来不像是选择（比如“早餐是吃馒头还是吃面条”），但这些仍然是不折不扣的选择。所有心理活动的目的都是为了作出决定，即使在掌握信息不充分的情况下也是如此（比如“在夜深人静的小路上听到背后有脚步声，我是该加快脚步还是该不予理睬呢？”）。

做选择的能力是决定交互程度的第三个要素。交互的质量取决于选择的丰富性，而丰富性又包含两个因素。

• 选择的功能性意义。

• 可见的完备性：选择与用户所能想到的可能性之间的数量比例。

所谓“功能性意义（functional significance）”指的是一种选择从多大程度上能满足用户的欲求、需求和兴趣。假如文字处理软件提供一种“在用户打字时随机改变字体样式和大小”的功能，那么用户选择使用这个功能是毫无意义的，因为它对交互毫无助益。再假想这样一个电子游戏，该游戏提供了巨大的虚拟空间供玩家探索，但是整个空间里没有设计任何有趣的事物，可怜的玩家在这一片死寂的世界里逛几个小时也不会发生任何事情，并没有任何催生交互的机会。这个游戏在“探索游戏世界”方面固然是提供了相当多的选择，但是无论玩家选择往哪里走，都是毫无功能性意义的。

所谓的“功能膨胀（feature bloat）”[50] 便是另一个极端的例子。比如Microsoft Word软件提供一种给文档追加边框和阴影效果的功能。笔者从来没使用过这个功能，也从来不打算使用，因此对笔者而言，它只是一种没有功能性意义的选择；不但如此，它还成了 Word 软件中的累赘功能，因为每次打开“格式”主菜单的时候，笔者都不得不看到这个功能项，并且有意识地忽略它。当然，另一些用户也许会很喜欢这个功能，屡试不爽；那么对这类用户而言，它不仅不是累赘，反而还是颇具功能性意义的选择。由此可见，功能性意义的大小是个主观的判断。

再来考察第二个因素：“可见的完备性”。选择的绝对数量并不重要，重要的是选择的数量与用户所想到的可能性数量之间的比例关系。假如一个互动故事达到了最高潮部分，用户必须在“离开女友，投入战斗”与“待在女友身边，逃避战斗的责任”之间做出选择，那么只有区区两种选择这个事实丝毫都不会影响互动故事的效果，因为在这样的情节之中，用户很难想到其他的可能性了。

由此，笔者就要提出本书最重要的观点——

Crawford软件设计第一定律：始终考虑用户做什么，用户行为涉及的动词是什么。

任何软件都是由其提供给用户的“动词（verbs）”来界定的[51] 。这些动词塑造了软件的设计架构。如果谁告诉你有一款软件可以让用户输入文本、设定字体效果、设置缩进和页边留白，那么你就能相当确定地推测这是一款文本处理或者排版软件了；如果谁告诉你另一款软件可以让用户左转右转、前进后退、跑跳蹲趴，还可以开枪，那么你肯定会知道这是第一人称视角射击游戏。动词能够回答“用户做什么”的问题，从而能够对软件做出界定。

2.6 那又如何

上述一系列对交互性概念的大肆鼓吹还是没有交代一个很重要的问题。

到底有谁在乎交互性呢？为什么就要因此投身互动叙事领域呢？

对此，笔者提出三个理由：其一，交互是作为媒体的计算机获得竞争优势的基础；其二，交互具有颠覆性意义；其三，它具有强大的影响力。

理由1：竞争优势的基础

竞争的最高原则之一就是让竞争发生在对自己有利的形势当中。在军事科学领域，这个原则被描述为“选择有利地形展开战斗（fight on the ground of your own choosing）”——意思是说，将军指挥战斗时，应该把握天时地利，让自己的军队能够扬长避短。政治顾问们总是建议候选人“要以自己的立场，而不是竞选对手的立场来竞选（fight the campaign on your own issues, not your opponent’s）”。所有MBA学员都会学习辨识和发挥企业的“基本竞争优势（basis of competitive advantage）”，指的是要依靠比对手更好的那一部分产品或服务来实现差异化。在基本竞争优势上下足功夫是唯一的制胜之道。

计算机是一种可以实现艺术表达的媒体，使用这个媒体的艺术家必须理解其竞争优势的基础正是交互性。计算机在图像、动画、音乐、声效和文字的表达方面都不错，然而其他媒体在这些方面仍然可以比计算机更胜一筹。虽然计算机可以呈现亮丽的图像，但是纸质出版物仍然可以呈现更好的图像效果，而且成本更低：几十块钱的海报较之动辄上千元的计算机，其呈现效果可以更好。廉价的 DVD 就可以播放动画，而一台 DVD 播放器比计算机要便宜得多。纸质图书的文字印刷效果仍然好过计算机的呈现效果。在上述所有这些方面，计算机都算不上是最好的[52] 。虽然我们能够利用计算机来进行艺术创作，但计算机本身从来都不是呈现作品的最佳载体——如果我们希望达到最佳的表达效果，其他媒体形式往往比计算机更适用。

然而说起交互性（interactivity），情况就完全不同了。没有哪个媒体能够像计算机这样提供货真价实的交互性——电影做不到，CD、DVD 做不到，图书也做不到。说起提供交互性，计算机乃是独此一家，其作为媒体的基本竞争优势就在于此。

理由2：交互具有颠覆性意义

如果有更具发展潜力的行当，谁还会跑去加入像电影、音乐或者文学这样的传统老行业？互动叙事是全新的领域，以至于还没有人完全弄清楚它的概念和原理。对于具有冒险精神的人来说，这是最好的入行契机——在一种新兴媒体刚起步时就加入进来，这样的机会可不多见。2500 年前，文学曾经是热门的新兴领域；500 年前，出版曾经是充满了机遇的新兴产业；100 年前，电影还是个相当年轻的行业；20世纪30年代，广播才起步；20世纪50年代，电视红极一时。20世纪80年代电脑游戏领域迈出第一步的时候我就站在一线，拥有了充满乐趣的经历；如今，电脑游戏也不过是所谓“主流媒体（Big Media）”之一了。当下，互动叙事才是最激动人心、最有发展潜力的领域，适合所有创意人才参与发展。

理由3：交互具有强大的影响力

你是不是那种志在通过作品影响大众的艺术家呢？你是否有话要说，想对全世界说，而且不想窃窃私语，而是要大声说、喊着说呢？你是不是希望通过作品传达给他人的观念能够直击内心深处，震撼人的心灵，让人忘乎所以地沉醉其中呢？

不妨回顾一下本章开头“人类理解模型”一节，想一想笔者提到的那种让人发出“原来如此”之感叹的顿悟——这正是所有伟大艺术作品能给人带来的体验。富于表达的展示性艺术（expository art）总是会与观众保持一定的距离，观众可以欣赏画作、观看电影、阅读文学作品，或者聆听音乐，但也就止步于此。要进一步深入“接触”作品，就必须在心智上实现进一步的介入。交互性可以把观众直接拉进作品当中，他们不仅在欣赏作品，还能参与作品本身的实现。这种更深层次的介入放大了整个体验的影响力。这不正是我们的诉求吗？

干嘛不直接利用计算机来强化传统的故事叙述方式呢？

很久以来，人们一直在利用计算机来增强故事叙述的效果。没有计算机技术的帮助，电影《侏罗纪公园》就很难拍出来。这种通过计算机以传统方式讲述故事的手法还塑造了一个专门的领域——数字化故事叙述（digital storytelling）。计算机的应用固然是让传统叙事的实现变得更快捷且成本更低，但是这只会取悦投资方和刚入行的故事叙述者——他们只把计算机当作辅助传统媒体的工具，而不是当作具备全新表达方式的媒体。要想发挥计算机的优势，获得强大的艺术影响力，必须诉诸交互性。

2.7 本章小结

在本章中，笔者算是给读者们“打足了兴奋剂”，在此还应该泼一点冷水：要在互动叙事这种颠覆性的新兴领域实现发展，不历尽艰辛是不可能有所成就的。实现互动叙事绝非易事，必然迎接无数的挑战，克服重重的困难。本书能带读者入门，却还没有办法手把手地教到出成果的地步。决定交互质量的是选择：如果这些选择能让玩家的知识网络与我们自己的发生交融，那么我们就能带给玩家那种醍醐灌顶的绝佳体验。

第3章 互动叙事

我们在前面两章分别对“故事”和“交互”的概念做了阐释，现在的任务就是把两者结合起来，探讨“什么是互动叙事”、“故事与交互性的交集是什么”等问题。多年以来，人们在谈论互动叙事时采用了不计其数的概念和语汇：互动故事（interactive story）、互动叙事（interactive storytelling）、互动戏剧（interactive drama）、互动叙述（interactive narrative）、互动小说（interactive fiction）、互动电影（interactive movies），等等。这恰恰体现了大家对这个领域的陌生和不解。笔者决定采用“互动叙事”的提法，因为它是最被广泛使用的概念。

除此之外，上述这些语汇确实也存在微妙却关键的差异，这些差异正是导致困惑的原因。比如像“互动故事（interactive story）”这样的词其实是自相矛盾的，因为所谓故事（story）只是素材数据（data）而已，并不是一个过程（process）。我们无法与数据发生交互，交互是发生在一种随着时间推移而进展的过程当中的。图像、声音、文字和数字等都是数据的形式，我们无法与它们实现交互，因为它们本身什么也不会“做”[53] 。我们能够与过程发生交互，因为过程是动态的，它随着时间推移而进展——我们可以介入过程，改变它的推进方式，以“你来我往”的方式与它形成交互。故事是数据，是一成不变的；而“故事叙述（storytelling，叙事）”指称的则是一种动态的过程，我们可以介入它、调整它、操纵它，从而与它发生交互。由此可见，采用“互动叙事（interactive storytelling）”的提法才是妥当的。

那用来实现“互动叙事”的载体产品又该叫做什么呢？难不成起名叫“互动叙事那啥”？

当然不是。我把实现互动叙事的载体称作“互动故事世界（interactive storyworld）”，它包含了所有能与玩家形成交互的戏剧性元素。遍历故事世界的结果就是故事。精彩的故事世界内涵丰富，玩家可以通过多次遍历来体验趣味纷呈且各不相同的故事。

电子游戏不正是如此吗？优秀游戏的“可玩性”高，玩家可以乐此不疲地反复通关，而且每次都能享受精彩的体验。

虽然这么说也不能算错，但是游戏与互动故事世界之间的差别还是很明显的。我们不妨来考察一下通过玩电子游戏而生成的“故事”是怎么样的：

我进了一个新关卡，看到怪物正要冲我过来。我往左一闪，开枪把它干掉了。这时，另一只怪物也看见了我，便扑了过来。我绕到一个障碍物背后，从另一边绕出来，开枪击倒了它。我又躲到另一个障碍物背后，观察敌情，又发现了 5 只怪物，于是冲它们扔了一个手榴弹。手榴弹爆炸后，我冲出来干掉了还没被炸死的怪物。然而，又有另一只怪物在角落等着我，把我打了个措手不及，我顿时就损失了一半的生命值。我试图逃脱并寻找掩护，但是怪物对我紧追不放。我没办法摆脱它，枪的威力也不足以干掉它。虽然我对它发射了至少4梭子弹，但还是被它杀掉了。

以上的描述当然算是个故事，但是这种故事真的有趣吗？玩游戏的体验固然是有趣味的，但是倘若一本小说每一页都是这样的内容，那么恐怕我们读不了几页就会觉得无聊了吧。电子游戏能提供精彩的体验，但是却没办法讲述精彩的故事。

3.1 互动叙事作为游戏概念的外延

人们在无法理解新事物的时候，总会尝试用已知的熟悉概念来加以解读。比如，19 世纪的美国印第安人把铁路称作“钢铁马（iron horse）”；20 世纪中叶的人对计算机的理解是“巨型机械大脑”。同样，试图理解互动叙事的人会把对其的解读建立在已知的“游戏”概念上，因为游戏是大家所能想到的最近似的事物。的确，互动叙事与游戏一样，是通过计算机呈现的，是交互式的，而且也是娱乐性的。然而，火车并不真的是用钢铁做成的马匹，计算机并不真的是机械组成的大脑，互动叙事也并不是通过游戏而产生出来的故事。

笔者把游戏定义为目标导向的互动娱乐形式，其中一个或多个对手主动尝试阻止玩家达成其目标。这样的界定几乎也完全适用于任何形式的互动故事世界（interactive storyworld）。游戏里的“对手”等同于故事里的“反面人物”。游戏玩家等同于故事里的主人公。玩家有既定的目标，对手要阻止玩家达成目标。显然，在笔者的这种定义之下，游戏与互动叙事系统似乎没有任何区别。

然而真实世界是纷繁复杂的，明晰的定义往往无法全面地描述复杂的现实。说老鼠、鹿或者狮子都是哺乳动物，也许不难理解；然而要理解鸭嘴兽和鲸鱼也是哺乳动物，可能就不是那么直截了当的了。如果我们把食物界定为含有营养成分的东西，那么不包含任何营养成分的苏打水饮料到底算不算食品呢？

游戏的世界同样也是纷繁复杂的。虽然笔者对它给出的定义从学术角度来说并没有错，但是我们实际在计算机上玩到的游戏其实可以通过更具狭义的方式来界定。

电子游戏是一种交互式电脑娱乐形式，具有相对简单或暴力性质的主题，对音画效果依赖性较强。电子游戏玩家运用精确的手眼协调、解谜和资源管理等技能进行游戏。

尽管上述定义无法涵盖所有种类的电子游戏，但是也已经很好地概括了绝大部分游戏。与其说是定义，不如说这是特征描述。

有了这个特征描述，下面我们就来逐条比较电子游戏与故事的不同。

3.1.1 相对简单或暴力性的主题

游戏主题相对简单或趋于暴力这一特征揭示了它与故事之间的巨大差异。针对的儿童故事固然可能会相对简单，但是故事的总体特征是其主题和结构的复杂性。即使是诸如《终结者》或者《哥斯拉》之类“简单粗暴”的电影也比最复杂的游戏具备更复杂的人物角色和更微妙的故事结构。故事对人物发展和情节构造的要求远高于游戏。

3.1.2 依赖音画效果

音画效果不但是游戏的重要因素，它在电影中也起到一定的作用。计算机图像技术的进步孕育了令人叹为观止的图像效果。尽管如此，那些完全依靠特效的电影却屡屡遭遇票房失败。20 世纪90 年代出现了多部效果绝佳的恐龙电影，但是除了侏罗纪公园系列电影之外，又有多少人能记得其他类似的作品呢？惊人的音画效果固然会为电影作品添彩，但电影是否叫座叫好却从来都不只依靠它。音画效果始终是辅助性的因素，故事始终是第一位的。

3.1.3 精确的手眼协调能力

一部分电影里的人物确实须要运用手眼协调能力，比如《星球大战》系列电影里使用激光剑与敌人对战的绝地武士（Jedi knights），或者动作影片里的英雄们等。

然而，除了动作电影之外，动作能力从来都不是电影中的关键因素；即使是动作电影，其中也有不少“机智胜过动作”的表现。《终结者》中年轻娇美的女主人公一路逃跑躲藏，直到最后才诉诸动作场面，战胜了追杀她的机器人。《星球大战》的主人公天行者卢克（Luke Skywalker）在摧毁“死星（Death Star）”的时候确实诉诸了武力，然而当他快被邪恶皇帝杀死时，他的恳求才是让其父亲黑武士转而解救他的原因。富于动作表现的手眼协调能力在故事里面永远都是辅助性的元素。

3.1.4 解谜能力

许多故事都是以谜题为中心的。所有的悬疑故事都是精心构思的谜题，连动作电影也常常利用悬念来构造情节。另外，大部分游戏也包含谜题，有些游戏也是围绕着谜题展开的。如果禁止游戏设计师使用谜题的话，那么游戏产业恐怕就会遭受重创、万劫不复。倘若禁止好莱坞在电影中运用谜题的话，那么电影产业只会丧失一种电影类型（悬疑片），远不至于把整个产业搞垮。游戏里的谜题也许是要求玩家琢磨出“转身跳跃并同时发射火箭炮”的最佳实施方式；而故事里的谜题则往往建立在复杂且微妙的人类行为的基础之上。阿加莎·克里斯蒂（Agatha Christie）的大侦探波洛（Poirot）系列小说被普遍认为是悬疑类小说的经典作品。在其中一部名为《空幻之屋》的作品中，大侦探波洛在嫌疑人的工作室内发现了一尊泥塑马头雕像，又想到该嫌疑人表露过对马的厌恶之情，便由此意识到这尊雕像可能并非是艺术创作的结果，最后从中找到了凶器[54] 。

3.1.5 资源管理技能

故事的展开和演进可快可慢、可松可紧，并不存在资源管理的问题。6 发的手枪总能发射出不只 6 发子弹（大概经典影片《肮脏的哈里》算是个例外——其中有句台词是：“他开了 6 枪还是 5枪？”）。在《指环王》电影中，阿拉贡、莱戈拉斯和金利一行三人可以不吃不喝，长途跋涉数日。不但如此，电影里的人还从来都不用花时间上厕所！相比之下，游戏则对玩家提出了各种资源管理的挑战。故事不用对数量的多少斤斤计较，而游戏玩家则是乐此不疲地在装备数量、食物多少、健康值、能量值等一系列事情上求得妥当的配置和平衡。

通过上述比较不难看出，故事与游戏虽然在概念上似乎很相似，但是在实际上却是大相径庭，两者顶多也就只能算是远亲。试图通过游戏的概念来生动形象地理解互动叙事，就好比以骆驼为参考来描述鲸鱼一样，结果自然差强人意。虽然骆驼和鲸鱼确实都是哺乳动物，但是两者之间差异实在太大，互相拿来做参照不仅浪费时间，而且也相当具有误导性。

要点12

互动叙事系统不是“纳入了故事元素的游戏”。

3.2 互动化的电影

有些游戏设计师把互动叙事与电影类同起来，认为互动叙事的玩家只要负责做出主导情节发展的重大决定即可。如果我们能扮演《星球大战》中天行者卢克的角色，成为绝地武士，对抗邪恶力量，手挥激光剑勇闯太空，那岂不是会很精彩吗？

这种思路激励了一代梦想着涉足电影行业的有志之士，这些人被好莱坞拒之门外，从而急切地希望证明自己的电影才能。计算机提供的功能强大、成本低廉的软硬件工具促使这些电影制作者们走上了试验的道路。在尽兴之时，他们便想到了给电影加入交互性的可能性。试验结果就是被笔者称为“互动化电影（interactivized movies）”的产品，即加入了互动元素的电影作品。

拿着电影的想法来考虑“如何加点交互性进去”，这与设计了鼠标之后又想给它添加视频功能一样糟糕。硬生生地把两种截然不同的东西拼在一起，是无法实现两者融合的——其中的挑战在于如何实现有机结合，拿胶带直接把两者绑在一起自然是行不通的。

3.3 情节与交互性

许多人把故事情节（plot）与交互性（interactivity）作比较之后得出结论，认为两者存在根本性的冲突。学术界采用“主体（ agency ）”的概念来指代我们常说的“交互性”，采用“叙述性（narrativity）”的概念来指代我们常说的“故事性（storiness）”或“情节”。

英国威斯敏斯特大学（University of Westminster）超媒体研究中心（Hypermedia Research Center）的Andy Cameron 做过如下描述。

我认为互动叙述（interactive narrative）存在固有的内部冲突。叙述从根本上说是线性的，而且不是交互式的；互动故事（interactive story）体现了不同于故事叙述的特性。

还有来自美国德雷赛尔大学（Drexel University）和中佛罗里达大学（University of Central Florida）的研究者这样写道。

计算机互动叙述（interactive narrative）的关键挑战是用户主体（user angency）与作者对故事的掌控（authorial control）之间的冲突。

来自葡萄牙的研究者为互动叙事设计了一种体系架构，目标是“让用户获得更加贴近作者本意的故事体验”。

还有一些学术权威认定交互性与故事两者是没有交集的。一位知名的计算机科学家 Andrew Glassner博士这样写道。

在基于计算机的故事和游戏当中，“互动小说”概念的流行颇为令人诧异。在我们的文化史当中，是否有任何线索表明人们确实想要参与到故事本身当中呢？是否存在令人信服[55] 的互动小说体验的成功案例呢？这两个问题的答案都是否定的。

这又是所谓“交互性神话（Myth of Interactivity）”在作祟。这个说法企图告诉我们：交互性能让游戏变得更精彩，游戏设计师应该尽可能地让整个游戏体验具备交互性；对其他类型游戏凑效的互动都应该被应用于故事类游戏。这种对交互性的强大力量的信奉导致人们尝试把交互与故事叙述进行联姻。

Glassner 博士观察到互动叙事是前无古人的领域，这倒没错。要知道，有太多事情都曾是“前无古人”的，比如交互式文字处理、交互式数据库管理、交互式电子表格，当然还有交互式的因特网。在计算机出现之前，丰富的交互只能通过人的参与来实现，而且大部分时候，通过人的介入而实现交互的方式都因为速度不够快或成本过高而变得不值得。以“从来没有人做过互动叙事”为理由而拒斥它，等于是在拒斥人类心智历程（intellectual adventure）的根基。

3.3.1 交互与故事情节

我们不能因为实现互动叙事很困难，就认为它是不可能做到的。从理论上讲，交互性（interactivity）与情节（plot）之间确实存在显而易见的冲突。透过故事情节创作者的视角来考察最能阐明这种冲突：情节构思是高难度的事情，需要天赋和创造性才华；让指手画脚的观众与精心构思的情节发生互动，显然会破坏作者为情节构造的微妙平衡。作者深知构思精彩情节的不易，从而坚持认为观众的介入绝不会有好结果——如果实现交互性要求观众参与情节的构造与发展，那么交互与情节显然就是互不兼容的。

观众一方的态度也加剧了两者的冲突。作为交互主导者的玩家（观众）往往对情节缺乏足够深入的关注。披露 id Software 公司内幕及其经典游戏《毁灭战士》制作过程的传奇故事也许最能体现这一点。据传当时公司内部就“故事在游戏中的作用”发起了争执，一方认为应该用故事元素把游戏的各个方面有机地串联起来，实现整体性，而另一方则认为《毁灭战士》只是个简单直接的动作游戏，不需要用故事来添油加醋。传闻说最终后者胜出，前者则被迫离开了公司。随着游戏的推出，《毁灭战士》一举成为史上最成功的游戏之一，这愈发体现了故事叙述在玩家眼中可有可无的地位——游戏创始人 John Carmack 这样说道：“游戏中的故事跟成人电影中的故事一样，不能没有，但完全不是重点。”[56]

如此看来，交互性与情节之间似乎确实互不相容，不但在理论上说不通，而且诸多失败的尝试似乎更佐证了这一点。这似乎也在暗示着，互动叙事只是不可能实现的空想罢了。

认为交互与叙事的互不相容，或者至少是两者之间存在根本性冲突，是一种相当普遍的看法。如上所述，这种看法很容易令人信服，稍加考察便很容易能够得出这样的结论。然而，看似令人信服的推想及其广为人接受的现状并不能证明这种看法的合理性。

3.3.2 自由意志与决定论

我们上述探讨所涉及的核心问题其实并不是什么新鲜题材。一些历史上最聪明绝顶的人早就从稍微不同的角度探讨过与我们这个核心问题密切相关的另一个问题，即在神学当中的自由意志与决定论的对立问题。

在此笔者不妨借用神学家们千百年来的争论[57] 来阐释一下其中的关联。神学家认为上帝是全知全能的，世间一切事物的发生均为上帝的设计所致；世间的邪恶也是上帝的大设计中的一环，同样行使着上帝的意志；无论是人的作为还是自然现象，都是上帝的意志。如此说来，可怕的自然灾害和谋杀行为都可以看做是“上帝的旨意”，那么人类哪里还有什么自由意志呢？这样说来，人类只是全能上帝控制之下的提线木偶罢了——我们的生活和作为都只不过是上帝预先为我们安排好的“情节”。但是一旦按照这个思路想下去，神学中所谓“罪”的概念也就应该不存在了——显然，这是很难让神学家们接受的。

另一方面，如果假设人类是具有自由意志的，那么又可以得出“上帝并非全知全能”的推断。如此一来，上帝大概就无法掌控或知晓我们的作为了。但是如果这位上帝既不是全知的也不是全能的，那么恐怕他就不符合我们对“上帝”这个概念的界定了。显然，对神学家来说这也是很难令人接受的。

如此看来，自由意志似乎也与决定论有着水火不容的关系。

上述比喻应该不难理解：故事叙述中的情节就好比决定论，它是故事叙述者预先安排好的，故事从开头到结局都是设计出来的；交互就好比自由意志，玩家要与故事实现互动，必然需要行使自由意志。我们不妨把故事看作是个迷你宇宙，作者则可被看作是迷你宇宙的“上帝”。这位全能的上帝创造的是假想的世界，他预先就决定好了其中人物的作为和命运——如此一来，宇宙万物的历史不过是上帝创作的长篇故事，是由其中的人物表演出来的结果。

但是，游戏设计师还是不可以被看做是“上帝”，他们创造了游戏中的迷你世界，并且像上帝一样操控着其中的所有事情。即使如此，玩家不是还具有自由意志嘛！

没错！解决问题的关键恰恰就在于此：游戏设计师从来都没有设计玩家实际体验到的事件（events），而只是设计了能界定玩家行为的过程（processes）；换句话说，游戏设计师并没有完全界定玩家获胜所需要进行的每一个确切途径，而是界定了玩家获胜的行为规则。游戏世界是玩家可以在其规则限制之下，行使自由意志的空间。游戏设计师控制的是游戏世界的过程[58] ，而不是由过程引发的事件。这正是解决交互与情节之间冲突的办法：情节界定的是事件，而不是过程。要在故事中实现交互，就需要经由“过程”来实现创作者对故事的控制，而不是直接控制“事件”本身。情节与交互也许的确是互不相容的，但是过程驱动的叙述与交互可以完美地结合。

前面拿来作比喻的神学争端在好几百年之前就被化解了。笔者确信，总有一天互动叙事专家们也会达成意见上的统一。

要点13

过程驱动的叙述（process-driven narrative）与交互之间没有冲突。

3.4 独一无二的互动叙事

经过了上述一系列的探讨，我们必须要了解的事情在于，互动叙事完全是一个全新的领域，它鹤立鸡群、与众不同、前无古人、独辟蹊径。我们无法把来自传统游戏或故事、久经历练、行之有效的手法套用到互动叙事里面来，这样的尝试只会让游戏设计师和故事叙述者走入歧途。我们踏入的是尚无人涉足的新领地，过去的老经验、老方法在这里行不通了。

于是我们就需要回到起点，从头开始。交互的根本原则是 Crawford 软件设计第一定律：始终考虑用户做什么，用户行为涉及的动词是什么。因此我们要问这样的问题：互动故事世界的用户（即玩家）应该能够做什么？

首先，用户需要能够做出戏剧性的重大决策。有些设计师引入了关乎空间推理的决策（“我是该躲在大楼的这个角落，还是该跑向那辆卡车呢？”）。

有些设计师引入了关乎资源分配的决策（“我是该扔手榴弹，还是该只用刀呢？”）。还有一些设计师引入了谜题。然而，这些决策在戏剧性方面并不具有重要意义；它们无助于丰富故事世界（storyworld）。虽然这样的决策都具有交互性，但是如此这般却实现不了互动叙事。画蛇添足不会画出更好的蛇；引入无关大局的交互并不能强化互动叙事。在互动叙事当中，交互性与故事叙述并不是各自独立的要素，两者的谐和共生才是关键。

其二，呈现给玩家的决策必须得到权衡。倘若让玩家在“吃颗洋葱”和“从恶龙那里救回公主”之间做出选择，那么这个决策就失衡得没有太多意义了。为玩家提供的选择并不必要实现完美的平衡，只要不影响决策的戏剧性价值，选择的些微失衡也不是不行。严重失衡的决策要么流于乏味，要么就太过荒唐。比如在“洋葱还是公主”的例子中，倘若故事创作者为故事世界做出的设定是“只有吃过洋葱之后嘴里留下的洋葱味才能打倒恶龙”，那么选择吃洋葱才是正确的；然而从戏剧性的角度观之，这样的安排实在没有什么逼真性可言，只是个荒唐的谜题设计罢了。

这种对决策实现平衡的要求向传统的故事叙述者提出了挑战，因为传统的故事创作的根本原则之一就是要营造环境和条件，以便让故事人物的决策显得顺理成章、理所当然。《星球大战》中的天行者卢克（Luke Skywalker）因为 R2D2 机器人的出逃才恰好遇到他未来的师父欧比旺（Obi-Wan Kenobi）。随后卢克一行在前往太空站的途中刚好遇到了被邪恶兵团屠杀的外星族人，才决定返程。最后卢克之所以同意与欧比旺一起前往阿德朗星球（Alderaan），是因为他的叔叔和阿姨都被杀害了。

像上述这样推动情节发展的构思手段是传统故事叙述当中广为运用的要件，优秀的故事创作者能借此让人物角色的决策显得水到渠成、理所当然。然而，互动叙事创作者却决不能构造这样“失衡”的决策[59] ，而必须在多种可能的选择之间实现一定的平衡。

其三，故事世界必须向玩家提供足够多的选择，但其中大部分决策都应该相对比较轻小。倘若我们让玩家分秒之内历经多次生死抉择，那么整个故事世界就会变得像四格漫画一样夸张，而不是像漫画小说（graphic novel）那样富于叙事了。换句话说，需要玩家经常做出的决策必须相对较小，其对整体故事的冲击不能过大。

对话（conversations）是实现这种轻小决策的最佳载体。丰富的对话系统（而不是现今游戏当中常见的基于分支选择的对话设计）能让玩家与故事中的其他人物建立“人际”关系，同时逐渐地推动情节的戏剧性发展。

我们须要让玩家面对频频出现的一系列选择，这些选择必须在戏剧性方面具备突出的意义，而且必须在选择之间实现一定的平衡（如图3.1所示）。

图3.1 均衡地把握玩家的决策

传统故事的创作者会下足功夫构思和设计戏剧性的时刻，故事中的所有其他元素都是为这些关键时刻做铺垫的。互动叙事则完全不同：为重大的戏剧性发展做出铺垫的不是互动叙事创作者，而是玩家本身；玩家在交互过程中逐步建立的戏剧性上下文自然而然地塑造了这些关键性的发展。在互动叙事当中，我们不会让玩家在“为了金钱而背叛恋人”和“放弃金钱诱惑从而与恋人终成眷属”之间做出选择，因为这样做太过简单、没有吸引力。我们要通过一系列的“动词（verbs）”驱动玩家对故事的发展，为令人满意的戏剧性结局逐步建立起所需的上下文。

还记得在第1章中讲到的“心智模型”吗？其中一种心智模型是社会推理（social reasoning），即推断一个人会如何对另一个人的言行做出反应的能力。发展社会推理能力异常艰难。在这方面，似乎女性比男性更胜一筹——女孩子与人偶娃娃作伴的时候，男孩子玩的是汽车模型，哪一方花了更多的时间进行社会推理呢？

3.4.1 社会推理的作用

社会推理从来都不是围绕单一的行为决定展开的，人际关系是在一系列微小的行为举动当中逐步建立起来的。要了解社会推理的作用，不妨阅读英国文学家简·奥斯汀（Jane Austen）的小说作品。她的作品里描述的都是女主人公在经过一系列纷繁复杂的事件之后嫁得如意郎君的故事。如果我们把奥斯汀作品里使用动词统计出来，那么就会发现其中的哪个动词都没有起到什么决定性的重大作用，故事的结局是所有动词（即故事人物的一系列言行）综合作用的结果。在《傲慢与偏见》里，女主人公伊丽莎白与男主人公达西两人终成眷属的结局是从前者对后者的偏见开始发展的，两人终成眷属的过程就是小说的主要内容。

互动叙事采用的动词是日常交际当中用到的，包括对话在内如下所示。

• 向别人表明（declaring）自己的感受（“我觉得玛希她挺酷的。”）。

• 描述（describing）第三方对某人的感受（“看来黛拉不喜欢玛希。”）。

• 寻思（ relating ）能揭示人格特征或感受的事件（“那天黛拉把玛希从邀请人名单里去掉了。”）。

• 就此类事件撒谎（lying）（“那不是我干的！我没把你从邀请人名单里去掉！”）。

• 透露（revealing）事件的真相（“那只是她的说法，我可是亲眼看见她把你的名字从名单里划掉的。”）。

• 反驳（ contradicting ）或质疑（ questioning ）说话人的说法（“我觉得黛拉不至于那么卑鄙。”）。

从更高层面来看，这还可以涉及如下的一系列动词。

• 做交易（deals）：“如果我同意把玛希加回邀请名单，请你告诉她注意克制，不要太过分，行吗？”

• 承诺（promises）：“我发誓，不会为难黛拉的。”

• 威胁（threats）：“如果你在派对上不给我面子，我当场就会把你赶出去！”

• 要求（demands）：“你离我远点儿！”

驱动故事进展的是一系列动词。

要点14

故事世界向玩家提供的不是屈指可数的几个关键性选择，而是许许多多的轻小选择。

其四，互动叙事不能只提供能够促成圆满结局的决定，我们必须允许玩家做出可能导致各种结果的选择。传统的故事叙述者对此往往颇有抵触，他们认为故事必须以令观众满意的方式收场[60] 。虽然这种想法适用于传统的故事叙述，但是完全不适用于互动叙事。不妨设想一下如果我们这么做了会怎么样。假设我们创建了一个浪漫故事世界，其中的主人公罗密欧正打算与爱人朱丽叶结婚[61] ，而扮演罗密欧的玩家决定杀死朱丽叶这个人物。按照传统的思路，我们不能允许玩家做出这样的决定，因为如果朱丽叶死掉的话，罗密欧就没办法按照原来的预想与她结婚了：玩家罗密欧掏出手枪朝朱丽叶一通射击，结果每发子弹都奇迹般地错过了朱丽叶！他又拔出匕首向朱丽叶的心脏刺去，结果匕首刚好刺中他之前送给她的吊坠。匕首应声落下，恰好掉进地板上一个很深的缝隙里面，再也捡不回来了！于是他一把掐住朱丽叶的脖子，万万没想到朱丽叶项链上的尖锐饰物正好深深地划破了他的手，罗密欧苦痛呻吟着向后退去……

要是互动故事像这样进展，那未免也太荒唐了吧！如果玩家希望偏离原定的情节，那么就应该允许他这样做，且不说为互动故事设置所谓“原定的情节”本身就是不应该的。浪漫故事世界的主旨不在于得到终成眷属的快乐结局，而是在于浪漫（romance）体验本身！浪漫的结果可以有很多：快乐的、悲惨的、愤怒的、搞笑的等。因此，故事世界必须把所有这些可能性纳入考量。

这么说太扯淡了吧！谁能在一个故事世界里包含这么多可能的素材呢？即使是最伟大的故事作品也只能涉及人类生存现状（human condition）的一小部分而已嘛。

所以其实我们从一开始就不应该针对“浪漫”这么大的主题来创建故事世界。我们完全可以对故事世界进一步细分，比如针对“受家族世仇所累的一对恋人”建立故事世界。想一想莎士比亚的戏剧《罗密欧与朱丽叶》中两位主人公的各种可能的选择和结果。或许蒙太古家族的罗密欧会试图与朱丽叶所属的凯普莱特家族实现和解，还可能真的成功了，并高兴地娶了朱丽叶。或许罗密欧最后被杀害，而朱丽叶也因此而自杀了。或许他与朱丽叶私奔之后，朱丽叶家族的人又抓到了他们，并且杀死了罗密欧。这样的可能性多得是。既然传统的故事叙述者能营造如此多的上下文情境来让故事人物的决策显得顺理成章，那么我们也没有什么理由不能针对细分的核心主题创作出各种可能性变体。

但是这样的故事世界衍生出来的故事如何能够保持一致性呢？如果罗密欧在这个故事里表现得像个玩世不恭的花花公子，在那个故事里是个贪心鬼，在第三个故事里又成了懦夫，那么故事世界产生的故事又能有什么实质性的意义呢？

这就好像是在问：一幅图片里的像素有黑有白，那该如何保持图片在颜色上的一致性呢？难道图片上每个像素的颜色都必须是白色的吗？当然不是这样！留白与上色同等重要。要彻底理解一种事物，我们就必须辩证地了解它的正反两方面。如果代表罗密欧的玩家选择了扮演花花公子、贪心鬼，或者懦夫，那么故事世界就应该体现玩家这样做的后果。

要是这样的话，玩家罗密欧岂不是要进行不计其数的尝试才有可能得到令人满意的结局，那未免也太令人沮丧了吧，玩家怎么可能玩得下去呢？

3.4.2 从多个角度看问题

使用文字处理软件进行写作的作家对写出来的作品不满意，难道他还应该埋怨软件不好吗？创业者通过电子表格上的数据发现公司运营不善，难道这就说明电子表格软件很糟糕吗？软件的功用之一就是允许用户反复做出各种尝试，而不用担心导致不可逆转的后果。交互性让我们能够一遍又一遍地从不同的角度反复琢磨一个想法，图3.2描绘了这种过程。

图3.2 从不同的角度欣赏著名的大卫塑像

图3.2是米开朗基罗的杰作大卫塑像，恐怕是世上被拍照最多的作品。图中最左边的照片是从正对着塑像的角度看到的景象，是我们最常见到的照片角度，大概也是最佳的欣赏角度吧。但是在展室里，我们可以围着作品绕圈，从不同的角度进行欣赏。既然正面是最佳视角，那么为什么还要把作品放在展室中间，允许参观者围着它观赏呢？既然作品的背面不如正面那样令人赏心悦目，那么又何必允许我们从这样的角度观赏呢？答案不言自明。

要点15

故事提供的是单一的最佳视角，而产生故事的故事世界提供的是多维度的诸多视角，包括不完美的视角。

3.5 个体化

全世界的人口高达数十亿，我们每个人都只是其中的普通一员。那么，作为个体的特殊性能够体现在哪里呢？我们显然不能将个体的独特性建立在任何一种单独的事情上面。所谓人外有人，总会有人在某件事情上面做得比你更好。热爱游戏设计的人不妨想想自己与诸多杰出的游戏设计师相比有何优势；喜欢打网球的人不妨想想，有多少优秀的网球选手可以只用一只手就轻松击败自己。烹饪、摄影、编程、园艺……行行莫不如此。

这么一想，是否就显得自己实在是太渺小了呢？大家是否意识到自身的平庸了呢？我们都不过是平凡的人，对自身的重要性抱有不切实际的看法，不是吗？

如此贬低本书的读者们，这样也太过分了吧？

那都只是铺垫而已，真正的关键在于：虽然我们每个人打乒乓球的技术不一定是最好的，但是每个人打乒乓球的风格却都是独特的，任何其他人都不可能以完全相同的方式来打乒乓球。虽然你的打球风格并不一定能体现最佳的打球方式，但它是独一无二的。无论是打出某种特定的旋球，还是以某种特定的方式优雅地接发球，你作为个体的独特性都在此体现出来。

我们擅长的任何事情都具有这样的特质。我做的番茄炒蛋与别人做的总会有差别；我的字迹总会体现我才有的独特笔触；我唱起歌来的时候，虽然五音不全，但是没人能够拥有我在歌唱时投注的那种独特的情感。娱乐活动始终都是反映个体独特性的载体。

这种人类个体行为的独特性同样适用于互动叙事。互动故事世界（storyworld）创作者常犯的错误之一就是试图通过讲述精彩的故事来让互动故事玩家从中获得愉悦。对于小说或电影创作而言，这样做的确很好。但是对于互动叙事而言，这样做就是错误的。互动叙事中的核心是玩家，而不是创作者。如果创作者以自己为中心，在故事中强行贯彻自己的意志，那么也许能得到很精彩的非互动式的故事，但是由此得到的互动故事就会相当糟糕。

优秀的互动叙事允许玩家充分发挥个体独特性，以自己独特的风格来体验互动故事。这意味着交互次数必须非常多，因为玩家需要足够多的机会来建立其自身的风格。

3.6 互动叙事中不能包含什么

笔者一直在强调互动叙事与传统的故事叙述之间的差异，并描述了互动叙事不同于传统故事叙述的一些关键特征。同样，有些传统故事叙述当中的元素也无法适用于互动叙事，这包括意想不到的额外选择（alternative options）、创造性选择（creative options）以及时间的实时推进（real-time play）。

3.6.1 没有第三种选择

互动叙事无法实现被笔者称作“第三种选择（Third Option）”的情况，即故事中的主人公在面对两难的抉择时，忽然灵机一动，想出了第三种意想不到的处理方式。

不妨举个例子来说明：在惊悚电影《末世圣童》[62] 当中，一位崇拜恶魔的邪教徒把一位信奉上帝的小女孩拖到楼顶边缘，挑战她的信仰。他要求她跳下去，从而证明她相信上帝会救她于危难之中；如若不然，她就必须放弃对上帝的信仰，转而信奉邪教。这个场面被死亡的威胁笼罩着——观众和片中的小女孩都不知道，如果她拒绝做出选择的话，那么这位邪教徒会不会把她从楼顶扔下去。在气氛紧张的停顿之后，小女孩转过身来，面带微笑冲着邪教徒说：“要跳也是你先跳！”

这个场景揭示了两个关乎互动叙事的重要问题。其一，小女孩的回答体现了一种颇为迂回的逻辑思维。她的回答是在暗示，邪教徒自己也应该以同样的跳楼方式证明他自己的信仰。如果邪教徒自己都不敢这样做，那么他又凭什么要求小女孩这么做呢？由此便暴露了虚张声势的邪教徒的虚伪本质，他对小女孩的威胁也就不攻自破了。

这种运用复杂逻辑的情节转折是观众完全没有想到的，但是我们恐怕不能指望计算机也能实现这么复杂的构思——这需要对人类本性具备非常深入的理解，计算机一时半会儿还做不到。

其二，即使互动叙事系统真的能够实现“灵机一动”的逻辑，那也没有办法把这“第三种选择”提供给玩家。不妨设想为玩家呈现小女孩的选择会是什么形式。

选择1：跳楼并指望上帝会救你。

选择2：拒斥上帝，改信邪教。

选择3：回答“要跳也是你先跳！”。

这样做根本就不是向玩家提供选择，因为其实只有第三个选择才是可现实的。电影中的这个场景具有强大的戏剧性震撼力，但是放到互动故事世界当中就完全失去效果了。电影观众可以对小女孩的“第三种选择”感到吃惊并为情节的精彩转折而拍案叫绝，是因为他们无法预期小女孩的回答。假如把片中的小女孩换成以硬汉形象著称的知名演员施瓦辛格（Arnold Schwarzenegger），那么恐怕任何观众都会期待着施瓦辛格在片中大喊一声“拜拜了您呐！”[63] 然后一拳打倒邪教徒——毫无戏剧性的悬念。

3.6.2 创造性选择

上述“第三种选择”的一个变体是所谓“创造性选择（creative option）”。一位早期测试人员在试用了笔者领头研发的互动叙事系统之后，抱怨说这个系统不能提供创造性选择。笔者就问她创造性选择是什么意思，她回答说她就是希望能够在故事世界里做一些我设计系统时没想到的新鲜事情。然而问题是，如果设计者都没有考虑到一些情形，那么设计出来的软件系统怎么可能根据这些情形来向玩家提供更多的选择呢？这多少像是个两难的困境[64] 。

3.6.3 实时推进

故事世界中的时间推进是个有趣的设计问题。传统意义上的游戏玩家认可的是实时演绎（real-time play）的方式，时间均匀地向前推移；如果玩家在应对某个情况的时候慢了半拍，那么就可能失去了做出反应的最佳时机。另外一种可能的做法是采用回合制的（turn-sequenced）的时间推进方式，即玩家可以花时间斟酌如何做决定，而游戏在每次玩家做出选择之后才会恢复时间上的推移。

已经有人在实时推进的互动叙事方面做出过尝试。笔者最先了解到的是Rosa Freitag于1995 年设计的《Mixed Emotions》[65] 。这款作品采用无间断的视频动画讲述一个女人在婚姻当中遇到种种挫折的故事。在故事当中，女主人公有时候会停下来思考片刻；这个时候，她的头旁边就会显示红、蓝两个图标。蓝色图标代表选择以保守的方式行事；红色图标代表以更激进、风险更大的方式行事。玩家在此时可以点选任一图标，从而实现对故事发展的干预。如果玩家在规定的几秒钟之内没有做出选择，那么故事就会默认以蓝色图标代表的选择继续进展。虽然这款作品的确成功实现了故事的实时推进，但是它为玩家提供的选择太过简单。

另外一个更具野心的尝试是 Michael Mateas 和 Andrew Stern 设计的开辟性互动作品《Façade》。这是第一款真正意义上能够良好运作的故事世界，采用的也是实时推进的方式。

相比之下，笔者更倾向于采用回合制的推进方式。我认为有必要向玩家提供考虑和权衡选择的机会。在实时推进的互动叙事当中，玩家无从得知自己有多少时间可以用来做出选择，导致整个体验有种仓促、慌张的感觉。我认为这无助于创造戏剧性的交互体验，这也是电子游戏与互动叙事的区别之一。

3.7 本章小结

本章的要点可以总结如下。

• 互动故事世界不是“添加了故事的游戏”。

• 互动故事世界不是“增加了交互的电影”。

• 故事情节与交互性存在根本性的冲突。

• 过程驱动的叙事与交互性没有冲突。

• 互动故事世界的运作依靠的是大量的小决策，而不是少数重大决策。

注　释

[1].所谓个人电脑革命，参见：http://en.wikipedia.org/wiki/Microcomputer_revolution。

[2].值得一提的是，著名设计专家 Jon Kolko 在《交互设计沉思录》（Thoughts on Interaction Design）一书中，对“interaction design（交互设计）”做出了这样的定义：“交互设计是指在人与产品、服务或系统之间创建一系列对话。”不难看出，Chris Crawford 对“interactivity”的理解与Jon Kolko 对“interaction”的理解基本一致。然而从某种角度来看，“交互性/互动性（ interactivity ）”与“交互（ interaction ）”并非没有区别，参见：http://interactivityworld.blogspot.ca/2009/06/interactivity-drives-interaction.html。

[3].原文为“Crawford’s First Law of Software Design”，按照作者的说法就是：Always ask，‘What does the user DO? What are the verbs?’（始终考虑用户“做”什么，考虑“动词”是什么）。详见本书第2章“交互性”。

[4].参见：http://en.wikipedia.org/wiki/Steenbok。

[5].参见：https://en.wikipedia.org/wiki/Common_eland。

[6].此处作者指的就是视觉艺术（visual art）；所谓“再现（representation）”，是抽象意义上的。在译者看来，对艺术、艺术史，以及相关概念的理解，E. H. Gombrich（贡布里希）的著作也许是最好的参考资料之一，特别是《艺术的故事（The Story of Art）》、《艺术与错觉：图画再现的心理学研究（Art and Illusion: A Study in the Psychology of Pictorial Representation）》，以及《秩序感：装饰艺术的心理学研究（The Sense of Order: A Study in the Psychology of Decorative Art）》。

[7].此处指的是英语里的过去式（past tense），比如“The antelope ran away（羚羊跑远了）”。作者在探讨互动叙事时，是以英语为基础的；由于中文与英文的语法差异较大，因此读者在理解作者意图时，须以英语及其语法为准。译者会在所有必要之处同时给出中英文，以便读者分析理解。

[8].原文为“ad-hoc solution”，强调的是未经过整体计划，单纯为了在特定情境下解决特定问题的补救方案。这符合进化论的思路。

[9].原文为“I’ll be a monkey’s uncle”，是英文中用来表达惊叹和感慨的俗语，此处也是用来表达恍然大悟时的感叹。

[10].该片系1982 年由Godfrey Reggio 导演的经典影片，是俗称“Qatsi 三部曲”中的第一部。参见：https://en.wikipedia. org/wiki/Koyaanisqatsi，感兴趣的读者不妨也同时参看该片摄影师的其他几部同类型作品。

[11].“闹场的克里斯”是从本书第一版承袭而来的栏目，代表了作者Chris Crawford 的“第二重人格”，专门负责对当下阐述的内容提出质疑或者反对意见，借此对所阐述的议题进行更深入的探讨。

[12].影片涉及一尊被称为“马耳他之鹰”的雕塑珍品。

[13].影片涉及圣经中提到的圣物“约柜（the Ark of the Covenant）”。

[14].影片涉及“至尊魔戒”，系一枚具有魔力的戒指。

[15].系列电影《星球大战》中的人物角色。参见：https://en.wikipedia.org/wiki/Han_Solo。

[16].美国小说家马克·吐温作品中的人物角色。参见：https://en.wikipedia.org/wiki/Huckleberry_Finn。

[17].原文做“things”，泛指客观事物，也可以理解为“物件”。为了便于理解，此概念在译文中会被酌情译为“事物”、“物件”或“东西”。

[18].Noble savages，此处意指冲突之外的参与者。参见：https://en.wikipedia.org/wiki/Noble_savage。

[19].原文为“feedback effects”，参见：https://en.wikipedia.org/wiki/Audio_feedback。

[20].参见：https://en.wikipedia.org/wiki/Distortion_(music)。

[21].纽约大学新闻学与大众传播学教授、知名记者 Mitchell Stephens 出版于 1998 年的著作，他在书中精确地预言道：“我们也许很快就能在互联网上存放视频了”。参见：https://en.wikipedia.org/wiki/Mitchell_Stephens。

[22].植物的一层细胞组织，参见：https://en.wikipedia.org/wiki/Cambium_(botany)。

[23].Larry Wachowski和Andrew Wachowski 是《黑客帝国》三部曲系列电影的创作者，之前俗称Wachowski brothers，但由于Larry之后变性为女性并改名Lana，因此现在只用Wachowskis来称呼。

[24].智能机器为人类创造的虚拟世界，参见：https://en.wikipedia.org/wiki/The_Matrix。

[25].古希腊最重要的两部史诗之一，相传为盲诗人荷马（Homer）所作。参见：https://en.wikipedia.org/wiki/Odyssey。

[26].关于旅程（journey）的话题，最值得参考的也许是约瑟夫·坎贝尔（Joseph Campbell）的神话学著作《千面英雄》，其中提出了著名的“英雄旅程（hero’s journey）”概念。

[27].美国的著名小说家马克·吐温（Mark Twain）的作品。参见：https://en.wikipedia.org/wiki/Adventures_of_Huckleberry_Finn。

[28].参见：https://en.wikipedia.org/wiki/Star_Trek。

[29].参见：https://en.wikipedia.org/wiki/Vulcan_(Star_Trek)#Homeworld。

[30].参见：https://en.wikipedia.org/wiki/Klingon#Homeworld。

[31].参见：https://en.wikipedia.org/wiki/List_of_Star_Trek_planets_(A-B)#Andoria。

[32].参见：https://en.wikipedia.org/wiki/List_of_Star_Trek_planets_(R-S)。

[33].参见：https://en.wikipedia.org/wiki/Cardassian#Cardassia_Prime。

[34].Interactivity，此处沿用约定俗成的译法。

[35].原文为 active agent。读者不妨以人工智能领域中的“agent”概念为基础来理解，参见：https://en.wikipedia.org/wiki/Agent#In_computer_science_and_artificial_intelligence。

[36].值得读者注意的是，交互（interaction）和反应（reaction）在英文中都拥有“action”这个词根，因此两者的区别正是体现在inter-和re-这两个前缀上。

[37].电影史上的重要人物，他导演的《一个国家的诞生》被普遍认为是默片时代的经典之作。参见：http://en. wikipedia.org/wiki/D._W._Griffith。

[38].由于互动叙事作品须要“观者”持续地参与互动，因此他们似乎更接近“玩家（play）”而非单纯的观众。

[39].资产上千亿、曾连续六年被《财富》杂志评为“美国最具创新精神公司”的安然公司因财务造假丑闻而于 2001 年宣告破产。参见：https://en.wikipedia.org/wiki/Enron。

[40].原文为“De gustibus non est disputandum”，系拉丁语格言，英语理解为“there’s no arguing about taste”，意指个人偏好完全是主观的，没有绝对的好坏之分。参见：http://en.wikipedia.org/wiki/De_gustibus_non_est_disputandum。

[41].原文为“Barnum ＆ Bailey”，系美国红极一时的马戏团，以精彩新奇的表演著称于世。参见：http://en.wikipedia.org/wiki/Barnum_＆_Bailey。

[42].此处的“倾听”、“思考”和“发言”正是作者在本章开头定义交互性概念时提到的3 个关键。

[43].参见：http://en.wikipedia.org/wiki/VisiCalc。

[44].关于个人电脑革命的详情，参见：http://en.wikipedia.org/wiki/Microcomputer_revolution。

[45].批处理的概念，参见：http://en.wikipedia.org/wiki/Batch_processing。

[46].打孔卡的原理，参见：http://en.wikipedia.org/wiki/Punch_card。

[47].考虑到现今诸多解释型语言的广泛应用和成功，把语言设计的好坏仅仅归咎于其解释型特性的论调似乎存有争议。

[48].参见：http://en.wikipedia.org/wiki/World_Wide_Web#Speed_issues。

[49].普鲁士将军和军事理论家。参见：https://en.wikipedia.org/wiki/Carl_von_Clausewitz。

[50].参见：https://en.wikipedia.org/wiki/Software_bloat。

[51].作者所谓的软件之“动词”，指的是软件的设计决定了用户可以通过软件做什么事情，从而反过来决定了用户对软件功能的界定；要描述用户的交互行为，自然就涉及使用一系列动词，比如“点击”菜单、“输入”文字等。作者的整个互动叙事理论正是围绕着“动词”的概念发展而来的。

[52].随着屏幕分辨率及其他音画技术的不断提升，计算机在视觉呈现方面的水平已经越来越接近其他媒体，甚至达到肉眼几乎无法分辨的级别。当然，作者在此强调的并不是计算机较之其他媒体的优劣，而是在强调交互性是计算机的特质和优势。

[53].也许会有读者觉得作者的“我们无法与数据发生交互”的提法有些奇怪，在此请注意参考作者在上一章对交互性概念的界定。由于数据不能“倾听”、“思考”和“发言”，我们与数据之间无法形成作者界定的真正意义上的“交互/互动”，因此不能说数据是具有交互性的——换句话说就是我们不能与数据发生交互。

[54].参见：https://en.wikipedia.org/wiki/The_Hollow。

[55].原文为“doubting Thomases”，参见：https://en.wikipedia.org/wiki/Doubting_Thomas。

[56].此段引述出自《Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture》一书（中译《DOOM 启示录》），感兴趣的读者不妨一读。参见：https://en.wikipedia.org/wiki/Masters_of_Doom:_How_Two_Guys_Created_ an_Empire_and_Transformed_Pop_Culture。

[57].参见：https://en.wikipedia.org/wiki/Theological_determinism。

[58].作者所谓的“过程”不妨理解为游戏世界运作的规则。比如在游戏里，玩家可以控制游戏角色“冲跳”或者“运用魔法飞起来”，游戏设计界定的是这两种过程（即行走的规则），而不是玩家具体应该如何跨越每个具体的障碍物。无论玩家使用哪种方式，只要能跨越障碍物，就能让游戏继续下去。作者所谓的“事件”，不妨理解为玩家具体的行为，比如跨越障碍物或者杀死敌人。

[59].传统故事中，如果观众觉得其中人物角色的选择是理所当然的，那么就意味着人物角色所面对的多种选择是严重失衡的，以至于只有其中一个选择是顺理成章的。

[60].值得注意的是，作者这里所谓的“令观众满意”，指的是观众从欣赏作品的角度获得了享受，对作品感到满意，与故事作品本身是悲剧还是喜剧等无关。

[61].人物出自莎士比亚的作品《罗密欧与朱丽叶》。

[62].参见：https://en.wikipedia.org/wiki/Bless_the_Child。

[63].原文为“Hasta la vista”，是电影《终结者 2》中施瓦辛格扮演的人物在朝敌人开火前说的一句幽默台词。参见：https://en.wikipedia.org/wiki/Hasta_la_vista,_baby。

[64].原文为“Catch-22”，源自Joseph Heller的小说《第22 条军规》。参见：http://en.wikipedia.org/wiki/Catch-22。

[65].参见：http://www.hyperbole.com/lumiere/mixed-emo.html。

第二部分 思维方式

思维方式决定了我们对互动叙事的理解，作为一个新奇的领域，它对我们固有的思维方式提出了挑战。

第7章：我们必须克服那种把科学与艺术划清界限的“文化隔离”偏见。

第4章：我们必须学会以抽象的方式思考故事叙述。

第5章：我们必须学会以动词所代表的动作（action）为中心进行思考。

第6章：我们必须学会运用数学知识来设计故事世界。

第4章 抽象机制

前一章描述的情节与交互性的冲突问题还有另一种表现形式，即控制能力（control）与交互性的冲突。简单地说，问题在于：如果要让故事具备真正的交互性，那么玩家就必须能够左右故事的走向。但是一旦玩家能改变故事本身，那么故事创作者就无法控制故事的发展，而玩家也可能会让故事变得面目全非了。解决这个问题的办法在于抽象机制（abstraction）。我们不妨先来看看抽象机制是如何解决类似问题的。

4.1 公正问题

对复杂系统进行监控是古已有之的问题。古往今来，应对这种问题的办法一直都是实现层次化的抽象机制。不妨以“维护社会公正”这样的问题举例说明。在规模很小的社会群体当中，主持公正只需要一位族长就够了：争执双方逐个向族长陈述情况，族长权衡之后做出判定，处理起来简单、直接。随着社会规模不断壮大，需要处理的事情越来越多，就没有办法全由一国之君一个人来处理了。为了解决这个问题，国王可以将裁定权赋予低一级的官员（法官）。然而这样做又引至新的问题：国王如何监管诸多法官们以维护公正呢？

解决监管问题的办法是法律。国王可以颁布法令，让法官们遵照规定来行使权力。这样的做法也许并不完美：法官仍然有可能做出有失公正的判决，可能对法律本身存在错误的解读，还可能对特定情况施用了并不适用的条款等。不过，倘若人们觉得裁定不公，那么他们仍然可以向上申诉至高一级的国王，以期获得公正的裁定。

通过这样层层抽象的方式，国王就可以实现对社会的整体监管。国王放弃了一部分直接的掌控权，转而通过间接的方式继续实施监管；国王的权力以法律的形式，通过法官得到行使；最终的裁定权仍然归国王；虽然国王无法亲自监管所有人，但是仍然能实现间接的监管。

4.1.1 法律冲突问题

通过法律实现监管，立法比应用更加关键。国王在立法的时候，必须把深刻的洞察和智慧倾注其中。大约 4000 年前，古巴比伦国王汉谟拉比（Hammurabi）就颁布了包含 282 条法令的《汉谟拉比法典》，其中两条是这样说的。

• 窃取寺庙或皇宫财物者，处以死刑；配合接收赃物者，处以死刑。

• 所窃牛、羊、驴、猪原属寺庙或皇室，则盗窃者以30倍加以赔偿；所窃原属公民，则盗窃者以10倍加以赔偿；盗窃者无力赔偿，则以死抵罪。

上面两条法令就存在矛盾之处。前一条说盗窃的惩罚是处以死刑，而后一条却说盗窃牛羊者只须以数倍赔偿。也许在编撰后者时，国王汉谟拉比忘记已经有了前者。法律本身没有自相矛盾的地方，这是很重要的。然而，法律的规模越大，保持其一致性也就越难。

4.1.2 无所不包的法律

立法的另一个关键问题在于，法律必须妥当地涵盖适用范围内所有的可能性。传说在设立环境保护法案的初期有这么一则轶事：当时的法律规定，如果企业希望在空气污染受监管的地区建立工厂的话，该企业必须为同一地区的另一家已经存在污染排放的企业支付费用，以便为后者既有的旧工厂安装污染处理设备，使得最终的总体污染排放维持在设立新工厂之前的程度。换句话说，如果你有污染排放，那么你就得采取措施（帮助既有排污者减排），从而抵消你新增加的污染。

听起来还是蛮合理的，不是吗？不用惩罚已经存在污染排放的工厂，转而要求新工厂帮助旧工厂安装减少污染排放的设备，使得总体污染排放量保持不变。

有一天，一位美国路易斯安那州的商人决定开家具厂。问题是，生产家具须要用到的油漆等涂层材料会释放少量含有重氢的物质。于是这位商人就按照法律要求，试图在同一地区寻找另一家既有的工厂，以便为其安装排污设备。但是由于该地区比较贫困，没有什么工业发展，所以根本没有工厂可寻。正在商人犯难的时候，有人指出其实树木也释放同样的物质；于是他就买下了当地一大片林地，然后砍掉了所有的树——法律也遵守了，问题也解决了。

显然，政府的本意并不是让人以遵守环境保护法的名义去砍伐森林，但是当时的法律条文没能考虑到这种情况，才导致了这样的结果。

从现实情况当中抽象出可以纳入法律的条文，是法律制定过程中的主要挑战之一。有时候，措词不当就能够导致法律颁布后出现完全没有想到的结果，甚至产生违背初衷的效果。一言以蔽之：抽象绝非易事。

互动叙事也存在同样的问题：如果故事世界背后的算法没能考虑周全，那么最终结果也会是一团糟。

4.2 科学

再让我们来考察一下规模最大、最复杂的系统：现实世界。人类理解现实世界的长期努力催生了一种日渐庞大的知识系统，即科学。最早期的科学其实只是一大堆互不关联的碎片信息，是人类长时间不断积累起来的关于事物的“真理”。之后的一个重大进步在于，人们逐渐发现这些碎片信息可以相互关联起来，形成更统一但也更抽象的知识体系。

例如，人类很早就认识到天空中有一些星星与另一些星星会发生相对运动。有些星星移动速度快，有些速度慢，而且所有星星似乎都沿着同样的路线进行移动。埃及数学家、天文学家、地理学家和占星家托勒密[1] 总结了希腊古天文学的成就，形成了一个体系化的学说，建立了著名的托勒密地心体系，认为天体是围绕地球移动的。虽然没有人能够直接地看到相关证据，但是这个学说是对太阳系的一种抽象描绘，把诸多观察和发现总结到了一起，从而对天体现象提出了更好的阐释。

对现实世界予以抽象，并将诸多简单事实关联到一起，这一直都是科学所遵循的策略。化学总结了关于化合物之间如何发生化学反应的知识。随后，原子和分子的理论受到认可，从而以更抽象、更统一的方式进一步解释了化学反应的机理。随着量子力学的诞生和发展，科学家又得以揭示化学反应的物理机制，进而获得对化学的更完整的认识——这一切的发展都是经由抽象来实现的，同时层层的抽象也让普通人越来越难以掌握全部的知识。生物化学又把化学与生物学从更基本的层次上结合到了一起，人类得以洞悉主宰所有生命系统的基因系统——同样，我们付出的代价正是更深一层的抽象。

物理学家也一直在探寻宇宙的基本法则。牛顿提出了三大运动定力，麦克斯韦统一了电学、磁学和光学理论，揭示了光的电磁波特性。爱因斯坦提出光电效应学说，进一步统一了光学与电学。物理学家揭示了原子由电子、质子和中子组成之后，化学也因此得到了更进一步的发展。在深入探究电子、质子和中子的过程中，物理学家又发现了更小的粒子夸克。理论家也艰难而缓慢地不断揭示着宇宙的基本常量和基本公式。所有的科学探索逐渐形成了借以解释宇宙机理的高度抽象的理论体系，这个体系已经变得如此之抽象，以至于只有少数领域专家才能够完全理解。

数学的发展道路也是类似的。早期的人类从简单的计数和加减开始，逐渐发展出了乘法、除法，算术由此诞生。随后诞生的代数则以更抽象的方式来阐释数学。到了 17 世纪，解析几何、微积分、概率论等诸多理论蓬勃发展。现今的数学体系同样也是高度抽象的，只有少数领域专家才能完全理解。

我们看到，科学的发展与前述社会公正的发展如出一辙：随着知识的不断扩展，我们不断地提高抽象层次以便形成知识体系。

4.3 金融

最早的交易其实就是直接的物品交换：我给你一只羊，你给我 10 斗小麦作为交换。这样的交易简单直接，因此很容易审计和监管。双方都能看到并检查货品（羊和小麦），交易之后便两不相干了。早期的金融交互形式就是这样简单明了，完全不需要任何形式的抽象。

然而，有时候也会有不便之处：如果你只想卖出5斗小麦，那么我该怎么办呢？我不可能给你半只羊。解决这个问题的办法就是引入更高一层的抽象，使用贵重金属来充当“货币”——我能以4 谢克尔银子的价格把羊卖给你，你也能以两谢克尔银子的价格卖给我 5 斗小麦。值得一提的是，有些早期的金属货币单位（比如古代犹太人采用的谢克尔，shekel）其实源自质量单位，后来逐渐演变成了货币单位。

使用这种硬币的“前身”——贵重金属块——也引发了新的问题：有些人拿出的银块含银量并不高，形成了欺诈。解决这一问题的办法又是诉诸进一步的抽象，即使用标准化的、真正意义上的硬币。硬币可以由政府生产发行，从而保证了“含金量”和硬币的统一性。国王的面子就是硬币价值的保障：“伟大的国王某某某保证这枚硬币是货真价实的”。

货币制度把经济推向了更高层抽象的应用。当时的财务状况都是用多少有些随机的单位来统计的。比如一位有钱人的身价可能是10000赛斯特斯（sesterces，古罗马货币），然而那到底是多有钱呢？只看数目其实不太好说，因为这个货币单位是个抽象的概念。

货币制度受用了很长的时间，直到欧洲中世纪时期出现了新的问题。那时的商人为了做生意，往往须要长途跋涉，但是一路上并不一定安全。带着好几磅黄金满世界跑，很容易遭遇拦路抢劫。商人们需要更安全的交易方式，一种更高层的抽象应运而生——汇票（bill of exchange）。

所谓汇票，指的是一种写有信息的票据，比如“商人乔治授权银行家弗莱德从乔治的账户转出50 个达克特（ducat，当时欧洲通用的金币）到商人查理的账户上”。换句话说，汇票基本上相当于一张我们现今使用的有效支票。有了汇票，商人就只用带着一张票据旅行了，排除了抢劫的困扰。

汇票是金融发展过程中一次意义重大的抽象，因为价值的概念与实体物品首次通过汇票被分离开了。人们再也不用通过具有实体价值的“中介”来进行财富的交换，而只用一张纸就能完成。这代表了对财富概念的进一步抽象。

汇票的出现极大刺激了欧洲的经济发展，很快便广为流行。然而，打理这些票据又逐渐变成了麻烦事。一旦汇票被拒付（比如由于支付方资金不足），那么追查赖账的人并追讨欠款就会是件费力费神的事情。

银行通过发行通用汇票解决了上述难题。通用汇票意味着，银行承诺可以根据汇票面额直接向持有人兑现成硬币（比如金币）。银行发行的通用汇票可以是一元、五元、十元等各种面额的；你把自己的金币交给银行，银行就（在收取服务费用之后）交给你等值的汇票；做生意时，你只需把汇票交给对方即可，与你做交易的人无需考虑是否值得信任你，只需考虑是否信任发行汇票的银行就行了。

当然，银行的做法还涉及到另一种抽象。虽然硬币是在银行手里，但是银行并不真的因此变得有钱（硬币价值仍然属于汇票的持有人）。精明的银行家就又把存放在银行的钱通过向外借贷来收取利息，只留一小部分“现金”以备日常运作。如此一来，我们就得从两个方面来理解“价值”概念，一方面是存放在银行的金币价值，另一方面则是由银行的“资产”组成的价值——要知道，银行的大部分资产很可能都不是以金币的形式体现的。

有了通用汇票，新的问题又来了：银行可能会破产，一旦破产，那么持有该银行汇票的人就一下子都遭遇了损失（无法把汇票兑换成具有实际价值的金币了）。由此，政府便开始介入，设立了国有银行，从而保证银行不会破产。国有银行发行的钞票正是我们现今称为纸币的东西。如果拿一张美元钞票来仔细察看，就能看到“Federal Reserve Note（联邦储备票据）”的字样，表明这其实是联邦储备银行发行的钞票。国有银行的概念又把抽象层次进一步加深了，当然新的问题也随之而来：纸钞也会被人偷走。于是人们就把大部分钱存在银行，随身只携带少量“零花钱”，从而导致了更进一步的抽象：财富不再以拥有的钞票数量来体现，而只是银行账户上的一个数字了。银行账户里可能存有上百万元，但是钱包里则可能只放了几百元。钱由此变成了纯粹的抽象概念，只用被记录在案的数字表示而已。

随后，又出现了信用卡。信用卡只是注明了银行账号的一张塑料卡片，用信用卡付款时，我们用签名的方式来做出支付承诺；发行信用卡的银行随后会直接付钱给收款方，然后把款项支出记到我们的信用卡账户上。

这里不妨回溯一下抽象的各个层次：信用卡指代信用卡账户，信用卡账户从普通的银行账户里扣款，银行账户用一个数字来代表存入银行的资金数量，这笔资金又代表了等值的贵重金属（至少过去一直是如此计算的），而这贵重金属本身才代表了一种叫做“财富”的概念——真可谓是层层抽象、叠叠间接！

总之，随着经济的发展壮大和复杂化，其背后的经融体系也演化得越来越趋于抽象了。

4.4 上述例子的中心思想

从上述关于抽象的例子当中，我们不难看出这样的道理：要想在心智方面实现发展，理解和应对越来越复杂的问题，我们就必须不断提高抽象层次。

要点16

对于解决不了的问题，可先行跳过。

第3章“互动叙事”里的要点13对控制力与交互性的冲突问题做出了这样的认定：“过程驱动的叙述（process-driven narrative）与交互之间没有冲突”。避免冲突的办法就是在更高的抽象层次上实现控制。更高层次的抽象固然会更难于理解，但是我们却能够借此实现心智层面的发展。许多固守传统故事叙述的创作者也许不会也不想参透这样的抽象，并且拒斥互动叙事。这都没什么关系，毕竟传统故事叙述的发展空间总是很广大，他们尽可以在其中发挥。另一方面，互动叙事则要求我们实现抽象机制。

为了理解互动叙事所需要的抽象机制，我们必须首先摆脱对“情节（plot）”概念的依赖。情节是用于展现人类生存状态之意义的事件序列。在互动叙事当中，我们通过建立“可能性网络”来将情节取而代之，同时达到相同的叙事效果。鉴于这个“可能性网络”的概念一直令许多人感到迷惑，我们不妨举几个例子来阐释。

我们就以《星球大战》为例来进行阐释。下面是该片故事的梗概（描述事件序列）。

故事第1版：天行者卢克离开家，遇到绝地武士欧比旺，与他一起前往太空站，然后乘太空船逃出。随后他们的太空船被坏人劫持，他们机智地战胜了坏人，救出了莉亚公主，从死星逃了出来。之后，坏人又对起义军的根据地发起了攻击，卢克则开始协助对死星展开进攻。最后，卢克摧毁了死星，受到了莉亚公主的嘉奖。

对这个故事进行一次抽象，就可以变成这样。

故事第2版：一位青年闯荡世界，结交新友，经历许多冒险的旅程。他收获颇丰，在逆境中取胜，赢得了一位貌美的姑娘的敬仰。

如果再进一步抽象，就成了这样。

故事第3版：一位少年在长大成人的过程中面对了各种挑战，最终在逆境中克服了挑战，走向成熟。

上述的高层抽象才是我们设计故事世界的基础。我们考察的不是天行者卢克，而是任何一位青年；不是太空大战，而是各种冒险旅程；不是摧毁死星，而是在逆境中制胜。

故事世界并不是由一个个具体事件组装起来的，而是在更高的抽象层面上由一个个概念组合而成的。“解救莉亚公主”这样的事件能产生的变体是极为有限的，然而“面对重重困难”这样的概念却可以产生无限的可能性。上述例子中的故事第1版只能包含一个故事，而第2版则可以衍生成千上万个故事，第3版更是包含了无数的可能性。第3版的故事太过抽象，也许我们暂时还无法驾驭。如果我们以第2版的抽象为基础来设计故事世界的话，那么这个故事世界就可以包含成千上万的故事可能性。这里须要记住的是，所谓的“互动故事（interactive story）”是不存在的，因为倘若已经是“故事”的话，那么它的情节就已经被固化了，我们便不可能与之发生交互。我们应该接受的概念是“互动叙事（interactive storytelling）”，它由故事世界衍生出来。我们要创造的不是故事，而是故事世界。

只要我们不摆脱以“事件序列”即情节来进行思考的方式，那么我们就永远无法真正理解互动叙事的概念。要实现互动叙事，我们必须创建由各种故事可能性组成的戏剧性空间——故事世界。

你能说得再具体一点儿吗？

当然可以。不妨考察下列来自不同故事的对白：

“亲爱的，您看上去太棒了！”

“我从没见过您这么漂亮的女士！”

“你真是风度翩翩、潇洒迷人！”

“噢！你真是强壮英勇！”

这样的美言我们见得多了，可谓是层出不穷，千变万化。然而它们都可以抽象为如下的表述：

“我赞美你”。

天呐，这也太干巴巴、太缺乏人情味儿了吧！难道我们就向观众呈现这样的东西吗？

当然不是。我们不会真的把“我赞美你”给观众看，而是会采用各种策略来表达同样的意思。驱动故事世界的互动叙事引擎是站在“我赞美你”这个层级上来进行运作的，然而在具体表达上却可以采用更加丰富的形式（第18章“脚本语言”会详细阐述具体做法）。

4.5 扮演上帝的角色

第3章中提到的自由意志与决定论的冲突问题也可以通过类似的抽象机制而得到部分的解决。当时的神学家对这个问题的解答是认可物理理论并同时把信仰予以理性化：上帝的全能并不体现在操控具体现象，而是体现在对过程机理的控制；上帝主宰的并不是细枝末节，而是宇宙得以运作的法则；上帝不会操纵每一个电子或光子的具体位置和速度，而是创造了物理定律（上帝可以说“要有物理”[2] ），然后让整个宇宙按照他创造的物理定律来运作而已。

于是神学家就可以声称，上帝通过间接的、抽象的方式主宰着宇宙万物，他决定宇宙运作的根本法则，同时又赐予我们自由意志，使我们拥有选择的权利。神学家甚至还可以说，上帝通过创造量子物理定律来为宇宙带来一些随机性，从而避免所有事物都跟机械运转一样毫无变化的余地——上帝是抽象设计师。

前面提到的国王制定法律的例子也体现了抽象机制。国王通过间接的方式管理国家，他并不会整天四处游走，指使臣民去收割、挤奶或盖房子，而是设立法令来规定子民的行为方式；他的管制可松可紧，但始终都是抽象和间接的。

情节与交互性之间存在的冲突同样可以通过抽象机制来解决。如果你拘泥于数据（情节）本身，坚持认为故事中的角色必须严格按照你写的每一句话来演绎，那么你就相当于“决定论者”了。

然而，如果你专注于过程机理而非数据，那么故事世界中的人物就可以在你限定的“戏剧性法则”的制约下行使自由意志。作为故事世界的设计师，我们必须摒弃对直接操控的执着，转而依靠抽象、间接的操控方式：不要为情节主线构思好每一个细节，而是要确立戏剧性冲突的发生机制；不要指定谁对谁具体做了什么，而是要设定角色之间可能发生怎么样的互动。

可是这未免也太深奥了吧？怎么可能通过如此间接的方式来实现优秀故事所必备的叙述之丰富性呢？

这确实有些难度，然而我们需要关注的是故事所要表达的中心思想。故事是传达中心思想的载体：《白鲸记》[3] 的中心思想并不在于鲸鱼，而是在于主人公的执迷；天行者卢克根本就不存在，只是个虚构的人物而已，《星球大战》是关于成长和面对挑战的故事。大部分故事的情节都是虚构的，然而在更抽象的中心思想的层面上却又都是真实的，其传达的思想都是具有现实性的。故事的“数据”可真可假，而“过程”却是真实的。

我们再来考察一下传统故事叙述者与观众之沟通的本质。叙事者希望向观众传达一些关乎人类生存状态的观念，然而他不会向观众直接表述中心思想，而是通过故事情节创建了一系列环境条件，将中心思想以具象化的方式反映在其中，最终向观众表述的是具象化了的故事实体。另一方面，观众对听到的故事予以解读，从具体的故事情节当中又重新提炼出抽象的中心思想。值得注意的是，整个过程是迂回的：叙事者的目的是传达某种中心思想，观众的目的是理解这个中心思想；然而，叙事者不会把中心思想直接告诉观众，而是把它转译到具象化的故事实体当中，然后向观众表述；观众继而又对故事实体进行提炼，把这个中心思想从中转译了回来。

互动叙事对上述过程做了两个重要的改动。首先，在互动叙事中，把中心思想转译为故事实体的过程由计算机代为处理。叙事者仍然对故事的艺术性保有完全的控制，只是必须在更抽象的层面上，通过间接的方式来行使这种控制权。由于转译过程是由计算机与玩家联手完成的，因此它的实现涉及到在创建计算机算法方面的巨大努力。其次，由于故事实体是根据玩家在故事世界中的行为反应直接生成出来的，因此最终得到的故事能够体现玩家的需求和偏好。这样的故事体验能够让玩家投注更多的情感，大大弥补了互动故事在“情节构思”方面的不足。

4.6 把中心思想转译为故事

要实现互动叙事所需的抽象机制，关键在于把中心思想转译为故事实体的过程。故事创作者必须将中心思想（即一系列能反映它的基本原则）以计算机能够理解的方式表达出来，然后通过算法将这些原则转译为与上下文相关的故事实体。举个简单的例子来说明，如下所示。

原则：女人厌恶过分的关注。

第一遍分析：“过分的关注”指的是男人对女人做出的行为，其本质是浪漫的，但是这样的行为并不是顺着当时的情境自然发展出来的，而是刻意的。面对这种过分的关注，女人的反应是拒斥当事的男人。

第二遍分析：“过分的关注”指的是任何带有浪漫或调情意味，或者具有挑逗性的身体接触。

女人对这种过分关注的拒斥程度取决于该行为的妥当程度。

第三遍分析：“过分关注”相关的动词包括亲吻（kiss）、任何形式的触碰（touch），以及任何与性骚扰相关的声明（declare）、询问（inquire）或要求（demand）。用于表达拒斥的动词包括声明（厌恶感）、表达（震惊）、命令（停止）和攻击（比如扇耳光）等。

上述例子旨在简略地展示如何解决转译的问题，具体的实现方法将在后续章节详述。

你这一套从理论上讲倒是不错，但是在实践当中，要把故事叙述提炼为条条款款的基本原则，根本就超出了人类智力之所及嘛！没有人真的能够驾驭如此复杂的智力劳动。

恰恰相反，这种面向“过程”的故事叙述随处可见，由最普通的人不断实践着。不妨假想爷爷把孙女安妮抱上床之后，给她讲如下故事的情形。

“爷爷，给我讲个故事吧！”安妮请求道。

“好啊，”爷爷答道。“从前呐，有一个漂亮的小姑娘，她有一匹小马驹……”

“小马驹是白色的吗？”安妮打断爷爷问道。

“哦，那当然，它跟雪一样白，白得阳光都从它身上反射出来，特别晃眼呢。于是小姑娘就骑着她的小马驹去了海滩……”

“那他们也去山上吗？”

“对哦，其实他们还去了山上呢。离开了海滩，他们就去了绿油油的山谷，跳过灌木丛，躲过头顶的树枝，一直跑到了山顶上。在那儿他们还玩跳石头的游戏……”

“我不喜欢跳来跳去……”

“对，其实他们也不怎么跳，小姑娘会让她的小马驹在山顶上吃草，自己就安静地坐下享受美好的阳光……”

爷爷的故事可以就这样一直讲下去。值得注意的是，爷爷面对孙女的打断，并没有说出“闭嘴，你打乱了我精心编排的情节”这样的话，因为他需要这样的介入，他的故事叙述恰恰是建立在孙女参与的基础上。爷爷并没有精心准备和构思好故事情节，而只是掌握了故事叙述的基本原则，在给孙女讲故事的过程中即时发挥，根据孙女的需求和偏好随时调整和发展故事情节。这样讲出来的故事是爷爷和孙女共同创作的，是两人之间特有的故事，任何其他故事都不会与之相同。也正是由于这样的独特性，这个故事对于孙女安妮来说具有更强烈的情感意义，远胜于任何好莱坞大片；虽然它的情节构思缺乏深思熟虑，故事发展不够稳妥，也没有好莱坞大片的精彩特效，但由于它是爷爷为孙女“专门定制”的故事，因此这些缺陷对于安妮来说就显得不那么严重了。安妮当然也许很喜欢迪士尼的《狮子王》，但是爷爷的《安妮与小白马驹》却更加令她珍惜。

每个人都了解故事叙述的基本原则，我们每天都会讲许多故事，本来就知道如何把基本原则转译为具体的故事。如果一位普通的爷爷都能做到，那么作为互动叙事创作者的我们怎么会做不到呢？

4.7 本章小结

跃过“情节与交互性”冲突的办法是抽象机制。我们不能拘泥于具体的故事实体（即情节），而必须学会在更抽象的层级上进行思考。笔者反对采用所谓“（元情节）metaplot”这样的伪知识语汇——“故事世界（storyworld）”能够更明确地体现同样的内涵。故事世界是完备的、封闭的戏剧性概念之集合空间，具有特定的主题。“人类生态状态”是故事世界可能具有的最大的主题。“罗曼蒂克”主题就相对小一些，“悲情浪漫”主题的范畴更小。目前，我们应该把精力集中在主题相对狭小的微型故事世界上。

每个故事世界蕴含了诸多可能的情节线，正如一个数学变量可以代表任意数值，一则法律条款可以管辖多种可能的行为，一条科学定律可以描述无穷尽的物理运动，或者一个银行账户可以记录任意多的资金。故事世界也隐含了多种不同情节构思的可能性。

第5章 用动词思考

发展互动叙事最大障碍在于“用动词思考（verb thinking）”的困难。这种异于传统、几乎不自然的思维方式恰恰是理解交互性的核心所在。要理解动词思考方式，就须要把它与所谓名词思考方式（noun thinking）作横向比较。

5.1 动词与名词

宇宙是什么？为了回答这个问题，大部分人也许会使用诸如星星、星系、行星之类的字眼来描述太空里存在的一系列天体，同时列举岩石、树木、动植物、房屋、汽车等各种概念来描绘地球上的物体。要像这样完整地描述宇宙，我们就不得不列举所有可知的物体概念——这说起来似乎很容易，但是做起来几乎是不可能完成的任务。

然而，还有另一种考察宇宙的方式，即通过描述塑造宇宙的一系列动态过程来予以界定——我们不去考虑空间里的物体，而是考虑随时间推移而发生的事件。我们是应该把“树”描述为由树根、树干、树枝、树叶组成的整体，还是应该把它描述为由光合作用、养分吸收、细胞分裂和水分输导等过程组成的系统呢？

上述两种看待事物的方式体现了现实世界的两个方面，任何领域都离不开这两种思考方式。在语言学里，两个最基本的语言成分就是名词和动词。名词指代物件，动词描述事件。名词概念关乎存在性，动词指涉的则是动作。两者的并用让我们能够描述所有的事物，这种两面性随处可见。

• 经济学：商品是现实存在的物件，而服务是动作和过程；商品是相对稳定的存在，而服务则是随时间推移而发生和结束。

• 物理学：粒子是实际存在的物体，而波动则是过程。

• 军事科学：军事资产指代战争中可以利用的军队和武器弹药，而军事行动则是指实际的行为，两者共同界定了这门学科。

• 计算机科学：存储器存放数据，而 CPU 处理数据；数据是计算机的“名词”，处理过程则是计算机的“动词”。

• 制造业：厂房里的零件是生产的“名词”，工人把零件组装成产品的过程是“动词”。

表5.1展示了名词和动词如何共同组成了我们理解事物的基本要素。

表5.1 名词（物件）与动词（过程）的对照关系

5.1.1 灰色地带

名词与动词的区隔并非黑白分明，两者之间也存有相互交融的情况。

• 语言：名词可以被“动词化（verbified）”，比如“trash that memo（扔掉那个纸条）”；动词也可以被“名词化（nounified）”，比如“that was a good play（这出戏不错）”。这种互相转化模糊了两者之间的界线：“trash”到底是名词还是动词呢？那么“play”呢[4] ？

• 经济学：如果我们在快餐店买了一个汉堡包，那么我们购买的究竟是商品本身（汉堡包），还是服务（制作汉堡包的过程）呢？我们雇佣会计的时候，支付的是商品费用（做好的账目），还是服务费用（做账的过程）呢？

• 物理学：波粒二象性让所有人都感到惊异——向两个细缝发射电子，居然会像波一样产生衍射[5] ；同时，我们却又能观察到单个的电子。那么电子到底是波还是粒子呢？这取决于我们从什么角度来考察。大尺寸的物体更容易体现出粒子特性，而微小的粒子则更容易体现出波的特性；然而我们不能把任何物体用波、粒两种特性当中的任何一种来独立看待——同样的物体在不同的情况下也会体现出不同的特性。

• 军事科学：一小队快艇地毯式地积极巡逻整个海域起到的效果，可能与一个大舰队停泊在港口相同。战争的核心规则之一就是以我方的军事力量压倒对手。较弱的军备可以用更积极有效的战略战术来弥补。当然，只要运筹得当，军备充足的大部队固然也能起到更好的效果。

• 计算机科学：在计算机发展初期，程序员就认识到，无论数据与过程之间的比例如何，几乎都能完成同样的计算任务。如果存储较大，那么就只需要较少的处理过程来完成计算，程序运行也较快；而如果存储较小，那么只需重写程序，利用较多的处理过程和较小的存储空间来完成同样的计算。

• 制造业：原材料与劳动力之间的权衡是众所周知的问题。我们可以向上游供应链扩展，不再购买使用成品电路板，转而购买电路板零部件，然后增加雇员自己组装电路板——更多的劳动力意味着购买更少的成品组件。同样，我们也可以把一部分组装任务分包出去，减少自身的劳动力成本。这其中的权衡取决于零部件成本和劳动力成本的具体情况。

不难看出，名词与动词是相辅相成的两个方面，两者可以实现相互转化。在许多特定的情况下，我们当然也会偏重于其中某一方面。把木星（太阳系中最大的行星）看作“粒子”固然比把它看作波长极小的波要更实用一些。劳动力成本低的时候，自然应该减少对成品部件的依赖并增加劳动力；而如果劳动力成本很高，那么购买成品部件、减少劳动力就是更好的选择。

5.1.2 名词偏见

有一个因素严重影响了名词与动词之间的平衡，其影响波及我们人类事物的方方面面：出于某种原因，名词思考方式比动词思考方式更容易。这种偏见在上一节举出的所有例子中都存在。

• 语言：笔者在一本字典中随机翻阅了数页，分别统计出其中名词和动词的数目，得到的结果是101 个名词和26个动词，几乎是4∶1 的比例。随后，笔者又对一本拉丁文字典做了同样的统计，结果是57个名词和20个动词，接近3∶1的比例。不难看出，我们的语言对名词有所偏重。倒是有一门叫做 Hopi[6] 的语言以偏重动词著称，但也正是由此让许多人感到“怪怪的”。

• 经济学：亚当·斯密的著作《国富论》[7] 为现代经济学确立了根基，也建立了诸多经济学的基本原则，比如价格与供需关系、劳动分工的功用、自由贸易的优势等。然而其中却对服务作为经济实体的概念鲜有阐释。亚当·斯密当然了解经济生产中的劳动力概念，但是他只将其看做创造商品的手段。于是，这位现代经济学之父没能看到“商品”与“服务”两者之间相辅相成的关系，而只是看到了“商品”的一面。直到 12 世纪初，“服务”作为经济产出实体的概念才被稳固地树立起来。比起对“商品”的理解，人类对“服务”的理解多用了100年。

• 物理学：牛顿在 1664 年就建立了粒子运动的物理理论，200 年之后，人类才逐渐建立起波动理论。即使对于牛顿这样杰出的物理科学奠基者来说，粒子都比波动容易理解得多。

• 军事科学：我们从最早期的军事历史当中就能看到所谓“军事资产”的概念。从记载的古代将领的所作所为来看，他们深知士兵和武器之多寡的重要性。如何运用这些军事资产同样重要，然而这一考量却鲜见于早期军事史。亚历山大大帝似乎很重视这一点，但是他对军事行动的概念也只是一知半解。拿破仑认识到军队的力量取决于如何运用战略战术，是第一位持续贯彻这一观点的将领。第一次世界大战至第二次世界大战期间，两位军事理论家（ Liddel-Hart 和 Guderian ）首次把军事战略战术的观念进行了理论化。最后闪电战（Blitzkrieg）的出现才让全世界都认识到了它的价值。军事思想家花了超过 2000 年的时间才超越了单纯的军事资产概念，彻底理解战略战术的同等重要性。

• 计算机科学：从历史角度来看，存储与处理的相关性从一开始就为人所知，因为早期的存储极为有限，计算机科学家一直不得不竭力寻求解决计算问题的新方法。的确，存储与处理之间的关系史与其他领域正好相反：由于硬件条件所限，早期的程序员不得不把在处理过程上花尽心思。然而，随着计算机存储容量的不断增大，程序员对处理过程的关注度就越来越小，转而重点关注数据（即存储）的问题了。推进这种重心转移的还有程序员的供需关系变之化。20世纪50年代至70年代期间，对程序员的需求没有那么大，因此只有少数最优秀的人才去做程序员。而到了 20 世纪 80 年代，对程序员的需求呈现爆炸式增长，商业市场对程序员的需求远超过少数顶尖程序员所能满足的地步。虽然大量新兴程序员涌入了这个领域，但是相比之下，他们对算法的掌握就大不如从前的从业者了。

这种从算法向数据的重心转移在电脑游戏领域的发展史当中显而易见。最早的电子游戏系统之一Atari 2600搭载了强大的8 位6502处理器，处理器速度仅略低于1 兆赫（MHz）；然而它的只读存储器（ROM）只有2000字节（KB），内存（RAM）更是只有128字节。为这一机型设计的游戏都重于处理过程，同时把对数据的需求减到最小。经过多年的发展，电子游戏的数据量越来越大，容量上千兆字节（GB）的游戏现在已经很常见了。如表 5.2 所示的电子游戏机硬件能力的发展最能体现这种趋势。

表5.2 电子游戏机硬件的发展演化

从表5.2 不难看出，存储能力的发展远远超过处理能力。Xbox的存储比Atari 2600 的大数百万倍，然而处理速度只快几百倍。游戏程序设计的重心已经从处理过程转移到了数据方面，这种转移也有技术限制的因素影响，因为扩展存储比提高处理速度更容易。当然，这个重心转变多多少少也体现了玩家对游戏中的数据量的诉求不断增多。这里有一个大问题：既然游戏机比原来的好数百万倍，那么为什么游戏却没有变得好数百万倍呢？

一言以蔽之：我们的思想一直僵化在名词思考方式上，似乎总是无法很好地掌握动词思考方式，而且我们对后者的理解总是比对前者的理解晚一步。

在第2章探讨交互性的时候，我们提出了一个重要观点，即交互的质量或程度随着用户的选择的增多而提高，在此不妨进一步考察。动作是选择的对象：玩家不是要选择泡芙或棉花糖，而是要选择是“吃”泡芙还是“吃”棉花糖；玩家要选择的是低下头屈从于上司，或者告诉上司自己的真实想法。我们的选择是基于动词的选择。动词是选择的核心，而选择又是交互的核心。

要点17

实现交互需要动词思考方式。

对名词的偏重正是软件设计不佳的关键原因。设计良好的交互需要应用动词思考方式，然而大部分人却不太会以动词思考方式进行思考，于是我们就抱着名词思考方式，举步维艰，做出来的自然也是“重名词轻动词”（数据密集而非过程密集）的软件。

5.2 案例聚焦：多媒体

不知道读者是否还记得20世纪90 年代兴起的“多媒体热潮”？当时，随着CD-ROM光驱逐渐成为个人电脑的标配，软件开发者也开始充分利用光盘的巨大存储容量。现今的我们也许很难相信，那个时候的个人电脑的内存一般是 4MB，硬盘空间一般是 100MB，最流行的软件发行介质是容量为 1.4MB 的软盘。相比之下，一张 CD-ROM 光盘的存储容量高达 650MB。从软盘到光盘的“升级”把存储容量提高了400倍之多！如果要以相同的比例用更新的存储介质替代光盘，那么这个新介质的容量就必须达到260GB才行！

由此，摆脱了软盘存储容量限制的软件开发者就开始在光盘中存放大量的数据，这些数据一般是图像数据。由于当时的个人电脑显示屏一般是 8 比特位的，分辨率一般是 640 像素宽 480 像素高，一屏图像只需307KB的存储，因此一张光盘就可以存放近2000幅图像——市场对艺术设计师的需求一下子就暴涨了，因为有大量的图像绘制工作可做。

没有了存储容量的限制，软件开发领域一片欢声笑语；之前受限于存储容量而无法在计算机上进行艺术创作的艺术家们摆脱了束缚，能够轻松地创建出图像效果惊人但没什么功能的软件。于是他们就真的这样做了，市场上涌现了大批被称为“多媒体软件”的产品——通过简单的程序从光盘中读取大量图像和音频数据在电脑上播放。

在那一片多媒体的喧嚣和繁荣当中，还伫立着一个满面愁容、脾气暴躁的家伙，这个家伙就是笔者本人——我到处给人泼冷水，认为追捧光盘和多媒体完全是浪费时间；因为光盘只是数据存储技术，不是数据处理技术，它只在“名词”的这一方面实现了巨大的飞跃，但是“动词”才是实现交互的关键；由此我认为光盘和多媒体不会对软件革命起到多大的推进作用。

那个时候，没有人认同我的看法，觉得我肯定是疯了。多媒体软件巨大的销售成绩也让我看起来像个傻瓜似的。有不少人通过制作多媒体软件挣了一大笔钱。所谓是骡子是马，拉出来溜溜便知；在当时，推崇多媒体的人显然占了上风。

这样的情形笔者之前也遭遇过。早在 1983 年，单机游戏（arcade games）领域就掀起过一阵《龙穴历险记》[8] 的狂潮。这是第一款采用镭射光盘（CD-ROM 光盘的前身技术，尺寸更大、价格更昂贵）存储的游戏，游戏中充斥着由著名动画师 Don Bluth 创作的动画视频片段，经由简单的分支选择系统来决定播放哪一个片段。整个游戏的结构非常简单，如图5.1所示。

这款游戏在当时获得了巨大成功，因为之前还没有人见过画面效果这么好的单机游戏。随着它的成功，其他的游戏开发商也纷纷效仿，采用镭射光盘存储游戏数据；不到一年，市场上就充斥着各种劣质的镭射光盘游戏了。这个风潮一吹而过，瞬间即逝，因为这样的游戏虽然画面效果很棒，但是却没有什么可玩性，玩家在游戏里做不了太多事情。要知道，游戏及任何其他形式的交互成功与否，关键就在于用户能做什么。别忘了 Crawford 软件设计第一定律“始终考虑用户做什么，用户行为涉及的动词是什么”。

图5.1 《龙穴历险记》的游戏结构

让我们再回到 20 世纪 90 年代的多媒体风潮上来。当时我就发现，多媒体软件风潮与之前的《龙穴历险记》风潮如出一辙，它也许会取得更大的商业成功，也许会持续更长时间，但是归根结底还是缺乏持久的魅力。之后发生的事情正如我的预期，整个风潮持续了三五年，到20世纪90年代末期，多媒体软件就寿终正寝了。CD-ROM 光盘技术则继续广为应用——作为一种存储介质，它毕竟比软盘好得多。于是人们终于不再以多媒体内容为卖点来推销软件产品了。

值得深思的是，在游戏产业里，击败所谓多媒体技术的其实是 3D 图像技术。不少人没有察觉到两者之间的差别，以为各种图像媒体都大同小异。然而，基于 CD-ROM 存储的多媒体与基于软件处理的 3D 图像渲染大不相同：前者是数据密集型的，而后者则是过程密集型的。多媒体技术只不过是把光盘上的数据内容读取并显示到屏幕上，软件设计师的心血在于数据量方面；3D 图像软件则是通过中央处理器（CPU）来实时计算出需要呈现的图像，软件设计师的心血在于充分利用计算机的处理能力。由于 3D 图像软件是基于计算处理的，而不是基于简单的数据读取的，因此它能够与用户实现交互。这样过程密集型的交互对于用户而言更加深入人心。

5.3 动词思考方式入门

讲了这么多，希望读者已经被笔者说服，认识到动词思考方式的重要性，并决意追随这个方向。那么，如何才能以动词思考方式进行思考呢？

首先，我们要转变看待世界的基本方式。表5.3在此展示了名词与动词的对照关系。

每当想到任何一个主题的时候，我们不妨都对照表 5.3，想一想名词对应的动词是什么。一旦理解了事物背后所涉及的种种观念，那么表面上的事实就会变得不那么重要了。大街上的商家店铺卖的是商品还是服务呢？能不能把他们的产出想象成在买卖过程中实现的服务呢？

表5.3 名词（物件）与动词（过程）的对照关系

总而言之，我们要试着考虑事物“做”什么，而不是考虑事物“是”什么。按照这样的思考方式，窗户并不是玻璃，而是阻隔空气运动，同时又让光线顺利通过的阻隔物；汽车并不是引擎、车身、座椅等部件，而是把人从一个地方转移到另一个地方的载体——其他相关事宜都是次要的；计算机不是装了风扇的盒子，而是处理数据的机器；药片不是各种化学成分的组合体，而是改变人体生物化学过程的物质。

另一个更有效的思维练习是运用我们最重要的品质——好奇心。虽然多数成年人的好奇心已经大不如小时候，但是只要经过努力练习，我们都能恢复和保持强烈的好奇心。无论走到哪里，遇到任何事情，我们都应该学会习惯性地思考“为什么”的问题。

也许你会注意到，有些国家的硬币既有圆形的，也有多边形的，那么你是否想过为什么会这样呢？调查一下便知，其背后蕴含着精彩的故事。你知道为什么天空是蓝色的吗？如果还不知道，那么为什么你还不知道呢？也许在还是孩子的时候，我们都问过这样的问题——现在的我们是否还有那一份好奇心呢？你是否知道语言当中包含了许多配对的词汇（比如进与出、伤与害、帮与助等）的原因呢？为什么现今使用的键盘是按照 QWERTY[9] 方式排列字母的呢？你是否还会像儿时一样，仰望天空，对着群星浮想联翩呢？

好奇心的关键并不在于我们是否知道所有问题的答案（人的一生都在不断提问和寻求答案），而是在于我们是否持续地提出问题。现今的教育往往过于关注教给我们问题的答案，从而抹杀了我们提问的天赋。

世界充满了无数令人惊异的谜团；虽然一个人一生也无法解开全部奥妙，但是不去探寻答案的人自然也得不到心智的发展。笔者已经年过六十，仍然在挣扎着寻求成千上万的问题答案。如果我们主动放弃了提问，那么就跟活死人无异了。

还记得在本书第1章提到的《黑客帝国》的例子吗？电影中的主人公尼奥（Neo）最终“看透”了虚拟世界的本质，认识到它其实只是经由数据和算法生成的。在尼奥的眼里，无论是走廊的墙壁还是远处的对手，都幻化成了被不断处理的数字；而他则能够随意操纵这些数字。这段电影情节正是我们如何以动词思考方式考察世界的最佳比喻：走廊里的墙壁不光是墙壁，还是无数的原子通过其间作用力共同形成的稳定状态，它把受力从房顶传导至地面，还把光子反射到各个方向。事物不只是存在着，还在不断发生着。如果我们能够理解事物发生的原因和方式，那么我们也就更够在更深的层次上理解宇宙万物了。也许正像尼奥能够停住对手发射过来的子弹一样，我们也许就能够实现令人惊叹的互动叙事。

动词思考方式的力量就在于此。

5.4 本章小结

从名词思考方式到动词思考方式的思维转变是迈向互动叙事的第一步。这个微妙的转变会挑战我们既有的思维方式，并且检测我们志在必得的决心。一旦我们实现了这个转变，软件设计就会变得更加明晰可达。笔者要不断嘱咐，请记住 Crawford 软件设计第一定律：始终考虑用户做什么，用户行为涉及的动词是什么。

第6章 数学之苦劳

万事万物是经由复杂的因果关系网络联结起来的，人生的目标之一就是尽可能地理解这个知识网络，而理解的途径就是动词思考方式。对于实现互动叙事而言，我们必须把精力集中在因果关系及其本质上面。我们需要一种语言来精确、明晰地表述所发现的每一种因果关系的确切机理。好消息是这种语言已经被确立了，坏消息是这门语言是数学。

一提起数学，有些人就会像泄了气的皮球一样一蹶不振，愤怒和厌恶的情绪溢于言表——实现艺术创作竟然还要动用数学，这样的想法不免会遭到这种人的排斥。对他们来说，数学是冷漠无情的。作为志在互动叙事的艺术家，他们不想跟狭窄的数学世界打交道。然而，笔者必须在此尝试说服这些人，让他们面对恐惧，克服厌恶之情，从而驾驭数学巨兽，因为笔者的经验是：拥抱数学是互动叙事最终成败的关键因素。笔者曾经试图向许多人教授如何在软件设计中运用数学，许多人拒绝这么做，就好像老鼠见了猫似的。只有少数几个人鼓起了勇气，一头钻了进去摸爬滚打，得到了极大的收获。恐怕本书读者当中也会有不少人对数学望而生畏，从而阻碍了他们探索互动叙事的脚步。

6.1 拥抱数学

拒绝通过引入数学来探索因果关系，这不是智力问题，不是先天能力问题，不是心理障碍问题，也不是任何其他如此种种的问题。以“脑子比较笨”为借口来拒斥对数学的运用，其实只体现了情感上的不接受。对数学思维情不自禁地抵触是完全可以理解的，因为数学的思维方式就是非自然的。人脑是以非线性的关联和模式来运作的；而数学思维则是线性、步进式的，并不是人脑自然演化所针对的方式；数学思维要求人脑以其不擅长的运作方式来实现思考活动。因此，对“投身数学”这种无异于“摧残大脑”的建议报以拒斥态度，的确是有情可原。

尽管如此，为了远大理想而克服重重困难和挑战，这难道不是应该的吗？伟大的艺术家从来不会在追求艺术理想的路途中逃避困难。达·芬奇、米开朗基罗等诸多欧洲文艺复兴时期的伟大艺术家都希望创作至臻完美的人体绘画，然而它们意识到，要想画好人体，就必须对人体构造具备深入的理解。那个时期根本没有人体解剖构造的图书可以借鉴，了解人体构造的唯一途径就是参加专为医学学生开设的人体解剖课一窥究竟。

要知道，那是一个没有福尔马林、酒精和冷冻室的年代。尸体在意大利的夏天会很快开始发臭；几天之后，要近距离考察人体的肌肉、肌腱和骨骼，就必须克服常人难以忍受的尸体气味。尽管如此，达·芬奇、米开朗基罗等诸多艺术家们仍然坚持探索，绘制了大量人体解剖构造的图稿（如图6.1所示）。

这些艺术家们之所以愿意历经如此难耐的体验，是因为他们希望提高自身的艺术创作能力。他们连腐烂尸体的臭味都能忍受，我们难道连重温中学数学都做不到吗？

千万不要奢望绕过数学来实现互动叙事。交互的根本概念不可避免地引至数学，没有蹊径可供另辟。笔者自己探索互动叙事多年，既尝试过用层层包装掩盖数学的艰涩，也尝试过其他能避开数学的表达形式，然而在极尽创造性的尝试之后，还是收效甚微，始终无法摆脱数学的羁绊[10] 。

要点18

要想在互动叙事领域取得成果，就必须驯服数学这头巨兽。

图6.1 达芬奇的人体解剖图稿[11]

6.2 因果关系

提起因果论，人们通常的想象是非此即彼的结论，比如苏格拉底[12] 要么是永生不死的圣贤，要么是终有一死的凡人，于是可以有如下的三段论[13] 。

所有人终有一死。

苏格拉底是一个人。

因此，苏格拉底终有一死。

上述论断做出了非此即彼的二元判定，颇为容易理解。然而，三段论并不限于表述是非，还可以用来表述数值计算，如下所示。

人的体重等于腰围的4倍。

苏格拉底的腰围是48英尺（约122厘米）。

因此，苏格拉底的体重是192磅（约87千克）。

上述两个论断的区别在于：前者做出了二元的是非判断（“苏格拉底是否终有一死”），后者则可根据一个人的腰围大小而得出多种不同的结论；前者对事实做出了非此即彼的判定，后者则蕴含了多种程度的可能性；前者只能表述最简单的判别问题，而后者则能够表述任何能够量化的复杂问题。

一旦学会了把数学公式看作一种论断形式的原理，运用更复杂的公式就不难了。比如，比前述稍微准确一点的体重计算公式可以是这样的：

人的体重等于腰围的3倍加上身高。

用数学语言来表述就是：

体重=3×腰围+身高

上述公式也许会比之前的更准确一些，虽然从严格意义上来说，它对于“精确计算每一个人的身高”这样的目标而言根本谈不上准确。如果这条公式能在 70%的情况下，以 20 磅上下的误差来准确估测人的体重，那么就算很不错了。更复杂的公式也许还能进一步增加准确性，比如：

体重=2×腰围×1.5 + 0.75×身高-12.1×鞋码

这条更复杂的公式或许能在 80%的情况下，以 10 磅上下的误差准确估测体重。能以零误差，百分之百地准确估测所有人体重的完美公式显然是无法企及的——或许只要付出足够大的努力也还是能办得到，但是倘若果真如此的话，那么这条完美公式必然会包含无数的关系复杂的变量，无论用多少页纸都写不完。在实用目的之考量下，完美是做不到的。

好在我们鲜有对完美的需求。椅子的设计师须要了解大部分人的体形和体重的大致关系，然而从来不需要特别精确的数字，像 20 磅左右这样的误差范围就已经足够用了。同样，互动叙事创作者不需要完美的数学表达，满足叙事需要就行了。

6.3 作为比喻的建模过程

古希腊诗人荷马[14] 作品中的“如手指般泛玫瑰红色的曙光（rosy-fingered dawn）”[15] 的描绘是最古老的的比喻手法运用之一。他把日出之前的曙光与手指的颜色做了个比拟，赋予自然现象以生动之气，从而让作品具备了丰富的表现力。创造比喻是诗人之所长，也是大部分艺术家必备的技能。

从根本上来说，数学建模也具有比喻特质。互动叙事艺术创作的核心不是图像，不是声音、不是对话，甚至也不是情节发展，而是数学建模。在互动叙事产品当中，我们可以有富于艺术表现力的图像，也可以加入精彩的配乐，还可以创作几首好诗，如此等等——然而，这些都不是互动叙事的关键所在。我们当然可以把伟大的绘画作品串联起来制作成电影，也可以把一位伟大诗人朗读诗歌作品的过程录制成电影，还可以把交响乐团演奏古典名作的表演录制为电影，但是作为电影作品，那会很精彩吗？把一种媒体形式中的优秀艺术作品简单地移植到另一种媒体形式当中，这样做并不会产出优秀的艺术作品，只是一种可悲的尝试。真正的艺术家总是“因地制宜”，致力于寻求能与媒体形式产生共鸣的艺术表达。

上述观点对于互动叙事而言至关重要，然而许多读者可能会对此感到难以接受。一部分原因可能是艺术家对其艺术创作及所涉媒体形式情有独钟。电影创作者热爱电影；诗人专情于诗歌；作家则崇尚文学。说这些绝妙的艺术形式在互动叙事里并不占有主要地位，这听起来像是校长对家长说他们的孩子还不够优秀，没资格入校——对笔者观点的愤然拒斥也就不难理解了。

尽管如此，还是请这样的读者保持克制。笔者的目的并不是贬低任何人，而只是希望帮助读者找到恰当的发力点。在过去，子承父业是社会惯例，子女的喜好得不到尊重。对于某些人来说，作为新兴媒体形式的互动叙事并不一定就是他们发挥聪明才智的最佳领域。对于这些人来说，与其硬着头皮来做互动叙事，还不如继续追随他们自己的方向。

与此同时，我们也不要把自己钟情的媒体形式强行运用到它并不适合的领域当中。在电影发展初期，一些杰出的戏剧演员曾经尝试过把传统的戏剧形式搬到当时还颇为新鲜和陌生的电影形式当中。他们在观众席当中架设了一台摄影机，然后把舞台剧表演录制了下来。这样的“电影”在效果上远不如现场表演的舞台剧，却也方便了发行——无法看到现场表演的偏远地区由此获得了观赏的机会。然而，这样的电影作品都在商业市场上惨败，这些戏剧演员们也因此对电影产生了蔑视，认为它是一种拙劣的艺术形式。

在舞台戏剧行业的发展颇为失意的大卫·格里菲斯（D.W. Griffith）[16] 没能钟情于舞台，于是他在投身电影事业的时候，没有抱守那些先入为主的传统戏剧观念，由此开创了前所未见的电影表现手法和技巧，在前人失败的地方取得了巨大成功。

对于已经选择了攀登其他媒体形式之高峰的人，笔者要祝他好运，并且劝阻他不要再涉足互动叙事，因为互动叙事是另一座高峰，通向这座高峰的是一条完全不同的道路。更加险恶的是，这条互动叙事之路还尚无人开辟，全靠自己探索和跋涉；要向这座高峰进发，就需要脚穿登山鞋，手握弯刀，全副武装踏上征途。在互动叙事的征途上，前进速度会比其他的路途更慢——欲速则不达。

如果我们能够克制对其他（包括游戏在内的）既有媒体形式的牵挂，以孩童般的天真来面对互动叙事，那么就能够有所收获。倘若我们试图把来自既有媒体形式的先入为主的观念强加于互动叙事，那么就必然失败。

要点19

不要戴着既有传统媒体的有色眼镜来看待互动叙事。

打住！你说的这是在故事叙述当中应用数学思维，但是人类本身是无限复杂的动物；把一个人精简为一系列数字，这完全磨灭了人性。艺术的作用在于探索和赞美人类体验，而不是拒斥其丰富性。

别忘了，互动叙事关注的是戏剧（drama），不是现实世界。现实世界的人类体验的确是无限复杂的，但是戏剧剔除了其中的诸多复杂性。不妨想一想自己在现实生活中认识的最坏的人，难道他们还能比小说里描写的坏人还要坏吗？有谁在现实生活中见过与《星球大战》里的黑武士旗鼓相当的大坏蛋，与韩·索罗（Han Solo）一样潇洒自信的游侠？电影中的角色都不是具有现实复杂性的真实人物，他们只是现实人物形象的提炼和简化。时长不过上百分钟的电影根本不可能全面地表达无限复杂的人类生存状况，因此只能剔除绝大部分复杂性，并且以极其鲜明的方式突出体现其中的几个方面或片段。数学表达简化了这种复杂性的事实并不足以否定这种做法。

即使如此，把人性简化为一堆数字还是一种贬低。

笔者不妨以“爱”的概念举个例子来阐释。对于不同的人，难道我们不是会爱得多一些或者少一些吗？难道我们的爱没有程度之分吗？既然爱可以有不同的程度之分，那么为什么我们不能将不同的程度与数值对应起来呢？如果我们说罗密欧对朱丽叶的爱大于他对自己家族的爱，那么用数值上的差别来体现这个不同，难道与之前的说法有什么本质上的不同吗？

但是问题在于，爱是个多维度的概念，不能用单一的数值来衡量吧！爱有许多种，比如对父母的爱、对子女的爱、夫妻之间的爱等。所有这些不同性质的爱怎么可能用单一的数值一概而论！

我们应该考虑的问题是这些差别对于要创建的故事世界来说是否重要，以及故事世界中的人物是否会根据爱的不同性质而做出不同的行为反应。如果确实如此，那么我们就有必要把单一的数值拆分成多个种类，然后分别进行数值上的量化。如果这些差别对于故事世界中的艺术表达没有太多影响，那么我们就完全可以采用单一数值来概括。

说爱得“多一点或少一点”与说爱到“0.57 倍或 0.23 倍”，两者之间恐怕是天壤之别。前者的文字描述方式考虑到了我们人类理解这类事物时具有的“近似估计”之本质，然而后者的数值量化描述方式则制造了一种精确性的假象。

不妨考察如下的情况：

最伟大的爱；

较伟大的爱；

少一些的爱；

最少的爱；

没有爱。

上述以文字描述了不同程度的爱，由此我们完全可以分别为各个程度赋予数值，比如：

最伟大的爱 4；

较伟大的爱 3；

少一些的爱 2；

最少的爱 1；

没有爱 0。

我们还可以随意扩展出更多不同的程度：

最伟大的爱 7；

特伟大的爱 6；

较伟大的爱 5；

不温不火的爱 4；

少一些的爱 3；

些微的爱 2；

最少的爱 1；

没有爱 0。

只要我们能避免含义上的含混和重叠，这样的程度分隔可以不断扩展细分下去。其实“insignificant（些微）”与“least（少一些）”，或者“strong（特强）”与“great（伟大）”，已经有些难以辨析前后差别，然而这只是语汇的局限性，与爱这个概念的程度差别无关。说某人的爱是0.2364 级，这当然是有些荒唐；我们也不可能在任何情况下坚持说 0.2364 比 0.2365 更正确——这里的关键问题并不是量化的具体计算原则，而是以何种粒度来进行程度上的区分。

上述这样的量化既不是对人性的贬低，也不是对人类生存复杂性的忽视。寻求恰当的变量数值就好比对在写文章的时候进行的字斟句酌，目的只是在内容上实现拿捏得当。量化的方式利用的是数值，传统的描述方式利用的是文字，仅此而已；我们只不过是用不同的“语汇”来描述同样的东西。量化的好处当然在于，这种新的语汇适用于计算机。

尽管笔者如此这般论断，恐怕还是会有一些读者对于量化人类品质这样的事情感到难以接受。对于这样的读者，笔者想问：我说了那么多都没能说服你，有没有可能还是因为你对任何数学相关事宜抱有抵触情绪呢？确实有不少人在学生时代对数学做过痛苦的挣扎，还可能因此而觉得自己很笨——有过这样的经历的人对数学抱有恐惧和厌恶之情，是完全可以理解的。倘若读者感到自己也是这样的人，那么请积极面对这种抵触情绪，仔细考虑自己是否愿意为了互动叙事的远大目标和理想而克服它。

6.4 本章小结

大部人都痛恨数学这门让人绞尽脑汁的学科。然而，它正是我们必须用来表达艺术性比喻的语言，因为计算机能够理解它。在各类艺术家当中，有用动物肠线制作琴弦的，有用石头创作雕塑的，还有通过研究解剖来创作人体绘画的。要想通过计算机创作伟大的艺术作品，数学是不二之选。

第7章 两种文化的问题

自英国科学家、小说家 C.P. Snow[17]提出所谓“两种文化（Two Cultures）”[29]问题以来，已经半个多世纪了。当时，科学界与艺术人文界正在逐渐走向分离与对立，双方都越来越无法理解对方的领域。C.P. Snow 坚定地认为，要解决困扰着西方文明的问题，需要这两种文化协同努力。

尽管Snow的观点深得认同，并且引发了热烈的讨论，但是两种文化的隔阂却越来越严重。科学家、工程师和数学家等不但越来越缺乏艺术人文方面的教育，而且还经常把它当做是浪费时间的事情。艺术人文界的人士则走了另一个极端：他们拒斥科学，轻蔑地把它看作是简单的线性思维产物。

科学所需的序列式思维方式与艺术人文所需的基于模式识别的思维方式存在着根本的不同（参考第1章“两种思维方式”一节），这进一步加剧了两种文化的隔阂。性别因素似乎也起了作用——科学领域吸引了更多男性加入，而艺术人文领域则拥有更多女性从业者。无论还有何种原因，两种文化之间的隔阂越来越大是不可否认的基本趋势。

这种文化隔阂对互动叙事领域形成了挑战。物理学家不一定非要对卢浮宫略知一二，艺术家即使分不清“能量”与“熵”的概念也无所谓，但是互动叙事恰恰需要横跨两界的人才。第5章探讨的动词思考方式实际上就是科学家熟稔的算术思维的一种泛化形式；而同时，互动叙事又要求我们对故事叙述之本质这样的艺术人文主题具备深厚的理解——能够同时驾驭两者并非易事。

美国电影《衰鬼上错身》[18] 当中的一个桥段生动形象地描绘了这种“左右为难”的情形。这部1984 年的影片讲述的是女富翁艾黛纳的“心智”偶然进入了一位律师罗杰的大脑之后发生的事情；她与律师的心智共同“管理”着后者的大脑，导致了一系列令人啼笑皆非的闹剧。有一幕当中，律师站在人行道上，他大脑中的“女富翁”希望沿着人行道往右走，于是控制律师的右腿向右迈；然而律师自己却想往左走，于是拼命地用左腿“抵抗”右腿，向左挣扎。律师的扮演者、美国著名喜剧演员史蒂夫·马丁（Steve Martin）通过精彩滑稽的肢体语言生动形象地表达了这种左右为难的情形，让观众看到了两个心智的相互对抗和挣扎。这样两相抵触和对抗的结果当然是一事无成，哪儿也去不了[19] 。

上述的这种左右为难的情形正是互动叙事目前面临的挑战：程序员和游戏产业从业者与新媒体探索者相互冲突，在各自的方向上挣扎，结果左摇右摆，谁也没有取得任何进展。不过 21 世纪以来，双方加强了沟通，也取得了一定的进展。影片中的律师与女富翁最终学会了在同一个身体里和谐共处，还坠入了爱河——希望互动叙事也能有这样的完美结局。

7.1 神经生理学基础

两种文化的对立问题从一定程度上可以追溯到人脑进化的早期。早期的人类为了应对不断涌现的新问题和新挑战，逐渐演化出了两类心智模块：模式识别模块和序列化处理模块。模式识别模块擅长处理复杂的模式，比如我们的视觉处理系统包含了许多用以识别纹理和形状等图形模式的部件。还有一种形式的模式识别是社会推理（social reasoning），包括分清敌友、判断谁可能会帮助或背叛你，等等。序列化处理模块则用于对声音和语言等的处理；理解和考察诸如“受伤猎物的踪迹”之类的自然现象对于早期人类狩猎者而言颇为重要。

上述两种基本思考能力人皆具备，还有一些小的遗传差异对两者产生影响。性别特化（男人狩猎更多，女人采集更多）使得早期狩猎采集者当中的男人具备略强的序列化处理能力，而女人具备略强的模式辨识能力。这些微小的倾向差异在儿童的成长环境中被放大，导致两种思考能力出现微小的性别差异——男人主导了基于序列化逻辑的文化功能，而女人则主导了基于模式识别的文化功能。

如此一来，在逻辑与模式之间，以及在科学与艺术之间，就存在着少许相关性。无论男女，擅于序列化逻辑思考的人会往科学和工程的方向发展，而擅于模式识别处理的人则会往艺术人文的方向发展。从某种程度上来说，两种文化之间的冲突源于人类早期演化出来的两种不同的思考方式。

7.2 游戏与故事的交往史

游戏与故事的交往史是颇为令人失望的，也能解释为什么我们深陷两难的境地。从最开始，游戏设计师们就一直试图通过已知的最先进技术把故事与游戏结合起来。这样的探索迫使他们把故事硬生生地附加到游戏上，逐渐塑造出了他们自身无法挣脱的思维定势。

7.2.1 印刷故事时代

有些早期的游戏设计师对两种文化的问题具有很好的认识，意识到了故事的重要性，便开始尝试在游戏中纳入故事元素。由于当时的计算机还没有足够强大的计算能力，他们也就无法用程序来实现故事元素，转而在随游戏附带的使用说明书当中撰写故事。Automated Simulations[20] 于 1979 年出品的一款游戏的使用说明书就是以故事开头的：“The derelict was old, old…”在整个20 世纪80年代，在说明书里附上故事的做法占据了主流。基于 Atari Video Computer System 主机[21] 的游戏《Yar's Revenge》[22] 甚至还以漫画书的形式来呈现故事。笔者本人也在 1983 年的《Excalibur》[23] 、1987 年的《Trust ＆ Betrayal》[24] 和1989年的《Guns ＆ Butter》[25] 3部游戏当中采用了在说明书中附带故事的做法，为每个游戏创作了一部短篇幅小说，以描绘游戏的故事背景；有心的玩家还能通过阅读小说而发现行之有效的游戏策略。

7.2.2 过场故事时代

20 世纪 80 年代晚期发展出来的所谓“过场故事（cut scenes）”技术逐渐取代了故事印刷品，做法是在游戏之间穿插故事片段。1989 年的游戏《银河飞将》成功地运用了这种技巧——玩家玩一会儿画面粗糙的游戏，然后阅读一段漫画风格的故事，随后再次进入游戏。

过场故事很快广为流行，并且不断得到发展，其基本技巧沿用至今。自 CD-ROM 光盘进入主流市场以来，过场故事技术也蓬勃发展，图像效果越来越好。

7.2.3 过场动画时代

接下来的发展把视频引入了过场故事当中。1993 年的游戏《Seventh Guest》[26] 是第一款采用了视频的游戏（不过其对视频的运用与游戏机制的结合更加紧密）。大部分游戏都直接把静态图片的过场故事替换成了过场动画。

7.2.4 3D渲染时代

过场动画出现之后，随即就有了新的技术发展。id Software[27] 在 1992 年出品的经典 3D 游戏《德军总部 3D》[28] 和 1993 年的经典大作《毁灭战士》当中，直接利用 CPU 来进行实时计算，渲染出3D图像，一举终结了过场动画的统治地位，成为处理密集型技术胜过数据密集型技术的典范。

遗憾的是，id Software对故事叙述并不重视，滞后了故事与游戏的协同演进。不过很快便有其他人跟上了脚步。

7.2.5 支离故事时代

进入 21 世纪，游戏厂商开始进一步“修润”附加到游戏里的故事成分，请来对故事叙述有钻研的人士参与设计。然而，他们还是摆脱不了两种文化的隔阂所带来的局限性。游戏设计师们还是把故事叙述当做诸如动画、音乐、声效之类的辅助性元素来看待，只在游戏设计基本完成之后才让故事叙述专员参与进来，希望他们能创作出与游戏相配合的故事。

互动叙事只能是技术与艺术共生的产物，让任何一方从属于另一方只会阻碍这种共生关系的建立，从而排除了在故事叙述中实现交互性的可能性。现实情况正是如此：被请来参与游戏开发的故事叙述创作者在游戏设计师的制约之下，成果寥寥。

由于两种文化的隔阂问题，故事叙述创作者被负责实现交互性的游戏设计者隔离开来——游戏设计部门负责交互的部分，而故事设计部门负责故事叙述的部分。故事叙述创作者从来都没有机会与交互性打交道，也就不可能在故事创作当中运用交互性原则。

7.2.6 三种文化

更具讽刺意味的是，在互动叙事领域其实有3种——而不只是两种——相互对立的文化。首先是电子游戏文化，这种文化认为互动叙事只是附加到既有游戏设计上的辅助性元素，只不过是锦上添花的额外功能。其次是互动叙事学术圈文化，这个圈子由学术研究专家组成，他们对互动叙事的理论著述颇丰，但是似乎无意把理论付诸实现。第三是以传统故事叙述创作者为代表的故事叙述文化，他们热切希望在故事中实现交互性，但是却并没有参透交互性的精髓。

7.3 劝诫和预测

应该如何摆脱“两种文化”问题带给我们的困扰呢？

7.3.1 倾听

首先要下足功夫，认真倾听。

不妨听笔者讲讲一位朋友如何改变我的人生的故事。这位朋友叫维洛（Vero），是我见过的最有直觉力的人。笔者是理性的推崇者，读者也许会觉得维洛与我大概注定会两相轻蔑。然而我们俩一见面，就立刻超越了两者之间的差异，经由一种特定的情感系结在一起。那也许是阴阳互补的吸引力，也许是浪漫的友情，笔者也说不清、道不明；无论如何，我们俩成了相见恨晚，无所不谈的朋友。

有一天我们讨论起轮回转世的话题。作为理性主义者的笔者当然认为这完全是迷信。维洛却不这么想，于是我决定用逻辑推理来进行辩驳，试图把她引入我设下的逻辑陷阱当中去。每进一步，我都用无可辩驳的结论来说服她。

然而，其中还是有一个环节的论证比较薄弱。于是我在此点到为止，立刻转向了下一个逻辑环节。维洛礼貌地倾听我继续往下论述了几步之后，一针见血地指出了那一步弱点，准确地暴露了我的逻辑推理当中的谬误，推翻了我的论证，说得我目瞪口呆，完全不知道她到底是如何做到的。我便追问其究竟，希望了解她的纠错逻辑。然而，她对此并没有严格的逻辑思考，就是直觉地感到那个环节有问题。

自那次讨论之后，笔者就对维洛那样的直觉化思考者抱有尊敬的态度。我不知道他们如何能够凭直觉就做出正确的判断，他们也无法论证自己的结论。无论如何，直觉化思考者的思考方式超出了笔者的理解范围。我自己也开始尝试着“培养”这种直觉力——也许我也能学会！不过到目前为止，笔者感觉自己在这方面还是像个蹒跚学步的小孩儿。

7.3.2 化敌为友

其次，需要花时间培养不同的思维方式。擅于直觉化思考和模式识别的艺术家应当多接触一些冷冰冰的逻辑思考——逻辑思维是需要习得的。而擅于序列化思考的理工科从业者则应当接触一些艺术方面的东西。没必要强迫自己接触不喜欢的艺术作品，只需要深入了解自己喜欢的即可；艺术人文领域蕴含着人类天赋的表达，值得尊重和欣赏。

除此之外，我们还要一种“社会陷阱”：物以类聚，人以群分，我们总是倾向于加入价值观相同的群体，并且对群体之外的人士抱有警惕甚至敌对的态度。美国政治中的保守派和自由派很好地说明了这个问题，两个派别的政治团体相互对抗，导致政府的执行力大打折扣。同样，技术人士与艺术家的隔阂让互动叙事的发展变得极为艰难。两个阵营的交流至关重要，只有保持开放的心态，双方才能互相理解。

我与艺术家合作过，他们实在是无法理解技术的东西呀！我尝试向他们解释交互性，但是他们怎么也弄不明白。

你确定自己已经悟透了交互性的概念吗？你对它的理解是否已经由表及里、由浅入深、深入骨髓了呢？你有没有信心去讲授一个学期的交互概念课程呢？交互性是我们文化中的一个新兴概念，人们难于理解它是理所当然的。我们必须保持足够的耐心，花足够多的时间向人们解说，这样别人才会理解。

我也和技术人员共事过，他们完全走不出自己的技术天地，拘泥于自己的编程和计算机的世界。这些人对故事的理解就是《星球大战》，我又如何能与他们探讨复杂的叙事呢？

大部分做技术的都是聪明人，只不过他们的聪慧之处不同于你罢了。如果你自认为对复杂叙事了如指掌，那么你也应该能把他们教会吧？这当然是件花时间的事情——谁又能一夜之间就变成专家呢？要对叙事具备深入的理解，还不是需要多年的积累吗？我们需要为技术人士留出余地，耐心地向他们宣讲，他们迟早会明白过来的。

7.3.3 掌握必备的语言

第三，我们还须要统一语汇。技术专家与艺术家拥有截然不同的语汇，这也加大了两方的隔阂。

笔者认为，艺术家阵营建立的语汇要优于技术阵营的。表7.1展示了大体对应的两种语汇。

表7.1 艺术语汇与技术语汇的对比

艺术家的语汇极为丰富，都可能派的上用场，比如情节转折（plot twist）、情节高潮（ climax ）、结局（ denouement ）、收场（ resolution ）、正面人物（ protagonist ）、反面人物（antagonist）等。相比之下，技术阵营采用的语汇都衍生自计算机科学，极为有限。

7.3.4 做技术的应当接触艺术

做技术的一定要走出自己的小圈子！欣赏一下展览馆里的艺术作品，听一听古典音乐，看一看莎士比亚的舞台戏剧，读一读经典作家的小说作品。不去做这些，只会是自己的损失。当然，并非所有艺术都能让人提起兴趣，比如笔者就不喜欢狄更斯，不喜欢歌剧，对油画也没什么兴趣。正如做技术不用学会所有计算机语言一样，我们大可不必包揽所有的艺术形式。总会有那么几种艺术适合自己，找到这些兴趣点是一件能让自己快乐的事情。

7.3.5 艺术人才应当接触编程

艺术人文领域的人士大可不必学习C++这样的专业编程语言，还不少简单易学的计算机语言可供尝试——Python语言就不错。可以尝试编写一些有趣的程序；不用老是向程序员寻求帮助，自己钻研一点才会有更多收获。笔者就是靠自学入行的。

7.4 本章小结

两种文化之间的对抗在美国最为严重，在崇尚艺术人文的欧洲则好得多。美国有购物商城，欧洲有艺术建筑；美国有沃尔玛超市，欧洲有博物馆；美国修建公共停车场，欧洲则树立公共雕塑。相比之下，欧洲并没有受到“两种文化”问题的太多困扰，因此在互动叙事领域的发展也比美国好得多，也许会成为该领域的先锋。

有些科学界人士承认，推动科学发展演变的有时候并不是理性分析，而是老一辈科学家的逝去。互动叙事领域或许也存在着类似的情况。

隐藏在两种文化问题背后的偏见是不可理喻的。本章大概说服不了两种文化当中任何一方的坚定拥护者。然而随着时间的推移，老一辈退出历史舞台、新一代拾起接力棒是迟早的事情；固步自封、抵抗改变的阵营终将失败。我们迟早会看到勇敢的探索者摆脱桎梏，迈入前人未曾涉猎的新境地。这些勇敢的先驱会在新的道路上取得一定的成功，并且激励后人继续前进。最终，两种文化的隔阂至少必然会在互动叙事领域当中被消除。这样深刻的文化变迁也许不会在笔者的有生之年完成，但它终究会到来。

注　释

[1].参见：https://en.wikipedia.org/wiki/Ptolemy。

[2].这是对《圣经》中“创世记”一节上帝说“要有光”的模仿。

[3].美国作家赫尔曼·梅尔维尔的名作，参见：https://en.wikipedia.org/wiki/Moby_dick。

[4].鉴于汉语与英语的差异，这里的论述只能以作者采用的英语为标准来理解。

[5].参见：https://en.wikipedia.org/wiki/Wave–particle_duality。

[6].参见：https://en.wikipedia.org/wiki/Hopi_language。

[7].参见：https://en.wikipedia.org/wiki/Wealth_of_Nations。

[8].这款经典游戏已经移植到诸多现代平台，感兴趣的读者不妨一试。参见：https://en.wikipedia.org/wiki/Dragon's_Lair。

[9].参见：https://en.wikipedia.org/wiki/Qwerty。

[10].原文为“putting lipstick on the face of this ugly pig called mathematics”。作者在此处做了个比喻，参见：http://en.wikipedia.org/wiki/Lipstick_on_a_pig。

[11].一款名为“Leonardo da Vinci: Anatomy”的iPad 应用收集了遗失400 多年的达芬奇人体解剖手稿，感兴趣的读者不妨一探，参见：http://www.touchpress.com/titles/leonardo-da-vinci-anatomy/。

[12].Socrates，古希腊哲学家。参见：https://en.wikipedia.org/wiki/Socrates。

[13].Syllogism，参见：https://en.wikipedia.org/wiki/Syllogism。

[14].Homer，古希腊诗人，著有《伊利亚特》和《奥德赛》，并称为《荷马史诗》。参见：https://en.wikipedia.org/wiki/Homer。

[15].参见：https://en.wikipedia.org/wiki/Epithets_in_Homer。

[16].美国导演，是对早期电影发展产生过开创性影响的重要人物，代表作包括《一个国家的诞生》等。参见：https://en. wikipedia.org/wiki/D.W._Griffith。

[17].C.P. Snow在1959 年的一次演讲中提出了“两种文化”的观点。参见：http://en.wikipedia.org/wiki/C._P._Snow。

[18].由美国著名喜剧演员史蒂夫·马丁（Steve Martin）主演。参见：https://en.wikipedia.org/wiki/All_of_Me_(1984_film)。

[19].读者可以在该片的预告片当中看到这一滑稽的场景。参见：www.imdb.com/video/screenplay/vi3669295385 或www.youtube.com/watch?v=pe2JWIvXyN4。

[20].参见：https://en.wikipedia.org/wiki/Epyx。

[21].参见：https://en.wikipedia.org/wiki/Atari_Video_Computer_System。

[22].参见：https://en.wikipedia.org/wiki/Yar's_Revenge。

[23].参见：https://en.wikipedia.org/wiki/Excalibur_(video_game)。

[24].参见：https://en.wikipedia.org/wiki/Trust_＆_Betrayal:_The_Legacy_of_Siboot。

[25].参见：https://archive.org/details/TheGlobalDilemmaGunsorButter_1020。

[26].参见：https://en.wikipedia.org/wiki/Seventh_Guest。

[27].参见：https://en.wikipedia.org/wiki/Id_Software。

[28].参见：https://en.wikipedia.org/wiki/Wolfenstein_3D。

[29].参见：http://en.wikipedia.org/wiki/The_Two_Cultures。

第三部分 进化式策略

大部分对互动叙事的探索都是渐进演化式的，即扩展既有技术，以期包容互动叙事。这样的策略如同模仿鸟类制造上下翻动的机械翅膀一样，效果欠佳。

第8章：互动叙事探索者最初的尝试是分支树（branching tree）技术，以失败告终。本章阐释其失败的原因。

第9章：久经考验、发展极为成熟的互动小说（interactive fiction）在实现真正的互动叙事方面，面临着根本性的障碍。

第10章：大受欢迎并且内容丰富的角色扮演游戏固步自封，无法在互动叙事方面实现突破。

第11章：由于电子游戏是个利润丰厚的产业，因此开发者抱有很高的期望，认为只要下足成本就肯定能实现出强大的互动叙事体验。然而这样的努力都无济于事。

第8章 分支树

似乎所有人在最初试水互动叙事的时候都犯下同样的错误，试图经由分支树结构来实现互动叙事。他们往往用传统故事开头，比如“从前有一位英俊的小伙子……”，然后为其追加选项，“……他（a）出去探险，或者（b）待在家里照顾生病的母亲”。接着，他们又为每种选择追加更多的选项，以此类推。很快，他们就建立起一颗极其庞大的故事分支树状结构，并引以为荣。然而在将其公之于众之后，却发现没人喜欢这种作品。

运用简单的数学知识就能了解这样制作出来的互动叙事为何会失败了。不妨只考虑最简单的情形，即每个选择只有两个选项。于是顶级的选择能衍生两个状态，分别基于这两个状态，又能通过次级的选择衍生出4个状态，到了第三级就是8个状态，第四级就有16个，第五级达到32个，如此逐级增加。图8.1展示了一个6级的分支结构。

图8.1 最简单的6级分支结构

具有 6 个层级的分支结构的复杂程度就已经不低了。可是要知道，6 个层级的分支基本上只相当于一个只有6句话的故事。

要创作上千个这样的故事状态，就已经涉及相当大的工作量了。然而，在分支树结构当中，只需要 10 次分支就能衍生上千个状态。对于设计师而言这是巨大的工作量，而对于体验故事的用户而言，整个故事只有10个选择那么长。

1．从前有一位英俊的小伙子。有一天他出去探险，在树林中忽然听到一声尖叫和另一声咆哮。（前去探查还是忽略？）

2．他前去探查，发现一个怪物抓住了一位少女。（上前干涉还是忽略？）

3．他要求怪物放了少女，但是怪物对他提出了要求。（答应还是拒绝？）

4．他答应了怪物的要求，走进了附近的一个洞穴。洞穴里有两条路：一条路传来水声，另一条路飘来烟气。（走哪一条路？）

5．他沿着有烟气的路继续走，看见了一条正在睡觉的巨龙。巨龙攥着一把怪物想要的钥匙，它旁边还有一把剑。（取钥匙还是拿剑？）

6．他拿起了那把剑，寻思着是应该攻击巨龙还是退回去攻击怪物。

7．他决定还是沿路退回去攻击怪物。怪物嘲笑了他的意图，并且威胁要杀死他。（攻击还是撤退？）

8．他对怪物发起了攻击。怪物受伤倒地。少女恳求他不要杀死怪物。（杀死怪物还是接受少女的请求？）

9．他杀死了怪物，但是怪物的一滴血飞溅到少女身上，结果少女也变成了一只怪物，并且对他感到愤怒。（向她道歉还是杀死她？）

10．于是，他把少女变成的怪物也杀死了。

这样的故事不免显得干巴巴的，不是吗？即使我们在其中运用华丽的辞藻和丰富的修饰手法，整个故事也还是不够充实。为什么呢？真正的故事包含广泛的决策，虽然只有个别几个决策具有重大的戏剧性影响，但是大量微小的决策却能够刻画人物性格，比如故事人物的说话方式、行事时的敏捷性或焦躁程度等。真正的故事包含成千上万这样的小决策，而要通过分支树来实现所有这些精微决策是不现实的，因为实现分支树的工作量太大，而用户得到的却又太少。

要点20

分支树的几何增长特点导致工作量超出了可接受的程度。

8.1 整体游戏结构

分支树结构在游戏当中颇为常见，玩家可以在整个游戏过程中陆续选择分支以推进游戏进程。这类游戏的设计师们往往以游戏具有多种结局为豪，比如宣称游戏的结局多达8个。这听起来似乎还蛮不错的，但是如果在回顾一下图8.1就会发现，实现8种结局只需要3个层级的分支树；如果再增加一级决策分支的话，那么结局一下子就变成了 16 个。关键问题还不在于此，而是须要想一想：游戏的品质是用什么来衡量的呢？是结局的数目，还是玩家选择的数目呢？对此存疑的读者不妨回顾一下第2章的内容，特别是Crawford软件设计第一定律。

8.1.1 对话树结构

更常见的情况是，游戏设计师会在玩家与单个游戏角色的交互当中应用分支树。这种特定情形的分支树也被称作对话树（dialogue trees）。在充斥着各种俗套元素的游戏中，玩家走进一家模式化的欧洲中世纪客店，一帮面目可憎的模式化的顾客正坐在模式化的木桌前，等着模式化的店老板端上模式化的啤酒。玩家的目的是获取关于一批模式化的宝藏信息，因此需要询问店老板。然而，玩家不能直截了当地询问，而是必须说出特定的话才能从店老板那里“套出”所需的信息。那么，怎么知道说什么话才对呢？玩家不可能事先知道，因为这是第一次遇见这位店老板，不可能知道说什么话会对店老板产生何种影响。图8.2展示了由此建立的对话树。

为了让店老板说出所需的宝藏信息，玩家必须先要一杯啤酒，然后必须客套地问店老板生意怎么样，接着必须赞许或者宽慰店老板，最后才能问起宝藏的事情并且得到有用的回答。当然，玩家事先是不知道这些的，所以只能在对话树结构当中游走，通过反复的试错最终得到结果。这样的过程有趣吗？

对话树为玩家提供了谜题，对某些玩家来说的确具有一定的娱乐性，但是这样的过程绝对不能算是互动叙事。如图8.2 所示，玩家并没有与店老板这个游戏角色进行任何具有重大戏剧性意义的交互——玩家只是像摆弄自动售货机一样，尝试着弄明白需要按下哪些按钮才能买到想要的东西。

图8.2 典型的对话树结构

图8.3 简单的迷宫结构

树结构其实可以看做是描述迷宫结构的一种形式；也可以反过来说，迷宫结构只是树结构的一种描述形式。图8.3展示了一个极为简单的迷宫结构，图8.4展示了遍历迷宫的分析流程。

图8.4是否看起来很眼熟呢（与图8.2的结构完全相同）？

图8.4 走迷宫的树状图

8.1.2 折返技巧

面对分支树规模的几何增长困境，一些聪明人想到一种解决办法，即让一些分支折回到与其他一些分支相同的路线上，实现分支的合并。在前述山洞和巨龙的例子当中，我们可以这样改造山洞里两条岔路的分支设计：如果玩家选择走传来水声的那条路，那么随后就会遇到一些阻碍，导致玩家被赶回到岔口处或者误入巨龙的栖息处。笔者把这样的做法成为“折返（foldback）”，因为它只是把多个分支故事线折回到预先设定的几个路线上而已。图8.5展示了分支折返的例子。

图8.5 带有折返的6级分支树

在图8.5 的例子当中，分支 D和 E折返到了分支 F。也就是说，选择路线无论是 A-B-D 还是A-C-E，都会达到分支 F。不难看出，折返手法的作用就是减少设计师的工作量，同时让玩家觉得选择丰富。

虽然折返能为玩家提供较多选择，并且不增加创作者的负担，但是这一效果乃是通过制造假象来达成的。不妨再仔细考察前面的洞穴与巨龙的例子：“走传来水声的岔路还是走飘来烟气的岔路”，这样的决策毫无意义，因为无论选择哪一条路都会得到相同的结果。话句话说，折返的做法只是为玩家制造了“有所选择”的假象。这种交互是欺骗性的，一旦玩家发现了这个“骗局”（多玩几次迟早会发现），自然会有被欺骗的感觉。

不断有人对折返系统进行探索，寻求折返与分支树的恰当搭配，以期实现互动叙事。然而这是死路一条。折返必然会让决策本身失去意义。只要在设计当中加入一次折返，整个设计就会变得有一点欺骗性；加入的折返越多，产生的毫无意义的路线也就越多，设计的欺骗性成分也就越多。

8.2 解决方案：状态变量

折返只在一种情况下凑效：不同的路线选择导致内部变量发生变化的情况。沿用前面的洞穴例子，假设玩家选择走传来水声的岔路，然后找到了催眠药水，那么玩家就能借此让巨龙沉睡，从而拿到钥匙且免遭杀身之祸。如此一来，玩家可以选择有水声的岔路，取得催眠药水，然后回到岔路口，再走入另一条岔路，用药水让巨龙沉睡，如此等等。这种改变基本形势的折返所达到的效果与前述的折返大不相同：改变故事的内部状态能让玩家的决策变得有意义。

我们不妨再通过1980年的经典电子游戏《吃豆人》[1] 来进一步阐释实现状态变化的折返策略。

如图8.6 所示，玩家控制的“吃豆人”走到了一个路口，现在必须做出决定是往上走、往下走，还是向右返回。从设计结构的角度来看，这种决策与玩家在故事世界当中遇到的决策是相同的。在本例的形势下，似乎往下走是最好的选择，因为往上走可能会遇到对吃豆人有威胁的幽灵，而往右返回又无法吃到过关需要的豆子。

再来考察如图8.7所示的情形。

图8.6 Pac-Man（吃豆人）游戏刚开始不久的游戏状态

图8.7 Pac-Man（吃豆人）游戏后续的游戏状态

图8.8 Pac-Man（吃豆人）游戏的有向图

图8.7中，吃豆人的位置与图8.6 中的相同，同样面临往上走、往下走，还是往右返回3种选择。然而此时的形势与图8.6 的相比有所不同：由于有幽灵在下方，因此现在往上走可能是最好的选择。不难设想，我们有可能构建起一种“选择网络”，使得玩家可能多次面对同样的选择，而每一次的意义（形势）却不尽相同。图8.8展示了吃豆人游戏的选择网络结构图。

计算机科学家把如图8.8 所示的这种网络结构称为有向图，其中的结点是由带有方向的箭头线连接起来的。

如果不考虑中途回头和遇到障碍回退的情况，那么吃豆人游戏为玩家提供的选择恰好是 23个，其中 19 个提供双向选择，4 个十字路口提供三向选择——仅此而已。吃豆人游戏的设计者不用创造成千上万个分支选择，只用 23 个。让这 23 个选择发生多种变化的是每次选择的上下文形势，这种上下文也是可以量化的。游戏中一共有4个魔力豆和270个需要吃掉的豆子，每一个都有两种状态（没被吃掉或者已被吃掉），因此只需要一个比特（bit）的信息量来存储。由此，所有豆子一共是274比特信息量。4只幽灵和吃豆人一共5位角色，每位角色的位置信息可以用9个比特来存储，因此它们一共需要 45 比特信息量。上述所有信息加起来一共是 319 比特的信息量，即吃豆人游戏的数据上下文（data context）。虽然这听起来似乎并不多，但这 319 比特的信息可以衍生1096 种不同的状态——这可不是个小数目。吃豆人游戏的设计者创造了一个分支选择非常少的系统，却通过319比特的上下文状态信息把简单的迷宫变成了可玩性颇高的复杂系统。

互动叙事固然不是能用简单的迷宫结构以及上下左右选择来描述的系统，也不可能应用吃豆人游戏采用的基本系统。然而，吃豆人游戏的例子指明了探索的方向。我们不可能要求玩家反复对同一个选择分支做出上百次决策，但是我们可以让玩家面对好几次类似的选择。设想在浪漫故事世界里，亲吻也许是其中的重要举动。那么，让玩家遇到几次发生亲吻的情形也就顺理成章：第一次也许是位笨拙的痴心男人亲吻了女主人公，第二次则可以是位擅于调情的花花公子亲吻了她，第三次又可以是那位后来被发现其实很有人情味儿的痴心男亲吻了她——虽然亲吻的情形是一样的，但是上下文情境却各不相同。

总体来说，分支树无法有效地实现互动叙事，折返的运用也无济于事。但是如果我们想办法把分支树系统转化为有向图体系，并且建立差异化的上下文情境，那么就能让玩家在实现戏剧性发展的网络结构当中游走，在不同的上下文情境当中反复遭遇同一个选择点。

8.3 本章小结

有一则古老的传说[2] ，讲的是一位印度数学家发明了象棋并且呈给了国王。国王非常高兴，让这位数学家说出他想要的任何奖赏。数学家谦逊地回答说只想要一点稻米：棋盘的第一格放1粒米，第二格放2粒，第三格放4粒，第四格放8粒，以此类推，一直放到棋盘的第六十四格。国王觉得这个要求太微不足道了，就又问数学家想不想要黄金、珠宝或者土地之类的奖赏。数学家回答说不用，只要稻米即可。于是国王让手下拿来稻米开始清点。很快，手下的侍者就来向国王报告说，数到第27 格就已经用掉了 3 吨米。数学家要求的稻米数量竟然远远超过了整个国家的全部产量，国王这才大惊失色。

这个故事讲的正是几何增长的问题：人们对几何增长的速度认识不足。呈几何增长的分支树会很快产生数量极其庞大的分支结点。

从表面上看起来，要建立互动故事世界，显而易见的办法就是采用分支树——因此所有人都做过这样的尝试。笔者建议各位不妨都试一试分支树，因为只有这样才能深刻理解无法采用它的原因。用分支树作一首淡雅的小诗也许还是可以的——祝各位好运[3] ！

第9章 互动小说

互动小说与电子游戏似乎是两个平行发展的形式。两者的差异如此之大，以至于前者是完全独立于后者自行演化发展的。电子游戏玩家几乎从来不“玩”互动小说，而反之亦然。互动小说自诞生以来，一直是在完全独立的发展道路上逐渐走向成熟的。

9.1 文字冒险游戏

互动小说始自 1976 年推出的游戏《Adventure》[4] 。这款游戏通过传统的计算机终端[5] 进行游戏，而且没有图像效果，是全文字的游戏。玩家通过终端输入文字指令，游戏显示相应的回应文字在屏幕上。这种基本的交互模式在互动小说中一直延续至今。

在这款游戏中，玩家须要在洞穴迷宫当中探索，通过细碎的线索解决各种难题。游戏经过精心设计，玩家只有以特定的顺序进行特定的操作，才能深入洞穴深处并获胜。

1979 年推出的《Zork》[6] 进一步发展了这种游戏形式。与此同时，个人电脑也刚刚开始兴起，所以诸多同类游戏也逐渐被移植到了个人电脑平台。这些游戏都是基于《Adventure》的纯文字形式而设计的，因此也被统称为文字冒险（text adventures）游戏。在20 世纪80 年代，文字冒险游戏实现了在技术和内容上的长足发展。

文字冒险最大的问题在于对玩家输入的文字的解析。尽管游戏对玩家文字输入的回应都看起来相当智能化，但是其采用的语汇却非常有限——如果玩家输入了所用语汇字典当中没有的字词，那么游戏只能回应“I don't understand that word（我不理解这个用词）”；这种情况的发生极为频繁，以至于让有些玩家感到气馁。由于游戏采用的字典对于玩家来说是不可见的，因此玩家只能猜测应该输入什么词才能继续游戏。倘若游戏对诸多同义词的处理不够妥当，那么真的是相当恼人。笔者记得一款游戏中提到“rock（石块）”，于是就输入“Pick up rock（捡起石块）”的指令，结果游戏的回应竟然是“I see no rock here（这里没看见有石块）”。经过多次尝试之后，我才发现应该输入“Pick up stone（捡起石头）”——我对这款游戏作者的积怨至今尚存。

9.2 图像冒险游戏

到了 20 世纪 80 年代晚期，图像冒险游戏（graphic adventures）逐渐取代了文字冒险游戏。图像冒险游戏在结构上与文字冒险游戏几乎相同，只是用图像替代了部分文字而已。在图像冒险游戏中，玩家无须输入诸如“Go west（往西走）”这样的文字指令，而只须控制屏幕上的玩家角色往左移动即可；玩家也无须阅读用来描述地点和事物的大量文字，转而直接看到配有简单文字描述的低分辨率图片。图像冒险被认为优于文字冒险，于是后者也就逐渐退出了历史舞台。

谜题在图像冒险游戏当中以视觉化的方式来表现；玩家不再反复阅读文字描述，而是仔细检视图片，以期发现可能的玄机。一旦玩家找到可疑的位置，就可以通过游戏中的“examine（查看/检视）”操作来进一步查看可疑的图片区域；如果猜测正确的话，那么该区域就会暴露出隐藏的钥匙、魔力药水或者其他重要物品。

早期的图像冒险游戏受到当时计算机显示屏的低分辨率的制约。到了20世纪90年代初期，个人电脑的图像表现能力才有了大幅提升。1993 年的冒险游戏《神秘岛》[7] 号称采用了 Silicon Graphics 工作站生成的效果逼真的图片，一经推出就广受欢迎。《神秘岛》拥有巨大而且复杂的游戏世界，故事也是难得的精彩。尽管如此，这款游戏仍然只能算是充满了大量精彩的谜题，虽然一时间成为了史上最成功的游戏作品，但是当追捧图像效果的热潮消退之后，人们也就又转而追随新的潮流了。

9.3 互动小说（Interactive Fiction，IF）：文字冒险的继承者

一直以来，文字冒险其实也并没有完全退出历史舞台。在它受到冷落的几年之后，两个新的发展改变了它的命运。第一个新发展是易用的文字冒险游戏开发环境的出现。这样的开发环境其实存在已久，笔者记得早在1979年就用过一款针对Atari家用电脑的开发环境软件。新一代的开发环境功能更强大，而且更加容易使用，由此鼓励了不少作者试水文字冒险。更重要的第二个新发展是一批新兴作者对文字冒险类型的涉猎。这些作者身处文学领域，把文字冒险看作是亟待发展的新的文学形式，于是进行了积极的探索。他们希望探索文字冒险游戏的叙事潜力，因此也给他们的探索成果取了个新名字“互动小说（interactive fiction，简称 IF）”。这个新的爱好者群体逐渐推动了互动小说的发展和成熟，使其迅速成为一种活跃（但小众）的流派。

值得一提的是，在以计算机为媒介的艺术表达形式当中，IF 是第一个，到目前为止也是唯一一个由艺术人文群体（而不是技术人士）主导的领域。如果把 IF 的艺术发展与电子游戏的发展进行比较，我们可以总结出许多宝贵经验。当然，电子游戏是个大生意，其驱动力还是满足玩家需求。

电子游戏的这一商业特质加剧了游戏品质的恶化。相比之下，IF 从未取得过商业成功，一直是由业余爱好者驱动的。这些爱好者为的不是经济利益，只是因为真心热爱IF。

IF 作者群体的特性和 IF 在商业领域的缺失使得围绕 IF 展开的探讨具有学术气氛。关于 IF 的论著往往比电子游戏的相关论著更加高深。假如遥远未来的有钱人为了要炫耀自己的品位而出高价购买互动艺术作品，那么恐怕他们会选择IF，而不是电子游戏。

我们没法像读书那样来阅读IF，只能在计算机上进行“游戏”。不但读取IF的软件都提供免费下载，甚至大部分IF产品都是免费的。

9.4 谜题

文字冒险的核心是谜题。早期的文字冒险当中的谜题都不太难，但随着这一类型的不断发展，其中的谜题变得难解。其中最疯狂的例子来自 1984 年由 Infocom 公司推出的文字冒险游戏《银河系漫游指南》，这款游戏当中有一个“babel fish”[8] 谜题，为了得到这个叫做“babel fish”的东西，玩家必须在特定的地点以特定的顺序完成下列操作：

1．脱下外衣。

2．把外衣挂在衣钩上。

3．拿毛巾。

4．把毛巾铺在排水口上。

5．等Ford睡着。

6．拿走Ford的小包。

7．把小包放到面板上。

8．把垃圾邮件放到小包上。

9．按下按钮。

尽管这个谜题被普遍认为是怪得离谱了，但是它代表了当时的文字冒险玩家面对的主要挑战，即解法千奇百怪的谜题。这种以怪取巧的谜题设计思路最终还是被抛弃了，如今的文字冒险谜题都要求具有合理的解法，而且一般都能通过仔细解读文字描述而得到相关线索。

9.5 真实案例

下面我们来看一个真实的文字冒险的例子：由Jon Ingold 与2009年创作的《Make It Good》。下面列出游戏回显的所有文本（未经编辑）；以大于号“>”开头的文本是玩家的输入。我们不难看出，其中的文字叙述比一般电子游戏当中的要更有文采，具有更多文学作品的品质。

Broken Top Boulevard, Outside No. 15 (in the black chevy)

The boulevard through the windscreen is lined with ash trees, thick trunks casting shadows and gnarled roots mangling up the sidewalk. You're sitting in your car, parked too high up the kerb; just outside the gate to No. 15. Just an ordinary house. With a body inside.

"Homicide. One Jack Draginam, accountant. Married, no kids. Stabbed. Yadda yadda, blah blah. We got the call from the maid-geez, who has a maid? Apparently she wanted to stress there's a lot of blood.”

"Oh, Inspector. Word is, if you don't crack this one, you're out of a job."

The glove compartment is closed. Sat on the passenger seat is a whiskey bottle.

>open glove compartment

(unlocking it first-with the car key)

You pull open the compartment, and it catches after only opening a tiny crack. Stupid thing.

>go inside

(opening the black chevy first)

You open the car door.

You clamber out of the driving seat.

Broken Top Boulevard, Outside No. 15

The boulevard is lined with ash trees, thick trunks casting shadows and gnarled roots mangling up the sidewalk. Your car is parked too high up the kerb; just outside the gate to No. 15. Just an ordinary house. With a body inside.

There'd better be some faces too: you need the slam. What did the peep at the station say? Inspector, the only case you cracked open last year was the Michaelmas liquor. He has a point. If you come up blank (or facedown in a gutter) you'll be off the payroll. And then you'd really have a problem.

Down the street there's a dog, running about.

(opening the front gate first)

The gate swings creakily.

You step into the porch.

Front Porch.

A tasteful little porch; white painted wood strapped onto red-brick

building. The front door is north, and through a small diamond of frosted.

glass you can make out nothing of the wood-panelled hallway inside. Your neck is sweating; sunlight hides behind the trees to the south.

A hanging basket with a couple of petunias in is attached just to the left of thedoor.

>go inside

You knock a smart rap on the door. After a short wait the door opens, Angela's face appears, then the rest of her. She looks just like she should considering, no time to do her face.

"Yes? What do you want?" she says uncertainly.

"Can I help you? "

>show badge

(to Angela Draginam)

"Oh, Inspector! I'm sorry.. do come in, I'm glad you came so quickly." You follow her into the house. It has a smell you recognise, all right.

现今的互动小说明显优于过去的文字冒险，词语解析的问题几乎被消除了。在过去的文字冒险游戏当中，玩家往往会通过反复试错找出可以被接受的用词；而现在，IF 软件一般都直接提供了字典供玩家参考。

不仅如此，IF 软件还能处理同义词，玩家可以选用多个同义词。同时，IF 软件还能把代表一个任务或目标的指令输入自动解析成多个步骤。在前述的实例文本当中，玩家输入了“go inside （进入）”指令，IF 软件就将其解析为一系列动作：open car door（打开车门）、open gate（打开门），以及enter porch（进入走廊）。我们完全有理由相信，IF软件在智能处理方面还会不断得到发展，进而能够越来越好地理解玩家的指令输入。

尽管如此，输入指令的语法还是相当死板，玩家必须以特定的标准形式进行输入。虽然 IF 软件能识别多种简单的变体，但是总体来说，IF 软件（乃至所有自然语言处理软件）提供的语法自由度比真人说话时的语法自由度还是小太多。

如今，IF 不再像以前那样，用诡异的谜题来挑战玩家，而是提供合乎情理的谜题，让玩家能够通过解读文字描述来解谜。很多时候，IF谜题还需要玩家具备深入的人性洞察才能解开。

9.6 互动小说机理剖析

所谓“开发环境”，就是让作者制作软件的程序。程序员使用的开发环境一般都功能强大。我们固然也可以把文字处理软件称为“文档开发环境”，不过这听起来就有些言过其实了，因为“开发环境”这个术语通常特指用来制作软件的程序。IF 是交互式的，自然需要在开发环境里通过编程来实现。要了解一种技术的能力大小，最简单的办法就是去了解其开发环境。只要我们看一看艺术家创作时使用的工具，就能对作品的发掘潜力获得比较清楚的认识。

9.6.1 Inform 7

最流行的IF 开发环境是Inform 7。它始于1993 年，是一款功能强大的复杂软件。在Inform 7里编写的程序读起来与普通英语差不多。

"Feline Behavior"

The Kitchen is a room. The cat is an animal in the Kitchen. In the Kitchen is a bowl,a ball of wool, a newspaper. The bowl contains a quantity of cream.

The cat is wearing a silver collar. The description of the cat is "It is wearing [alist of things worn by the cat]."

The player carries a closed openable container called a bag. The bag contains catnip.

The cat behavior rules is a rulebook producing an object.

A cat behavior rule when the cat can touch the catnip:

say "The cat frolics with the catnip until nothing remains of it.";

rule succeeds with result catnip.

A cat behavior rule when the cat can touch the cream:

say "The cat laps up the cream.";

rule succeeds with result cream.

A cat behavior rule when the cat can touch the ball of wool:

say "The cat makes the ball of wool into a useless tangle which must bediscarded.";

rule succeeds with result ball.

A cat behavior rule when the cat can touch the newspaper:

say "The cat bats playfully at the newspaper until all the nasty boring articles are destroyed.";

rule succeeds with result newspaper.

A cat behavior rule:

say "The cat looks miffed at the lack of ready entertainment, and glares at you with yellow eyes as though wondering whether your pants leg is good for claw-sharpening.";

rule fails.

Every turn:

let the destroyed object be the object produced by the cat behaviour rules;

if the destroyed object is not nothing:

remove the destroyed object from play;

say "[line break]Good thing you have no use for [the destroyed object]

yourself.[paragraph break]".

Test me with "z/z/open bag/z/z".

这个小程序创建了一幅完整的场景：一间厨房、一只猫、玩家，以及几个可供猫玩耍的物品。这只猫会玩弄这几个物品，直到所有物品都被弃置，然后猫会对玩家投去淘气的目光，游戏就此结束。

当然，这个小例子无法体现Inform 7 的强大功能，只是用来说明它采用的语言非常易懂。与所有其他编程语言一样，这种语言编写起来也并不容易，因为用词并不是随意的。Inform 7 的语言使用一组明确定义的关键字，每个关键字实现特定的功能。IF 作者必须记住所有关键字，并且学会熟练运用它们进行创作。这当然也算不上什么特别的难度，毕竟所有开发环境都是如法炮制的。Inform 7 是笔者见过的最简单易用的开发环境。

9.6.2 Inform 7的表达能力

与其他所有开发环境一样，Inform 7 对完成特定的任务进行了优化处理。Inform 7 也可以用来实现其他未进行针对性优化的任务，只不过实现起来自然就麻烦一些。Inform 7 对下列任务进行了优化。

1．空间

作者可以创建任意数量的舞台（在 Inform 7 中称为“rooms（房间）”），舞台之间可以任意相连。舞台之间的切换通常是即时的，但是也可以人为地进行延迟。舞台被组织在一张地图上，方便作者进行编辑。玩家可以通过“Go X”（其中 X 指代某一方向）指令进行舞台切换，还可以用“Go to Y”（其中Y 指代某一舞台）指令实现同样的操作。在可能的情况下，Inform 7 还能自动带玩家穿过必要的舞台，以便达到目的地。

2．时间

IF游戏是回合制的，玩家每个回合可以输入一条指令，作者可以设计指定回合数的延迟。

3．输入

所有指令都是通过键盘输入的，形式类似英语。作者可以定义任意多个词汇供玩家使用，每个词汇都对应特定的意义。Inform 7 能自动辨识特定词汇的基本属性，比如“room”会被自动视为可以包含玩家角色和各种物件的地点。玩家有时候必须猜测应该使用什么词汇，如果系统无法识别玩家输入的词汇，就会给出错误信息。

4．输出

回显给玩家的输出同样是文字信息。Inform 7 号称能够根据作者的想法让文字描述变得生动自然，会自动修订文本，安插相应的代词，以使其与上下文搭配。Inform 7 的文本处理是其最出众的能力之一。

5．道具

作者可以创建任意多的道具，并且将其安置在房间（舞台）里，还能指定其归属。道具的内建属性颇丰，可大可小、可轻可重，可以嵌套（在道具里放入其他道具）。作者可以对道具赋予自定义的特殊属性，用于控制游戏的运作。Inform 7 的道具控制也是其另一个出众的能力。

6．行为

作者几乎可以为任何道具或者房间定制响应行为。这些行为可以由作者设立的任何条件触发：之前的特定活动、特定道具是否存在，以及数字变量的当前值都可以作为条件来触发响应行为。

9.6.3 优缺点分析

计算机科学家曾经证明过这样一个问题：任何能够付诸编程实现的操作（operations）都可以在电子表格程序中实现。换句话说，作为一种计算环境的电子表格能够处理任何可编程的问题。当然，没有人会因此就转而使用电子表格来解决所有编程问题。

虽然一项计算任务也许在理论上完全可以用电子表格来实现和执行，但是如果这样做非常繁琐的话，那么也就不太实际了。假设我们给电子表格程序安装一个“读取二维数组绘制像素图形”的插件，用单元格来代表像素，然后编写公式来控制每个单元格如何显示，那么我们也就能够通过电子表格来绘制任何图形了！

开发环境也具有相同的特点。任何计算机程序都可以用汇编语言来编写，因为汇编语言是针对CPU 设计的底层语言。然而，采用汇编语言编写程序是非常繁杂和困难的，因此绝大部分程序都是采用高级语言来编写的。不到万不得已的情况，没有人会主动选用汇编语言。

无论是编程语言还是开发环境，所有编程工具的设计目标之一都是减轻解决特定类型的问题所需的工作量。古老的 FORTRAN 语言是针对科学计算而优化设计的，BASIC、Pascal 和 Pilot 等语言都特别适合用于教授编程概念。如今， C#是 Windows 平台上桌面程序开发的首选语言，而JavaScript或PHP则主要用于开发Web程序。

有优点则必有缺点：针对特定问题优化过的程序在处理其他问题方面必然就会相对差一些。Inform 7 自然也是如此。

Inform 7 有其强项：自然语言格式、强大的文本处理能力、道具相关的任务自动化处理能力等。现在来谈谈它的不足。

1．数值计算

以笔者的拙见，Inform 7 的一大弱点是数值计算能力不足。虽然它可以处理加减乘除这4 种基本操作，还可以进行平方根计算，但是它对计算公式的支持则相当粗糙，而且对数值变量的管理也相当困难。另外一款名为TADS 的IF 开发环境在数学计算方面就比Inform 7 强多了。

2．过度依赖布尔计算

与对数值计算支持不足密切相关的另一个弱点是对布尔计算的过度依赖。诸如道具是否被损坏、孰轻孰重、可见还是不可见之类的状态的确可以用布尔值来实现，然而用它来表达人际关系就多少有点相形见绌了。珍妮对约翰是否非爱即恨？弗莱德是否要么友好要么冷漠？汤姆是否不是英雄就是狗熊？人际关系从来都不是黑白分明的，而是具有连续的程度差异。Inform 7 所推崇的布尔值系统迫使作者不得不把所有事情都分出黑白来。

诚然，Inform 7 是针对作者而不是科学家设计的，我们当然不应该期望它具备强大的科学计算能力。尽管如此，对计算能力的过度简化仍然是一个弱点。

3．结构缺失

对高级编程架构的支持不足是 Inform 7 的第二大弱点。现代编程语言的设计体现了历代程序员在编写大型程序时获得的经验教训，这些现代语言为结构化提供了良好的支持，使得编写大型程序变得相对更容易，而不至于让程序员迷失在复杂的程序指令当中。尽管 Inform 7 提供了相当优雅的结构化系统，但是要想创建足够大的故事世界以使其具备最基本的吸引力，做起来仍然是相当令人头痛的。

以一款名为 Alabaster[9] 的优秀互动小说为例，其源代码由 12 个条目组成，到了第二级至少有60 个条目，在第三级还有更多条目。每个条目下的指令代码占用大概一页的篇幅，所以总共大约有 2000 行指令代码——以计算机编程的行业标准来看，也算是中等规模的程序了。阅读这些代码如同探索迷宫一样困难，其中充斥着各种对其他位置的引用。查找这些引用并非易事，整个程序梳理起来可谓是一团乱麻。

9.7 互动小说算是互动叙事吗

从互动叙事的角度来看，2008 年推出的 Blue Lacuna[10] 可能是迄今为止（截至 2012 年）最优秀的互动小说了。在其中，玩家游走于一座小岛，而岛上仅有的另外一个人还是个疯子。该作品的作者对玩家遭遇的故事上下文进行了巧妙的限定，使得玩家可以与疯子的角色发生逼真的情感交流。

由于人物角色被设定为疯子，因此他的言行并不必要完全合乎情理。然而除了具有相当丰富的情感状态之外，这个角色对玩家做出的情感反应仍然是具有一致性的。为了实现如此出色的戏剧效果，恐怕作者是下足了功夫，把Inform 7 开发环境的功能发挥到了极致。

虽然互动小说（IF）已经成为一种严肃的文学形式，但是在笔者看来，它还不能算是互动叙事，因为它对“玩家做什么”这一根本问题的回答仍然是“解决谜题”。现今的谜题比以往更具知识性也更有意义，有时候还能对叙事予以辅助性的推进。然而，玩家的主要互动对象还是谜题，而不是人物角色。

互动小说最大的局限性就在于其薄弱的人际交互。玩家无法与故事中的角色进行开放式的对话，对话只能循着由对话树（参见第8章“分支树”）限定的结构展开。分支决策的根据趋于简单化，几乎不会考虑角色的情感状态或者角色与玩家的关系状况（前面提到的IF 佳作Blue Lacuna 在处理情感关系方面也许算是个例外，然而其实现依赖于人物角色是疯子——即言行举止不一定完全合乎情理——这一设定）。在互动小说中建立少许人际互动是可能的，但是实现起来异常繁杂和艰难，使得深入的人际互动极为少见。

另一部颇受好评的作品 Make It Good[11] 可以很好地说明互动小说在处理人际关系上的局限性。在这部作品中，玩家扮演调查一起凶杀案的侦探，最终侦探发现嫌疑最大的是他的恋人，但是侦探并没有证据，需要当事人自己供认才有希望破案。为了让嫌疑人招供，侦探伪造了看似不可辩驳的证据，迫使他的恋人最终感情崩溃，供认了罪行。表面上看来，这的确是颇具戏剧性的情节。然而，这个戏剧性效果的实现依赖于巧妙的设计，即侦探须要伪造证据。伪造证据是个机械化的过程：玩家需要在犯罪现场伪造指纹，然后将凶器栽赃于嫌疑人，等等。玩家通过对物件（things）的操纵，间接地操纵了角色的信念（beliefs），进而触发角色做出情感反应。玩家始终没有与人物角色实现直接的情感交流。笔者非常赞赏这种间接体现戏剧性的巧妙设计，但是这种手法的特殊性恰恰也暴露了互动小说在真正的互动叙事能力方面的缺失。

9.8 互动小说的未来

作为一种表达媒体，互动小说必然会持续发展下去。我们会看到它在语言处理方面获得进展，从而支持更复杂的表达；还会看到人工智能的发展提高组合式表达的复杂度——比如“清理房间”的指令也许就可以被理解为擦除血迹、扔掉沾血的抹布、把物品重归原位、把地毯梳理平整等一些列组合动作。

上述这样的进步仍然无法让互动小说获得互动叙事的能力。要想实现真正的互动叙事，互动小说还需要在三方面有所进步：其一，复杂计算，特别是数值计算的能力有待提高；其二，需要建立标准化的性格模型体系（第14章会详述）；其三，迫切需要开发环境对指令代码实现高度的结构化管理——创建故事世界的复杂度对于既有开发环境来说是难以管理的。

当然，上述进展完全有可能发生，毕竟 IF 作者的人数足够多，经验足够丰富，他们完全有能力为此付诸努力。问题在于：这些IF社区的领头人物是否愿意推进这样的发展呢？

9.9 本章小结

互动小说一直被认为是通向互动叙事的可能的方向。然而，历经 30 多年的发展演化，成千上万人的探索，它还是没能产出可以被笔者称为互动叙事的成果。互动小说有自身的优势：我们可以在其中创作有趣的谜题，还可以将其精化为一种文学形式。然而归根结底，它仍然只是以房间（舞台）、道具，以及对它们的操作为代表。尽管互动小说可以在字里行间倾注感情，但是从交互性的方面来看，它只是徒有其表、没有灵魂的空壳。

第10章 角色扮演游戏

角色扮演游戏（RPG，role-playing games）的出现早于计算机。第一款 RPG是 1974 年的桌面游戏[12] 《龙与地下城》[13] 。在游戏中，一群玩家在“Dungeon Master（地下城主）”的主持下，组队探索地下城。所谓的“Dungeon Master（地下城主）”是一名负责主持游戏的参与者，笔者将这种角色称为“Fate （命运）”（详见第15章）。游戏中包含大量规则，这些规则定义了向玩家做出回应所需的计算处理。DM 在解释规则方面具有相当大的自由度。随着 RPG 游戏的不断发展， DM 逐渐获得了越来越大的操控权，甚至可以定制地下城世界和扩展既有规则。RPG游戏非常流行，风格各异的作品层出不穷。

RPG 游戏对 DM 具有依赖性。优秀的 DM 能够提供激动人心的精彩游戏体验，而糟糕的DM则可能会完全破坏整个体验。于是用软件实现DM的功能（从而让 RPG 进入数字化媒体）就变得颇具吸引力。笔者知道的最早的 DM 软件是于 1975 年在 PLATO 计算系系统[14] 上实现的。之后 Don Daglow 又在 PDP-10 计算机上实现了另一个 DM 版本。个人电脑的兴起使得 RPG 游戏软件实现了爆发性增长。如今，无论是在电脑上还是在传统的桌面上，RPG 游戏都是最流行的游戏类型之一。

有些人认为RPG游戏也许能为互动叙事提供发展平台，而且许多RPG游戏也确实将叙事元素纳入了游戏过程。然而到目前为止，我们还没有看到任何由 RPG 发展而来的互动叙事。这是为什么呢？

10.1 动词

一如往常，我们的分析要从 Crawford 软件设计第一定律开始：“始终考虑用户做什么，用户行为涉及的动词是什么”。把RPG游戏当中的动词按照使用频率排序，可以总结如下。

• 在3D环境中游走。

• 打怪物。

• 捡到有用的道具。

• 从非玩家游戏角色（NPC）[15] 获得有用信息。

仅此而已。

不妨回顾一下自己知道的精彩故事，然后考察一下上述动作所涉及的戏剧性内容：优秀故事当中的主人公是否会经常“在 3D 环境中游走”、“打怪物”、“捡道具”、“从其他角色那里获得有用信息”呢？主人公做的这些事情对于故事而言有多大的重要性呢？精彩的好故事里的确偶有这些动作元素，但是这些动作本身从来都不具有重要的意义。

荷马史诗中的希腊英雄奥德修斯游走于地中海地区，他的旅程是一个接一个的冒险事件串联起来的：他先来到了独眼巨人（Cyclops）的领地，展开了一段冒险；随后他又走到食莲族（Lotus-Eaters）的地盘展开冒险；冒险如此不断延续。冒险事件之间的实际行程就像句子里的分号一样，并没有重大的戏剧性意义。

奥德修斯的确也与许多怪物战斗过：比如独眼巨人（Cyclops）、斯库拉（Scylla）和卡律布狄斯（Charybdis）。然而，他并不真的是以这些怪物为敌，而只是想办法避开它们的阻挠而已。说到底，这些怪物只是故事中的次要成分。在故事结尾他大战了一场[16] ，也几乎是单方面的屠杀行为而已。

奥德修斯当然也没有花时间去捡拾什么有用的道具。他的确从埃俄罗斯（Aeolus）那里得到了一满袋风[17] ，但那只是借以展开另一段冒险的伏笔。在“从其他角色那里获得有用信息”方面，奥德修斯与其他故事人物的互动也比简单的问答要复杂得多。

由此，笔者的结论是：玩家在 RPG 游戏里的行为与角色在故事中的行为并没有太多相似性——涉及到的动词对不上。

难道不能把 RPG 加以扩展，为玩家设计具有戏剧性意义的活动吗？RPG 游戏对此并没有限制呀。

自 20 世纪 80 年代以来，一些 RPG 游戏的设计师们一直对此寄予希望，做过诸多探索，但是RPG作为一种游戏类型整体上拒斥了所有的尝试。

10.2 RPG缺乏创新的余地

如今 RPG 已经是自成体系的游戏类型，玩家对它具有特定的期望，因此任何不同于既有期望的新探索都会遭到拒斥；脱离主流太远的探索性作品无不以商业失败而告终。倘若 RPG 还处于发展初期，人们对它的愿景较为宽泛，那么它也许还有可能进一步纳入叙事性的内容。RPG 目前面临的创新困境可以用图10.1的图示来描绘。

图10.1 RPG游戏的设计空间

图10.1中的每个图框代表着设计空间，即游戏设计的可能性空间。在 RPG 游戏类型发展早期，没有人知道所谓 RPG 游戏到底可以是什么样的，因此探索者做了许多迥异的试验性探索，其中大部分探索都差强人意。随着时间的推移，大家逐渐把精力集中在了效果更好的做法上面，由此形成了基本的设计元素。如今，RPG 的设计已经类型化，大部分游戏都遵循既定的基本设计思路来制作。

从设计师们对其游戏的描述当中不难看出 RPG 的类型化现象。笔者考察了 Kickstarter 网站上的RPG游戏项目（参见：http://rpgkickstarters.tumblr.com），援引其中的描述如下。

……在线策略RPG，实时策略与roguelike[18] 混搭。

……采用独特的RPG系统，以卡牌而非骰子作为核心机制。

……故事性RPG，你和其他玩家共同打造HP Lovecraft[19] 风格的惊悚故事。

……恐怖角色扮演游戏。

……以桌面游戏为灵感的角色扮演。

……发生在现代的劫后余生僵尸RPG。

……包含27关的超大地宫，剧情超过50万字！

……源自日本的幻想RPG，动作成分大、戏剧性强！

……基于北欧神话“诸神的黄昏”时代的RPG！

……充满戏剧性的史诗魔幻RPG！

……极具魅力的幻想角色扮演游戏，奇幻风格与80年代重金属风格混搭。

……基于 FUDGE 系统[20] 的 RPG，融合了赛博朋克与特异功能的元素，提供节奏紧张、丰富有趣的游戏体验。

玩家往往能够根据上述这样的描述而对游戏的基本情况获得很好的认识。由此不难看出，人们对RPG类型的既定理解已经根深蒂固了，而这对于该类型的进一步演进来说无异于固步自封。

10.3 考拉熊与山羊：过度特化的弊端

笔者还有一个关于进化的例子来比喻 RPG 存在的问题。首先需要了解的是桉树的神奇之处。在进化的作用下，从桉树叶提取的桉叶油富含一种称为“桉树脑（eucalyptol）”[21] 的化学成分；这种化学成分对于动物具有毒性，只有极少数的昆虫和脊椎动物能够食用桉树叶而不致产生毒害作用，从而使得桉树免受绝大部分食草动物的干扰。桉树的这一特点使得它很容易被移植到其他地区。

考拉熊是极少数能够安全吞食桉树叶的动物之一，也算是个中极品了。对于考拉熊来说，从桉树叶中分离出毒性成分所需的生化成本刚好略低于从中提取有用养分的成本，因此食用桉树叶的优势相当微薄。相比之下，大部分食用有毒食物的物种则是通过摄取大量水分来将有毒成分排除体外的。

在大部分进化条件下，食用桉树叶的“性价比”太低，根本不值得选择；然而有一种例外情况在于，桉树在数量上极其丰富。这就好像有一片巨大的市场空白，只要具备商业头脑的物种能够探索出一种发掘这个市场潜力的办法，就能够从中获益。

这个物种正是考拉熊，它进化出了几种应对桉树叶毒性成分的机制。考拉熊的肝脏进化出了能够代谢毒性成分并且提取桉树叶养分的机制；此外，考拉熊进化出了超低能耗的生活方式，以此平衡供需。

考拉熊一天睡18个小时，行动缓慢，活动极少。在考拉熊面前，再懒惰的人恐怕也自愧不如。

考拉熊除了其树栖的特性之外，没有任何抵御天敌的措施——无伪装、无抵抗、无法逃命。此外，考拉熊也不能像其他哺乳动物那样调节体温，完全依赖于环境温度来保持生存。一旦环境温度超过了可接受的范围，考拉熊就会死亡。

可以说，考拉熊是针对桉树林的严峻环境实现了高度特化的物种。

再来考察另一个物种：山羊。与在进化过程中实现了高度特化的考拉熊相比，山羊是泛化物种：考拉熊只吃桉树叶，而山羊几乎什么都吃。山羊及其近亲绵羊可谓是“家门兴旺”，遍布全球。它们没有什么特长，身形不大，跑得不快，体力一般，没有什么掩护技巧，消化系统也普通得不值一提；它们不能爬树，不能吃有毒的植物，也无法以最高的效率从食物当中提取养分，挖洞的技术也不怎么样；它们没有护身的硬甲，又不怎么样聪明，身手也不敏捷。山羊大概是地球上最平庸的哺乳动物之一了。

那么不妨设想：如果地球的气候在接下来的几百年发生重大变化，那么考拉熊和山羊分别会怎么样呢？

在这种情况下，考拉熊恐怕会灭绝。如果气温变高，那么它们就没办法维持赖以生存的微妙的生化平衡；如果气温变低，那么它们就没办法维持体温，从而导致死亡；如果天气变干燥，那么它们从桉树叶当中获取的水分就会降低，从而导致死亡；如果天气变潮湿，那么桉树就会被其他树种取而代之，从而导致考拉死亡。

换句话说，考拉熊针对其生存环境实现的特化导致它们没有应对改变的余地。它们在进化之路上走到了死胡同。只要生存环境不发生任何改变，它们就相安无事；然而任何环境上的重大变化都可能治他们于死地。

相比之下，遭遇环境巨变的山羊大概不会有什么生死存亡的问题。如果天气变热，那么它们身上的毛就会减少，以适应在荒野环境中生活（野山羊一直如此）；如果天气变冷，那么它们身上的皮毛就会增厚，像高山环境中的山羊那样生活；如果天气变干燥，那么它们吃吃干草灌木也无妨；如果天气变潮湿，那么它们一直吃青草也可以。无论环境如何变化，山羊总是可以适应。

RPG 游戏恰似考拉熊，它高度特化，在精准的市场空间中被不断精化，人们对它抱有固定的理解和期望。它像考拉熊一样，在令人赞叹的同时，其演进的空间也受到了局限。过度特化的RPG游戏类型在进化方面走向了一条死路，无法适应新兴的发展环境。

10.4 MMORPG有希望吗

别忘了还有MMORPG（Massively Multiplayer Online Role-Playing Game，大型多人在线角色扮演游戏[22] ）呢。这类游戏当中有很多互动叙事的成分嘛！

MMORPG 游戏的确比普通的 RPG 游戏包含更多戏剧性内容。不过，这些戏剧性元素并不来自MMORPG游戏自身，而是源自玩家在游戏聊天室当中发生的互动。玩家在MMORPG游戏当中只是进行机械化的操作，而在聊天室里则为这些游戏动作赋予了戏剧化的意义——戏剧性来自他们的聊天内容。如果没有聊天室，那么MMORPG并不会比普通RPG更具戏剧性意义。

事实证明，MMORPG 的确在戏剧性方面给玩家带来了满意度——从其中的优秀游戏获得的商业成功就可知一二。然而，MMORPG 有两个缺点：一是对玩家水平具有依赖性；二是在叙事上缺乏作者的创作控制力。

10.4.1 对玩家水平的依赖

MMORPG 的戏剧性品质完全依赖于玩家营造戏剧性效果的水平。如果与一群老练的高手玩家一起游戏，那么就可以产生极佳的互动叙事体验。所谓“一粒老鼠屎坏了一锅粥”，一位玩家的不济就能破坏整个聊天氛围，从而破坏整个体验——玩家们想出了许多俏皮话来挖苦这种“老鼠屎”。即使所有参与游戏的玩家都是能说会道的叙事高手，他们之间的兴趣差异也同样能够破坏整体的叙事效果。

许多年前笔者了解到的一项试验很好地说明了依赖性的问题：一位教授创意写作的教师把班上的学生分成两人一组，要求每一组的两位学生以句子为单位交替地编写故事。虽然笔者记不清准确的细节了，但是试验结果差不多是这样的：

玛丽靠在沙发上，看着窗外令人乏味的雨，喝着她的茶，心里则在掂量着自己与杰森的关系是否算是尽善尽美了。

随着太空船逐渐接近敌人的行星，杰森又一次检查了船上的装备。这必然会是惨烈的一战了。

玛丽默默地摇了摇头。杰森从未爱过自己，他只是个急于证明自己能够爱别人的男人罢了。

玛丽从杰森的脑海里闪过。她太过自我，无法理解男人必须面对的职责。男人的事情总该男人来做。

两位作者互相争夺着对故事的控制权。最终，杰森的作者让玛丽死于一次敌人的袭击，而玛丽的作者则报复性地让杰森孤独地困在荒凉的星球上。让叙事想法不同的人共同参与互动叙事，就会产生这样的混乱局面。

10.4.2 缺乏作者的创作控制力

MMORPG 的第二个缺点在于，故事叙事全部衍生自聊天室里的玩家，作者本身没有表达的机会。在这样的情况下，作者唯一的职责就是创建游戏环境，让各种玩家事件得以发生。作者固然可以为游戏世界加入戏剧性冲突的线索，这些线索为玩家在聊天室里发生互动做了铺垫，但是冲突如何发生则完全不受作者掌控。如此一来，整体叙事往往遵循一成不变的线索展开，导致故事叙述被“均化”了：衍生自 MMORPG 的故事总是大同小异，就好像一顿饭只包含形状各异、口味不同的汉堡包一样，说到底都只是汉堡包而已。

10.5 受众的问题

假想有一位杰出的设计师想出了把 RPG 发展为互动叙事的方法，然后据此推出了一系列革命性的游戏产品，玩家的反响会是怎么样的呢？

一开始，玩家们也许会对此感到兴奋，因为他们觉得这样的游戏会是锦上添花的 RPG。然而，从 RPG 向互动叙事的演变可能最终还是会遭遇玩家的拒斥——他们可能会得出结论，认为这样的游戏根本不再是RPG了。其原因在于，RPG玩家希望体验的是RPG游戏，而不是互动叙事。他们喜欢在巨大的游戏世界里四处游走、降魔除妖、收集宝物和武器装备，他们喜欢提升玩家角色的能力和经验值、购买强大的武器装备——他们喜欢做所有 RPG 玩家做的事情。新的“互动叙事”游戏强调的是戏剧性内容，因此 RPG 游戏所包含的那些游戏行为都会从属于更具戏剧性的游戏行为，RPG玩家会因此觉得这样的游戏背离了RPG的精神。

多年之前，麦当劳快餐连锁店曾经做过一次走向高端市场的尝试，即提升产品品质和价格以期获得更高的回报。这次尝试以失败告终，因为所有人都已经先入为主地认为麦当劳是快捷、便宜、好吃的快餐。即使推出价格更高的汉堡包，消费者也只会将其看作快捷、昂贵、好吃的快餐。公司总是致力于为其产品打造鲜明的市场形象，然而这样做是一把双刃剑：在告诉了消费者你的产品是什么的同时，你也在“产品不是什么”方面划清了界限。RPG 的市场形象早已经根深蒂固，因此变化的余地是非常有限的。

即使 RPG 能够向互动叙事的方向演化，也必然会遭遇市场上的失败。愿意为互动叙事买单的玩家并不一定喜欢玩RPG游戏，而喜欢RPG游戏的玩家往往对互动叙事不感兴趣。RPG与互动叙事之间存在着巨大的鸿沟，为两者牵线搭桥并不现实。

10.6 本章小结

角色扮演游戏与其他类型的游戏一样，是以机械化的操作为基础的。玩家在游戏世界中的主要行为是四处游走、提升战斗力、降魔除妖、收集金银财宝和武器装备等。玩家在游戏中的举动并不是互动叙事的根本要素，他们并不会与游戏中的角色发生情感化互动。归根结底，角色扮演游戏的核心仍然只是“物件（things）”，而不是人——而故事的核心则是人，而不是物件。

第11章 电子游戏

电子游戏是一个年营收数以百亿计的大产业。一款游戏大作的成本就可能超过千万级。在这个竞争激烈的市场当中，一款热门游戏的利润可以多到令人咋舌，而其竞争产品则可能因此而血本无归。在这样的市场环境下，游戏制作厂商们对能够获得竞争优势的任何做法都趋之若鹜，其中之一就涉及到故事元素。嵌入了戏剧性上下文（即包含有故事）的游戏往往比没有故事元素的游戏更受欢迎，因此游戏公司们纷纷投入巨资，为其游戏产品加入吸引人的故事。

如本书第7章所述，游戏设计师一直在尝试为游戏注入故事元素。最早的形式是印刷发行的游戏手册，随后又出现了图片或动画的过场片段。如今采用的技术要远高于当初，不过总体策略一直没有变化，即把故事附加到既有的游戏当中，两者同在一款产品里，却又相互独立，鲜有结合。

记住这一点很重要：互动叙事并不是电子游戏设计师的目标。他们的目标是通过追加故事元素来让其游戏作品变得更加吸引人。对于游戏设计师而言，故事乃锦上添花的卖点，而不是创作诉求的一部分。对他们来说，优秀的故事与精彩的音乐、画面和动画一样，只是游戏获得成功的诸多因素之一。他们需要优秀的故事来增强游戏体验，这样的愿景与互动叙事大相径庭。

本章将探讨电子游戏当中的故事叙述，借以点出由此形成的种种错误观念。理解电子游戏中的故事运用的优缺点，也能让我们少犯一些错误。

Josiah Lebowitz 和Chris Klug 在他们合著的Interactive Storytelling for Video Games一书中对如何为游戏添加故事元素做了很好的阐述。本章将围绕该书中的概念展开讨论，把电子游戏中的故事与互动叙事中的故事作横向比较。

对于为游戏添加故事元素，该书的两位作者提出了5种策略，笔者用自己的语汇转述如下。

• 固化的故事。

• 多种结局。

• 分支树。

• 开放式故事。

• 玩家驱动的故事。

11.1 固化的故事

上述5种策略当中，交互性最低的就是固化故事的手法，即把固定的故事附加到游戏当中。玩家通过玩游戏得到故事片段，但是无法影响故事的发展。笔者把这种做法称为固化的故事（constipated story）。每当玩家成功玩过一个游戏片段，新的故事片段也随之被呈现出来。

这就好像在看电影的时候，观众每看一段就须要玩一段杂耍才能继续看！有时候这种阻挠表现为谜题，有时候则更像正经的游戏形式；在大部分情况下，玩家每完成一个游戏关卡就能看到部分故事片段。

这种游戏中的故事并不具有互动性。其设计原则似乎是在假设，倘若在交互式的游戏与非交互式的故事之间来回切换得足够快，那么也许整体看起来就会比较像是互动故事。这样的做法如同蹩脚魔术一样，很快就会被看穿。

尽管如此，还是有些人愿意玩这样的游戏。当然，大部分人还是更愿意花几块钱买一部电影来看，而不是为了看到电影片段而活受罪。

11.2 多种结局

为游戏添加故事元素的第二种策略是允许玩家从多个不同的结局当中进行选择，总体与上述第一种策略半斤八两。这样的选择往往发生在游戏结尾，比如让玩家选择是英勇牺牲还是明哲保身。为了理解这种做法的局限性，我们不妨回顾一下第2章的内容，其中笔者谈到所谓交互就像是两个人之间的对话一样。假想有个人坐在你旁边，在你玩游戏的同时给你讲故事，等到了故事结尾，他让你选择故事的结局。这样的故事能算做是互动的吗？

虽然结局的数目可以任意多，但是这对于交互性而言无济于事。游戏的绝大部分都是传统的非交互式的故事叙述，仅仅只在最后的结局事件上是交互式的——玩家的选择仅限于此。如果一本 100页漫画书有99 页都是文字，只有最后一页是漫画，那么这还能算是漫画书吗？如果一部100 分钟的电影有 99 分钟都是静态图片，只有最后一分钟是精彩的动画，那么这还能算是电影吗？同样，如果一个故事的绝大部分都不是互动的，只在最后提供一个选择，那么这还能算是互动叙事吗？

多种结局的策略无法凑效的原因在于，它无法满足第3章提到过的“个体独立性”之要求。玩家没有机会创建自己独特的故事，而是被局限于作者设计的有限结局当中。这让玩家情何以堪！

11.3 分支树

在游戏中添加故事元素的第三种策略正是第8章探讨过的分支树。Interactive Storytelling for Video Games 一书的作者认为，由于有多种不同的路线到达故事结尾，因此与多结局的策略相比，玩家获得了更大的自由度和控制力。这么说虽然没错，但是我们不妨考察一下他们在书中给出的分支树结构（如图11.1所示）之后再来认定。

图11.1 Interactive Storytelling for Video Games一书中给出的分支树结构

这个分支树结构大量采用了折返的做法，只为玩家提供了3个决策点和2种结局。三个决策固然比一个决策具备“更大的自由度和控制力”，然而对于一个被困在沙漠中即将饥渴致死的人来说，即使3滴水比1滴水多多了，也是无济于事的。

11.4 开放式故事

Interactive Storytelling for Video Games 一书的作者对于为游戏添加故事元素的终极方案是所谓“开放式（open-ended）故事”：玩家可以在巨大的游戏世界当中探索，一旦在达成最终目标方面取得进展，就会出现传统故事的情节进展；通过对游戏世界的探索，玩家在进行游戏的同时，还获得了故事情节相关的线索。然而，这样的故事其实并不是“开放式的”，只是被安插进互动的游戏世界当中的拆散了的传统故事——玩家的任务只不过是把故事碎片重新拼装起来形成一个连贯的整体。

根据该书两位作者的说法，对于加入了开放式故事的游戏而言，最大的挑战在于如何组织故事片段，使其整体上连贯，同时又能让玩家以任意顺序进行体验。乱序的故事片段最早在互动小说当中得到探索；尽管这种做法催生了一些相当有趣的作品，但是总体上还是无法为互动叙事提供坚实的基础。到目前为止，我们还没有看到这种策略形成过任何有建树的独立发展；大部分的此类探索作品都有些矫揉造作，不够自然，而且往往需要消耗很大的时间精力来创作。

下面这句摘引自该书的表述暴露了两位作者对于玩家的选择自由的态度：

最妥当的做法通常是在玩家按照预想路线进行游戏时，让主线情节的进展保持良好的节奏。

换句话说，玩家在选择上的自由度并不是设计目标，而是一种可能会影响故事表述的潜在危险因素——只要玩家没有按照设计师预想的方式进行游戏，那么故事的表述就会受到影响。这不是互动叙事，只是封闭式的传统故事。

Interactive Storytelling for Video Games 一书的两位作者对开放式故事策略的长处做了如下总结。

……开放式故事的乐趣在于发展人物角色和探索游戏世界的丰富细节……

……对于反对由玩家驱动故事叙述的人来说，开放式故事的优势并不在于故事本身，而是在于由此催生的宽广且细节丰富的游戏世界。

由此看来，开放式故事的做法绝不是任何形式的互动叙事，它只是把传统故事附加到游戏当中的一种做法，即把传统故事拆分为碎片，散落到游戏世界当中，由玩家来收集这些碎片并重新拼装成完整的故事。

11.5 完全由玩家驱动的故事

根据两位作者的说法，把互动叙事融入游戏的最高级做法是所谓“完全由玩家驱动的故事（fully player-driven stories）”。他们用《模拟人生》（The Sims）游戏作为这种策略的实例。在这样的游戏中，玩家可以在游戏世界中自由探索并做些有趣的事情，但是游戏并不包含任何传统意义上的故事情节，游戏的制作者并没有在设计中编入任何故事元素。两位作者对这样的游戏产品也颇有疑虑，以至于其中一位作者在书中承认说，完全由玩家驱动的故事其实不能算作故事。这么说其实也没错，不过这位作者忽略了故事与故事叙述之间的区别——前者是数据，后者是过程。计算机并不是表述故事的媒体，而是实现故事叙述的媒体。所谓“完全由玩家驱动的故事”其实是自相矛盾的说法，“完全由玩家驱动的故事叙述”才应该是终极目标。

11.6 故事叙述与成本问题

Interactive Storytelling for Video Games 的两位作者在书中表明了提供丰富故事叙述的成本问题。他们指出，创建故事场景涉及到撰写脚本、表演拍摄或制作动画等一系列投入，往往是游戏开放当中成本最高昂的部分，因此给故事主线添加更多变化会对开发成本有显著的影响。

而且，两位作者认为更糟糕的事情在于：故事包含的可能性越多，玩家也就越不容易看到这些主线之外的变化，从而也就意味着这样做往往是投入多回报少。

于是两位作者得出结论：保险的做法是严格控制故事可能性变化的余地或数量。无论是分支树、开放式故事，还是玩家驱动的故事，开发公司对故事创作的成本投入是非常有限的，因此必须严格筛选需要制作的故事场景，限制故事世界中的可能性范围。

在包括互动叙事在内的开发项目当中，成本固然是需要考虑的问题。然而， Interactive Storytelling for Video Games的两位作者提出的建议却犯了方向性错误。倘若孤儿院只有供给100名儿童的资金，却有 150 名儿童需要照顾，那么我们应该做的不是赶走多出来的 50 名，而是采用更便宜的物资。如果盖房子盖到还差房顶没搭资金就不够了，那么我们绝不会索性就住没有房顶的房子，而是寻求更便宜的方案来完成房顶的搭建。

同样，如果投入实现互动叙事的成本不足以支持足够多的场景，导致无法实现足够好的交互性，那么我们不能就接受交互性差的现实，而是想办法降低场景的成本。互动叙事需要相当大数量的场景，因此我们就得找到以相当低的成本实现场景的办法。由此得出的必然结论是：故事场景必须由计算机自动生成，而不是通过人工编写脚本和绘制来完成。难道这有什么不对的吗？计算机不正是用来实现自动化，用自动计算替代手动计算的吗？

这里需要考虑的也是个优先级的问题：是绚丽的图像效果重要还是丰富的互动叙事重要呢？如果把成本投入到了绚丽图像的制作上面，那么开发出来的游戏就会更像电影而少一些交互性。这听起来貌似还不错，不过我们必须认识到，游戏越像电影，就越是在跟电影这种媒体做竞争。然而，我们恐怕没有足够多的资金和资源来与真正的电影制作厂商竞争——在电影人面前班门弄斧，必然是惨败。因此我们必须充分发挥电影没有的优势，这个优势就是交互性。

如上所述，我们必须把成本重点投入到实现更好的交互性当中，而不是制作更好的电影效果。这意味着，要在制作场景方面实现自动化，而不是大动干戈拍摄制作动画。

如果图像效果达不到主流的电影标准的话，那不就显得质量很差吗？

这样作比较本身就是错误的。我们不能把“图像效果差的游戏”与“图像效果好的游戏”作比较，而是应该把“图像差、故事世界精彩的游戏”与“图像好、故事世界拙劣的游戏”作比较。别人花在制作精彩视效上的成本，我们可以花在创建丰富、充满戏剧性的故事世界上面，让玩家免受生硬的分支树、有限的选择和拙劣的交互性的限制。

归根结底，我们要对玩家在游戏中的诉求具有清晰的认识：到底是绚丽的视听效果还是引人入胜的故事世界？玩家只要花几块钱买一部电影来看就能获得极致的视听享受，难道还会特意花更多的钱在游戏里“看电影”吗？

11.7 本章小结

Interactive Storytelling for Video Games一书的内容很好地说明了电子游戏无法成为互动叙事的发展基础。该书的作者清晰、透彻地表明，电子游戏只能包含固化了的传统故事，而且互动叙事与电子游戏的基本设计思路无法兼容。俗套的英雄踏上俗套的征程进行俗套的战斗——如果要想把这样一成不变的俗套故事加入到游戏当中，那么该书就值得借鉴。要想实现互动叙事，该书仍然可以作为所有错误思路的反面教材来参考。

注　释

[1].参见：https://en.wikipedia.org/wiki/Pac-man。

[2].乔治·伽莫夫（George Gamow）的科普经典名著《从一到无穷大：科学中的事实和臆测》的第一章也引用了这则故事。参见：http://en.wikipedia.org/wiki/Wheat_and_chessboard_problem。

[3].显然，作者是在开玩笑，表明分支树的用途有限。

[4].这款游戏的详情可参见：https://en.wikipedia.org/wiki/Colossal_Cave_Adventure。

[5].参见：http://en.wikipedia.org/wiki/Computer_terminal。

[6].值得一提的是，Zork 系列及其他互动小说游戏已经被移植到 iOS 平台。关于该游戏详情可参见：https://en.wikipedia. org/wiki/Zork。

[7].该游戏详情可参见：https://en.wikipedia.org/wiki/Myst。

[8].游戏原作小说中的虚构生物，参见：https://en.wikipedia.org/wiki/Races_and_species_in_The_Hitchhiker's_Guide_to_the_Galaxy#Babel_fish。

[9].参见：http://emshort.home.mindspring.com/Alabaster/index.html。

[10].参见：http://blue-lacuna.textories.com/index.html。

[11].关于作者Jon Ingold 的介绍参见：http://en.wikipedia.org/wiki/Jon_Ingold 以及http://www.inklestudios.com/。

[12].泛指在桌面上进行的游戏，参见：https://en.wikipedia.org/wiki/Tabletop_games。

[13].该经典游戏的详情参见：https://en.wikipedia.org/wiki/Dungeons_＆_Dragons。

[14].相关历史可参见：https://en.wikipedia.org/wiki/PLATO_(computer_system)。

[15].Non-player character，即游戏中不受玩家控制的虚构角色。参见：https://en.wikipedia.org/wiki/Non-player_character。

[16].指的是荷马《奥德赛》结尾奥德修斯屠杀求婚者的故事段落。

[17].荷马《奥德赛》中的故事情节，参见：https://en.wikipedia.org/wiki/Aeolus#Son_of_Hippotes。

[18].RPG的一种子类型，参见：http://en.wikipedia.org/wiki/Roguelike。

[19].著名的美国恐怖小说作家，参见：http://en.wikipedia.org/wiki/Hp_lovecraft。

[20].一种通用的角色扮演游戏系统，参见：http://en.wikipedia.org/wiki/Fudge_(role-playing_game_system)。

[21].详情参见：https://en.wikipedia.org/wiki/Eucalyptol。

[22].参见：https://en.wikipedia.org/wiki/MMORPG。

第四部分 组件技术

互动叙事是个复杂的玩意儿！要实现它，我们需要结合运用一系列的软件技术，包括：

第20章：实现互动叙事最困难的部分是实现能够推动故事进展的高级系统。

第12章：建模（modeling）是用计算机语言表述真实世界的过程。本章介绍如何建模。

第13章：一种称为“有界数值（bounded numbers）”的数学系统能够简化建模过程。

第14章：通过人格模型为故事角色诸如独特的个性。

第15章：故事世界最重要的角色是“命运（Fate）”，它推动玩家经历一系列戏剧性的事件。

第16章：故事世界最重要的组件是动词，因为动词是事件的核心。

第17章：我们得设法告诉玩家发生了什么事情，也得让玩家有途径做出反应。本章讨论其做法。

第18章：成功的互动叙事系统需要专有的脚本语言来简化操作。

第19章：故事叙述引擎是集成所有组件的主程序。

第12章 建模

所谓“模型（model）”就是真实事物的缩简版本。制作模型的目的并不是详尽地覆盖真实事物的方方面面。儿童玩偶是不会搭载能实际运作的呼吸系统或者肌肉组织的，因为玩偶不需要这些东西就能实现其既定的功能——供儿童玩耍。一部小说并不必要详尽地描绘主人公的一生，只有有助于达到戏剧性表达目标的个别重大事件才会被作者写进去。同样，互动叙事与其他媒体一样，也是通过建模来实现的，既不必要也不需要完整地涵盖现实当中的一切，创作者只需要根据自身的表达目标对现实的特定方面进行建模即可。

12.1 媒体

每一种媒体都会从一个或多个维度对现实进行建模。绘画和摄影是对现实世界的视觉表象的建模，画家和摄影师致力于通过图像来清晰有力地表达一些内在的观念。音乐基于声音对人类生存状态进行建模，音乐家致力于通过音符来实现自我表达。诗人经由语音和文风实现表达。故事通过精心构造的事件序列来传达作者的观念。电影则同时运用图像、声音和事件实现综合表达，因而具有强大的表现力。

显然，互动叙事也必须确立建模的维度，而这正是人们对它产生迷惑和误解的根源。互动叙事通过计算机来实现，而计算机既可以呈现文字，又可以播放声音，还可以展现 2D 甚至 3D 图像。计算机的丰富表达维度让互动叙事的探索者一时看不清计算机作为艺术表达媒体的核心优势——交互性。这种丰富性和抽象性增加了人们认识其核心地位的难度——人们容易理解诸如文字、声音和图像这类可辨识的东西，而对交互这种陌生的事物则是一头雾水。一旦理解了交互是一种表达维度，一切就会变得显而易见和理所当然了；到了那个时候，人们也许会把现今的我们看作是对真理视而不见的傻瓜。早期电影的观众在看到火车的电影片段时，立刻惊恐地逃出了电影院——现今的我们会嘲笑他们的无知，而对于未来的人们而言，我们恐怕也是愚蠢得异曲同工。

互动叙事模型的核心在于对行为的建模，视觉上或者听觉上是否逼真并不重要。实现互动叙事的必要条件在于故事中的人物的表演要逼真。我们需要模塑的是人物的行为，而不是他们的表征。

12.2 建模基础

计算机模型有两种基本元素：变量（variables）和公式（equations）。变量是用来描述模型重要特征的数值；公式则利用变量来实现有意义的计算。比如我们可以为汽车在路上的行驶行为建立一种只包含3个变量的简单模型，这3个变量分别是：行驶车速、行驶时长以及在该时间段内行驶的距离。这个模型只需要一项公式来描述：

距离=速度 × 时间

数学表达的魅力难道不该令人震撼吗？

大部分既有的模型都源自物理学，然而我们的建模并不需要物理知识，只须要理解模型背后的概念。正如互动叙事的其他部分一样，我们是通过建模来模拟现实世界。

对汽车行驶建模太过简单，也跟互动叙事关系不大——我们不妨尝试一下为更复杂且更相关的行为建模，比如“一个人如何对别人的赞美做出反应”。通过建模，我们特别希望弄清楚的问题是这个人对赞美者的看法是如何因此而改变的。不妨用 Tom（汤姆）来指代赞美者，用 Mary（玛丽）来指代被赞美的人。

建模的基本想法很简单：在得到了汤姆的赞美之后，玛丽对他的喜爱之情加深了。为了用计算机语言来表达这个过程，我们需要两个变量。

• Niceness：赞美的多寡。

• Affection：玛丽对汤姆的喜爱程度。

显然，喜爱程度会随着赞美的增多而加深。既然两个变量都是数值，我们不妨直接将两者相加，于是得到如下的计算公式：

Affection[Mary, Tom]=Affection[Mary, Tom] + Niceness

值得注意的是，上述公式只是用计算机语言来表达的模型，而不是在说明等号左右两边在数学意义上相等。这条公式描述的是：玛丽对汤姆现有的喜爱程度（Affection）加上汤姆对玛丽的赞美多寡（Niceness），就得到赞美之后玛丽对汤姆的喜爱程度。

这些数值从何而来呢？感情的深厚和赞美的多寡又该怎么算呢？

这些变量会在程序初始化的时候被赋予初始值，然后随着事件的发生而发生变化。值得强调的是，无论 Affection 和 Niceness 两个变量的实际数值是多少，我们都假设公式成立，所以此时还不须要确定具体的数值。

通过实际的数值来思考难道不是更形象具体一些吗？

我们须要学会进行抽象化思考。第4章当中阐述的抽象化思维正是建模所需的技能。我们必须避免采用“2+2=4”的方式来思考，转而采用“x+y=z”的抽象方式来思考；不要拘泥于具体数值，而是要把数值所有的可能性都考虑在内。图12.1以视觉化的方式描绘了这种抽象化思维。

图12.1 对脸部的抽象（这个例子借鉴了Scott McCloud的创意[1] ）

图12.1中的左半边是一张取自照片的形象逼真的脸；而右半边则是高度抽象化的脸部图画，只包含了脸部最基本的元素——它高度抽象，可以用来代表任何人的脸。

变量之于数值，就好像抽象的脸之于照片上的真人脸。变量可以被认为是对数值的抽象；一个变量可能代表任何数值。它是互动叙事当中最简单的一种抽象。

显然，抽象化思维比具象化思维更加困难。在前面的例子当中，笔者用“汤姆”和“玛丽”替换了“赞美者”和“被赞美者”，以期让整个例子变得稍微容易理解一点。如果我们一直采用“赞美者”和“被赞美者”这样的抽象字眼，那么理解起来就会变得稍微困难一些了。我们必须承认，抽象是费脑子的事情——倘若不费脑子的话，那么恐怕互动叙事这档子事儿早在《Pong》[2] 推出之时就已经被完成了，也就根本不会需要这本书了。

如果汤姆对玛丽说了些贬抑无礼的话又会怎么样呢？

贬抑是赞美的对立面，因此变量的值必须是负数。在这种情况下，Affection[Mary, Tom]的值就会减少，代表玛丽对汤姆的喜爱程度减少了。这不正是我们期望的结果吗？

由于变量值为负代表着与字面（Affection、Niceness）相反的意义，很容易引起迷惑，因此笔者确立了一种标准化的命名规范以消除任何可能的迷惑。按照这个规范，每个变量由两个名称组成，第一个名称代表数值为正时的意义，第二个名称代表数值为负时的意义。由此，Niceness 应该改名为Nice_Nasty，以此来说明正值代表赞美，而负值代表贬低。

确立这种命名方式看起来似乎是多此一举，完全没必要嘛！

真的没必要规范命名吗？不妨考虑一下这样的问题：Angry（愤怒）的反义词应该是 Happy （高兴）、Fearful（畏惧），还是 Serene（平静）呢？Excited（兴奋）的反义词应该是 Bored（无聊）、Sleepy（困倦），还是 Disgusted（厌恶）呢？Empathetic（移情的、同理心的）的反义词应该是Callous（无同情心的）还是Clueless（毫无头绪的）呢？许多英语词汇具有多义性，单独用于变量命名会导致许多模拟两可的理解。消除这种歧义的唯一办法就是明确地同时指定正反两词。

由此，Affection也必须改名为Affection_Disdain。

12.3 增加复杂性

下面再来考察一下进一步增加复杂性的情形。假设有第三个人 Dick（迪克）听到了汤姆对玛丽说的话，我们不妨来看看汤姆的话如何改变迪克对汤姆的喜恶程度（Affection_Disdain），进而又如何建立计算公式。

鉴于复杂性的增加，我们应该把整体情况重新梳理一遍：有汤姆、玛丽和迪克3个人，汤姆对玛丽说了或赞美或贬低的话（ Nice_Nasty ），迪克听到这些话，导致他对汤姆的喜恶程度（Affection_Disdain）发生了改变。那么，如何计算这种变化呢？

基本想法很简单：迪克的Affection_Disdain应该根据两个条件发生改变。第一个条件是迪克对玛丽的 Affection_Disdain，第二个条件是汤姆措词的 Nice_Nasty。如果汤姆对玛丽说了赞美的话，并且迪克喜欢玛丽，那么迪克就会为汤姆的话感到高兴，并且由此加深对汤姆的喜爱；而如果汤姆辱骂了玛丽，并且迪克喜欢玛丽，那么迪克就会因为汤姆的出言不逊而感到不快，进而导致他对汤姆的Affection_Disdain降低。

如果迪克不是喜欢玛丽，而是讨厌玛丽的话，那么情况就反过来了：迪克会为汤姆对玛丽的赞美感到懊恼，从而降低他对汤姆的Affection_Disdain；迪克还会为汤姆出口中伤玛丽而幸灾乐祸。

表12.1总结了上述各种不同的情况。

表12.1 喜恶程度的变化关系

我们可以用布尔计算公式来表达上述

If (Affection_Disdain[Dick, Mary]>0) AND (Nice_Nasty>0) then increase

Affection_Disdain[Dick, Tom]

If (Affection_Disdain[Dick, Mary]>0) AND (Nice_Nasty<0) then decrease

Affection_Disdain[Dick, Tom]

If (Affection_Disdain[Dick, Mary]<0) AND (Nice_Nasty>0) then decrease

Affection_Disdain[Dick, Tom]

If (Affection_Disdain[Dick, Mary]<0) AND (Nice_Nasty<0) then increase

Affection_Disdain[Dick, Tom]

你之前不是说我们不应该使用布尔计算吗？如何才能把布尔计算转化为数值计算呢？

通过一个小技巧就可以实现转化，这个技巧有两条规则。

• 用加法替代布尔“或（OR）”。

• 用乘法替代布尔“和（AND）”。

上述转化规则简单易用。要将其应用到我们的例子当中，只须把括号中的布尔表达式（(x>0) 或 (x<0)）直接替换为数值，并且把AND 替换为乘号即可。由此可以得到：

Affection_Disdain[Dick, Tom]的变化量=Affection_Disdain[Dick, Mary] * Nice_Nasty

这一项公式不但概括了前面4条布尔表达式，还覆盖了更多情形。不信的话，不妨按照4种情况分别代入公式来看一看。无论在哪种情况下，Affection_Disdain总能发生预期的改变。

这条计算公式能做的还不仅如此！假设汤姆说的话既非赞美也不是侮辱，比如“哎呀今天真热呀”，那么 Nice_Nasty 的值就为零，代入公式之后，计算出的 Affection_Disdain 变化量也是零——如果汤姆对玛丽说的话是中性的，那么迪克对汤姆的喜恶程度就不会发生改变。

如果迪克根本不认识玛丽，那么迪克对玛丽的喜恶程度Affection_Disdain就为零。于是，无论汤姆对玛丽说什么，迪克对汤姆的Affection_Disdain都不会发生改变，因为迪克根本不关心这档子事儿。

这条公式还能反应改变的幅度：如果迪克对玛丽非常重视，那么他对汤姆的看法的改变就会比在他对玛丽不那么重视的情况下要大一些。

汤姆对玛丽进行赞美或侮辱的“程度”不同，迪克对汤姆的看法改变幅度也就会不同。

与布尔计算相比，数值计算能为我们的模型提供更高的仿真度。

要点21

数值计算优于布尔计算。

12.4 抽象化的步骤

接下来，让我们再进一步对上述建模过程予以抽象。笔者在此给出了可以遵循的步骤，以方便读者对过程进行建模。抽象分为8个步骤。

步骤1：用文字描述总体情况

用直白的文字描述须要进行建模的具体过程。用文字表述出来非常重要，因为这样做能够迫使自己理清事实情况以避免歧义，并且确定相关细节。如果这一步做不好，那么后续的步骤就是白费功夫了。

我们不妨用《指环王》小说中的一段情节做例子：佛罗多（ Frodo ）站在末日山（ Mount Doom）的悬崖边，手里拿着魔戒。他历经艰险来到这里，就是为了把魔戒投入崖底的烈焰之中，彻底销毁它。然而这个时刻，他受到魔戒邪恶力量的影响，犹豫了起来[3] 。

步骤2：用文字描述建模的目的

要考虑的问题包括：建模是为了达到何种目的，以及需要计算的是什么。如果我们不知道目的是什么，那么当然也就无法达成。

继续以《指环王》为例：目的是确定弗罗多是否会把魔戒投入烈焰。

步骤3：用文字描述模型应该遵循的基本原则

需要考虑的问题是我们希望通过模型来体现什么样的特性。这种特性可以是“你对别人好，别人就会对你好”，也可以是“女人惹不起”[4] ，或者“流言蜚语总是比真相传得快”[5] 。措词如何无关紧要，关键在于把基本想法记述下来。在这里无须考虑计算公式的问题，只须要用文字描述清楚即可。

在《指环王》的例子中，核心问题在于佛罗多能否抵抗得住魔戒的邪恶诱惑。

步骤4：确定并命名相关的变量

自这个步骤开始我们进入了技术处理的阶段。千万不要小视命名的重要性，这一步骤的关键不仅在于确定妥当的名称，更在于我们如何进行量化。

本步骤的挑战是如何以最明晰的方式来描述我们希望使用的变量。也许有人会选择沿用之前在别的地方用过的变量，这样做完全可以，不过一定要确保变量名称能够切合当前的需求。

在《指环王》的例子里，两个相关的变量可以是佛罗多的意志力和他的品德，我们不妨分别称为 Strong_Weak 和 Good_Bad。当然，从其他的方面来设立变量也是可以的，这完全取决于个人的考量。

步骤5：用布尔形式表达基本原则

在这一步当中，我们须要运用步骤4中确立的变量，将步骤3中确定的基本原则以布尔表达式的形式描述出来。之所以首先采用布尔表达式，是因为布尔计算黑白分明的特点有助于我们理清思路。继续以《指环王》为例：

IF (Frodo is strong) OR (Frodo is good) THEN Burn_That_Ring

步骤6：把布尔形式转换为数值形式

这种转换处理，刚开始做的时候可能有点困难，不过一旦熟练起来就会越来越顺利。转换要点在于：OR（或）对应加法，AND（和）对应乘法。在我们的例子中，表达式就变成了：

IF ((Strong_Weak + Good_Bad)>0) THEN Burn_That_Ring

步骤7：应用多个数值验证表达式的合理性

这一步的目的在于排查错误。每个输入变量都应该分别以较大的负值、较大的正值和零值为例来进行验证。在有多个变量的情况下，要验证各种组合的情况。因此，拥有两个变量的表达式须要用 9 种数值组合来验证。覆盖所有可能的情况才能验证表达式的合理性——如果漏掉哪怕一种情况，那么随后也有可能导致意想不到的错误。算法是个不容易驾驭的猛兽，须要我们处处小心。

如表 12.2 所示，《指环王》例子当中的测试相当简单。如果两个变量都为正值，那么结果就为正；如果两者都是负值，那么结果就为负；如果两者一正一负，那么绝对值大的那个就决定了结果的正负。

表12.2 变量与计算结果测试表

根本没有想象得那么难，对吧？互动叙事当中的数学并不会难得需要你计算诸如皮球如何从墙面反弹回来之类的复杂问题。

步骤8：根据个人品位对计算式进行调整

这一步正是我们发挥艺术天分的时机。计算结果太大还是太小，结果的正负数目是否均匀，变化幅度是否过大或者过小，结果对输入变化是否敏感——这些问题都没有唯一的正确答案，需要我们自己根据自己的想法来斟酌和定夺。佛罗多是否应该更倾向于保留或者销毁魔戒，这完全取决于作者。

12.5 关键细节

在上述的抽象化过程中，我们有不计其数的做法来增加建模的复杂度。我们可以对算法进行细化和调整，并且以千变万化的方式改进它。大厨获得高超的烹饪手艺，靠的并不是中规中矩地坚持按照基本做法来烹饪，而是在基本做法的基础上探索千变万化的变体。下面我们来考察两个在建模过程中须要注意的关键细节。

12.5.1 加权因素

在前述《指环王》的例子当中，我们的做法是将佛罗多的Strong_Weak与Good_Bad直接相加。仔细琢磨就会发现，这种简单的相加不无问题，因为这两个变量因素的重要性并不一定相同。创作者完全可以根据自身的经验来认定，坚强的意志比品德好坏更加重要，或者品德比意志更重要。无论是那种认定，都须要体现到计算公式当中，做法是取一个大于 1 的数值与须要增加重要性的变量因素相乘。假如佛罗多的Strong_Weak比Good_Bad重要两倍，那么计算公式就应该调整如下：

IF ((2 * Strong_Weak + Good_Bad)>0) THEN Burn_That_Ring

在变量相乘的情况下，问题就复杂一些，因为一个加权常量与变量因素相乘，实际上等同于它与另一个变量因素相乘：

(2 * Strong_Weak) * Good_Bad=Strong_Weak * (2 * Good_Bad)

要实现只对特定的变量实现加权，常见的做法是采用指数进行计算：

IF ((Strong_Weak**2) * Good_Bad)>0) THEN Burn_That_Ring

但是这种做法仅在 Strong_Weak 大于 1 的情况下才凑效。假如 Strong_Weak 的值为0.5，那么它的平方就变成了0.25，数值反而变小了！这该怎么办呢？

这的确是个问题，不过有个解决的办法：如果 Strong_Weak 大于 1，那么就采用正指数；如果小于1，那么就采用负指数。修改后的计算式如下：

IF (Strong_Weak>1) THEN Exponent=2

ELSE Exponent=-2

IF ((Strong_Weak**Exponent) * Good_Bad)>0) THEN Burn_That_Ring

即使这样，也还是存在一些隐患。首先，如果Strong_Weak是负值，那么整个计算还是会出问题。其次，指数计算可能导致剧烈的数值变化，因此在运用的时候须要加倍注意。

12.5.2 加法与乘法的选用

对于加法和乘法的应用，之前笔者已经给出过一个简单的转换规则：用加法替换布尔 OR （或），用乘法替换布尔AND（和）。

但是在这之前，我们如何决定选用 OR 还是 AND 呢？不妨举个例子说明：小伙子 Joe 在车库里修车，但是没有把千斤顶固定好就钻到车底下去了。结果他不慎踢到千斤顶，千斤顶侧向歪倒，导致车身下沉压住了他，于是大声呼救起来。他的妈妈应声从厨房赶来，看到了这一情况，于是抓住汽车的保险杠拼命向上拉。妈妈能够抬起汽车救出儿子吗？

这里有两个决定性因素，妈妈的身体力量和救儿子的迫切心情——就像大家常说的，情急之下，人往往会表现出惊人的力量。那么，这两个因素应该用 OR 还是 AND 来组合呢？如下的两条布尔表达式，哪一个更合理呢？

IF ((妈妈力量足够大) OR (妈妈救子心切)) THEN 她抬起汽车

IF ((妈妈力量足够大) AND (妈妈救子心切)) THEN 她抬起汽车

确实是个问题，不是吗？要解决问题，我们得先来看一看零值的情况：如果妈妈救子心切，但是身体力量为零，或者如果妈妈力大无穷，但是毫无救子之心，那么会发生什么情况呢？

假如 Joe 的妈妈是瘫痪病人，同时深深爱着她唯一的儿子，那么她肯定是救子心切的。然而，无论救子的心情如何迫切都无法弥补她没有行动能力的现实。

再假设，如果 Joe 不是她的儿子，而是经常虐待她的丈夫，情况又会是怎么样的。她是上百公斤级的举重运动员，而汽车重达近千公斤，且不说她完全没有救她丈夫的迫切心情。在这样的情况下，她也没有任何救出丈夫的办法。

不难看出，无论是救人的意愿，还是自身力量，两者各自都不足以补偿对方的缺陷。补偿能力正是整个问题的关键所在。如果一个因素能够补偿另一个因素，那么就可以采用OR来组合两者；如果两者无法互相补偿，那么就得用 AND 来组合。在上述妈妈和汽车的例子当中，我们得采用AND来组合体力和意愿这两个因素。

再举个互相补偿的例子——妈妈的体力与汽车的重量：

IF ((妈妈力量足够大) OR (汽车足够轻)) THEN 她抬起汽车

在这个表达式当中，零值的情形就不那么明晰了：倘若妈妈是瘫痪病人，而汽车比羽毛还轻，那么她仍然可以吹一口气就把汽车吹走。两个因素相互补偿的关系则很清晰：汽车越轻，妈妈救人所需要的体力就越小。对于这样的补偿关系，我们就可以用加法来组合两个变量。

人性相关的事情从来都是含混复杂的。在许多情况下，我们须要根据自己的艺术观点来进行建模。爱的力量是否大得可以战胜愤怒，复仇的欲望是否胜过金钱的诱惑，两者应该相加还是相乘——这样的问题都没有唯一的答案，有待艺术创作者寻求自己的答案。

12.6 本章小结

对行为的建模是互动叙事的核心议题。如果故事中的人物行为不自然，那么长得再好看、声音再甜美也是无济于事的。亮丽的外表无法弥补行为上的缺陷，表征和行为共同塑造了叙事的品质。假设我们在人物外表上做到了 90%的完美度，而在人物行为方面做到了 1%的完美度，那么两者相乘的组合效果会是怎么样的呢（0.9 × 0.01）？要想提高整体效果，我们应该在哪个方面下功夫是显而易见的。

第13章 有界数值

且慢！上一章反复强调了我们应该抛弃具体数值，转而采用抽象的变量来思考，结果现在又回来探讨具体数值了。这简直让人无所适从嘛！

这当然是绕不开的！尽管我们要思考抽象的变量，但是计算机只能根据具体的数值进行处理。因此我们还是需要考察一些与实际的数字计算相关的问题。

如果我们创建一个浪漫故事世界，其中需要采用 Affection_Disdain 变量来代表一个人物对另一个人物的喜好，那么具体应该采用什么样的数值范围呢？变量的上限应该是10、100，还是1000呢？

我们也可以将Affection_Disdain的上限定为1，可以理解为“最喜爱就是100%的爱”。有了这个界定，普通的爱就可以表达为小于1的数值，比如0.5。

上限是 1.00，那么下限应该是多少呢？粗想起来下限应该为 0.00，代表毫无喜爱之情。

打住！那又该如何表达憎恨之情呢？爱的对立面不是恨吗？这是不是意味着， 0.00 应该代表恨，0.50 才代表不爱不恨的中性情感呢？还是说，完全的恨应该用-1.00表示，这样0.00还是代表既不爱也不恨？

两种方式都是可行的。笔者的经验是，最好用-1.00 代表最恨，0.00 代表中性，+1.00 代表最爱，这样的设定会使得算法设计容易一些。

但是为什么非要从布尔表达式转换到数值表达形式呢？恐怕大部分人都会觉得采用布尔计算要简单得多——对错、黑白分明。

一方面，布尔形式当然要比数值形式简单得多。况且，计算机科学领域已经发展出了庞大的布尔计算库，各种实用工具唾手可得。

而另一方面，不要忘了那句老话：“锤子在手，看什么都是钉子。”布尔计算这把“锤子”很大，并不意味着现实世界中的事物都是黑白分明的。

这样看待布尔形式会有助于我们理解数值形式的优势：布尔计算是只使用一个比特（bit）位数据的数值计算。计算机以比特为单位来存储和处理数据，一个布尔值不是 1 就是 0，因此在计算机当中用一个比特位来表示。一个字节（byte）有 8 个比特位，因此可表示的数值范围用二进制表示就是00000000到11111111，即十进制的0到255。1个比特位与8个比特位之间的区别在于“解析度”。对于“约翰对玛丽的感情如何”这样的问题，布尔形式的回答要么是“他爱她”，要么是“他不爱她”。而如果我们用一个字节的数据量来描述他的感情的话，那么可能的回答就多得多，从“他压根不爱她”、“他对她有 1/256 的爱”、“他对她有 2/256 的爱”……直到“他完全深爱着她”——这样的表现力更强，不是吗？

我们还可以用视觉比喻来理解上述这种区别。图13.1 展示了用不同数量的比特位来描述像素单位时得到的不同的图像效果。

图13.1 比特数量越多意味着灰度越多

如果每个像素用8比特来存储，那么就能获得256种灰度效果，使得照片效果非常不错。每个像素3比特位则只有8个灰度，照片效果就差多了。而如果每个像素只用1比特（布尔值）来存储，那么像素就没有灰度了，颜色不是黑就是白，照片效果也最差。用布尔形式来实现互动叙事，其效果可想而知。

现代计算机已经采用 64 甚至更高的比特位进行运作，因此能够表现的“灰度”数目可谓是远远超过了我们的需求。笔者稍后还会讨论一下布尔计算的问题。

可是我们根本不需要64比特那么多嘛！创建优秀的故事世界恐怕采用8比特的量级就足够了！谁还会关心玛丽对约翰的爱到底是0.93875还是0.93876呢？

对于我们的算法设计而言，8 比特与 64 比特并没有什么区别。关乎算法设计的关键在于是采用数值算法还是采用布尔算法。如果选择采用数值算法，那么64比特可谓是有益无害。

采用较多的比特位存储数据的另一个优点是，这样能够缓解所谓的“舍入误差（ round-off error）”[6] 问题。在算法设计的过程中，经常会遇到将大量微小值累加成为大数的情形，而如果计算中最大数与最小数的比值超过了计算机所能表示的范围（这取决于用来表示数值的比特位数），那么最小数在实际计算中就可能会被四舍五入为零——这可能意味着，将成千上万个小数累加到一个大数上的结果可能根本得不到预期的正确结果！

13.1 超限

比舍入误差更严重的是超限问题。这个问题可能出现在变量的值发生变化的时候。假设我们要计算男孩给女孩献花这件事情的浪漫程度，那么女孩对男孩的喜爱应该会因为献花而增加一点点。于是我们就写出如下的算式：

Affection_Disdain 的增量=0.01

换句话说，如果男孩向女孩献花，那么女孩对他的喜爱就会增加 0.01 这么一点点。到此为止，这看起来还不错。

但是，不妨设想男孩向女孩献了101次花之后会出现何种结果。按照上面的算式，此时女孩对男孩的喜爱值就成了1.01。这就产生了两个严重问题：其一，根据我们的设定，1.00是上限值，因此喜爱值应该不能超过1.00，而此处的计算结果竟然超过了上限；其二，浪漫这件事情远不止献花那么简单，刚开始献花也许效果会比较好，但反复献花的效果肯定是有限的。

我们先来解决上述的第二个问题。男孩反复献花，后续献花的效果自然不如之前的效果好。那么：

Affection_Disdain 的增量=0.01/献花的次数

也就是说，男孩第一次献花时，女孩对他的喜爱会增加 0.01，而第二次献花时只会增加 0.005，第三次增加0.0033，第四次增加0.0025，以此类推。随着献花次数的增加，效果越来越小。这看起来似乎就没问题了，是不是？

别忘了，上述的第一个问题仍然存在。假如女孩对男孩的喜爱值已经是 0.99 了，那么当男孩第一次向她献花的时候，喜爱值就变成了上限值 1.00。如果男孩再献花一次，这个值就会变成1.005，又超越了上限。这样的缺陷必须解决。

这种蹊跷的事情不会发生的吧？！话说回来，谁的爱会从 0.99 开始呢？那未免也太完美了吧！恐怕罗密欧与朱丽叶之间的爱也达不到0.99这么接近完美吧？！

与计算机打交道，最大的经验教训就是永远不要抱有侥幸心理。在计算机的世界里，凡事只要有可能发生，那么迟早一定会发生。一旦发生没有料到的事情，麻烦就大了。我们不能把设计的成败建立在侥幸的基础上。只要考虑不够周全，迟早会碰上意外情况。这个问题是绕不过去的。

13.2 有界数值

我们需要的解决方案正是有界数值。这是个奇怪的设计，但是却能很好地解决我们的问题。

不妨假设目前女孩对男孩的 Affection_Distain 值为 0.60。现在男孩向女孩求婚了，她变得如此欣喜，以至于对他的 Affection_Distain 会因此增加 0.50。然而，如果我们直接在既有值上增加，那么就会得到1.10的结果，超越了上限。图13.2描述了这个问题。

图13.2 增量过大，超过了上限

解决这个问题的办法是，不要直接追加 0.50，而是把 0.50 作为比例，将其与当前值具上限距离相乘得出增量。不妨从百分比的角度来思考：女孩的 Affection_Distain 当前值是60%，如果我们直接增加 50%，那么就会超限。于是，我们改为这样计算增量：增加当前值与上限之间距离的50%。这样一来，无论增加多少次都不会超过上限了。

要理解这个算法的意义，多举几个例子试一试即可。比如当前值为0.90，如果增量比例为0.80 （即80%），那么增加的结果就是0.98，是通过0.90 + (1.00-0.90) × 0.80 计算出来的。

图13.3 保持不超越上限的方法

如果出现负数会怎么样呢？比如女孩当前对男孩的 Affection_Distain 值为-0.20，然后男孩做了些让她高兴的事情，使得她对男孩的喜爱增加了 0.2 的比例。这又该怎么算呢？

这样也没有问题。图13.4展示了计算的过程。

图13.4 自负值开始计算增量

由于当前值-0.20 与上限 1.00 的距离是 1.2，因此我们按照 0.20 的比例来计算增量，即 0.2 x 1.2，就得到净增量 0.24。换句话说，如果你善待讨厌你的人，那么他们可能就会因此改变对你的看法。

好吧，这样似乎确实凑效。但是如果改变量本身是负的会怎么样呢？比如女孩对男孩的 Affection_Distain 当前值为-0.2，然后男孩又欺负了她，导致她的Affection_Distain下降了0.2的比例，这又该怎么算呢？

图13.5展示了这种情况下的计算过程。

不难看出，按比例计算的办法总是有效的，可以保证在建模中使用的数值不会超过特定的范围。这个方法解决了困扰笔者多年的难题。

上述讨论包括了有界数值的加减法。一家名为Choice of Games[7] 的公司开发一套与之类似的系统Fairmath，不过这个系统并没有包含我们接下来要探讨的技巧。

图13.5 朝负方向移动

13.3 钟形曲线与人

前述的有界数值的计算方法还有一个好处就是，它能很好地体现人格特征和人际关系成钟形曲线（bell curve）分布的特点。Nice_Nasty是个重要的人格属性，我们用它在故事世界中描述人物的好坏。在有界数值的控制下，最好的人的 Nice_Nasty 值为+1.0，而最坏的人的值为-1.0，一般普通人的Nice_Nasty值则是0.0。这样的设定一下子就解决了故事世界设计当中的许多问题。

那么我们如何设定人格属性值的标准呢？Nice_Nasty 值为 0.5 到底意味着一个人有多好呢？这个人是好得会与别人分享冰激凌蛋筒，还是好得愿意捐献器官拯救别人的生命呢？这样的标准可不太好界定。

运用有界数值和钟形曲线分布，我们就不必拘泥于好坏的绝对标准的界定。

如图13.6的钟形曲线所示，大部分人都靠近平均值，而只有少数人会分布在两个极端。

图13.6 钟形曲线能够描述常见人格属性的分布特征

13.4 技术细节

下面来谈谈如何用计算机实现有界数值。虽然讨论会涉及到程序代码，但是这些代码相对简单，理解起来应该不难。如下的Java程序语言代码实现了从普通数值到有界数值的转换：

float boundedTransform(double unboundedNumber) {

if (unboundedNumber>0.0)

return 1-(1/(1 + unboundedNumber));

else

return (1/(1-unboundedNumber))-1;

}

把有界数值转换为普通数值的代码如下：

float boundedInverseTransform(double boundedNumber) {

if (boundedNumber>0.0)

return (1/(1-boundedNumber))-1;

else

return 1-(1/(1 + boundedNumber));

}

要对有界数值进行算术运算，需要现将其转换为普通数值后进行运算，然后再将其转回有界数值。应当注意的是，我们需要在运算中避免使用乘法和除法，因为有界数值的乘除可能导致一些无法预期的麻烦。一开始我们不妨只进行加减运算，等到对有界数值的认识更加深入之后再慢慢考察如何进行乘除运算。

要点22

在建模时尽可能采用有界数值。

13.5 调和操作

有界数值的加减已经能够解决相当多的建模问题了。然而，我们又该如何对计算公式中的特定变量实现加权呢？假设角色甲为之前的冒犯向角色乙道歉，那么我们就需要编写一个计算公式来确定角色乙是否会接受角色甲的道歉。这个算式涉及两个变量因素：角色乙的 Nice_Nasty 和角色乙对角色甲的 Affection_Distain。如果我们认定感情因素比单纯的好坏要更重要一些的话，那么如何增加 Affection_Distain 的权重呢？传统的做法是让权重因子与需要得到加权的因素直接相乘，比如Affection_Distain × 2 说明这个因素在计算中比其他因素重要。如此一来，有界数值的乘法即可解决问题。

不过，还有一个更好的方案能够以加权的方式综合两个有界数值[8] ，那就是使用调和操作。根据笔者的经验，调和操作是为两个变量的加减运算实现加权的最佳方案，而且还能解决不少其他问题。

调和操作需要3 个输入参数，分别用x, y, Weight来指代。图13.7 展示了调和操作的原理。

图13.7 调和操作的工作原理

如图13.7 所示，x 和 y 代表数轴上的两个位置。理解工作原理的关键在于标有“间距：0.8”的直线段：我们可以将其想象为另外一个有自己单独的计量标准的加权数轴，其两端分别为-1.0和+1.0，其中点为 0.0。我们希望施加的权重（Weight 变量）是这个加权数轴段上的某个值，这个值决定了权重对变量的调和效果。

在图13.7 的例子当中，如果 Weight 值为 0.0，那么调和之后的结果值就会是加权数轴中点的位置对应的大数轴上的值，即+0.2。如果Weight值为+0.5，那么调和值就是加权数轴+0.5的位置所对应的大数轴上的值，即+0.4。而如果Weight值为-0.5，那么调和值就是加权数轴-0.5的位置所对应的大数轴的值，即0.0[9] 。

之所以称其为调和操作，正是因为它能够按照任何比例将两个数值调和起来。

调和操作特别适合用来实现各种加权的设计。假如Joe（乔）向Mary（玛丽）撒了谎，那么她会相信他吗？影响她决策的有3个因素：她对乔的Trustworthy_Mendacious（信任程度）；乔的话的Likely_Unlikelyness （可信度，即玛丽根据自己对乔的了解而做出的判断）；玛丽自身的Gullible_Suspicious（体现是否容易轻信他人的警觉程度）。

• 她越信任乔，就越可能相信他说的话。

• 乔的话的可信度越大，她就越可能相信他。

• 她越是容易轻信他人，也就越可能相信他。

我们不妨把Trustworthy_Mendacious看作x，把Likely_Unlikely看作y，把Gullible_Suspicious看作Weight权重，然后进行调和操作。表13.1列出了一部分不同取值时的调和结果。

表13.1 Weight权重与调和结果

我们怎么知道 Gullible_Suspicious 就应该是权重呢？为什么不是另外两个变量之一呢？

这确实是个问题。为了解释这个问题，我们不妨看一看 3 个因素轮流作为 x、y、Weight 的所有组合情况下的调和结果。假设这3个变量的值分别为：

Trustworthy_Mendacious=+0.6

Likely_Unlikely=-0.2

Gullible_Suspicious=+0.4

3个变量轮流对应x、y、Weight，一共有6种组合，其调和计算结果如下：

Trustworthy_Mendacious, Likely_Unlikely, Gullible_Suspicious: Blend=+0.04

Trustworthy_Mendacious, Gullible_Suspicious, Likely_Unlikely: Blend=+0.52

Likely_Unlikely, Gullible_Suspicious, Trustworthy_Mendacious: Blend=+0.28

Likely_Unlikely, Trustworthy_Mendacious, Gullible_Suspicious: Blend=+0.36

Gullible_Suspicious, Trustworthy_Mendacious, Likely_Unlikely: Blend=+0.48

Gullible_Suspicious, Likely_Unlikely, Trustworthy_Mendacious: Blend=-0.08

如上所示，六种组合的情况下得出的调和结果差异非常大，可见各变量与 x、y、Weight 的对应关系如何对调和计算结果影响很大。下面是一些确定对应关系的经验之谈。

• 如果变量就其本质而言对计算结果具有某种不可逾越的限定性，那么一般就不适合作为权重因子。在之前的例子当中，Likely_Unlikely 的值对最终的计算结果就具有限定性，因为人只会根据自己认定的可信度来考察事物，对事物进行判断时不可能超出这个可信度。

• 如果两个变量在意义上存在抵触或对立的情况，那么一般他们应该一起对应x和y。

• 权重一般应该是体现某种偏好或倾向性的人格特征，因此例子中的 Gullible_Suspicious 比较适合作为权重因子。

调和操作的计算公式如下：

uWeightingFactor=1-((1-WeightingFactor)/2)

Blend=y*uWeightingFactor + x*(1-uWeightingFactor)

即使读者现在还不能完全理解这项公式也没关系，不过迟早还是应该掌握其背后的原理。虽然公式看起来比较繁复，但是也不过只是中学数学的水平。读者不妨将不同的 x、y、Weight 值代入公式，看一看计算结果如何，这样有助于获得更形象的认识。

13.5.1 单变量因素的调和

调和操作的用途很多，其中之一就是“放大”或“缩小”某个因素的值以改变其在算式中的影响力。如果我们想降低 Nice_Nasty 在某个计算中的影响力，那么就可以用 Blend(0, Nice_Nasty, 0)来替代算式中的 Nice_Nasty。这样一来，调和之后的值就只有原来的一半了。如果想缩减到一半以下，那么还可以代入大于0的权重参数；小于0的权重参数则会将其缩减至一半以上。

通过“放大”有界数值来提高其在计算中的影响力则稍微复杂一些，因为我们必须使用两个公式分别覆盖正值和负值两种情况：

IF (x>0) then use Blend(x, 1, 0)

IF (x<0) then use Blend(x,-1,0)

同样，权重因子的数值大小决定了放大的效果。在上面的例子中，权重因子为零。

13.5.2 双变量因素的调和

调和操作对于包含两个变量因素的计算也非常受用。在之前的例子当中，我们已经看到了调和操作如何以指定的比例综合两个变量。如果缩放的比例是个变量，我们同样可以应用调和操作。比如，用y变量指定的权重因子（即比例）放大数值x，可以使用如下的算式：

IF (x<0) then use Blend(x,-1,y)

IF (x>0) then use Blend(x, 1, y)

用y变量指定的权重因子缩减数值x，可以使用如下的算式：

Blend(x,0,y)

当然，调和操作并非出处都好用——有时候直接采用有界数值加减法会更好。不过一旦对调和操作的控制能力具备了深入的理解，我们就能经常地适时地运用它了。

要点23

有界数值的运算必须应用有界数值加减法或调和操作。

13.6 布尔运算

有些人觉得我们根本不需要跟那么多数值打交道，认为布尔运算就能提供“足够好”的实现方案。这些人的看法是错误的。

布尔运算使用布尔变量和布尔操作符。布尔变量的值只能为真或假，比如我们可以用值为真的布尔变量来表达“苏格拉底是不能永生的凡人”这一命题——“苏格拉底有口臭”也可以用布尔变量来表达，不过我们不知道它的值为真还是假。

布尔运算总共涉及 4 种布尔操作：NOT（非）、OR（或）、AND（和）以及 Exclusive-OR （异或）。

NOT 操作对输入的布尔值取反，比如表达式 NOT(“苏格拉底是不能永生的凡人”)的结果为假，因为“苏格拉底是不能永生的凡人”为真。无论“苏格拉底有口臭”是真还是假，NOT(“苏格拉底有口臭”)的结果肯定与其相反。虽然NOT操作看起来似乎简单得没什么意义，但是实际上它会经常被用到。

OR 操作接收两个布尔变量作为输入，其返回的布尔值结果遵循这样的规则：如果两个输入参数当中有任何一个为TRUE（真），那么结果为TRUE，否则结果为FALSE（假）。比如：

OR(“苏格拉底是不能永生的凡人”，“苏格拉底是河马”)=TRUE

显然，如果两个输入值都是TRUE，那么结果也为TRUE：

OR(“苏格拉底是不能永生的凡人”，“苏格拉底是人类”)=TRUE

AND 操作也接收两个布尔变量作为输入，当且仅当两者都为 TRUE 时，其返回结果才为TRUE。比如：

AND(“苏格拉底是不能永生的凡人”，“苏格拉底是人类”)=TRUE

AND(“苏格拉底是不能永生的凡人”，“苏格拉底是河马”)=FALSE

Exclusive-OR（异或）操作接收两个布尔变量为输入，其返回的布尔值结果遵循这样的规则：如果两个输入有任何一个为TRUE，并且另一个不为TRUE，那么结果为TRUE；否则结果为FALSE。比如：

Exclusive-OR(“苏格拉底是不能永生的凡人”，“苏格拉底是人类”)=FALSE

Exclusive-OR(“苏格拉底是不能永生的凡人”，“苏格拉底是河马”)=TRUE

Exclusive-OR(“苏格拉底爱吃汉堡包”，“苏格拉底是河马”)=FALSE

Exclusive-OR(“苏格拉底爱吃汉堡包”，“苏格拉底是人类”)=TRUE

这就是布尔运算的全部内容。输入参数的值不是真就是假，运算通过4个布尔操作进行，得到真或假的结果。布尔运算是否有用完全取决于我们如何运用布尔变量和布尔操作，并不是所有时候都管用。下面我们来看一些例子。

哈姆雷特是人类。

哈姆雷特是丹麦人。

哈姆雷特没有腿。

哈姆雷特爱他的母亲。

哈姆雷特信任他父亲的鬼魂。

哈姆雷特爱奥菲利亚。

哈姆雷特想寻短见。

哈姆雷特恨御前大臣波洛涅斯[10] 。

前两个命题显然为真，第三个命题显然为假。然而之后的5个命题的情况就不是那么简单直接了。这五个命题都只能说是半真半假或者可真可假：哈姆雷特固然对他母亲具有正面的感情，但同时也怨恨她改嫁他的叔叔；他似乎比较相信鬼魂说的话，但是也存有疑惑；他可能确实爱着奥菲利亚，但也说过相当难听、毫无爱意的话；他大概确实严肃考虑过自杀，但是并没有付诸于行动；他对奥菲利亚的父亲波洛涅斯确实没有好感，但是也没有什么深仇大恨。

不难看出，后面这5个命题既不好说一定为真，也不能说一定为假，他们的情况无法用简单的布尔值来描述，却可以通过数值的形式得到很好的表达，比如：

Affection_Disdain[Hamlet, Gertrude]=+0.4

Trust_Suspicion[Hamlet, ghost]=+0.5

Affection_Disdain[Hamlet, Ophelia]=+0.6

Will_to_Live[Hamlet]=+0.2

Affection_Disdain[Hamlet, Polonius]=-0.3

由此我们可以说，布尔运算对于描述《哈姆雷特》这个故事而言是远远不够的——只用布尔运算来创建《哈姆雷特》故事世界根本是不可能的。不过，以数值运算为基础来创建这个故事世界在理论上是可行的。当然，以我们现有的互动叙事实现能力，创建《哈姆雷特》这样复杂的故事世界还只能是遥远的梦想；不过，至少我们知道这是有可能实现的。

难道我们不能用大量的布尔变量来详尽地定义哈姆雷特的人格模型吗？如果用一千个布尔变量，应该能够很精确地定义其人格的方方面面吧？

那么大量的布尔变量该如何使用呢？谁会真的写出下面这样的式子呢？

If (Hamlet_Loves_Gertrude AND Hamlet_resents_Gertrude_Marriage AND (Hamlet_Understan-ds_Gertrude_Dilemma OR Hamlet_Thinks_That_Claudius_Forced_Gertrude_To_Marry_Him) AND Gertrude_Is_Nice_To_Hamlet AND Hamlet_Is_Nice_Back_To_Gertrude AND...

组合大量布尔变量的办法是行不通的！通过简单的非此即彼的界定是不可能很好地描述人类行为的，因为这样的组合太过复杂。

照你这么说，数值运算还不是一样吗？数值还不是一样无法详尽地描述现实世界！

不妨回头再看一看图13.1——黑白像素的图像效果显然无法较好地体现脸部特征；3 比特像素的图像就稍微好一点；8 比特像素的图像就好得多，然而即使是灰度和纹理表现较丰富的 8 比特像素图像也无法捕捉到脸部的全部细节特征。虽然任何模型都不可能与现实相媲美，但是在表现力方面，8比特的版本难道不比黑白版本好太多了吗？

13.7 本章小结

数值计算系统对于作为故事世界创作者的我们而言也许显得有些繁杂，但是一旦我们开始使用数学模型，就会认识到它的优越性。有界数值就像一种计量系统，虽然有点奇怪，但是在建模时非常有用。

第14章 人格模型

前面的章节从抽象的角度探讨了建模的问题。本章则要进入具体实践的层面，探讨互动叙事系统的核心组件——人格模型（personality models）。互动叙事的人格模型必须满足 4 个要求：一是要完备；二是要精练；三是人格属性要具有正交性；四是人格属性必须是对行为的直接反映。

14.1 完备

人格模型由各种人格属性组成，它们必须完整涵盖故事世界当中所有可能的行为。如果故事世界包含谈情说爱相关的行为，那么就需要设立诸如爱欲或吸引力之类的人格属性。而如果故事世界是针对儿童的，那么可能就不必考虑任何谈情说爱相关的属性了。如果故事世界是以动作场面为主，没有太多感情戏份，那么我们就只需要设立一两个情感方面的属性即可；而如果故事世界的主题是情感相关的，那么就需要很多感情属性。

要点24

人格模型必须完整涵盖故事世界所包含的行为。

14.2 精炼

有一些故事世界创作者可能会不知不觉地设立大量人格属性，以期包含所有的可能性。他们一旦遇到之前没有涵盖的新问题，就追加新的属性。虽然这样做的确能解新问题，但是人格属性数量过多最终反而会成为设计实现上的障碍——属性越多，就越难决定属性在具体情况当中的适用性。优秀的人格模型必须保持精炼，便于创作者记忆和掌控——如果每次运用人格属性的时候都须要先斟酌哪个属性最适合，那么可能就说明模型已经过大了。

要点25

人格模型必须保持精炼。

14.3 正交

人格模型中的各个属性在表达的意义上不能有交集，否则的话，在特定情况下就很难确定应该适用哪一个属性。比如 GoodHumored_IllHumored 和 Friendly_Aloof 这两个属性，虽然它们不尽相同，但是在意义上却有交集。这样的意义重叠会导致一系列的问题。

假设故事世界中一个诸事不顺的倒霉蛋遇见了一位陌生人，那么我们就不得不同时将两个属性纳入考虑才能计算出人物须要做出的反应。对于意义部分重叠的两个属性而言，要找出适用于此而不适用于彼的情形是很困难的。而如果想不出这样的情形，那么就说明两者根本没有功能上的区别，应该被概括为单独一个属性。

我们不妨再用视觉化的比喻来说明这个问题。如果一座城市的街道都是横平竖直的，以相互垂直或平行的方式排列，南北向的道路用数字编号，而东西向的道路用英文字母编号，那么从第3大道与B街的路口前往第8大道与D街的路口，就必须往南走5个街区并且往东走2个街区，没有其他可能性了。

再来看一看如果城市的街道呈三角网格状排列的情况是怎么样的（如图14.1所示）。

图14.1 三角网格状的城市道路设计

在这样的设计中，从一个地方到另一个地方总是有多重可能组合路径。比如，从1st Avenue 与A Street 的路口走到3rd Avenue 与E Streetde 路口，我们即可先往东走两个街区然后往东南走两个街区，也可以先往东走四个街区然后往西南走两个街区。

没有哪个城市会真的这样规划道路，因为这样设计并不明智。能用两组方向组合（东西、南北）就能规划的事情，实在没必要用三组方向来规划。而只用两组方向来描述，就意味着东西向的道路和南北向的道路是相互垂直的——这就是所谓正交的意思[11] 。

正交其实正是让人格模型保持精炼的手段。如果两个属性是正交的，就意味着两者没有相关性，在意义上没有重叠。

要点26

通过实现属性之间的正交化来使模型保持精炼。

14.4 对行为的界定

建立人格模型当然不是为了做学术研究，其实用目的是界定故事人物的行为。我们必须考虑设立的人格属性界定了何种行为。Spiritual_Materialistic 也许看起来是个很重要的人格属性，但是如果所涉的故事世界并不包含任何相关内容，那么它就不应该被纳入人格模型当中。因此，只有在确定了故事世界的基本内容之后，我们才能着手建立人格模型。我们需要根据“用户做什么”这个问题列出了故事人物需要的动词，然后才能建立人格模型，让各个属性分别体现这些行为。

设计人格模型的关键就在于此。我们不能在理清故事世界所需的动词之前就开始建立人格模型。当然，我们也不必等到所有动词都确定之后才开始，因为动词的数量往往随着故事世界的深入设计而发生变化。尽管如此，我们应该对故事人物应该具有的基本行为作出限定，从而指导人格模型的设计。只有在这个基础上，我们才能开始逐个考察个人格属性，看看它们如何影响故事人物的决策和行为。

能影响许多决策行为的人格属性往往是最需要的，而那些只能在极少数特定情况下应用的属性则完全可以丢弃。比起“人格模型”这个名称来，或许“行为控制模型”更为贴切，因为建模的关键在于行为，不在于内在人格。

要点27

人格模型必须以故事世界的行为特征为基础。

14.5 过度特化

故事世界创作者在建模的时候，经常会因为遇到了设计障碍而忍不住追加新的人格属性。假如故事世界创作者在设计“小鹦鹉的主人的喜怒哀乐”故事世界时，需要针对动词“Massage （按摩）”进行建模，以描述主人公爱抚受伤的小鹦鹉的行为，那么她就需要一种人格属性来限定这个动词。由于没有合适的属性可用，她就创建了一个新的属性 Finger_Sensitivity，用来避免过度的抚摸——Finger_Sensitivity 高的角色就不会太喜欢抚摸鸟类。然而问题在于，这样一个属性只适用于抚摸鸟类。虽然它能很好地解决手里的问题，而且似乎也不影响既有的设计，但是这种过度特化的人格属性有了第一个，就会有更多，导致整个故事世界充斥着各种特化属性，比如Sweet_Tooth、Loves_The_Beatles、Flatulence_Proclivity、Stays_Up_Late、Sensitive_To_Loud_Tweeting，甚至Doesn’t_Subscribe_To_A_Newspaper_So_Has_Nothing_To_Line_The_Birdcage_With等等，整体设计就会因此而变成棘手的问题。设立人格属性必须适可而止，防止过度特化，把握整体大局观。

要点28

不要针对过于特化的动词创建单独的人格属性。

14.6 人格属性的类型

有 4 种基本的人格属性类型适用于人格模型。第一类是通用的内在人格特征，比如贪婪、欲望、尊严等。这类属性一般不会发生变化，只在特殊情况下可能会改变——比如《星球大战》中的黑武士背叛黑暗大帝从而拯救他的儿子天行者卢克，《指环王》中的佛罗多被魔戒的邪恶力量所征服，或者《黑客帝国》中的尼奥最终对自己的超级力量获得了全新的认识和掌握。不过归根结底，这些属性不应该经常发生变化。

我们不妨将这第一类属性称为“第一人称属性（first-person traits）”，因为这类属性只会与单个人物角色相关联，在数据结构中用一维数组来表达，比如：

Greed_Generosity[Gordon_Gecko], Anger_Fear[Slim_Jim]

第二类人格属性称为“第二人称属性”，是一个人物对另一个人物的第一人称属性的看法，在数据结构中用二维数组表示。读者不妨尝试先将其看作两个人之间的某种关系属性，然后就会发现，还是将其看作感知到表征属性更有利于清理思路。

上述这两类第一人称视角（内在的属性）和第二人称视角（他人观察到的表象的属性）的属性可能初看起来有点别扭，不过一旦将其放到更大的上下文当中就会发现这种分类方法的意义。比如“信任（trust）”这种关系，我们完全可以将其看作是一个人对另一人的诚信度（honesty）的看法。再比如一个人对另一个人的 Good_Bad 的表象认知也完全可以理解为前者对后者的Affection_Distain。

此外，第二人称属性并不一定具有对称性。也许甲非常痛恨乙，而乙却有可能只是对甲没有太多好感而已。张三也许非常信任李四，而李四却有可能根本不信任张三。第二人称属性，即“一个人对另一个人的内在属性的看法”这种设定，还有一个额外的好处就是，它可以类推扩展至第三方（从数据结构的角度来看即第三个维度），由此得到第三类人格属性，即所谓第三人称属性（third-person traits）——张三对“李四对王五的看法”的看法。这听起来相当绕弯子，然而这种第三人称视角的看法其实是颇为常见的，比如“不对，我觉得李四从来都不相信王五”——说话者表达的看法是“第二个人对第三个人有负面看法”。再比如，“不要同时邀请甲和乙来参加派对，因为他们合不来，邀请其中一个就行了。”图14.2展示了各个维度的属性之间的关系。

第四类人格属性是所谓“倾向（accordance）”变量，它代表一个人物角色对另一个人物角色内在属性的看法的倾向性。典型的例子包括“容易受骗/轻信他人（gullibility）的倾向性”及其对立面“疑心程度（suspiciousness）”。类似地，“天真幼稚（naive）”和“愤世嫉俗（cynical）”可以用来表达Nice_Nasty的倾向性。任何能反应基本人际关系的人格属性都应该有相对应的倾向变量。

图14.2 第一、第二及第三人称视角的属性关系图

14.6.1 五因素模型

五因素模型（Five Factor Model，又称“Big Five”，即五大性格模型）[12] 是心理学领域最常用的人格模型，它包括如下几种。

• 开放性（open）：反应好奇心、对新鲜事物的喜好、想象力等。

• 尽责性（conscientious）：反应组织性、纪律性和责任心等。

• 外向性（extraverted）：反应社会交际能力等。

• 亲和性（agreeable）：反应同情心、合作精神和利他精神等。

• 情绪不稳定性（neurotic）：反应情绪的状态和控制力。

针对互动叙事，笔者将这五种因素转译如下。

• Adventurous_Cautious：反应好奇心、想象力，以及对新鲜事物的追求或抵触程度。

• Disciplined_Sloppy：反应组织性、纪律性和责任心。

• Sociable_Solitary：反应社交能力，比如合群或孤僻等。

• Friendly_Unfriendly：反应热情、有亲和力或者冷漠、有敌意等。

• Anxious_Confident：反应情绪的稳定性，比如情绪化或者擅于克制。

那么，这五种经典人格属性是否能够满足前述的互动叙事人格模型的要求呢？总的来说，五因素模型在完备性、精炼性和正交性方面都做得相当好。然而，它们在界定行为方面就显得不太实用了。五因素模型是对人格的科学考察，适合用来描述真实世界当中的人；而互动叙事对人格的要求与心理学对人格的要求还是相当不同的。真实世界中的人往往比戏剧里的人物要乏味得多：前者往往行事谨慎，后者往往敢作敢为；前者往往规避风险，而后者则无所畏惧；前者大多接受社会行为规范的制约，而后者则往往打破常规、探索人类生存状态的极限。基于这些考虑，笔者决定放弃五因素模型——将来一定会有人能够行之有效地利用它吧。

要点29

为故事世界建立人格模型要以实用为本，不要追求仿真度和精确度。

啰嗦了这么多，你能不能给出一种符合你要求的人格模型呢？

笔者在人格模型上做了许多尝试，最终得出的结论是：只包含3个人格属性的简单模型就能满足大部分故事世界的需求。

14.6.2 Nice_Nasty

这一属性用来代表人物角色基本的品性好坏，比如《星球大战》中的莉亚公主非常好，而黑暗大帝则非常坏。其对应的第二人称属性 pNice_Nasty（p 即 perceived）代表一个人对另一个人的喜好程度。换句话说，我们喜欢一个人就意味着我们认为这个人很好；而如果我们讨厌这个人就意味着我们认为他很坏。相应的第三人称属性tNice_Nasty（t即third-person）代表一个人所认定的第二个人对第三个人的喜爱程度。对应的倾向属性aNice_Nasty（a即accordance）代表一个人认定另一个人的好坏（比如友善程度、和蔼程度、宽厚程度等）的倾向性。

等一下！你好像把好几种并不相同的东西全揉到了一起呀！宽厚（magnanimity）跟友善（friendliness）不是一回事儿吧？我们认定一个人的好坏程度也并不是我们对其的喜爱程度吧？

没错，笔者把几种不同的概念杂合成了一个属性，这不过是艺术创作过程中的决策。艺术家通过简化来实现更明晰的表达。小孩子画画的时候，一开始用的大概都是几种或十几种颜色的彩色笔；随着孩子的不断成长和绘画水平的提高，采用的颜色才会越来越多。倘若一开始就把成千上万种颜色笔交给孩子用，恐怕孩子也根本不知道该如何利用。我们在互动叙事的探索之路上才刚刚起步，暂时保持简单才是明智的策略；等到有才华的人在这方面实现了新的创新和发展再扩充也不迟。笔者的经验教训是，目前我们还必须保持简单。

14.6.3 Honest_False

这个属性代表人物角色的正直程度（integrity）。它不仅说明这个人物是否说真话，还描述了诚信度。显然，我们可以由此将对应的 pHonest_False（一个人对另一个人的 Honest_False 的认定）看作信任（trust）程度，并且把 aHonest_False（即 Honest_False 的倾向属性）看作这个人的轻信（ gullibility ）或疑心（ suspiciousness ）的程度。这与 Nice_Nasty 的情形类似：我们可以将pNice_Nasty 看作一个人对另一个人的喜爱程度，并且把 aNice_Nasty 看作一个人对人的好坏的普遍看法（即倾向性）。

14.6.4 Willful_Pliant

这是3个基本属性当中最不容易理解的一个。意志很强（Willful_Pliant值偏高）的人往往是固执、强势的，或者支配欲很强；与之相反（Willful_Pliant 值偏低）的人往往是羞怯、内向或者顺从的。由此，pWillful_Pliant 的意义就有点不好理解了。一个人对另一个人的 Willful_Pliant 的认定有点像是恐惧感（fear）或警惕性（wariness）——如果甲对乙的 pWillful_Pliant 值偏高，那么就意味着乙在场的时候，甲会小心行事，因为甲意识到乙会比较强势。倾向属性 aWillful_Pliant 主要关乎内在属性 Willful_Pliant 的对立面，因为内在属性本质上体现的是自己与他人的关系。强势的人不会倾向于认为别人也是强势的，而是会将其他人看作是容易被说服的顺从之辈；羞怯顺从的人则会倾向于把其他人看作是强势的。

笔者的经验是这3个基本属性的组合就几乎能够满足绝大部分需求了。虽然它们在许多方面的表达上都有不足，但是却简单易用。我们理解为喜爱程度的 pNice_Nasty 大概与浪漫爱情中的爱意不尽相同，罗密欧也不会只是把朱丽叶看作是世上“最好”的人，不过我们通过3个属性实现的近似描述对于大部分故事世界而言已经足够好了。

14.7 在三个核心人格属性的基础上扩展

这 3 个属性所能覆盖的范围还是太窄小了。还有没有什么可以进一步完善人格模型的办法呢？

以笔者的经验来看，Nice_Nasty、Honest_False、Willful_Pliant 这 3 个属性已经是互动叙事人格模型的最优组合了。当然，如果要进一步扩充模型，下面列举了一些可能的扩充属性。

14.7.1 Loquacious_Taciturn[13]

如果故事世界涉及说三道四、传播流言蜚语之类的事情，那么我们就需要一种确定人物是否会传话的属性。Willful_Pliant是3个基本属性当中与此最有相关性的属性。如果须要从行为上区分爱说闲话的人和守口如瓶的人，那么就需要额外的属性来加以控制；否则的话，或许最好假定所有人在这方面的特质是相同的。

14.7.2 Generous_Greedy

贪婪是许多故事中的重要动机，因此有可能须要独立出来专门处理。我们也可以通过Nice_Nasty与Willful_Pliant的组合来实现近似的效果——贪婪的人往往具备nasty和willful的特征。

14.7.3 Chaste_Licentious[14]

这个属性显然适用于涉及情爱关系的故事世界。

14.7.4 Humble_Proud

这看起来似乎是个颇为有用的属性，不过它其实与 Nice_Nasty 和 Willful_Pliant 都有一定的交叠。不妨这样考虑：我们见过多少既 humble 又 nasty 的故事人物呢？既 humble 又 willful、既proud 又 pliant，或者既 nice 又 proud 的呢？这样的组合是非常少见的，因此也许我们尽量避免使用Humble_Proud。

14.7.5 Ascetic_Sensual

这个属性可以经由 Generous_Greedy 来实现近似，不过在特定的故事世界里还是会非常受用。尽管如此，这还不能算是常见的属性。

14.7.6 Smart_Stupid

乍看之下，这似乎也是个非常有用的属性，不过我们还是要仔细考虑这样的属性会如何影响行为：故事世界中的角色是否会单单因为智力上的差异（愚蠢或聪明）而做出不同的选择？这样的情况的确存在，不过也不多见，也许还不足以说服我们使用该属性。

14.8 外形特征

有一部分可能用得上的人格属性其实是外形特征（physical traits），比如：

Beautiful_Ugly

Strong_Weak

Short_Tall

Young_Old

Skinny_Fat

笔者在此提出警告，选用时一定要谨慎，要仔细思考这些问题：这样的属性能为故事世界带来何种戏剧性？在自己熟知的优秀故事当中，有哪些故事真的把这样的外形特征作为重要的戏剧性因素？如果《指环王》中的佛罗多身强力壮、身形高大，较为年长，或者是个胖子，那么故事是否会因此而有所不同？《黑客帝国》中的主人公尼奥呢？马克·吐温笔下的汤姆·索亚呢？哈姆雷特呢？选用外形特征属性的时候一定要谨慎；如果真的认为需要使用它们，那么不妨好好想一想，自己正在创建的到底是互动叙事的故事世界还是电子游戏。

14.9 情绪

故事人物的各种情绪当然也必须得到表现。这种表现情绪的人格属性可能随时发生变化。一种情绪可能会因为某个特定事件的发生而突然高涨，又随着时间的推移逐渐消退下来。假如张三骂李四是个卑鄙的滑头，那么李四的愤怒情绪就应该突然高涨，并且可能导致他反击，随后愤怒情绪便逐渐消退。如果后来张三又一次辱骂了李四，那么这一次引发的愤怒情绪就应该累加至第一次剩余的愤怒情绪，并且可能导致李四变得怒不可遏。

情绪与人格属性类似，也具有正负两个极端情况，因此也可以用两个对立的情绪状态来界定变化范围，用0.0代表正常状态，并且能够随着事件的发生而发生正负变化。

笔者在设计时采用了四种情绪。

14.9.1 Happy_Sad

这种情绪的意义显而易见，不再累述。

14.9.2 Aroused_Disgusted

这似乎是个奇怪的组合，不过同时具有aroused（兴奋、激动）和disguested（厌恶）两种情绪似乎是不太可能的，因此说两者相互对立似乎也不为过。在第7章提到过的美国喜剧影片《衰鬼上错身》（All of Me）中，史蒂夫·马丁（Steve Martin）饰演的律师被鬼使神差地附上了女富翁的心智。在一个电影桥段中，一位美丽的姑娘试图勾引这位律师，律师也对她着了迷；而律师体内的女富翁心智则通过在他脑海里制造动物尸体的恶心画面来干涉律师的兴奋情绪，效果也是相当不错的。

14.9.3 Angry_Fearful

同样，这对情绪组合似乎也有点怪，不过既愤怒又恐惧的情况似乎也不太可能出现。突然从恐惧转为愤怒，或者突然从愤怒变成恐惧，这倒是完全可能的，两者很难同时具备。这一属性是“面对还是逃避”这类决策的情感基础。

14.9.4 Energetic_Tired

这其实更像是身体的物理属性，而非人格属性，所以可能也不太常用。

14.10 倾向性的计算公式

为人格模型设定属性就已经是相当艰巨的工作了，不过这仅仅只是开始。人格属性本身毫无用处可言；建立人格模型的最终目的还在于让人物角色做出合乎情理的决策。

所谓决策，就是面对各种可能性做出选择。需要决定的事情既不是“27”也不是“香蕉”这样的名词，而是决定做出哪一种动作。我们或许需要决定是购买 27 颗螺丝钉，还是要吃掉香蕉；不过真正的决策还在于选择动词——买（buy）或者吃（eat）。因此，设计师下一步的任务是创建一个系统，借此将人格模型与动词连接起来。这种连接可以通过数学表达式来实现，让数学表达式利用人格属性来计算出妥当的选择。笔者把这样的表达式称为“倾向性计算公式（ inclination formulae）”。

互动叙事创作新手总是喜欢通过布尔计算来解读选择，比如人物角色是否会执行某个动词。这样的实现方法显然太过简单。故事中的人物很少会面临这种非黑即白、一清二楚的抉择，而是会频繁地面对多种多样的选择，比如决定接下来该如何行事。不仅如此，这些决策几乎都不会有明显的对错之分。决策的戏剧性恰恰在于每种选择都合乎一定的情理——真正的问题总是在于“哪种选择最好”。要解决这个问题，唯一的办法就是用量化每种选择，以数值的形式区分选择的优劣。数值最高的选择就是最好的，代表这个选择最“诱人”。笔者把这个数值看作是人物角色执行某个动词的倾向性。

倾向性计算公式包含人格和上下文两个缺一不可的元素。故事人物的人格属性与故事形势综合起来塑造了倾向性。我们不妨以酒吧闹事的场景举个例子。假如 Jim（吉姆）说 Tex（泰克斯）是个卑鄙的地头蛇，那么Tex如何回应呢？我们假设Tex在当前形势下有3种选择：其一，他可以对此一笑了之（laugh it off）；其二，他可以反唇相讥（insult）；其三，他可以跟 Jim 打一架（fisticuffs）。那么，Tex如何做出选择呢？

我们须要分别为三种选择便携三则倾向性计算公式。那么，须要用到哪些人格属性呢？显然， Nice_Nasty肯定是其中之一：

Tex 越是蛮横（nasty)，就越倾向于选择攻击性强的回应方式。其次，Willful_Pliant 也很重要，因为意志强的人不太会甘受屈辱。最后，还要考虑 Tex 对 Jim 的 pNice_Nasty；如果他们俩是老朋友，那么Tex可能会更倾向于做出一笑了之的反应。

每种选择都要将三个人格属性 Nice_Nasty、Willful_Pliant 和 pNice_Nasty 纳入考虑，于是应用调和操作似乎是最合适不过的了。前两个属性作为需要调和的两个值，第三个属性作为权重。如果Nice_Nasty 是绝对值很大的负值，而 Willful_Pliant 是很大的正值，那么 Tex 就很可能倾向于做出更具攻击性的回应；同时，pNice_Nasty 又能够调整这种倾向：如果它是很大的正值，那么就会导致Tex选择一笑了之。

首先来看第一个选择“一笑了之（ Laugh_It_Off ）”如何计算。对这个选择有利的条件是pNice_Nasty[Tex, Jim]和 Nice_Nasty[Tex]的值都大于零；不利的条件则是 Willful_Plaint[Tex]的值较大。我们用如下的公式来实现：

Inclination[Laugh_It_Off]=Blend(Willfl_Pliant[Tex], Nice_Nasty[Tex], pNice_Nasty [Tex, Jim])

如果作为权重因子的 pNice_Nasty[Tex, Jim]的值为正，那么调和操作将会使计算结果向Nice_Nasty[Tex]倾斜；反之，如果它的值为负，那么计算结果就会向 Willful_Pliant[Tex]倾斜。读者不妨尝试多代入几组不同的变量值，以便观察和验证公式的作用。把输入值和计算结果以表格形式列出来更有助于理解。

再来看第二个选择“反唇相讥（insult）”的计算公式如何实现。不难看出，第一个选择所采用的计算方式正好与第二个选择要求的相反，因此我们可以直接加以利用：

Inclination[Laugh_It_Off]=-Blend(Willful_Pliant[Tex], Nice_Nasty[Tex], pNice_Nasty [Tex, Slim Jim])

实现起来还算容易嘛！不过现在面对第三个选择“打一架（fisticuffs）”的算法实现，问题就有点刺手了：它在效果上必须与第二个选择的计算公式类似，但是程度更严重。换句话说，特定的属性值必须接近某个极端才能导致计算结果有利于选择条件的成立[15] 。实现方法倒是有好几个，不过目前我们就采用最简单的这个：

Inclination[Fisticuffs]=-Nice_Nasty[Tex]

这项公式的反应的思路是，好人无论如何都不会主动打架。

14.11 两道练习题

要想透彻理解本章探讨的内容，笔者建议读者不妨做两个练习。第一个练习是创建人格属性。我们之前已经给出并讨论了一系列属性，这个练习能让读者自己开动脑筋创造更多属性。

读者不妨尝试为“大学生谈恋爱”的故事世界建立人格模型，同时别忘了完备、精炼、正交，以及能够界定行为这3项基本要求。练习的结果应该是一系列人格属性，每个属性都要求有详细的说明以及对行为的界定情况。你创建的属性能够从多大程度上满足要求呢？练习完成之后，不妨通过如下问题来做检查。

• 人格模型包含多少个属性？别忘了，越少越好。

• 有哪些行为是这个模型无法覆盖的？比如，模型是否能够决定女生是应该热情地还是应该腼腆地亲吻男生？

• 故事世界创作者在使用这个模型时，是否总是能够很清楚地确定哪种情形应该采用哪个人格属性？是否存在不好决定该采用哪个属性的情形呢？是否可能存在需要同时运用许多属性的情形呢？

第二个练习是修改本章给出的倾向性计算公式。首先可以通过电子表格或其他程序实现既有的计算公式，然后通过输入不同的属性值来观察计算结果，并且思考是否有必要对公式做进一步的修改，比如是否须要对特定的属性做额外的加权处理等。

14.12 本章小结

设计人格模型的方法很多，不过好方法多，糟糕的方法更多。有些人觉得这太容易设计，于是东拼西凑出来一个就草草了事。设计人格模型的时候须谨记：实现故事世界的实用性比模拟真实世界的准确性更重要。

第15章 命运驱动故事世界

首先提出所谓“Fate（命运）”概念的是 Brenda Laurel[16] 。她在 1986 年的博士论文中描述了一种称为“the Playwright（剧作家）”的软件代理（software agent）概念[17] ，并且指出Playwright必须要能够执行如下13种功能。

• 在故事的发展过程中动态地构建情节。

• 设定即将发生的事件的特征。

• 改变故事世界。

• 改变故事角色的目标。

• 确定故事角色的可能行为。

• 模拟这些可能行为以确定其对情节的影响。

• 评估模拟的结果。

• 掌控未来事件的发生。

• 对故事中即将发生的事件的脚本进行公式化。

• 引导故事角色。

• 控制自身的运作。

• 记录已经发生的事件。

• 从已发生事件的结果总结经验教训。

当然，Laurel 女士发表论文的时候（1986 年），她还没有条件深入探究其中的技术实现细节。她给出的 13 个功能清单与其说是实作计划，倒不如说是愿望清单。尽管如此，她的论述仍然代表了对互动叙事的首次实质性探索。值得一提的是，Laurel 女士是从艺术而非技术层面来探索互动叙事的问题的；技术人士直到多年之后才开始逐渐跟上她的探索脚步。

少数研究人员接受了挑战，对互动叙事的技术实现做出了尝试。他们中的许多人现在都采用所谓“drama manager（戏剧管理器）”的概念来指代前面提到的software agent，即统管故事发展、指导情节按照特定方向推进的程序。笔者觉得采用“Fate（命运）”的提法更好，因为 Fate 这样的字眼源自故事叙述领域；相比之下，“drama manager”完全是衍生自计算机领域的术语，与“file manager（文件管理器）”、“sound manager（音效管理器）”和“user interface manager（用户界面管理器）”之类的计算机语汇如出一辙。

笔者认为 Laurel 女士给出的功能清单项目太多。虽然这些功能确实都是我们想要的，但是笔者认为我们还可以用更精炼的方式来设定 Fate 的功能。Fate 只需要 3 个基本功能，这 3 个功能直接提取自笔者对交互性的定义：“发生在两个或多个活跃主体之间的循环过程，各方在此过程中交替地倾听、思考和发言，形成某种形式的对话。”

15.1 倾听

Fate 必须监控故事的进展过程。所谓“倾听”，指的不仅是接受输入数据。我们倾听别人说话的时候，必须根据所采用的语言来解读别人发出的语音，将其转译为语句，并且分析它的意义。同样，Fate 必须以“抽象的戏剧构造”这种“语言”来解释故事中的“原始数据（即事件）”，还必须辨识行为模式，以便判别戏剧性的程度。

实现这一功能的简单方法是运用所谓“overview variables（概况变量）”。故事叙述引擎通过计算各个概况变量的值来评估故事世界的整体状态。比如我们可以计算故事中所有角色相互之间的喜恶程度值的总和，以便考察故事世界当中整体的“美好度”等级。总和值低意味着人与人之间的恨多于爱；总和值高意味着故事世界里充满了和谐的爱。Fate 通过监控这个总和值来决定如何实施控制。如果故事世界达到了快乐至极的极端状态，那么也许就可以引入一些不好的元素来予以平衡；如果故事世界已经堕落成了极恶的状态，那么也许就可以引入一些积极向上的元素加以缓和。

如此一来，故事世界所需的数据存储量就会比较大，因为各种变量值需要以多种方式进行统计，比如：整体信任程度（gross trust）、暴力行为的总体社会接受程度（social acceptability of violence）、闲散程度（dullness）、故事世界探索覆盖程度（storyworld exploration）、冲突（conflict），以及故事角色的逐个监控等。下面我们逐一加以说明。

15.1.1 整体信任程度

所谓整体信任程度，是指所有角色相互之间的信任度的总和。整体信任度低就意味着故事世界的社会协调性差，人与人之间普遍缺乏信任。社会状况总是能够通过社会群体的团结意识来体现，这种团结意识对于群体成员的行为具有深刻的影响。

15.1.2 暴力行为的总体社会接受程度

暴力行为的总体社会接受程度描述的是暴力行为的总量。暴力行为发生得越多，故事角色对它的抵制就会越小。这种情形体现了社会群体塑造社会规范的特点：第一起暴力行为发生时，整个群体都会觉得反感，并且会对暴力实施者予以谴责；随着暴力行为的增多，社会风气每况愈下，对暴力的容忍度也会越来越大[18] 。

15.1.3 闲散程度

闲散程度是对最近发生的100个事件用到的动词多少的量化。如果这个值很小，就意味着故事世界里没有太多事情发生，Fate应该引入一些煽情或者搅局的事件。

15.1.4 故事世界探索覆盖程度

故事世界里的每个动词是否都至少被应用过一次了呢？玩家是否在大部分时候都只运用了一小部分动词呢？故事世界探索覆盖程度旨在回答这样的问题。如下的公式就可以用来计算玩家对故事世界动词语汇的使用情况：

在这个公式中，N 是动词的总数目，counti是第i 个动词被使用的次数。理论上的理想结果应该是 1.0，代表每个动词恰好都被使用过一次。这种理想状况是不太可能实现的，因为实际结果一般都大于1。如果结果值超出了预设的特定阀值，那么Fate就应该实施干预。这个阀值会根据故事世界的不同而取不同的值，因此我们应该进行反复测试，仔细考察 Fate 计算出的结果值，以便确定阀值如何设定才比较妥当（即让故事世界的运作实现良好的娱乐效果）。Fate 通过这个阀值来决定是否对故事进行干预。

特别要强调的是，这里说的故事世界探索覆盖程度考察的不是虚拟世界里的空间探索，而是对动词语汇的戏剧性探索。

15.1.5 冲突

戏剧性冲突更是值得监控的全局变量，不过量化它并不容易。Fate 应该监控故事主人公（protagonist）的行为具有何种对抗性，要做到这一点，我们可以把故事中反面人物（antagonist）对主人公的行为所作出的情感反应进行量化。换句话说，如果主人公做了不利于反面人物的事情（或者反之），那么戏剧性冲突就产生了。

如果反面人物耍花招，设计陷害主人公，那么又该怎么处理呢？比如这位反面人物笑里藏刀，给主人公制造一种相安无事的假象，随后才伺机陷害。这在表面上看似乎没有什么戏剧性冲突，但是观众却知道其中必有蹊跷。这种情况下，Fate 岂不是会在一开始做出误判？

这的确是个问题，不过我们目前还无法处理如此复杂的戏剧性情形。总有一天我们将会不得不面对解决这个问题所带来的挑战，但是就目前而言，能够实现最基本的戏剧张力就已经是求之不得的了！

15.1.6 监控单个故事角色

概况变量是对整体形势的综合评估，同时我们也需要更细致的评估。对单个角色的行为监控要求创作者事先设定好对每个角色的行为期望，最直接的做法就是为角色设定个人目标。这种目标既可以细致（比如“获得《鲁拜集》[19] 这本书”、“从巨龙那里救出公主”，或者“劝说玛丽嫁给自己”等），也可以宽泛（比如“积累财富”、“赢得大家的喜爱”，或者“证明自己的男子气概”等）。由此，Fate 就可以监控每个角色在实现其各自目标上的进展。不过，在“思考”环节实现这一切想法是相当有难度的。

15.2 思考

通过“倾听”，Fate 对故事世界中发生的事件进行了有条理的戏剧性解读；接下来，Fate 还必须确定故事如何继续往下进展。实现这一任务的主要手段是倾向性公式（inclination formula），因为它能针对事件计算出最妥当的回应策略。不过，倾向性公式只能用来计算针对某事件的直接反应，我们无法只依靠它实现对故事的整体引导。

因此，我们还可以让Fate对事件进行干预，为故事注入新的事件，进而影响故事的整体发展。

假设故事的主人公罗密欧本来希望与朱丽叶谈情说爱，但是经过一系列难以预料的事件之后，朱丽叶却爱上了罗密欧的挚友班伏里奥。这种意料之外的故事发展固然也可能变得很有趣，但是为了实现罗密欧的目标，让 Fate 来阻断这一节外生枝的发展也许更妥当。Fate 只要让班伏里奥在即将亲吻朱丽叶的那一刻突然恶心地打嗝（或者做出其他令人反感的举动），就能轻松地实现干预，从而让故事发展回到期望的主线上来。这便是Fate的干预功能。

难道我们不是应该让故事世界遵从其内建的规则实现故事的自然发展吗？互动叙事创作者难道不是应该放弃干预，让故事在其戏剧性空间内实现自由发展吗？难道创作者不是应该尽量避免使用奇迹来强行操纵故事发展吗？

创作者用来定义故事世界的模型和算法的能力是有限的，它们不可能覆盖所有可能出现的情况。故事世界里总会出现需要特殊处理的特殊情况。有些特殊情况可以直接通过倾向性公式来处理；还有一些特殊情况，由于其出现的可能源头过多，针对所有源头线索进行逐一处理太过繁杂，因此通过Fate进行干预就成了更简单的解决方案。

每个概况变量都能体现故事发展过程中的一些关键因素，因此妥善地定义一组概况变量有助于让决策过程变得更容易。之前讨论过的每一个概况变量都反应了Fate可能实施的干预。可见，Fate应该只包含一大批概况变量，其中任何一个变量超出阀值的时候，Fate 就会触发特殊事件，以实现对故事的干预。

监控单个角色的行为就困难得多。要想引导故事角色从当前状态达成既定的目标，Fate 必须制定计划，在一系列的角色行为当中实施引导。在较为特定的情况下，这还是很容易实现的，比如为火星探险车穿越崎岖地面设定行进计划。然而，为故事角色指定引导计划要复杂得多：其一，故事角色面临的选择非常多，包含了所有可用的动词；其二，其他故事角色的反应也必须被考虑在引导计划当中，但是这些反应是很难预料的。因此，实现短期引导计划也许是可能的，而实现长期引导计划恐怕还是我们目前力所不能及的。

15.3 发言

经过“倾听（listen）”和“思考（think）”的步骤之后，Fate 最后还要针对玩家进行“发言（speak）”。也就是说，Fate 必须把监控和评估之后做出的决策付诸实施，通过改变故事世界（即施加干预）来推动故事朝着既定的方向发展。影响故事演进的手段有 5 种[20] ：环境操纵（environmental manipulation）、目标注入（goal injection）、人格转变（shifting personalities）、剧情节点（plot points）和故事安插（Interstitial Stories）。单独或组合运用这些手法，即可实现Fate 对故事的调控。

15.3.1 环境操纵

直接改变故事世界中的环境是最专横的操纵手段。如果玩家试图穿越山口，而 Fate 决定玩家应该转而进入山底隧道，那么 Fate 可以直接制造暴风雪和雪崩来阻止玩家前进。如果这样仍无法阻止玩家，那么还可以制造悬崖和死路。任何形式的物理环境限制都可以用来迫使玩家选择 Fate既定的行动路线。不过，这种做法往往太刻意，会让玩家产生受到愚弄的感觉，因此只能作为其他方案都失败之后才采用的无奈之举。

当然，在特定的情况下，物理环境的干预也可以实施得令人满意。比如：

在故事最高潮，英雄人物一路追赶大反派至山顶。被逼得走投无路的大反派只好回身抵抗，两人在狂风大雨中拼得你死我活。

突然，英雄被滚落的石块绊倒，险些掉下悬崖。他伸手抓住了悬崖边缘，身体无助地挣扎摆动。站在他手边的大反派露出了坏笑，捡起了英雄的剑，高高举到头顶，准备对英雄发起致命一击。说时迟那时快，一道闪电击中了大反派，他应声掉入悬崖，惨叫声回荡在崖底深处。英雄爬了上来，捡回自己的剑，往崖底深处的大反派尸首望去。

如果是这种情况，那么还是蛮不错的。

15.3.2 目标注入

比环境改变微妙一些的做法是为故事角色引入新的目标。当然，新目标必须符合角色的个性。《指环王》中的巫师甘道夫绝不会突然就想跑去找精灵女王凯兰崔尔喝酒聊天，因为这完全不符合他的个性。另外，新目标应该是临时性的，从而只会影响当前的故事发展形势。再以《指环王》为例，如果佛罗多受到魔戒邪恶力量的诱惑，正要做出天大的坏事，那么Fate就可以让随他同行的好友山姆突然内急，憋不住跑开解急时又遭遇不测，陷入危险境地，进而迫使佛罗多转而去拯救好友。

15.3.3 人格转变

最优雅的干预手法是改变其他故事角色的人格，使他们做出特定的决策，进而影响玩家角色的情节发展形势。这是最间接的做法：Fate 做出的改变导致特定事件发生，这些事件又进一步影响玩家的决策。这种间接性正是其优雅之处，却也正是实现难点之所在。

15.3.4 剧情节点

有一些特定的动词（即行为）会被用来推进故事的发展，而 Fate 可以根据预设的条件来触发这些动词。最简单的做法是以时间点为触发条件，在特定的时间点自动触发特定的事件，从而推动故事向前发展。这些剧情节点不是任何角色的任何行为触发的，而是定时触发的，只在预设的时间点发生，一旦发生便会推动故事发展。

在笔者创作过的一个亚瑟王传说的故事世界里，企图谋反的叛徒莫德雷德（Mordred）[21] 先是在亚瑟王的卡美洛王国制造内乱，以伺机篡位。到了某个预设的时间点，Fate 就会直接触发事件，让莫德雷德开始谋反行动，举兵进攻亚瑟王。这个叛变事件是定时发生的，触发了整体形势的转变。这一转变最终导致大决战的发生，并且以莫德雷德或者亚瑟王的惨败而告终。这样的定时触发机制保证，无论玩家做出何种行为，故事都会按照既定的方向发展，而玩家扮演的亚瑟王则不得不应对莫德雷德的反叛，并且努力维持其他盟友对他的忠诚度。

定时触发的剧情节点并不是唯一可行的剧情节点技巧，根据概况变量的值而实现触发也是可行的。我们可以为玩家提供多种途径解决同一个问题：当玩家无论以何种方式尝试3次都失败之后，就将更简单的解决途径呈现给玩家。再比如，在玩家激起了某个角色群体的士气之后，Fate 就触发剧情。基于多个变量值触发剧情的做法提供了制造戏剧性的广大空间。

15.3.5 故事安插

所谓故事安插（interstitial stories），其实是电子游戏里“过场故事片段（cut scenes）”的变体。其基本思路在于脱离正常的互动叙事过程，采用不同的形式来呈现一段交互性受限的故事片段。笔者设计于1987 年的电子游戏Trust ＆ Betrayal 就采用了故事安插。以下是该游戏呈现的故事片段：

Your conversation with Kendra is interrupted by her aunt Dracina. The old Klast used to run the clothing group and was generally feared and hated by all who came in contact with her. Old age has not mellowed Dracina; she is still a tyrant. She gives you hardly a glance and proceeds to converse with Kendra in Klast. This is in itself quite an insult, as it is long-established convention that Eeyal is the only proper language to use in mixed groups, unless pragmatic reasons require the greater precision and expressiveness of a local language. You shrug off the insult, for Dracina is chewing out Kendra over some infraction. Kendra herself is obviously embarrassed by her aunt’s intrusion at a very delicate moment and seems to be trying to placate her and get rid of her. Dracina, however, seems determined to press her point; an ugly family fight seems about to explode. What do you do? \

\

Nervously wait and see what happens.

D10-dA8-a Sure enough, a fight ensues; Kendra bursts into tears and her aunt storms out.

\

Excuse yourself to another part of the house and wait there.

D2-dA4+a You can hear them squabbling for a while; then Kendra comes, apologizes, and you both try to pick up where you left off.

\

Tell Dracina that her conversation with Kendra can wait until later.

D4-dA8+a Dracina is outraged; she tongue-lashes you in Klast and stomps out. Kendra smiles appreciatively.

\

Ask Kendra if she will allow her aunt to interfere with campaign business.

A8-aD6-d Kendra looks chastened; her aunt continues to carp for a while and then leaves.

\

以上文本中的反斜线字符“\”是笔者为实现故事安插而设计的脚本语言的一种语法，它将文本分隔成多个区块。第一个区块是呈献给玩家的故事文本，后续 4 个区块时呈现给玩家的可选项。每个可选项由两段组成，第一段是呈现给玩家的选项文本，第二段则是选择该项之后给出的回应文本。回应文本开头还包含了代表计算式的符号，计算的结果会改变玩家与角色 Kendra 之间的关系状况。比如第一区块中的计算式D10-dA8-a代表的是把Kendra对玩家的Dominance值减10，然后把Kendra对玩家的Affection值减8.

由此，这个系统将玩家的选择纳入到了故事的发展当中。

15.3.6 直面观众[22]

最简陋的做法是直面观众，即跳出故事，不把玩家当做故事中的角色，而是当做玩家来进行指导，直接向他们提供如何让故事实现良好发展的建议。笔者在 Trust ＆ Betrayal 中采用故事安插时也同时使用了这一手法。我大概可以算得上是实现 Fate 的第一人。在玩家遇到困难时，直面观众的典型例子如下（一般是在新的屏幕窗口中呈现给玩家）。

穿着花哨的克里斯正站在门外，攥着怀表的仿真金链子甩动着。

“怎么，又失败了吗？”他嘲笑道。“可见你还没搞清楚状况。让我克里斯叔叔给你点儿建议吧！”他凑近你，挡住了你脱身的路。“我猜你肯定是一见到人就迫不及待地想跟他们打听消息，没错吧？这在初级难度的游戏里也许还能凑效，不过在专家级难度，你就必须动动脑筋了。如果有人一闯进你家，连句客套话都不说就开始向你窥探别人的隐私，你能接受吗？你肯定不想搭理这个人，没错吧？你得先套套近乎。进了门要打招呼，客套两句，明白吗？然后你还得跟主人东拉西扯地闲聊几句，拉近关系。主动透露一些其他人的小道消息，这样才能缓和谈话气氛。一定要等套到近乎、气氛缓和了之后再向别人打听事情。明白了吗？这样才像回事……”

这时，乐队演奏的声音渐入场景。克里斯伴着音乐跳起拙劣的踢踏舞。你被这场面搞懵了，只能看着克里斯跳出了你的视线。突然，垃圾箱发出咣当一声，音乐也随之戛然而止。

瞧瞧，我登台表演的目的也不是那么光彩。

15.3.7 强制情节

强制情节是一种被频繁采用的技巧，它以强制方式迫使玩家按照创作者设定的情节路线行进。其中最简单粗暴的做法正是第5章提到过的电子游戏《Dragon's Lair》所采用的，即只要玩家的选择或行为与既定情节不同，玩家扮演的角色就会由于死亡或其他原因而无法继续游戏。其基本思路是，设定好单一路线的情节，然后向玩家提供几种额外的选择路线；一旦玩家尝试这些额外的路线，游戏就会杀死玩家角色。这相当于是在说：“你可以任意发展剧情，只要故事与我指定的一模一样就行。”

另一种不那么粗暴的做法是引导玩家回到既定的剧情路线上来。比如有这么一个例子，创作者希望玩家在离开公园之后进入一家餐馆。提供给玩家的选择是要么进入餐馆，要么直接离开。如果玩家选择直接离开，Fate 就会告知玩家餐馆里香气扑鼻，并且再次提供进入餐馆的选项。如果玩家还是拒绝进入，那么 Fate 就会告知玩家，其角色的肚子饿得咕咕叫，饥渴难耐，而且此地没有其他食物来源。理想情况下，这就足够让玩家最终选择进入餐馆了。然而，这能算是交互式的吗？笔者认为不是。

还有一种微妙的强制形式是根本不向玩家提供任何偏离既定情节主线的选择。不妨再以上述餐馆的情况为例：创作者完全可以直接声明玩家进入了餐馆，只给玩家提供不同的菜肴供选择。在这种情况下，创作者生拉硬拽地拖着玩家在情节主线上行进，只向玩家提供毫无意义的选择，以期实现一定的交互性。这与上述两种做法如出一辙，根本没有交互性可言。玩家得到的只是毫无戏剧性意义的选择。

强制情节的做法存在根本性的缺陷：它试图剥夺玩家做出戏剧性决策的自由。互动叙事要求玩家能够在故事世界当中自己主导故事的发展，这方面的任何欠缺都是对交互性的欺诈。

15.3.8 “纠正”玩家

还有一些创作者尝试了不如强制情节那么强硬的做法。这些办法尽管在形式上各不相同，但是核心理念都是一致的，即向玩家提供各种提示，让玩家按照提示的指引来“纠正”故事的发展。以笔者的拙见，纠正玩家行为就意味着把创作者的意愿强加到玩家身上。

正如第4章所述，情节（plot）与交互性（interactivity）互不相容，两者的有机结合只能通过更高层的抽象来实现。不难看出，“纠正玩家”这种想法源自于对具体情节的拘泥，具有根本的误导性，必然导致失败。创作者以玩家为敌，导致两者之间的共生关系还没开始就结束了。

优秀的软件设计师会为自己的作品全权负责。如果用户认为出现了问题，那么就不能认定这是用户的错，而是需要设计师来承担责任。我们决不能责怪用户[23] 。用户与软件组成的交互体系如果不能达成用户的要求，那么唯一应该受到问责的就是软件设计师。

这太不公平了！如果用户不仔细阅读使用手册，那么到头来出了岔子还能怪谁呢？

使用手册的必要性恰好体现了设计的拙劣。真正优秀的设计不须要额外的解说，其反应的操作方式是不言自明的。当然，这是一种至高无上的理想，在现实当中无法做到完美；不过，这种理想正是优秀软件设计所追求的终极目标。作为现实当中的凡人，我们当然无法实现至臻完美，但是每次设计软件的时候，我们都必须认识到现实与理想之间的差距，决不能把这种差距导致的问题归咎于用户。抱着“用户总是搞不清楚状况”的想法，等于是在推卸责任；“用户永远是对的”才是正确的思路。因此，我们必须在设计中考虑用户的意愿偏离了设计预期时应该如何应对。

如果玩家非要做些离谱的事情，那么又能怎么办呢？难道设计师还得给愚蠢行为圆场吗？

如果玩家就是想做荒唐的事情，那么就由他去做吧！要知道，为产品买单的是玩家。如果玩家就是想要在故事世界里跳悬崖、胡作非为，或者伙同邪恶力量（比如《星球大战》中的黑武士），甚至是挖鼻孔，那么我们又凭什么要阻止人家呢？故事角色跳下悬崖，当然就会身亡——不然还能怎么样呢？

但是我们是故事世界的创作者，是实现这种艺术表达的艺术家呀！怎么能与变态和丑恶的事情为伍？

先看看如下的几行句子：

警官的胡子只长了一半。

邪恶是美丽的。

谋杀是滋养身心的行为。

2 + 2=5

上述句子有些是荒唐可笑的，有些是谎言，还有些是胡说八道。如果我们在Microsoft Word文档里输入了这些句子，而比尔·盖茨是Microsoft Word软件开发背后的主导人物（他当时是微软公司的 CEO），那么我们是不是就应该以艺术、知识和道德为名加罪于他呢？比尔·盖茨是罪魁祸首吗？当然不是。软件允许作为用户的我们做任何想做的事情。这些句子是我们自己决定输入的，所以我们只能谴责我们自己。

如果我们对堕落行为在道德上保持中立，那么故事世界就有可能变成无情无义的颓废世界了。难道你愿意创建这样的故事世界吗？

并不一定会这样。如果玩家决定杀死伙伴，那么我们可以做出设定，让这位伙伴成为唯一能把玩家角色从致命陷阱当中解救出来的人。如果玩家角色胡作非为，那么就让故事中的社会群体排斥他。我们的设计并不一定要在道德或美感层面上保持中立。我们应该考虑所有合乎逻辑的玩家选择，但这并不意味着我们会迁就玩家的选择。谴责堕落行为的最佳方式就是让玩家角色面对这样做的恶果。

难道我们必须耗费时间精力来对玩家所有的疯狂行为设计对应方案吗？

考虑这个问题的关键在于分清3种不同类型的玩家行为：愚蠢行为、合理行为，以及（创作者的）期望行为。避免愚蠢行为完全没问题。我们可以不提供跳下悬崖的选择，因为会选择这样做的玩家寥寥无几，减少这个选择并不会对玩家的自由产生多大影响。

关键的问题在于区分“期望行为”与“合理行为”。创作者不应该把自身的偏好强加给玩家，而是应该给出所有合理的选择，并且呈现每个选择的后果。不妨回顾一下第13章图13.1中的黑白图像：有黑色区域存在，白色区域才能被体现出来，两者是相互映衬的。同样，好与坏是相辅相成的，我们不可能只表现两者之一。不要把玩家行为局限于好的行为，要允许他们通过体验坏的行为的恶果来领会什么样的行为才是故事所期望的。

这与你之前批评过的“一旦偏离就杀死玩家角色”的做法有何区别呢？

动不动就杀掉玩家角色，这完全是反应过度的做法，带有非黑即白的“布尔值”的特色。我们希望让玩家知道某些决策会导致不好的结果，但是死亡并不是唯一的恶果。把不好的结果表现得更加逼真难道不好吗？如果玩家角色伤害了恋人的好友，那么让恋人与之产生争执难道不是最妥当的后果吗？对于玩家角色朝三暮四的行为，难道不是应该根据行为发生的具体环境来确定后果的严重程度吗？难道只能有黑白，不能有更多灰度吗？

但是这样的话，玩家就有可能得到不那么令人满意的体验，从而归咎于创作者的无能。

事情并非如此。由于自己的过错而怪罪别人者的确存在，但是在互动叙事体验中，玩家总是可以回过头去重新尝试，进而发现之前的失误之处，获得改善的体验。

15.4 计分系统

对玩家的整体表现做出反馈是 Fate 的另一个重大职责。认定玩家的输赢就是一种最基础的反馈形式。不过，能够呈现输赢的程度则更好一些。

难道你想把故事世界变成游戏（game）吗？

当然不想。“游戏（game）”这个术语太过宽泛，而且现今的大部分人都将其理解为“电子游戏（video game）”。笔者说的并不是把莎士比亚的《李尔王》转变成《毁灭战士》或者把荷马的《奥德赛》转变成《吃豆人》，而是说应该从戏剧性的角度而非电子游戏的角度来衡量玩家的表现。观众不会为精彩的戏剧表演而向演员奖励积分，而是通过喝彩鼓掌来体现他们的评价。因此，玩家表现的最终评估标准应该是体现其戏剧性成就的喝彩鼓掌的情况。故事结束时的音乐也可以用来体现玩家的表现：精彩的故事世界体验会以欢快或悲怆的音乐收场，而乏味的体验则会以无关痛痒的轻音乐收尾。

在故事叙述领域里，最基本的分类就是喜剧和悲剧。喜剧有圆满结局，悲剧以伤心收场。所有的电子游戏都是喜剧，因为玩家的目标就是克服所有困难，最终大获全胜。没有哪款电子游戏是以玩家角色英勇就义为目标的。此即故事世界与游戏之间最大的区别：游戏永远是喜剧，故事世界可悲可喜；游戏以积分为评价标准，而故事世界以获得的掌声来区分优劣。

许多最伟大的故事都是悲剧。英雄人物在故事结尾的死让我们热泪盈眶。同时我们也明白，如果故事让英雄活到很老，最后不慎从板凳上摔倒而亡，那么感觉也不对。在莎士比亚的戏剧《哈姆雷特》中，即使哈姆雷特不死，故事的核心冲突也能得到解决——让谋杀哈姆雷特父亲的克劳迪斯死掉即可。《罗密欧与朱丽叶》中，罗密欧的死已经能够彻底终结这段恋情了，如果故事到此结束，那么朱丽叶似乎也不是非死不可。然而，这样做就是感觉不妥——恰恰是哈姆雷特和朱丽叶的死营造了最完美的悲剧效果。这就引出一个麻烦的小问题：我们如何在计分系统里体现这种效果呢？假设我们创建了以罗密欧与朱丽叶的故事为蓝本的故事世界，其中的罗密欧也与原著描写的一样，误以为朱丽叶已经死去，于是服毒自杀。那么玩家扮演的朱丽叶醒来看到罗密欧的尸体之后，是应该选择自杀，还是应该耸耸肩然后离开呢？

这种情形充分体现了戏剧与游戏的不同。在游戏当中，玩家不会选择自杀，只会离开现场。而在戏剧当中，朱丽叶的死具有更高的戏剧性价值。因此，计分算法必须奖励朱丽叶的自杀选择，惩罚她独自苟活的选择。

这种做法是不可能凑效的！没有人会选择自杀的呀！

之所以有人会认为没有人会选择像自杀这样的悲惨结局，是因为他们把互动叙事看作是从电子游戏演化出来的媒体。然而，如果我们把互动叙事当做全新的媒体来看待的话，那么就不会在思路上受到既有媒体的限制。电影从业者不再把电影看作舞台剧的拓展形式的时候，才是电影真正开始实现发展的契机——因为他们把电影看作是具有其独特艺术体系的新媒体，所以才能够不受拘束地创作出深受观众喜爱的电影作品。

15.4.1 反馈

喝彩鼓掌作为反馈形式的价值在于，它能强化玩家作为故事主人公的自我认知。游戏设计师常常谈论身临其境（immersion）体验的重要性，但是他们对其的理解一般局限于“提供精彩的视听体验”。

在互动叙事当中，玩家必须完全融入故事主人公的角色，其身临其境的浸入式体验还发生在戏剧性和情感层面上，具有更深层次的感染力。玩家扮演的朱丽叶发现罗密欧服毒自杀之后，如果我们能让玩家从情感上觉得其扮演的角色朱丽叶也应该以死相随，那么才算是实现了真正的戏剧性的浸入式体验。玩家朱丽叶必须认可并且接受这种戏剧性张力所要求的选择，这才是最深层次的浸入式体验。当然，玩家并不一定都会做出相同的选择，因为创作者只应该酌情奖惩，不应该全权控制玩家的选择。

所谓的奖励就是喝彩鼓掌。故事世界进展到故事结尾的时候，虚拟舞台的幕布放下，“全剧终”的字样显现出来，虚拟观众的反应也应该以声音效果来表现。如果故事以朱丽叶之死告终，那么虚拟观众就会热烈鼓掌；如果朱丽叶最后苟活了下去，那么虚拟观众就会发出一片嘘声。由此可见，玩家的角色其实也是在面对着虚拟观众展开表演，而这所谓的虚拟观众其实就是Fate。Fate通过计分算法来评估玩家的表现，并且以虚拟观众的形式来表达评估结果。

要点30

故事世界里的奖励是喝彩鼓掌，不是获胜。

15.4.2 计分算法

如何计算评分呢？最简单的办法是对故事结局的可能性做出限定，然后分别给每一个结局设定分值。在互动叙事探索初期的现今，我们不妨暂时采纳这个最简单的做法，虽然它没有考虑玩家在整个故事当中的行为表现——只要最后都达到同一个结局，表现平平的玩家与表现出色的玩家在得分上就是相同的。

也许在将来的故事世界设计当中，我们可以圆满解决上述问题。现在笔者要介绍如何开发比只算结局更好一点的记分算法。利用概况变量就是个顺手的办法：让 Fate 统计重要的概况变量的总和值，比如整个故事世界里的总体善良程度，即特定群体或全部角色的 pNice_Nasty 值的总和；如此一来，我们可以把这个总和值的增量作为玩家的积分，进而也意味着玩家的戏剧性表现依赖于建立快乐融洽的人际关系。

那么又该如何为朱丽叶以死相随这种行为记分呢？

这也不难，可以采用如下计算公式：

Score=Blend(1, pNice_Nasty[Romeo for Juiet], pNice_Nasty[Juliet for Romeo])IF (((Juliet dies) AND (Romeo lives)) OR ((Juliet lives) AND (Romeo dies)))

Score=-Score

该公式首先运用调和操作，依据罗密欧对朱丽叶的爱恋程度，按比例地将朱丽叶对罗密欧的爱向最大值1移动。只要两人相互的爱足够强烈，其调和结果就应该是一个很接近最大值1的数值。如果两人都死去或者都活了下来，那么计分就以调和结果为准。如果任一方死掉了，同时另一方活了下去，那么计分就会被直接计为对应的负值。

这个计分系统很简单。实际上，我们可以把任何戏剧性的因素作为衡量标准，将其纳入计分系统当中——我们对算法掌握得越好，积分系统也就能设计得越完善，从而使我们能以更细致的方式来评估玩家的表现，而不用受限于简单的输赢之分。

要点31

使用计分系统对玩家进行奖惩，不要通过强制或禁止的方式来限制玩家。

15.5 本章小结

Fate（命运）是故事世界的代理操控者，我们通过它来实现故事世界的高层面构建。Fate 也是剧中人，是故事中最至关重要的头号角色。设计 Fate 需要非凡的算法设计能力。待到互动叙事领域走向成熟之日，Fate的戏剧敏感度的高低将是衡量创作者艺术成就的标杆之一。

第16章 动词与事件

在互动叙事中采用基于动词的思考方式意味着，动词（verb）才是数据结构的核心之所在。“用户做什么（what does the user do）”这个问题的答案是“用户使用动词（the user does verbs）”。不难看出，对动词数据结构的界定是所有软件设计的核心问题。

动词是通过鼠标、键盘等输入设备体现出来的。在文字处理软件当中，“双击这个单词”的意思其实是“选择这个单词”。在浏览器软件里，“点击链接”的意思其实是“跳转到这个链接的页面”。在任何软件当中，点击某个图标意味着“做这个图标所代表的那个操作”。

图形用户界面（GUI）语言已经发展成为一个复杂的体系。我们熟知许多 GUI设备和语汇，比如菜单、图标、对话框、工具栏、提示信息、滚动条等。软件界面中充斥着各种各样图标，以供用户完成各种各样的操作，它们所代表的意义也已经被我们熟记于心。最关键的事情在于，所有这些界面元素都为用户“做”一些特定的事情，它们代表的是动词。

16.1 动词的数量问题

大部分软件包含的动词都不多，不过其数量还是在不断地增加。首款面向消费者群体的“所见即所得（WYSIWYG）”文字处理软件MacWrite包含的动词并不算多：除了基本的文本输入相关的动词意外，它包含的动词还涉及字体设置（字体、大小、样式等）、段落设置（文本缩进等）、图片插入、设置制表符等。粗算起来 MacWrite 大概包含近百个动词。现如今，Microsoft Word 包含的动词则多得多。据说有人试图其中的动词数量，结果数到300左右的时候数丢了——除了上述基本功能之外，Microsoft Word 还包含样式、脚注、索引、目录等诸多丰富的功能，其包含的动词自然是数不胜数。

游戏的情况也差不多。20 世纪 80 年代早期的游戏所含包的动词一般少于 10 个，这也许是因为当时的游戏操纵杆的功能相当简单。早期的游戏操纵杆只有上下左右4个方向和一个游戏按钮，加起来只有 5 个动词。如果把游戏按钮与 4 个方向的组合也计算在内的话，那么一共也只有 9 个动词。早期游戏操纵杆所能包含的动词最多也只有 19 个。随着游戏变得越来越复杂，动词数量也逐渐增加。不过，现今的游戏包含的动词数量很少超过30个，平均数一般在15个左右。

无论如何设计，互动叙事都需要数以百计的动词。不妨数一数如下这一小段故事所包含的动词：

Alas, poor Yorick! I knew him, Horatio: A fellow of infinite jest, of most excellent fancy; he hath borne me upon his back a thousand times. And now how abhorred in my imagination it is! My gorge rises at it. Here hung those lips that I have kiss’d I know not how oft. Where be your gibes now, your gambols, your songs, your flashes of merriment that were wont to set the table on a roar? Not one now to mock your own grinning–quite chap-fall’n? Now get you to my lady’s chamber, and tell her, let her paint an inch thick, to this favor she must come; make her laugh at that.[24]

在这么短的故事片段当中，不计时态和单复数的区别，也包含 14 个动词。要知道，这只是一部戏剧不到 0.5%的篇幅，整部戏剧包含的动词必然是成百上千。互动叙事引擎必须能够处理如此大量的动词。

迪士尼的一本《小美人鱼》故事书更能说明问题。这本书一共 26 页，大部分内容都是图画，文字大而稀，是面向5岁小孩的最简单的故事书。即使如此，笔者也能从中数出121个动词。

要点32

故事世界至少需要上百个动词。

16.2 通用的动词处理机制

在动词数量不大的情况下，设计师可以分别针对各个动词实现编码，逐一予以优化。动词屈指可数的时候，这么做的确是很不错的，但是一旦数量增大，事情就变得困难起来。像 Microsoft Word 这样的软件具有极其复杂的代码实现，需要数以百计的开发人员共同开发，其复杂性也直接导致了各种软件bug的频繁出现。分别为成百上千的动词进行编码实现的难度太大，这直接限制了互动叙事软件设计师的实作能力。但是，作为互动叙事探索者的我们不可能避开这一道难关，必须面对并且克服困难。于是，我们不得不放弃逐个为动词进行编码实现的做法。我们需要的是一种抽象级别更高的、通用的实现方法，借此创建、设计和实现数以百计的动词。

实现通用动词处理机制的第一步是为动词设计数据结构。我们须要一组通用的属性，套用它们来定义每个动词。下面介绍一些动词数据结构可以包含的基本属性变量。

• Name：动词的名称。

• Momentous_Trivial：代表动词的“新闻价值（ newsworthy ）”的数值。这看起来用处不大，但笔者的经验是它在许多计算处理当中都起到至关重要的作用。“倒垃圾”的Momentous_Trivial只能取负值；而“谋杀”的则应该非常接近其最大值。

• Audience：这个属性处理起来可能会非常刺手。每个动词都可能要求其他故事人物必须在场或者不在场。在大部分情况下，DirObject（直接宾语）[25] 必须与 Subject（主语）[26] 搭配出现；毕竟舞台上的角色不可能亲吻另一位不在舞台上的角色。例外的情况固然也存在：如果 Subject 打算背地里谋害 DirObject，那么 Subject 当然希望 DirObject 不在场的时候展开行动。诸如MixPoison、DigGrave、PrepareTrap之类的动词显然需要DirObject不在场。

Poison、Grave、Trap才是这些动词的受动者嘛！

这么说也没错，但是我们不应该把它们当做动词的 DirObject。笔者把 DirObject 界定为动词所针对的目标人物角色。想毒死某人，“mix”的对象当然是 poison，这是不言自明的。然而，我们希望纳入考量的其实是投毒这个动作的对象，因此像 poison 这类元素并不能算作整个动作的真正受动者。后续的“句子结构”一节还会详述其中的细节。

有一些动词要求只限于Subject与DirObject的私密性，即其他角色不能在场。浪漫故事当中就会出现这样的动词，还有少数动词要求必须有第三方作为目击者或参与者而在场。当然，在场的第三方是否能够目击动作的执行，这也是可能要考虑的情况。这些为数众多的各种特殊情况颇让笔者困扰了一阵，最终笔者得出结论，目前最佳的实现方案是以更笼统的方式加以概括。记录指定角色是否须要在场的最佳做法是采用两个布尔值作为标识符，一个用来标识是否须要该角色在场（值为TRUE代表须要在场），另一个用来标识是否须要该角色不在场（值为TRUE代表须要不在场）。两个值同时为FALSE则代表无所谓该角色是否在场。

• Witnesses：指定谁是事件的目击者。在 99%的情况下，所有在场（即舞台上）的角色都是事件目击者。另外1%的情况则让人抓耳挠腮。有一些事件可能意义特别重大，需要故事里所有角色都知晓。Subject 可能瞒着现场的所有其他人做某件事情，比如刺客暗中拿出匕首，派对客人偷偷把难喝的饮料倒在花盘里，尴尬的男孩拉上裤子拉链等。两个人可能会私下密谈，在场的其他人听不见他们俩说的话。所有这些1%的可能性并不多见，也许现在可以忽略不计，不过迟早会有不得不考虑这些情况的一天。

• Execution_Time：有些事情需要一定的时间才能完成，比如 Mow_The_Lawn、Make_Love、Bake_Cake 等。有时候花费时间完成这些事情才具有戏剧性意义。当然，大部分情况下我们都可以让事件瞬间完成。

• Preparation_Time：该属性比 Execution_Time 更不常用，仅在角色无法立刻执行某个动词（即做某件事情）的情况下会被用到，而这种情况并不常见。笔者的建议是，一开始不必采用它，等到轻车熟路了再考虑也不迟。

还有更多古灵精怪的属性可以放入动词的数据结构，不过上述属性已经可以很好地说明动词数据结构所需的基本架构了。目前还没有探讨的是动词最重要的架构元素，即如何让故事角色运用动词对事件做出回应的机制。这个运作机制和动词执行结果的实现机制都会在第19章详述。

16.3 句子结构

动词并不能独立执行，它是句子的一部分。我们显然还须要对句子做出标准定义。难点在于不同的动词涉及不同的句子结构。“Joe insulted Mary（乔伤害了玛丽）”只有 3 个句子成分：Subject （主语/施事）、Verb（动词/谓语）和DirObject（宾语/受事）。“Joe gave Mary the hamburger（乔给了玛丽汉堡包）”则有 4 个句子成分，增加了一个间接宾语。不难看出，句子结构可以变得非常复杂，比如“Joe traded Mary the hamburger for the book”或者“Joe promised to give Mary a hamburger on Friday if she would give him the book on Thursday”等。

笔者想出的解决方案是为每个动词搭配一组 WordSocket，每个 WordSocket 用来记录特定类型的句子成分。不难想见，大部分动词的大部分WordSocket 都会是空的。表 16.1 以刚才列举的例句填充了WordSocket。

表16.1 WordSocket示例

续表

用于记录主语和动词（谓语）的WordSockt在哪里呢？

动词数据结构内建了记录Subject和Verb的WordSocket。建立动词结构的时候，系统会自动记录两者，其他的WordSocket则由我们负责填充。

16.4 计划与事件

互动叙事引擎管理的计划和事件都需要用到句子结构。在计算出故事角色接下来应该做什么之后，叙事引擎就组装出一个称为“Plan（计划）”的句子，用来代表尚未发生的事情。Plan 一旦被执行，就变成了实际发生过的Event（事件）。因此Event就是被执行过的Plan。不过，并不是所有Plan都会被执行并且转化为Event。

对于 Event 而言，还有一些额外的信息值得记录，比如事件发生的时间地点及目击者等。这些信息有助于后续的计算处理。

16.5 HistoryBooks

所谓HistoryBook是截至当前故事进展为止发生过的所有Event的记录。Event一旦发生，就会被记录到HistoryBook当中。下面举个例子说明我们为何需要HistoryBook这样的组件：

Jim和Tex又在酒吧里打起来了。Jim给了Tex一拳。此时，Tex有3种选择：退让（从而结束争斗）；回击一拳；拿出枪开始射击。经过考虑，Tex 觉得退让太窝囊，开枪又不太明智，所以回击了Jim一拳。

Jim 挨了一拳之后，面临的选择与 Tex 的一样，也觉得退让太窝囊而且开枪又太夸张，于是也选择回击一拳。

Tex又挨了一拳，于是又回击一拳。Jim继续回击。Tex也继续回击……

计算机程序可以让这种情况无限循环下去。而在戏剧性的故事世界里，这样的往复会被很快打断。那么，我们如何在设计中实现这种戏剧性的干预呢？

16.5.1 情绪

解决无限循环问题的简单办法是运用情绪控制。如果我们把 Anger_Fear 情绪包含在计算当中，那么每一次回击都会增加被攻击一方的 Anger_Fear 数值，而这个值的增大又会增加选择更强硬的回应方式的倾向性。如此一来，随着两人挥拳打斗的持续，最终必然会有一方的 Anger_Fear首先跃过阀值，从而选择开枪射击。这样的安排也显得合乎情理。

16.5.2 HistoryBook和循环

有一些循环的动作无法通过情绪变化来打破。假设 Jim 和 Tex 不是在打架，而是互相赞美对方，那么也有可能出现无限循环的情况。情绪变化无法打破这个循环，因为赞美对角色情绪的影响是有限的，无法完全改变角色的行为。

要彻底解决这个问题，就必须在确定如何作出回应的时候考虑过往的行为历史。受到赞美的角色会查询 HistoryBook，看看自己之前是否已经以赞美回应过赞美者。如果已经回赞过，那么角色就可以选择不再回赞，从而避开反复做出相同的回应。

对于因重复动作而导致的角色之间的不和，HistoryBook也可以作为触发的依据。假如Dick邀请Jane出去约会，Jane拒绝了，之后Dick每天都重复邀请的行为，Jane每天都拒绝，那么迟早有一天，Jane 会觉得自己受到了骚扰，进而对 Dick 作出更加强硬的回绝。Jane 之所以能够这样做，是因为她可以根据过往记忆（HistoryBook）得知Dick已经多次邀请过她。

HistoryBook 的另一个好处是它记录的信息可以作为评判依据。假如故事主人公必须通过核查公司账目的方式来拯救心上人，那么可能出现两种情况：如果他具备财会知识，那么他就能及时地从公司账目中查出错误，进而救人；如果他对财会一无所知，那么希望就破灭了。传统的处理方法是专门为主人公是否学习过财会知识设立一个全局标识变量。有了 HistoryBook，我们只须要从中查询是否发生过“主人公学习财会知识”的事件即可得知，不须要另外设立变量专门处理。

这不是比全局标识变量麻烦多了吗？

HistoryBook的方案的确比标识变量复杂，但是标识变量需要逐个单独处理，而HistoryBook则是通用的解决方案。无论故事角色是参加了陶艺制作课程、物理课程，还是汉语培训班， HistoryBook 都一并记录。无论故事主人公是砍掉了大橡树、获得了银钥匙，还是销毁了巨龙的尿布，HistoryBook 都一个不漏地记录下来。一言以蔽之，HistoryBook 记录了已经发生的所有事件，因此一切都有迹可循。叙事引擎无须设立大量单独的特别变量，只须查询 HistoryBook 即可。这个方案实现起来确实更复杂，但是却省去了后续的更多麻烦。

16.5.3 背景故事

HistoryBook 还使得在故事世界当中假如背景故事（backstory）成为可能。许多互动叙事的探索性尝试都避开了对背景故事的依赖，因为背景故事实现起来并不容易。最常用的实现技巧是在故事角色相对空闲的时候插入回忆性陈述，比如：“伊丽莎白在草地中穿行着，遍布草地的露水让她回忆起差点淹死在河里的那一次遭遇”。创作者可以在故事世界启动之前就在 HistoryBook 当中记下这些背景故事事件，供玩家随时查取。

16.5.4 额外信息

还可以在 HistoryBook 当中记录的是因果信息，即诸事件发生的逻辑顺序和时间顺序。这种顺序可以很容易地逆向建立起来，即让每个事件额外记录导致其发生的近因事件的索引号，从而形成逆向链接。建立正向的因果链条要麻烦一些，因为须要处理分支的情况。戏剧当中的每个事件有且仅有一个近因，但是可以包含多个结果事件。从技术上来说，只要采用合适的数据结构，建立正向因果链是完全可行的。然而在实作当中，其实没有必要这么做。鉴于 HistoryBook 数据量并不大，加上现今的计算速度足够快，因此查询逆向因果链条往往已经足够了。

16.5.5 流言蜚语

戏剧从来都不会仅仅依靠故事角色的直接体验来实现艺术表达。关键的戏剧性信息往往是通过次要角色的陈述透露出来的。这么做有时候是为了增加戏剧冲击力（比如《星球大战》中的黑武士说：“卢克，我就是你的父亲啊！”），有时候是为了让获得该信息的角色有机会对相关事件做出事后回应。互动叙事系统必须提供让信息在各角色之间流通的机制。笔者将这种信息传递体系称为“gossip（流言蜚语）”系统。这里所说的 gossip 超越了流言蜚语的范畴，用来指代所有在角色之间传递的信息。信息传递系统注定是复杂的，让我们先来探讨gossip系统的总体运作流程（以笔者自己开发的互动叙事系统为例），然后深入讨论个别细节，以及在基本架构上可以做出的更多变化。

16.5.6 记录事件

一旦某事件发生，它就会被记入 HistoryBook。有限数量的角色（通常是处在事件发生现场的角色）目睹了事件的发生，我们可以在 Event 数据结构中定义一个 I_Know 数组来进行记录。一旦某个角色目睹了事件发生，那么数组中对应该角色的I_Know标识就会被设为true。

不仅如此，每个故事角色还须要记录所谓“headline list（头条事件列表）”，即最重要事件的列表。如果 headline list 足够长，那么理论上这些列表可以包含该角色知晓的所有事件；不过在实作当中我们没有必要这么做。大部分人只须要知道10到20个重大事件就足够他们在对话中散布信息了。

头条列表当中的时间可以根据其 Momentous_Trivial 值（即事件的戏剧性效果）来实现优先级排序。如果一个新事件的 Momentous_Trivial 值高于列表中任何事件的对应值，那么这个新事件就会成为列表中最重要的事件。

16.5.7 信息的人际流通

所谓“头条（headline）”并不是完整的故事，它只是一件事情当中最突出、最有亮点的那个事件。不妨考察如下的故事片段。

汤姆走进酒吧。

汤姆向服务员要了一杯沙士饮料。

约翰取笑汤姆。

汤姆无视约翰。

约翰与汤姆对峙。

汤姆推开约翰。

约翰出拳打汤姆。

汤姆用酒瓶打击约翰的头。

约翰向汤姆开枪。

迪克掏出枪，以吧台作为掩护。

珍妮大声呼救。

汤姆死掉了。

约翰在汤姆的尸体前露出胜利的微笑。

迪克向约翰开枪。

珍妮再次大声呼救。

约翰向迪克开枪回击。

迪克蹲到吧台下躲避。

珍妮对着汤姆的尸体哭了起来。

约翰又朝迪克开枪。

迪克射中了约翰。

珍妮还在痛哭。

约翰死掉了。

珍妮目睹了上述惨剧的全过程，假如她之后遇到玛丽并且告诉她这些令人震惊的事情，那么珍妮最先说的大概会是约翰开枪杀死了汤姆这件事。当然，约翰开枪杀死汤姆这单个事实还不足以解释整个事情的来龙去脉，所以玛丽肯定还想知道更多。互动叙事引擎该如何从 HistoryBook 建立起来龙去脉呢？

这个问题颇为繁杂。笔者做过许多尝试，但始终没有找令人满意的方案，在此能给出的最好建议是：通过质询的方式来建立整个因果链。玛丽听到约翰杀死汤姆的事情之后，有两个选择。她即可问“约翰为什么要杀汤姆”，也可以问“然后呢”。于是珍妮可以查询 HistoryBook，找出事发的原因事件或者后续事件，从而回答玛丽的问题。质询的做法并不优雅，但这是笔者目前能想到的最好的方案了。

16.5.8 人际信息传递的启动机制

在故事世界中触发信息传递的方式有几种。首先，叙事引擎可以自主驱动这个过程。如果某个角色没有什么事情可做，那么引擎就可以为其物色一名谈话的对象。其次，可以根据信息的价值大小来决定是否触发。假如故事角色刚刚知道了一件格外有传播价值的事情，那么叙事引擎就可以让这名角色推后原先的计划，优先找个人谈论这件事情。此外，还可以让故事角色自己决定是否进行信息的传播，即仅在角色自己宣称希望与人闲聊的时候才触发。

16.5.9 人们为什么传播信息

要对gossip系统进行建模，我们就须要了解人们通过谈话交流信息的目的是什么。尽管这在理论上涉及心理学方面的议题，但是我们讨论的范畴是戏剧，而不是现实世界，因此我们的目标并不是对真实世界当中的gossip建模，而是要建立具有戏剧性意义的gossip模型。

互动叙事的 gossip 系统的首要目的是让特定信息在故事角色之间传播。在只有一部分人掌握信息的情况下，信息才具有戏剧性价值。一旦某个消息被所有人都知道了，其戏剧性价值也就消失了。

故事角色与其他人分享信息的动机源于信息本身对于倾听者的价值。如果我告诉你一些你感兴趣的消息，那么你对我的态度便会有所改善：你可能会因此变得更加信任我，因为我愿意向你透露消息反应了我对你的信任；你还可能因此而加深了对我的喜爱，因为我提供了对你有利的信息。此外，你对我的综合实力的评价也有可能因此而提高，因为我的爆料让你觉得我是个消息灵通的人。于是从我的角度来看，与你分享特定信息是对我有利的。

故事角色必须以谨小慎微的方式向他人分享信息。如果把消息分享给管不住嘴的长舌之人，那么这条消息必然会很快传到所有人的耳朵里，作为消息源的角色直接向其他人分享这条消息的价值也就没有了。从消息源角色的角度来看，最好先把消息告诉最能守口如瓶的人，然后再告诉其他人。除非消息源的目的就是把消息快速传播至所有人，否则最多嘴多舌的人应该是最后一个知道消息的人，因为只有这样才能最大程度地保证消息源向其他人透露消息的价值。

另一个须要考虑的因素是发言者对倾听者的喜恶程度。前者对后者的好感越多，也就越倾向于向后者透露信息。

16.5.10 运作机制

传播消息（gossip）的过程以非玩家角色（NPC）进入舞台为开端。这个非玩家角色须要逐个考察在场的其他人物，衡量是否应该与之进行对话。衡量的标准包括前者对后者的信任程度、喜恶程度，以及后者对信息守口如瓶的程度等。

确定了谈话对象之后，NPC 还须要确定透露什么信息。显然，NPC 希望透露最有价值、意义最重大的头条消息，然而问题是每个人对同一条消息的价值认定可能是不同的。因此关键的考察因素在于 NPC 与所涉事件中的 Subject 和 DirObject 的关系。换句话说，千里之外的陌生人被杀害的消息远远不如自己的亲人被杀害的消息重大。因此，一个事件对于某个角色的重要性应该是两个因素的乘积，一个因素是所涉事件的 Momentous_Trivial，另一个因素是 NPC 与该事件的 Subject 和DirObject的关系。

还有几个因素可以用于确定透露哪条消息，其中之一是倾听者是否已经知道了这个消息。这个因素很好地体现了现实世界与故事世界的区别。在现实世界里，我们不知道别人是否已经获知某件事情，因此无法避免一些无意义的对话，比如：“你知不知道……”、“哦，你已经知道了呀”等。而在故事世界里，我们不需要这样无意义的对话桥段，也没必要故意制造这样的对话，因为互动叙事系统可以根据角色的内部状态直接确认该角色是否知晓特定的事情。也就是说，gossip 系统应该能自动地识别哪些事情是倾听者已经知道的，从而对这些事情不予考虑。

综合了上述种种因素之后，实际的消息传递倒是很容易实现：叙事引擎只须将该事件中对应倾听者的I_Know标识变量设为TRUE即可。随后倾听者就可以对该事件做出回应，而该事件也会被加入到倾听者角色的头条事件列表当中。

16.5.11 谎言

戏剧性效果得益于真假信息的混杂。故事主人公被恶意的谎言所误导，是故事叙述中的常见要素。因此，任何gossip系统都必须具备对谎言的处理能力。

但从数据结构的角度来看，谎言只不过是并未发生的 Event，它包含着与事件完全相同的要素，比如 Subject、Verb、DirObject 等。于是，我们只须要对 Event 数据结构追加一个代表事件真假的标识变量即可。真实事件的真假标识为TRUE；谎言的则标识为FALSE。

制造谎言颇为简单，而确定何时应该启用谎言则相当困难。撒谎的动机可能有如下几种。

16.5.12 破坏人际关系的意图

最简单的撒谎动机是损害某个人的名誉。在这种情况下，首先须要确定撒谎的目标是破坏受害者与特定角色的人际关系，还是损害受害者在众人当中的名誉。无论目标是哪一个，撒谎者都会选择对于最重要的关系进行破坏，这取决于其他人对受害者的印象好坏。

接下来的步骤就困难一些了。撒谎者必须确定哪个 Verb 能激起倾听者最负面的反应。如果撒谎者希望破坏倾听者对受害者的 pNice_Nasty（即他人对受害者的 Nice_Nasty 认定），那么采用诸如Drown_Kittens或Laugh_At_Funeral之类的动词则可能就比较好。如果撒谎者希望破坏其他人对受害者的信任，那么采用诸如Cheat_Grandma或Tell_Lie之类的动词也许就更恰当。

确定了撒谎者要在谎言中使用的Verb之后，还要确定DirObject应该是谁（即谎言事件中的受动者）。这里需要注意的问题在于，DirObject 有可能知道谎言包含的 Event 是子虚乌有的事情，因此撒谎者必须选择离受害者亲密关系圈较远或者不受他人信任的 DirObject。最简单的解决办法是让撒谎者自己成为 DirObject，只要这样做能够达到预期效果就行。比如，一位女性撒谎者可以对男性受害者的女友撒谎，说自己与受害者有染，这样就能有效破坏受害者与其女友的关系。在有些情况下，撒谎者无法把自己作为 DirObject。如果撒谎者希望让别人相信受害者并不善良，但是所有人都知道受害者痛恨这位撒谎者，那么在这种情况下，撒谎说受害者伤害了自己则根本达不到预期的破坏效果。

确定了 DirObject 之后，撒谎者只须创建一个谎言 Event，其中包含 Subject（即谎言的受害者）、Verb和DirObject。然后这条谎言Event就会被记入HistoryBook，并且其Truth标识会被设为FALSE（代表该事件为假），该事件中对应撒谎者的 I_Know 标识则被设为 TRUE。随后，这条谎言就会经由gossip系统的运作而被传播到其他人那里。

16.5.13 通过误导来从中谋利

还有一个更常见的撒谎机动是误导受害者，使得撒谎者从中获利。故事中的受害者被谎言引至逆境，这往往是戏剧性的体现。然而，这类谎言需要复杂的推理引擎才能实现。推理引擎是一种人工智能领域的技术，它能通过数据集得出逻辑结论。这样的技术固然存在，但是将其纳入互动叙事引擎还为时过早。事实上，gossip系统本身也许在未来的互动叙事技术当中才能被完全实现。

16.5.14 防御性否认

撒谎者可能会明确否认自己的撒谎行为以免受谴责。这样的情况比较容易实现：让撒谎者考察其他人获知其撒谎行为后可能做出的反应，如果承认撒谎并不会对自己造成太大影响，那么承认了也无妨；否则的话，就得一口否认，把谎撒到底。

16.5.15 秘密

透露秘密也是一种操纵信息的方式。珍妮偷偷告诉玛丽：“别告诉任何人我怀了弗莱德的孩子！”玛丽又会偷偷告诉安德莲，安德莲又会偷偷告诉玛希，玛希又会偷偷告诉其他人，直到最后所有人都知道了这个秘密，以至于让珍妮感到懊恼。透露和保守秘密是制造戏剧性的重要因素，这样的行为机制实现起来相当复杂。

笔者的做法是为每个 Event 追加一个布尔值标识 Secret，以此来代表该事件是否应该作为秘密来保守。事件的Subject“拥有”秘密，其他角色对该秘密的态度取决于该角色与Subject的关系。

这又是一个体现故事世界与真实世界区别的好例子。如果弗莱德（Fred）与珍妮（Jane）谈恋爱，珍妮怀了前者的孩子，那么在真实世界里，这也许会被描述为“Fred impregnates Jane（弗莱德让珍妮怀孕）”，因为我们通常会强调男性在这件事情当中的主动性。而在故事世界当中，如果珍妮的怀孕是制造戏剧性的重要因素，那么该事件就会被记录为“Jane becomes pregnant by Fred（珍妮怀了弗莱德的孩子）”。

从故事的戏剧性角度来看，珍妮在该事件中的重要性高于弗莱德，因此她才是 Subject，同时也正是秘密的拥有者。

任何秘密一开始都只会被极少数人知晓，通常只有Subject和DirObject知道。那么，秘密是如何传开的呢？

现实情况下，大部分人都会保守秘密。然而在虚构故事当中，秘密拥有者总会把秘密透露给其他人。这有时候无关大碍，有时候却能制造各种戏剧性效果——这正是泄密的乐趣之所在！

泄密的戏剧性效果与“信任程度”息息相关。珍妮也许只信任玛丽一个人，但是玛丽信任阿德莲，所以玛丽还是会告诉后者；同样，阿德莲信任安妮，安妮又会信任其他人。秘密的透露者总是会要求倾听者保守秘密，而倾听者总会把秘密透露给其信任的人，并进而让后者保守秘密，以期在不被别人发现自己泄密的同时，获得gossip带来的利益。

当然，最终所有人都会知道秘密。一旦秘密的拥有者发现了这一情况，事情就闹大了。秘密拥有者如何对朋友的泄密行为作出回应呢？

16.5.16 小道消息

有什么因素能够阻止所有人不停地撒谎和透露所有秘密呢？这个因素是撒谎或泄密行为暴露之后导致不良后果的可能性。关键的问题在于可发现性：人之所以会撒谎和泄密，是因为他们相信自己的行为不会被别人发现。但是有时候这样的行为就是会被别人发现。于是，我们需要一种让这些行为在有些时候被发现的机制。换句话说，这样的行为必须有被发现的可能性，同时这个可能性又不能太高，以至于风险大得不可接受。笔者的解决方案是“grapevine（小道消息）”机制。

小道消息机制的基本思路是记录下谁告诉了谁什么事情。我们必须为每一条gossip的每次传播做记录。Larry撒谎说John和Margaret在偷情，把这个谎言告诉了Dave；Dave告诉了Fred，Fred又告诉了Mary和Sam；Mary告诉了Jane，同时Sam告诉了Agnes和Tabitha；Agnes问Margaret她为什么与 John 偷情；Magrgaret 必须能够否认这个情况并且要求 Agnes 透露她的消息来源。图16.1展示了这个消息传递过程。

图16.1 谎言在故事角色中传播

要为图16.1 所示的消息传播树建立数据结构并不困难，其价值在于回溯消息传播的途径。Margaret知道了关于她自己的谣言之后，可以问Anges：“谁告诉你的？”Anges既可以供出Sam，也可以守口如瓶，如何回应取决于她与 Sam 和 Margaret 的关系。如果 Anges 供出了 Sam，那么Margaret就可以找Sam继续追问。如此一来，Margaret就有可能一直追溯到撒谎者。这样的回溯过程颇为繁复，不过回溯的可能性正是抑制撒谎行为的最大因素。

这么多信息需要记录，岂不是会导致相当大的数据量？况且大部分信息几乎没有什么戏剧性价值，何必如此呢？

现今的计算存储容量已经足够大，而且会越来越大，根本不用担心数据量的问题。如果确实要考虑数据量过大的情况，那么有一个技巧可以使用：一旦所有故事角色都知道了某个 Event，而且都对其作出了回应，互动叙事引擎完全可以丢弃该事件相关的传播信息。如果所有人都知道了这件事情，而且也没有任何与之相关的事情可做，那么当然也就没有必要保存相关信息了。

追溯传播源头这样的事情恐怕极少会发生吧？为什么非要多此一举呢？

的确，如果 Margaret 要想最终追查到撒谎者 Larry，那么她必须同时得到 Tabitha、Sam、Fred和Dave的供述。倘若其中任何一人决定保护Larry，那么Margaret就无法成功追查到Larry。尽管如此，实现追溯的可能性的价值在于“怀疑”引起的戏剧性效果。假设Margaret追查到Sam，Sam坚称他不记得谁告诉他的消息了（或者坚称他没告诉 Tabitha），那么这就可能会引至更多的戏剧性效果：Sam和Tabitha之间的关系会变得紧张（比如Sam可能会对Tabitha说：“你为什么把我供出来了呀？现在 Margaret 追着我不放呢！”）；Margaret 对 Sam 的信任程度会降低；不仅如此，Margaret 还可以根据她所了解到的 Sam 的人际关系网来猜测是谁把谣言告诉了 Sam，由此跨过Sam继续追踪谣言的源头。如此一来，Margaret可以怀疑特定的人并付诸于行动，推动情节的深入发展。

归根结底，实现小道消息机制的必要性还在于提供抑制撒谎行为的公平、可行的方案，这个方案的核心在于责任感（accountability）。

故事主人公常常因为信息缺失、受人误导，或者泄密而陷入困境。在故事角色之间传递特定信息是叙事的重要组成部分。另一方面，这种信息传递（gossip）机制实现起来相当复杂。初探互动叙事的新手不妨在积累足够的经验之后再来着手考虑全面实现gossip系统的问题。

16.6 本章小结

本书最重要的要点在于 Crawford 软件设计第一定律：始终考虑用户做什么，用户行为涉及的动词是什么。组织和管理动词是建立故事世界过程中最耗费精力的步骤。

动词并非独立存在，它以句子作为依托。我们需要以标准化的句子结构为基础来实现计算处理。最简单的做法是建立包含 Subject、Verb、DirObject、IndObject 这 4 个成分的标准句子结构。即便如此，IndObject 也不会经常用到。故事角色通过句子结构来建立 Plan（计划），经过互动叙事引擎执行之后的Plan就变成了Event。

第17章 语言

语言是日常生活中不可或缺的工具，几乎没有人会格外关注它。语言几乎是我们相互交流的唯一方式。回顾笔者对交互做出的定义：“发生在两个或多个活跃主体之间的循环过程，各方在此过程中交替地倾听、思考和发言，形成某种形式的对话。”该定义界定了一种对话，这种对话正是人机交互应该努力实现的目标。不仅如此，人机交互衍生的对话还应该是有趣和愉快的。当然，这就意味着计算机应该使用某种语言与人类进行交流。我们一直都在使用语言与计算机进行对话，只不过这种“语言”是经过大幅精简的人类语言。我们玩射击游戏的时候，对游戏操纵杆的操作就是一种语言，它告诉计算机往哪个方向移动、什么时候开火等。计算机则按照我们的要求显示相应的画面，作为对我们的回应。

使用文字处理软件的时候，我们使用键盘来告诉计算机输入什么字符。我们还使用鼠标告诉计算机从哪里开始编辑文本、需要执行什么命令。我们对键盘、鼠标的操作就是一种说给计算机听的语言：“选中这段文字，将其改为斜体字，字体大小增加为 14号。然后取消选中状态，到段落末尾删掉最后3 个字，追加新的字句。”

17.1 通过输入设备“说话”

用于对计算机“说话”的操纵杆、键盘、鼠标等输入设备与我们的直觉相去甚远，30 年前恐怕没有多少人接触过这些设备。这些设备采用的“语言”是计算机程序员设计的，而不是由语言学家设计的。这种语言颇为古怪：用鼠标控制光标点击小红圈是一个意思，点击小黄圈又是另外一个意思[27] ；画笔图标意味着设置样式，而画着细小横线的图标则代表用来控制文本分栏的功能[28] 。

这样的“接口语言（interface language）”是很糟糕的，所以也不难理解为什么有些人甚至不将其看做是一种语言。然而，它们的确是语言，只不过很像科幻电影中充满外星人符号的神秘语言罢了。归根结底，即使千奇百怪，它们也还是一种语言。

在过去的数十年当中，用户界面语言（user interface languages）的表达能力已经逐渐得到了提高，然而操纵杆、键盘和鼠标作为输入设备的能力也已经接近了极限。语音识别领域的专家也一直在努力发展语音输入技术，直接通过语音与计算机对话的那一天大概也不会太遥远。总有一天，计算机将能够与我们进行自然语言交流，就好像《星际迷航》里的计算机那样。

不过，作为互动叙事创作者的我们可不能守株待兔，因为语言是故事叙述之根本。谁能想象不用语言讲出来的故事吗？例外倒是有几个，比如默片、诸如《Koyaanisqatsi》[29] 这样的另类经典，以及少数漫画作品[30] 。不过，即便是默片也经常会穿插着文字描述。没有文字的电影和漫画作品之所以如此罕见，也正是因为不诉诸于语言的故事叙述尽管在理论上是可能的，但是却需要极大的天赋和创意才能创作出来。如此看来，互动叙事绝对是需要运用语言的。

于是问题也就来了：计算机目前还无法理解自然语言，这既不是存储容量的问题，也不是运行速度的问题，而是更根本性的问题。为了进一步阐释，让我们来了解一下 20 世纪初期的两位重要人物：Edward Sapir 和Benjamin Whorf[31] 。

17.2 Sapir-Whorf假说[32]

Edward Sapir和Benjamin Whorf都是语言学家，他们对美国原住民语言的研究表明，语言与人类对现实的认知密切相关。关于此观点的一个流行说法是爱斯基摩人有上百个形容下雪的词汇。尽管这个说法并不是真的，但反映的基本观点是正确的——爱斯基摩人使用的因纽特语所包含的下雪方面的语汇肯定比非洲原住民布须曼人的语言要多得多。不同的人文环境必然塑造不同的语言。

Sapir-Whorf假说早就被推翻了吧？

Sapir-Whorf假说谈不上被推翻了，因为事实上，Sapir和Whorf从来都没有明确界定过他们的假说，甚至从来都没宣称过他们提出的是一种假说。他们只是在相关著作当中从多个方面讨论了语言与我们对现实的认知两者之间的密切关联。其他人通过各种不尽相同的方式转述了他们的观点，由此衍生的各种不同的版本很容易使人迷惑。其中一种界定很严格的说法认为语言主宰着我们的思维，而这种说法早就被否定了。另一种比较宽泛的说法认为，语言反映了我们能够认知的现实世界，这种说法则是被广泛接受的。

可以说，语言是现实的一面镜子，进而也意味着：如果希望让计算机处理语言，那么就必须让计算机能够描述现实世界。谁能想象得出如何用计算机对现实世界建模呢？

Class Reality {

Planet Mercury, Venus, Earth, Mars,…

Ice Cream Chocolate, Vanilla, Strawberry, Rocky Road…

Cable USB, RS-232, FireWire, Centronics, Ethernet…

Tree Elm, Cherry, Walnut, Oak, Eucalyptus, Sycamore…

…

}

用计算机语言对现实世界进行详尽的建模，根本无从下手。

所以我们面临的问题在于，为了让计算机处理语言，必须先通过计算机语言对现实世界进行建模，但是没有人知道应该怎么做。有一个发展了数十年的超大型项目 Cyc[33] ，其宗旨就是对现实世界进行计算机建模。虽然该项目已经取得了令人赞叹的进展，但是还是离最终目标相去甚远。

这样想来，似乎互动叙事是不可能实现的。计算机无法处理人类语言，而没有语言就无法实现互动叙事。我们该怎么办呢？

17.3 模拟现实语言

人们想出了各种各样的巧妙方法在计算机里模拟真实语言，让计算机看起来像是能够理解人类语言。由 MIT 教授 Joseph Weizenbaum 于 20 世纪 60 年代开发的 ELIZA 就是这样的计算机程序[34] 。ELIZA 通过几个简单的技巧让其表现得像是一位能与用户对话的心理学家。当年一位名叫Daniel Bobrow 的MIT 讲师描述了这么一件令人啼笑皆非的轶事：

周六早上九点，Bolt、Beranek和Newman公司[35] 一位副总裁来到PDP-1计算机房，希望使用计算机进行演示。他在电传打字机[36] 上发现了一张字条，上面写着：“TYPE ALL MESSAGES INTO THIS TELETYPE AND END THEM WITH A PERIOD（用打字机发消息，请以句号结尾）”。这张字条是一位学生写的，他刚刚在计算机上运行了使用 LISP 语言编写的 DOCTOR 程序（基于 ELIZA）。然而，这位副总裁以为字条的意思是打字机与我家的打字机是相连的，因为我经常整夜使用计算机。于是，他就开始发送消息，以为是在跟我说话，然而其实是向 DOCTOR 程序提供输入。结果就出现了如下的“对话”：

VP: Do you think that I can use the computer this morning?（我今天早上能用计算机吗？）

ELIZA: Why do you ask?（你为什么要问呢？）

VP: I might be able to make some additional Telcom sales.（我用了可能会多做成几笔生意。）

ELIZA: Why aren’t you so sure?（你为什么不太确定呢？）

VP: My prospective customers have never seen a demonstration of the system.（正在谈的潜在客户还没看过系统演示。）

ELIZA: Does this mean very much to you?（这对你来说很要紧吗？）

VP: Of course it does.（当然了。）

ELIZA: You seem very positive about that.（你似乎很确定。）

VP: This is ridiculous.（瞎扯啥呢这是。）

ELIZA: What do you mean, this is ridiculous?（你说瞎扯是什么意思呢？）

VP: Is there any reason why I can’t use the computer now?（有什么我不能使用计算机的理由吗？） ELIZA: Tell me more about your prospective customers.（说说你的潜在客户。）

VP: Please dial me up on 491-1850（给我打个电话：491-1850）

副总裁输入最后一句话的时候没有输入句号，因此这次计算机就没有做出响应。这让副总裁感到非常气恼，以为是我在逗他玩儿，于是就给我打电话，把睡得正酣的我吵醒了：

VP: Why are you being so snotty to me?（你干嘛这么烦人？）

Bobrow: What do you mean I am being snotty to you?（我烦人？什么意思？）

这位副总裁把“我们刚才的对话”复述给我听，把我笑得前仰后合。我花了好半天才说服他相信跟他“对话”的只是计算机程序而已。

ELIZA 确实能骗到不少人，不过只要稍微多对话几分钟，谁都能发现其中的端倪。ELIZA 应用了3个简单的规则。

• 如果发现诸如“might”或“of course”之类的关键词，那么就基于关键词给出通用的回应。

• 将用户输入句子的一部分作为问题进行提问。

• 直接作出诸如“从哪个方面来看”或“你觉得怎么样”之类没有实质性内容的标准化回应。

ELIZA 并不能真正理解用户的语言，只是通过简单的回应技巧让人以为它能够理解而已，用户很快就能识破它的真面目。

17.3.1 Adventure文字冒险

20 世纪 70 年代的 Adventure 文字冒险游戏在模拟自然语言方面又进了一步。它包含的关键字极少且极简，玩家可以输入“Go north”或“Search room”等简单的语句在游戏中探索。这个发展最终催生了后来所谓的互动小说（interactive fiction），我们已经在第9章探讨过了。互动小说采用的简化语言固然是计算机语言处理方面的一大进步，不过其局限性仍然是显而易见的。

17.3.2 Siri

自20世纪90年代以来，计算机就具备了语音识别功能，但是当年的语音识别功能还不够强，很少有人使用。Apple公司在iPhone中采用的Siri技术[37] 才算是让语音识别进入了主流。

当然了，广告让 Siri 看起来比实际更强大。笔者尝试了如下问题，Siri 都只能给出“I don't understand that（我听不懂）”的回应。

• Why are guys so clueless?（为什么有些人这么笨？）

• Who was Erasmus of Rotterdam?（鹿特丹的伊拉斯谟是谁？）

• What color is melatonin?（褪黑素是什么颜色？）

• What is wrong with my computer?（我的电脑有什么问题？）

Siri只能处理iPhone用户常见需求相关的语言，比如查询周边商店的位置、询问天气、驾车导航等。其他事情都超出了Siri的能力范围（Siri还能针对少数事项做出风趣的回应）。Siri所能处理的只是自然语言当中很小的一部分。

当然，Siri 的局限性还不足以让我们对基于语音的人机交互抱有悲观态度。Apple 公司已经跨越了语言识别最大的障碍之一，在服务器端实现了 Siri 的“智能”。用户的语音输入是在 Apple 公司的服务器中得到处理的，这让作为前端的Siri程序装入iPhone成为可能。

Apple 公司当前的任务应该是以递增的方式不断拓展 Siri 的知识库，他们肯定正在这样做。不仅如此，Apple 公司还有绝佳的方式获得用户反馈：一旦 Siri 无法回答某个用户问题，这个问题就会被记录到专门的数据库当中，由此 Apple 就能从中发现最需要得到改进的问题。如果问 Siri“Who was Erasmus of Rotterdam?”这个问题的人足够多，或许最终Siri会变得能够回答它！

17.3.3 Façade

Michael Mateas 和 Andrew Ster 共同创建了第一个真正的互动故事世界，可以称得上是互动叙事领域的莱特兄弟[38] 。他们创作的故事世界 Façade[39] 是结合了人工智能（AI）与语言处理技巧的杰作，玩家扮演的角色是故事人物 Grace 和 Trip 的老朋友。Grace 和 Trip 是一对正在经历婚姻危机的夫妻，玩家在一个傍晚拜访了他们，最终Grace和Trip两人的冲突会发展至4种可能的结局。

• 玩家被Trip赶出了门。

• Grace和Trip在表面上和好了。

• 两个人冲突爆发，其中一人愤然出走，感情彻底破裂。

• 两个人真正和好了。

玩家与故事人物Grace和Trip的互动决定了故事以哪个结局结束。

17.3.4 语言的解释

Façade最突出的创新在于其强大的语言解析能力，其解析器能够解析玩家通过键盘输入的所有语言，然后将其归纳为如下36种基本动词之一。

1. agree

13. refer to a topic

25. intimate

2. disagree

14. praise

26. judgment

3. positive exclaim

15. ally

27. suggestion

4. negative exclaim

16. criticize light

28. misc-custom

5. express happy

17. criticize harsh

29. manipulation

6. express laugh

18. oppose

30. joke test limits

7. express sad

19. flirt

31. inappropriate

8. express angry

20. pacify

32. hug

9. maybe unsure

21. provoke

33. comfort

10. don’t understand

22. greet

34. kiss

11. thank

23. goodbye

35. physically favor

12. apologize

24. get attention

36. wander away

Façade 的人工智能能够将玩家输入识别为上述动词之一（当然不少输入会被归纳为第十项“don't understand”）。这个识别系统的巧妙之处在于它大大减少了语义容量（semantic volume）。所谓语义容量，指的是一个单词包含的意义的数量。单词“get”就包含了巨大的语义容量，因为它可以代表许多不同的意思。而像“bathykolpian”这样的生僻词的语义容量就很小，因为它只有一个很特定的意思。

Façade 的语言系统将语义空间分成了 36 个区域，每个区域包含一个单词。当然，“don't understand”这个区域具有极大的语义容量，其他区域则分别占用一部分剩下的语义容量。Façade的人工智能能够借此对玩家的任何输入进行归类，这同时也意味着，只要玩家输入包含任何一点意义，它都能辨识出来并且做出相应的响应。

负责处理语言的人工智能更绝妙，它并不是独立分析玩家输入，而是将分析建立在当前戏剧性上下文的基础上。一句话在不同的戏剧性上下文当中可能具有不同的意思。“我简直不敢相信”这句话在你中了彩票的时候说是一个意思，而在朋友对你生气的时候说则完全是另一个意思了。

对语义解析感兴趣的读者不妨在互联网搜索“WordNet”[40] 相关内容，以便深入了解。

17.3.5 严格的限制

语言理解和互动叙事领域都用到的一个秘密技巧是限制上下文，即把当前形势限定在特定的上下文当中。Façade 在 3 个方面出色地运用了这一技巧。其一，故事的舞台只有一个，即 Grace 和Trip 的公寓，仅内含了几个可以发生角色交互的子舞台。由于公寓只有少数几个房间，所有故事角色都不会被其他事情干扰，从而可以专注于当下的故事主线。

其二，故事只提供3个人物角色，其中一人还是玩家。这让创作者能够分别针对Grace和Trip进行专门实现，而不必开发通用的系统来处理不同角色的行为。

其三，故事发生的时间被限定在一个傍晚。这样的设定使得故事主线可以顺利进展，杜绝了大量其他无关的戏剧可能性。

从技术角度来看，这样的故事设计似乎违反直觉，然而这正是 Façade 成功的关键之所在。目标足够小，才能集中攻坚；目标太大，全面兼顾必然就很困难。许多艺术创作者都对这种施加限制带来的好处非常敏感。

故事叙述者甚至施加限制的必要性。要让故事中的英雄遭遇险境，显然不能让其身处人满为患的购物中心，而是得让其孤身一人面对挑战。否则的话，观众一定会问，为什么英雄不能向购物中心里的其他人寻求帮助。这种孤立故事主人公的手法在故事叙述当中广为使用。

在小说《蝇王》中，男孩子们是被孤立在一座岛屿上的。在美国影片《龙城风云》[41] 中，两个群体是在偏远的地区相遇的。在《星球大战》电影里，塔图因星球被设定为一个人口稀少、以沙漠地区为主、没有行政管制的荒蛮世界，这就给为非作歹的行为提供了余地。《星球大战：绝地归来》里，主人公天行者卢克与黑暗大帝的对峙也是发生在一个房间里，在场的除了他们之外只有黑武士一人而已。

要点33

尽可能地缩窄故事世界的上下文范畴，只有这样才有可能相对完备地实现故事世界。

17.3.6 带有面部表情的动画场景

电子游戏往往致力于高质量的图像效果以展现逼真的虚拟世界场景。Façade也采用了动画场景生成系统，虽然图像效果谈不上优秀，但是也算不错了。其独特之处在于，它能根据戏剧性形势来生成场景，其中的人物能够通过面部表情来反映心理状态。

人类面部饱含着情感。电影常常就依靠面部特写来表现人物。即使在动作片当中，面部表情也起到了重要的作用。不妨仔细看一看《星球大战》当中千年隼号太空船与敌军战机的激战桥段：几乎一半都是面部特写，而不光是太空船和激光武器的描写——我们不但能看到天行者卢克、韩·索罗、莉亚公主等人的面部表情，连机器人C3PO、R2D2都出境，敌军战机飞行员也要露头。

互动叙事系统也必须通过某种方式来展现故事人物的面部表情，Façade 就紧紧地抓住了这一关键。

17.3.7 固定的输出

Façade 最大的设计错误在于它依赖两位非玩家角色（NPC）的预置语音回应[42] 。这一做法导致了几个问题。其一，所有的语音对话都必须事先录制，增加了开发成本。其二，音频资源占用了巨大的存储容量；160MB的Façade游戏，其中大部分是音频。其三，任何形式的固化都限制了玩家选择的扩展能力。我们在第11章已经探讨过 Interactive Storytelling for Video Games 一书两位作者的建议，他们正是基于开发成本的考虑而提出不要向玩家提供“过多的选择”的。Façade 作者 Mateas 博士之后的作品《Prom Week》[43] 回归到了基于文本的形式，因为与图像相比，文本具有更大的操控自由度以处理各种不同的场面。虽然已经有不少能够把文本转为语音的软件，但是这样的转换目前还缺乏情感表达。“你怎么敢质疑我的信用”这样的文本转为语音之后，就失去了情感上的微妙表达。计算机科学家正致力于改进这一技术，总有一天我们会看到带有情感表达的文本转语音的技术。

17.3.8 有限的动词

Façade的语法解析器既是其最大的优势，同时也是其弱点：其精妙之处在于它把所有语句归纳成了 36 个动词，这种限制对于玩家来说既有益处又有害处。玩家角色可以亲吻另一个角色，但是却无法富于变化，因为解析器无法区分在脸颊上的轻轻一吻、嘴对嘴的温柔亲吻，以及长时间的深情热吻。玩家角色只能表达 4 种情感状态（幸福、悲伤、快乐、生气），没有其他可能性。把复杂的人际关系精化为36种基本状态，这既是了不起的事情，也是缺少变化的限制。

17.3.9 扩展性的局限

以笔者的拙见，Façade最严重的问题在于其扩展性上的局限。输入与输出之间的关系是硬编码实现的固化关联，整个系统内部的各种元素必须逐个处理。如果在这个基础上进行扩展，那么工作量就会随着动词集的扩大而呈现指数增长。如果把 Façade 作为走向互动叙事未来的跳板，那么这个跳板的弹性则是比较欠缺的。

归根结底，Façade从某个方面来说只是基于ELIZA的改进。它固然比ELIZA要复杂得多，但是其基本设计与 ELIZA 是类似的，也是接受用户的文本输入，然后确定最佳的反应方式，最后向用户输出。Façade 在诸多方面都比 ELIZA 更优秀，不仅仅只是令人赞叹的巧妙设计。然而，其核心思路仍然继承了ELIZA的DNA。

17.3.10 文本的组装

1984 年的一天，笔者在超市里不经意看到了《National Enquirer》[44] 报纸，忽然意识到其中的新闻标题完全是模式化的，进而受到了启发。如果新闻标题可以模式化地组装出来，那么在计算机里通过公式也应该可以生成那样的新闻标题。组装新闻标题当然只是个玩笑，不过笔者当时正在设计《Balance of Power》游戏，进而意识到可以经由组装生成的新闻消息来把发生的事件反馈给玩家。

组装新闻标题的基本构思很简单，如图17.1所示。

图17.1 新闻标题生成器的概念结构图

细心的读者会发现，图17.1与图8.5中展现的带有折返的分支树如出一辙。

难道你现在又要说分支树其实是可行的了吗？

这里的分支树只应用于单个句子，而不是整个故事。正如笔者在第8章所说，分支树只能处理变化（分支）较少的情况，这对于句子来说已经足够用了。相比之下，故事世界需要的自由度比句子需要的大得多，分支树就无法满足要求了。之后我们会看到，笔者做出的几项改进大大增加了新闻标题生成系统的能力。

第一个改进是为每个分支层级追加更多选择，以扩大分支树的宽度。顺着分支树随机选择即可得到一则标题。另外，笔者还追加了称为“intensifier（程度修饰）”的词组，用以表达事件的规模或程度等。以下是笔者在1984 年用于《Balance of Power》游戏的分支树：

I*Two dissidents*Top critics of the government*Groups of demonstrators*Thousands of government opponents*

I* escorted to meeting with ＆* harassed* thrown in jail* executed*

R* by police* by government agents* by/soldiers* by security men.

前两条以字母“I”起头，代表他们是 intensifier，计算机应该根据预先设定的变量值来决定选择各条当中的哪一项。每条 intensifier 都对应一个用来描述规模或程度的变量。第三条以字母“R”开头，代表计算机可以随机选择其中的项目。例子中这样一个简单的分支体系就能产生 64 个不同的句子，比如：

Top critics of the government executed by security men.

Two dissidents harassed by government agents.

Thousands of demonstrators thrown in jail by police.

对于整个故事世界而言，64种变化就显得太少了，而对于一个句子而言却是足够用了。

对新闻标题生成器的第二项改进是追加替换符。一旦遇到这些替换符，计算机就用特定的词语替换它们。如下是3种替换符：

%：句子Subject的名称

$：句子DirObject的名称

#：Subject的第三人称代词

如果Subject是Fred，DirObject是Mary，那么“% tells $ that # is feeling sad”这个句子在实际运行中就会被替换为“Fred tells Mary that he is feeling sad”。由此，计算机就可以根据具体情况将替换符替换为符合上下文的词。

第三项改进是追加了专门用于组装文本的脚本语言，这个议题将在本书第18章探讨。

17.4 创建新语言

与其勉为其难地对自然语言建模，不如创建一门能够满足需求的新语言。这个思路是正确的，不过要记住：创建新语言往往比想象得要困难。笔者建议读者们不妨先到互联网上搜索“constructed language（人工语言）”[45] ，了解相关知识之后再斟酌创建语言的问题。我们会发现，几乎所有人都能够设计语言（笔者就做到了）。从Solresol[46] 和Basic English[47] 等人工语言中，我们都能了解到不少有趣的思路。为了研发互动叙事系统，笔者自己在创建语言方面也做了几次尝试，几乎都以失败告终。尽管如此，其中两个做法还是值得考虑的。《Trust ＆ Betrayal》游戏算是一次成功的尝试。

17.4.1 Trust ＆ Betrayal

笔者于1987年开发的《Trust ＆ Betrayal》采用了一种基于超感觉知觉（Extrasensory perception, ESP）[48] 的语言。故事角色都具备一定的 ESP 能力，可以通过标准化的系统来实现沟通。这门语言通过图标的形式展现给玩家。图17.2 展示了这门语言包含的语汇（该图的上半部分）及其对应的意义（该图的下半部分）。

图17.2 《Trust ＆ Betrayal》中使用的图标语言

这门图标语言创建于1987年，因此图像效果并不惊艳。该语言只包含了79个词，但是已经能够实现惊人的表达力。它以图标拼接的方式组成句子，如图17.3所示。

虽然这个图标语言体系比较粗糙，但是却行之有效。

图17.3 这个句子的含义是：Vetvel告诉Skordokott说Wiki背叛了Skordokott

17.4.2 逆向解析器[49]

除了基于 ESP 的图标语言之外，《Trust ＆ Betrayal》还引入了称为“逆向解析器（inverse parser）”的概念。Texas Instruments 公司于20 世纪70 年代就获得了逆向解析器的相关专利，笔者则是在对此毫不知情的情况下独立开发了类似的系统。逆向解析器的基本原理就是逆转解析器的操作过程。

到底什么是解析器（parser）呢？解析器是接受文本输入并且分析其意义的软件程序。文字冒险游戏和互动小说都利用解析器来理解用户的文本输入，其解析器能够分析理解简单的句子。然而这些解析器的问题在于理解程度低，用户往往需要费尽心机地弄清楚到底应该以何种方式输入文本才能让解析器正确解读。逆向解析彻底消除了这个问题，因为它逆转了玩家与计算机的角色，要求计算机辅助用户来实现解析，而不是像普通解析器那样要求计算机分析用户的输入。

其基本思路在于：句子是由单词组成，每个单词都应该由用户按顺序选择。由此，计算机首先显示句子的第一个单词，然后向用户提供一系列符合上下文的可选单词作为句子的第二个单词。用户的每次选择都决定了句子的下一个部分可能出现的单词选择。图17.4 展示了图17.3 的例句的组装过程。

图17.4中第一组图示展现了呈现给玩家的初始状态。玩家扮演的是长角怪兽Vetvel。由于玩家角色的动作必须以自己为 Subject，因此逆向解析器就自动把 Vetvel 图标显示出来了。此外，逆向解析器还给出了一个待填充的空方格，以此代表下一个需要组装的句子成分。空方格处需要填入动词，于是逆向解析器还给出了当前上下文中所有可选的动词。值得注意的是，有些动词由于上下文的缘故没有被呈现出来供选择，比如“hello”就不在其中。由于Vetvel与Skordokott已经都在舞台上相识了，因此再说“hello”就毫无意义了。

逆向解析器与传统解析器的根本区别就在于此：前者具备后者所有的解析功能，但是前者是在玩家输入之前行使解析能力，而后者则是在玩家输入之后才进行解析。

图17.4 图17.3中例句的组装过程

首先，玩家查看可选的动词之后选择了“tell”，于是逆向解析器就把该动词追加到正在组装的句子当中，并且自动增加了两个单词，分别是作为 DirObject 的 Skordokott 和出现在动词下方的“that”（用箭头图标表示）。DirObject 之所以会自动出现，是因为在舞台上除了说话的 Vetvel 之外只有 Skordokott 在场，所以说话对象必然是它。动词“tell”需要“that”单词来连接后续的从句，因此也是自动出现的。

至此，逆向解析器须要等待玩家的进一步选择，于是又呈现新的空方格，并且给出可选的单词。此时玩家须要选择的是从句的Subject，即一个故事角色。在该例的上下文当中，Vetvel没必要告诉Skordokott关于自己或者Skordokott的事情，因此它们俩都没有出现在选择当中。

接下来，玩家选择了长得像猫的动物 Wiki，逆向解析器随之自动追加必要的成分。由于该例当中的规定是玩家不能说谎，因此逆向解析器就通过HistoryBook查询Vetvel知道的所有事实，发现Vetvel只知道“Wiki背叛了Skordokott”这一个事件，于是就自动补完了整个从句。

这不就是个基于嵌套菜单的系统吗？

这么说也没错，不过我们这里采用的是动态菜单，菜单的选项是由之前的菜单选择而动态确定的，而不是常见的静态菜单的情形。除此之外，这的确就是个嵌套菜单系统。基于文本的逆向解析器要比笔者在《Trust ＆ Betrayal》中采用的基于图标的系统更容易实现。至于是应该基于文本实现还是基于图标实现，本章后文还会探讨一些须要考虑的问题。

17.4.3 SympolTalk

SympolTalk 是笔者开发的语言系统，其表达能力远远超过了《Trust ＆ Betrayal》的图标语言系统。该系统是以彩色展现的，因此图17.5所示的黑白图片也许不太容易辨识。

图17.5 SympolTalk的一部分语汇

SympolTalk 用背景颜色对图标进行归类：绿色代表动词，蓝色代表角色，黄色代表舞台，洋红色代表道具，褐色代表副词，紫色代表形容词等。SympolTalk 组装句子的机制与《Trust ＆Betrayal》类似。图17.6展示了一个SympolTalk例句。

图17.6 一个用SympolTalk表示的句子

图17.6中的例句代表的句子是：“Chris says imperatively (with power) to Gemma that Gemma tell Chris where of treasure”，意思是“Chris 要求Gemma 告诉他宝藏在哪里”。

与文本语言相比，图标语言的一个重大优势在于它是二维的。基于文本的语言系统是一维的，从句等语言结构有时候会导致在意义上相连的单词在句子的实际位置并不相邻，引起理解上的困难。二维的图标展现方式不存在这一问题，表现语法关系非常容易。

但是用户必须得学习这样的图形语言。这可是个巨大的阻碍，因为人们不愿意被迫学习新语言。

这么说实在是低估了人们学习语言的天赋。游客在国外总能学到只言片语。人类具备极强的语言习得能力，吸收新知识不费吹灰之力。几乎没有人在使用《Trust ＆ Betrayal》的图标语言时遇到困难。与《Trust ＆ Betrayal》32 像素的黑白图标语言相比，SympolTalk 采用了 64 像素的彩色图标，其视觉信息量是前者的96倍。在tooltip提示的辅助之下，SympolTalk也很容掌握。

17.4.4 语义容量

图标语言还有个更重要的优势：在语义容量方面，图形符号比诸如英语这样的自然语言的单词要大得多。图17.7展示了一个SympolTalk动词。

图17.7 SympolTalk中的动词

图17.7中的动词图标代表的意思是“declare（声明）”，同时也可以理解为 tell、say、aver、reveal、disclose、insist、admit、confess、speak 等诸多意思。所有这些英文单词在意义上都有各自独特的侧重点，比如“to declare”与“to reveal”或者“to admit”显然具有不同的意思。如果我们在自然语言当中只使用一个动词来代替上述所有动词，那么造出来的句子有时候就会显得很别扭，比如：

Sam said that Joan was wrong.

Sam insisted that Joan was wrong.

Sam said that he murdered Joan.

Sam confessed that he murdered Joan.

Sam said that Tom murdered Joan.

Sam revealed that Tom murdered Joan.

这样的问题其实是所谓“uncanny valley（恐怖谷）”[50] 问题的一种变体。人类看到人脸的图像时的认知倾向是：要么会将其看作抽象的卡通图画，要么会将其看作具象的真实人脸。我们乐于接受绘画作品的不准确性是因为我们知道那只是绘画作品。假如一幅人脸画像有一点逼真效果，但又不如照片那么详实，那么我们的感觉就会大不相同。早期的 3D 动画中的面部表情就存在同样的问题：那种 3D 表情有点逼真，我们不会将其看作是抽象图画；但是同时又没有达到完全逼真的程度。这样的图像有时候会让我们产生“别扭”的感觉，因为它给人一种“非人”的感觉。这正是所谓“uncanny valley”理论的基本观点。

人工组装的语句存在同样的问题。对于一些指导性的简写语句，我们完全可以接受，比如用“Insert coin here（投币）”代表“Put the coin into this slot（从这个孔插入硬币）”，或者用“Power （电源开关）”代表“Press this button to turn on the machine（按下此按钮开机）”等。用计算机生成的文本在大部分时候都看起来还不错，但是总会时不时地出现让人感到不自然的语句。

在研发第一个版本的 Storytron 互动叙事系统时，笔者开发了一个强大的基于英语的文本输出系统（详情见第18章）。该系统能够理解代词、单复数、性别等概念，为互动叙事创作者提供了强大的功能来优化单词的运用。即便如此，造句不自然的 Uncanny Valley 问题也还是存在。互动小说创作软件 Inform 7 也具备强大的英语理解能力，还是存在同样的问题。计算机目前还是无法完美地处理自然语言的种种微妙之处，因此我们暂时还是接受图标语言在意义方面的模糊性为好。

17.4.5 如何创建新语言

有些设计师首先着手创建的是角色、道具和舞台等，这样做是本末倒置。第一步应该是创建动词清单。互动叙事对动词的运用比电子游戏要复杂得多，因为前者以更复杂的方式反映了人类生存状态。

所以我们就从为故事世界创建动词清单开始做起。清单中的动词直接决定了我们要创建的语言的语法。显然，每个动词都应该关联 Subject 和 DirObject。如果故事角色须要使用道具，那么还需要IndObject。如果故事中的人还要做交易，那么句子结构就可以是如下这样的：

Subject trade DirObect Prop1 Prop2

这样的句子结构就能够组装诸如“Rick trades Marlene his book for her comb（Rick 用他的书交换 Marlene 的梳子）”之类的句子了。需要特别注意的是，设计的时候稍不注意就很容易就设计出结构极为复杂的大型句子结构。笔者的建议是尽量保持简单，只允许每个动词关联 Subject、DirObject 和IndObject 3 个元素。等积累了一定的经验之后，再考虑更复杂的结构也不迟。

17.4.6 对称性

创建语言的根本优势在于，用户与计算机之间的交互能够借此实现一定的对称性，即用户与计算机通过同一种语言进行交流。这听起来好像是理所当然的，但是我们与计算机的交互其实一直都是非对称的——计算机用屏幕上的像素对我们“说话”，而我们则通过键盘和鼠标等输入设备来对计算机说话。在这种不对称的交互当中，交流成本更高，因为我们必须学习两种语言，一种是计算机的输入语言（键盘、鼠标），一种是计算机的输出语言（基于像素的屏幕回显）。

当然，设计一种用户与计算机都适用的语言与使用输入、输出双语言相比，前者更困难一些，因为前者需要同时满足双方的要求；相比之下，后者则可以分别发挥输入语言和输出语言各自的优势。尽管如此，创建一门在用户与计算机之间实现对称性的语言能为互动叙事提供更大的益处，笔者认为这样做还是值得的。

17.4.7 KISS原则[51]

对于刚开始探索互动叙事的入门者而言，最好还是从实现最简单的故事世界开始起步。与其一上来就实现《战争与和平》那样复杂恢宏的故事世界，不如从最简单的“约翰与珍妮在沙坑里玩耍”开始——故事人物所能做的事情应该极为有限。由此看来，描述青少年的故事或许比较适合作为第一次尝试的目标，毕竟青少年的阅历不如成年人那么多。比如，一群中学生相互发短信沟通的故事就是非常理想的互动叙事试炼目标，因为他们的交流话题相对有限，他们的社交活动可以产生简单直接的冲突，而且短信沟通采用的是简单的回合制。

最后，学习一些语言学知识也是必不可少的。无论如何，没有语言系统就无法实现互动叙事。在计算机科学家发明完备的自然语言处理技术之前，我们必须自行设计专门用于互动叙事的语言。

17.5 本章小结

游戏设计师的工作不算是最难的，好歹他们可以依赖简单的输入设备来实现游戏设计。实现互动叙事则困难得多，因为故事是通过语言来讲述的，互动叙事系统必须应用某种故事叙述语言。采用高度简化的英语并非不可行，但是从实践经验来看，这种做法很难让用户满意。在今后的几十年之内，恐怕基于图标的语言更有希望获得一定的成功。

第18章 脚本语言

故事世界必须具有交互性。交互性要求计算机能够“思考”。计算机的思考只能通过编程来实现。于是，故事世界创作者必须学会编程。

天哪！

除非我们是程序员，否则编程未必有什么乐趣可言。编程跟会计有几分相似，不过程序代码处理的是随时变化的数值。程序代码一点儿错都不能出，否则整个程序就可能毫无征兆地无法工作。因此有点较真的人更有可能做得好。

好在脚本语言提供了更加“平易近人”的编程方式。程序设计语言往往跟瑞士军刀一样，各种功能无奇不有；而脚本语言则更像是厨房用的菜刀，功能简单，针对性强。瑞士军刀功能虽全，用起来却颇为复杂；厨房里的菜刀则好用得多。因此，脚本语言并不难掌握。

脚本语言消减了一些全功能编程语言当中具备的抽象机制，从而降低了语言复杂性。它往往只针对特定种类的问题进行优化，这正是其价值和意义之所在。

18.1 互动叙事所需的语言设施

互动叙事系统必须支持编程，采用脚本语言则是最佳的方案。脚本语言可以从哪些方面减轻故事世界创作者的负担呢？以下是一些脚本语言应该具备的重要设施。

18.1.1 Fixed Typing（固定类型机制）

所谓类型机制（typing）是程序设计当中的概念，其基本想法是确定每个变量的类型（type）。在计算机内部，一切都是用 64 比特的数字表示的；软件能够将这些数字解释为各种各样的东西，比如整数、浮点数、字符、屏幕上的像素、大数的一部分等。我们可以把舞台（stage）看作包含多个属性的数据类型，其中各个属性都用特定数值来表示，比如用数值表示舞台的光照情况、舞台能站多少人、舞台是外景还是内景、目前有哪些角色在舞台上等。所有这些数值描述了舞台的种种属性，以变量的形式界定出了舞台的概念。

现代编程语言允许程序员创建任意多的类型，每个类型可以包含任何所需的元素，还可以包含定制的例程（routine）。这些类型被称为对象（objects），是现代编程语言当中必不可少的基本概念。通过对象，我们可以实现一定程度的抽象。不过，互动叙事所需的脚本语言并不需要对象；我们应该让创作者能够直接定义所需的数据类型，避开与对象打交道。

但是我们需要功能强大的对象呀！不能避开它。

采用脚本语言的目的就是简化编程任务。要减轻创作者的编程负担，就得牺牲一些功能。如果希望使用功能强大的语言，那么不妨采用像C# 这样的全功能现代编程语言。责任与能力是相辅相成的；编程语言的能力越大，使用时须要负的责任也就越大。

满足互动叙事的基本要求并不需要太多的数据类型。下面按照复杂性从低到高的顺序给出了一些应该实现的类型。

1．布尔值（Booleans）

脚本语言中的布尔值与常规编程语言中的无异，取值非真即假。

2．数字（Numbers）

就是普通数字。我们可以酌情采用整数或浮点数。笔者建议采用第13章讨论过的有界数值。

3．道具（Props）

道具代表故事世界里的物理实体。游戏设计师往往认为游戏世界里一定要包含手雷、医药箱、钥匙、金币、刀剑等道具。然而在互动叙事里，我们往往不需要那些东西。希区柯克[52] 说过：“如果在第一幕出现了枪，那么最好在第三幕开一枪。”我们应该只定义能实现戏剧性效果的必要道具。

4．舞台（Stages）

舞台是故事角色之间发生交互的场所。同一舞台上的所有角色都能发生互动，两个角色之间发生互动的必要条件是双方身处同一舞台。舞台不需要用x、y、z坐标来描述，舞台之间的切换是即刻完成的。作为故事角色的玩家应该只能看到自己当前所在的舞台。

5．人物角色（Characters）

如第14章所述，所谓人物角色就是故事中的演员，即可以作为Verb的Subject或DirObject的人，能够做出重大决策的人都是故事角色。

6．动词（Verbs）

如第16章所述，动词是故事世界的关键要素，我们用动词来描述包括玩家在内的各个故事角色能够做什么事情。

7．事件（Events）

如第16章所述，实际执行的动作形成事件。事件可以被看作句子，它包含 Subject、Verb、DirObject等成分。由事件组成的序列就形成了玩家在故事世界里生成的故事。

18.1.2 有色类型

现今大部分代码编辑器都支持用不同颜色显示不同类型的代码元素。对不同类型赋予不同颜色有助于我们辨识代码结构、分析问题。这个小技巧特别受用，笔者采用如下的颜色方案。

Booleans: black（布尔值：黑色）

Bounded numbers: red（有界数值：红色）

Props: magenta（道具：洋红色）

Stages: orange（舞台：橘红色）

Characters: blue（角色：蓝色）

Verbs: green（动词：绿色）

Events: French blue（事件：法国蓝）

18.1.3 流程控制

流程控制是编程语言的基本要素，多年以来发展出许多不同的流程控制元素，包括 GOTO 语句、跳转、子例程（subroutine）、方法（method）、函数（function）、过程（procedure）、循环、分支等多种结构。

流程控制的基本概念在于操纵程序代码执行的流程，是学习编程最先了解到的概念之一。要想避开流程控制，减轻创作者的编程负担，也是有可行办法的[53] 。

1．循环

简化流程控制的第一个办法是将循环控制封装到所谓“选择方法（selection functions）”里。Selection function 的功能是通过循环控制来遍历指定的数据集，然后从中选出最符合指定条件的元素。笔者的实践经验表明，这是互动叙事里最常用的功能之一。如果故事世界里的年轻女子必须决定和谁结婚，那么就得通过 selection function 逐个考察她认识的所有男子，最后找出综合条件最好的结婚。这样的查找过程在编码时一般都是通过循环结构来完成的。假设女子的择偶标准是英俊、富有并且未婚，那么这个查找过程就可以用如下的循环来实现：

Float best_Score=0;

Int best_Man=-1;

For (i=0; (i < cast_Size); ++i)

{

If (male[i] AND NOT married[i])

{

Float score=Rich_Poor[i] + Handsome_Ugly[i];

If (score>best_Score)

{

best_Score=score;

best_Man=i;

}

}

}

return best_Man;

我们可以把这一整段代码封装到脚本语言的一个方法（ function ）里，比如起名为Pick_Best_Character。该方法接受两个参数作为输入，acceptable 和 desirable。值得一提的是，笔者的实践经验表明这两个参数在许多地方都颇为受用。

两个参数都不代表数值，而是代表两段脚本。acceptable 脚本返回布尔值，desirable 脚本返回数值。在上例当中，这两个参数可以是：

acceptable=male[Candidate_Character] AND NOT married[Candidate_Character]

desirable=Rich_Poor[Candidate_Character] + Handsome_Ugly[Candidate_Character]

故事世界创作者只须指定 acceptable 和 desirable 两段脚本所需的变量参数，然后传入Pick_Best_Character 方法就能实现选择最佳结婚对象的功能。针对不同的数据类型，我们可以提供不同的Pick_Best_XXX方法（其中XXX视具体情况而定）。

这样一来，创作者就无须自行编写循环控制的代码了！棒极了！

2．分支结构

把IF语句封装为更简单易懂的脚本语言版本也不难实现：

Pick_Upper_If

{

Boolean script for deciding between upper and lower script（用于确定采用哪一段处理脚本）

upper numeric script（数值计算脚本代码之一）

lower numeric script（数值计算脚本代码之二）

}

封装之后的版本仍然实现与 IF 语言相同的功能，不过前者更简单易懂。要使用它，就必须理解其实现原理。在封装的三个段落当中，第一个代码段的执行结果是一个布尔值。如果布尔值为真，那么就执行第一个数值计算脚本代码（即第二个段落）；否则就执行第二个数值计算脚本代码（即第三个段落）。值得注意的是，Pick_Upper_If 是在两种可能的处理结果当中选择，而传统的 IF语言则是在两种可能的代码执行路径当中选择。

3．标准化的执行序列

这是互动叙事引擎设计当中最困难，但也最有用的部分。第19章将会详述笔者开发的互动叙事引擎。该引擎包含了复杂的执行序列，互动叙事引擎依据这个执行序列来实现与玩家的互动。这个执行序列分为固定部分和可变部分两种。固定部分由引擎直接执行，可变部分由故事世界创作者编写的脚本控制。也就是说，创作者只针对执行过程中的某些部分，通过脚本语言进行创作，其编写的所有脚本都对应执行序列中特定的位置。如此一来，故事世界创作者无需全权管理整个序列的运作，只需填充其中的空白部分即可。

创作者必须记住互动叙事引擎的所有运作步骤，还得了解各处的脚本如何影响执行序列。这工作量可不小！

别忘了要点 1：故事具有复杂的结构，需要满足许多难以界定的需求。开发互动叙事引擎的目的就是为创作者提供故事叙述所需的可运作的过程。一旦创作者理解了这个过程，只须填补缺失部分就能创建故事世界了。这确实需要花不少夫，但是与创作者自己从头开始设计引擎相比，工作量还是小多了。

将实现互动叙事的整个过程简化为针对特定步骤编写脚本语言代码，这是个极大的设计挑战。可别怪笔者没提醒过各位读者！

18.1.4 完全可用的默认方案

无论使用何种编程语言，我们都不可能直接编写实现过程的代码，总是需要事先做好必要的设置。使用新变量之前要声明它，还得对其初始化。要创建新类型，就必须指定其继承关系、使用了哪些程序库等各种技术细节。

设定默认值有时候相当令人头疼，笔者曾经为此绞尽脑汁。在全功能的编程语言当中，设定默认值经常是很重要的。而在设计脚本语言时，我们可以为编写脚本的创作者减轻这方面的负担，办法是为所有能够用脚本语言创建的设施设定标准化的默认值，使得脚本能够在默认情况下完全正常地运作。在创建新的数据结构实体时，脚本语言系统不但要自动创建该数据结构包含的所有内部元素，还得将它们初始化为妥当的值。初始化之后的实体组件应该能够在故事世界中直接使用而不产生任何错误——虽然直接使用默认值并不一定能达到理想的执行效果，但是这样做也不应该阻碍引擎的正常运作。

由于初始化是自动发生的，编写脚本的创作者固然有可能无法意识到其中的某些值并不完全合适。尽管如此，与缺失必要的赋值相比，最终发现并修改不妥当的默认值还是好一些。

提供可用默认值的做法彻底改变了编写脚本的本质。由此，编写脚本的创作者只需在已经存在的可用系统中查看并酌情修改需要修改的部分，不用记住并且自行追加必要的组件。

18.1.5 菜单驱动的编辑模式

无论是脚本语言还是其他编程语言，其最大的局限性之一在于它们都必须以键盘作为输入设备。笔者将其看作是天大的败笔。对于专业编程人员而言，记住大量语法也许还不算什么；但是对于非专业的入门者而言，这实在是太过复杂——更何况在互动叙事面前，所有创作者都是入门者。因为诸如拼错字母、漏掉必要的分隔符之类的小错误而导致整个系统无法运作，这是相当令人沮丧的。被层出不穷的语法错误所困扰的创作者很难保持创造力和乐观情绪。更糟糕的是，记住所有语法细节是不可能的；创作者不得不查阅语言手册——这是不到万般无奈之境地绝不会有人主动去做的事情。Java 编程语言在线参考手册的页面数以千计，恐怕没有人能够记住其中的所有细节。

用于互动叙事的脚本语言应该保持轻小，简单得可以用菜单来表示。笔者为互动叙事系统开发的脚本语言 Sappho 只包含 671 个操作符，比如 Blend、ReflexivePronoun、PastVerb、LookupEvent等。这听起来似乎操作数目太多，用菜单表示太过复杂，但是实际上并非如此。采用 Sappho 编写脚本的过程是这样的：首先从既有脚本中点选需要修改的操作符（因为总是有默认脚本存在，所以我们无须自行编写，只须要在既有脚本的基础上修改，而且一般是修改为更复杂的脚本），系统会自动识别该操作符的数据类型，然后动态地重建菜单，该菜单只包含能够返回相同数据类型的那些操作符。说到底，我们不能把道具放入需要舞台的地方，需要舞台类型的地方只能接受返回舞台类型的操作符。于是，菜单从来都不会同时包含所有671个操作符。平均而言，每个菜单体系大概包含100个左右的操作符。

Sappho 语言开发环境的右边栏提供了 22 个主菜单项；平均每个主菜单项只包含 5 个菜单条目。最大的 Sappho 菜单项包含了 21 个条目——这种极端情况也是存在的。Sappho 菜单体系没有二级菜单，所有操作符都能够一次性点选得到。

鼠标输入太慢了！键盘输入总是比鼠标输入快得多！

单论输入的信息量，使用键盘确实比使用鼠标快一些，但是这并不意味着键盘的工作效率高于鼠标。编写代码并不单单是录入文字信息的功夫，还需要花时间思考应该使用哪个操作。假如我们能记住所有671个操作符，那么也许不用花太多时间思考，直接进入字如泉涌的状态。然而，几乎没有人能够记住任何语言的完整细节，我们都会花时间思考有什么可用以及如何使用。如果这些操作符都在菜单里触手可及，那么也就不用花费那么多时间来思索了。作为 Sappho 语言的设计者和使用者，笔者的经验是使用菜单比使用键盘要快。

把可选菜单项限制在返回相同数据类型的操作符，这能够避免用户的输入错误，诸如“在需要返回舞台类型的地方输入了只能返回道具类型的操作符”之类的情况根本不会发生。用 Sappho 编写脚本程序根本不会发生语法错误，因为它的菜单体系不允许这样的语法错误发生。

18.1.6 参数提示

在故事世界创作者编辑脚本的时候，为其提供详尽的提示也能够减轻创作者的负担。如果创作者在倾向性公式（inclination formula）中输入了 Nice_Nasty，但是还没有指定它属于哪个角色，那么此时最好给出提示信息“Of whom?”，由此提示创作者指定角色。提示在接收多个参数的操作当中更有用：如果输入 pNice_Nasty，那么添加了提示信息的脚本代码就是：pNice_Nasty[ofWhom? forWhom]。

这岂不是与之前提倡的“提供默认值”的建议背道而驰了吗？

给出提示信息与提供默认值是两种不同的情况。如果创建新组件需要对其隐含的变量赋值，那么就应该提供可用的默认值。如果创建新组件所需指定的参数值是可见的，创作者的注意力已经在其上，自然会意识到需要指定参数，那么给出提示信息就足够了。

如果数据类型是用颜色来区分的（参见本章 18.1.9“有色类型”一节），那么参数提示更有价值；诸如“for whom?”这样的提示信息可以用代表角色数据类型的蓝色表示，以此表明此处应该指定角色。

18.1.7 包容性强的错误处理

如之前所述，完全避免语法错误是可能的（采用菜单体系作为输入方式）；然而，避免运行时错误是不可能的。仍以故事世界里的年轻女子必须选择结婚对象为例：假如在某一次故事世界体验当中，她犹豫得太久，结果所有可选的结婚对象都弃她而去了，那么此时Pick_Best_Character操作就找不到任何备选男子了。这样的情况该如何处理呢？

像这样的运行时错误经常会发生。如果要让故事世界保持良好的可玩性，那么无论如何设计都无法完全避免运行时错误。因此我们必须处理运行时错误。

编程语言系统在遇到运行时错误的时候，标准的处理办法是让程序崩溃。尽管现代编程语言具备许多避免它的设施和机制，但是它仍然有可能发生。运行时错误往往导致程序无法继续执行，进而导致程序退出。

然而在互动叙事系统当中，笔者有一种称为“poison（中毒）”的处理方案。Sappho 脚本语言系统遇到运行时错误的时候，程序不会崩溃或退出，而是让出错的当前计算“中毒”，进而导致所有其他与该计算相关的脚本代码也“中毒”；由此，Sappho 就直接跳过中毒的脚本代码继续执行。中毒的影响可以上溯至所有相关的操作和计算，从而导致最高层级的操作被取消。如此一来，互动叙事引擎就无法对所涉的相关情形作出回应处理，但是整个系统不会停止运作。

年轻女子的犹豫举动不会毁灭整个故事世界，只会影响她选择结婚对象的行为。在失去了所有人选的情况下，故事世界的其他事物都一切照旧，相当于她从来就没有可选结婚对象。运行时错误不会拖垮整个故事世界，只会让其失去一些可能性。

18.1.8 功能分析器

假如我们编写了如下的倾向性公式：

Inclination=Blend(Nice_Nasty(subject), pNice_Nasty(dirObject, subject), happy_sad (subject))

这看起来还不错。不过，它到底是如何运作的呢？三个输入参数究竟如何影响计算结果呢？除了代入众多数值进行试算以及单独编写测试程序进行分析之外，我们目前还没有其他办法来了解复杂算法的运作情况。

我们需要像刻度表盘那样的装置，用3个表盘分别代表3个输入参数，由此通过调整表盘的刻度来观察计算结果的变化。这样的装置能够明晰地表达算法是如何起作用的。

互动叙事的脚本语言应该提供类似这样的观察装置。为了实现它，我们首先须要实现一种不太常见的代码布局方式——垂直代码布局。

所有编程语言的代码布局一般都是横向的：代码从上至下按行排列，每一行可以排列多条语句，以便在屏幕上显示更多代码。垂直代码布局推翻了这种节省屏幕空间的做法，每一行只放置单独一个操作符，语句中的操作符和参数等元素从上至下垂直排列。如此一来，每条脚本语句又高又窄。

天哪！这样的话，读起代码来就只能上下来回翻看。整个程序岂不是跟胶带卷一样又细又长？

实际情况未必如此，图18.1展示了Sappho语言的垂直代码布局。

图18.1 Sappho语言采用的垂直代码布局

上述垂直布局与操作系统文件管理窗口里的文件夹结构类似，都采用了树状结构：即点击三角型图标展开或收回子结构。一条语句既可以全部收缩至只剩顶层的一行，也可以展开其下任何子结构以便查看。这样的展现方式有时候比传统的代码展现方式更加方便快捷。

垂直代码布局最大的意义在于，它让实现前述的功能分析装置成为可能。图18.2 展示了Sappho 语言系统里的功能分析器（function analyzer）。

图18.2 Sappho脚本语言的功能分析器

如图18.2 所示，代码编辑界面分为 3 列。第一列是垂直布局的脚本代码；第二列是用于调整各输入参数值的滑动条；第三列是语句中各部分的计算结果。通过调整滑动条，我们就能立即看到计算结果产生的变化。

笔者的实践经验表明，这样的分析装置让算法设计变得更加方便快捷，减轻了故事世界创作者的负担。如果不采用垂直布局，那么就很难做到这些。

18.1.9 故事的记录与回放

垂直布局还有一个好处是便于代码调试。笔者的同事Facundo Dominguez设计了一个基于垂直布局的绝妙方案，用来记录互动叙事引擎针对用户行为做出的所有回应。创作者可以轻易地运行故事世界并且随时回溯，查看引擎做出的每一个决定和每一次计算，以便了解来龙去脉。这样的调试方法有时候比传统的代码调试方法还要方便，因为我们不必做各种调试设置以期在运行过程中找出问题所在，而是可以随时回溯整个过程来查找问题。图18.3展示了Sappho语言系统里的故事世界运行记录。

如图18.3 所示的故事世界运行记录看起来也许有些不好理解，其中记录了 5 个事件的发生，分别以从 0 到 4 的数字标注。每个事件都以简化的方式展示，只显示了事件的 Subject、Verb、DirObject 3 个元素。图中事件 3 的运行细节被展开了，其中有 3 个角色（Fate、Sarah 和 Mike）对是否做出回应进行了计算，最后 Sarah 做出了回应。我们能够看到决定 Sarah 做出回应的脚本细节，从而了解这个决定是如何做出的。

笔者同事Facundo设计的故事世界记录和回放的方案并不会占用太多存储，以巧妙的方式让互动叙事引擎能够根据需要随时重建需要回溯或展开的运行细节。

图18.3 故事世界的运行记录

18.1.10 尽可能地模块化

将脚本代码模块化意味着把脚本代码划分为多个部分分别编写，而不是一次编写一个冗长巨大的脚本。模块化有助于编写复杂的故事世界的脚本。在笔者的互动叙事系统中，一个动词大概需要70段脚本代码，其中每一段脚本都只有一两行。

这么复杂的脚本语言，得花上好多年才能设计和实现出来。

欢迎踏入互动叙事的探索之旅！笔者早就说过，这不是一件容易的事情！创作者需要为自己创建的故事世界设计和编写许多算法。他们固然可以采用其他既有的编程语言，但是与其他全功能编程语言相比，专门定制的脚本语言能够极大地节省创作者的时间和精力。一切努力都是值得的。

18.2 文本生成的脚本示例

在上一章里，笔者说过要展示如何通过脚本来生成自然语言文本。图18.4 展示的正是这样的脚本示例。

图18.4 生成动词短语的简单脚本

图18.4中的脚本能够生成动词短语。如果句子的主语（Subject）是玩家自身，那么对应的动词短语就可以是“say that I think”，整个句子就是“I say that I think”。

如果主语不是玩家，那么动词短语就是由3个字符串连接起来的：第一个字符串是“says that”；第二个是“he”或“she”；第三个是“thinks”。于是动词短语就是“says that she thinks”或“says that he thinks”。

简单的文本组装都要费这么多功夫。

生成文本的确比较复杂，更复杂的句子需要更复杂的脚本，如图18.5所示。

图18.5 更复杂的脚本

如图18.5 所示的脚本能够生成复杂的文本，比如：“Morgana reserves one-eighth of the spoils for herself; the remainder she allots evenly among the subkings. In addition, she grants one-quarter of the cattle to Mordred”。脚本的第1、13 和 18 行中的ConCatN 操作符的功能是连接字符串；第5 行的CalculatedText5根据第6个参数Quantifier2BNumber的值来决定选择前5个字符串参数当中的哪一个作为输出结果；Quantifier2BNumber接受Quantifier类型的参数并且将其转换为-1到1之间的有界数值。所谓“quantifier”是代表程度的词。在本例当中，quantifier被转换为有界数值，进而对应5种不同的程度描述用词；程度最低的是“none”，比它高一点的是“one-sixtheenth”，以此类推。

上面的两个例子意在说明，文本生成是可以通过脚本来实现的。诸如动词后缀、单复数代词等句子元素的组装都可以用脚本来实现。

18.3 本章小结

设计算法并且以代码形式实现算法，这是故事世界创作者无法绕过的挑战。帮助创作者减轻负担的办法就是设计易学易用的脚本语言供他们使用。强大的功能与简单易用之间没有理想的平衡，我们在脚本语言设计上做出的选择反映了对两者的权衡。随着经验的不断积累，我们会逐渐摸索出更好的办法来帮助创作者更好地创建故事世界。

第19章 互动叙事引擎

互动叙事的核心在于技术引擎，它负责控制故事世界如何对玩家做出恰当的回应。完美的引擎应该能够处理故事创作者希望纳入的任何情节构思，但是如此一来，引擎也会变得异常复杂。我们的任务是设计足够简单的引擎以便于实现，同时又让它能满足故事世界的需求。

19.1 基于事件的互动叙事引擎

最简单的互动叙事引擎只依据事件之间的关联来做决定。第8章讨论过的分支树机制采用的就是这种做法：玩家触发某个事件，引擎就向玩家呈现更多的事件供选择；玩家选择其中一个选项，触发了新的事件，进而又得到更多的选择。这样的引擎用 HTML 就能实现——每个页面代表一个事件，其中包含触发更多事件（页面）的链接。

接下来，还要追加控制事件触发的逻辑，使得只有在满足特定逻辑条件的情况下才会从事件 A跳转到事件 B。触发条件还可以进一步采用数值计算来控制，比如规定在玩家实施某个动作特定次数之后才触发新事件。

基于事件的引擎的实现方法多种多样，既可以用布尔值控制事件之间的路径是否打通，也可以利用数值算法来实现更复杂的控制逻辑。

最复杂的实现方法会采用有向图来替代分支树结构。如第8章里所述，与分支树相比，有向图整体结构与之类似，只不过后者的路径可以依据方向任意串接；前者可以在有限步骤内得到遍历，而后者则可能形成复杂的循环路径。如果把不断变化的状态变量作为循环路径的控制条件之一，那么我们就能实现在不同的情况下经历“相同”的事件时，产生不同的结果。

基于事件的引擎最适合实现单个故事角色（即玩家）经历各种挑战的故事，其最大的弱点是很难实现让多个故事角色同时独立行动——并不是不能实现，只是相当复杂。

19.2 基于时间点的引擎

适合实现多个故事角色同时行动的办法是采用基于时间点的引擎（clock-based engine），其工作原理如图19.1 所示。笔者用时钟的滴答声（tick）来比喻时间点的进展，也有人把这种时间点称为节拍（beat）、秒数（second）或者回合（turn）。

图19.1 基于时间点的引擎的基本工作原理

19.2.1 实时发展与回合制发展

设计基于时间点的引擎面临一个关键选择，即引擎应该实现实时的故事发展还是应该实现回合制的发展。后者要求引擎在运作过程中等待玩家的决策输入，直到玩家做出回应之后才继续进展下去；前者则要求无论玩家是否做出回应，故事都以实时的方式持续进展。

两种方案都不难实现。互动叙事游戏 Façade 采用的就是实时发展的方式，效果也非常好。不过值得注意的是，实时发展的故事世界需要包含上下文无关的动词。换句话说，玩家必须能够在任何时刻选择做任何事情，这需要一组在任何情况下都具有一定意义的通用动词——这往往是很难实现的。

如果玩家在某个故事世界里既可以与对手搏斗，又可以与爱人缠绵，那么这个故事世界就必须同时包含出拳的动词和亲吻的动词。于是，玩家完全可以亲吻搏斗对手或者出拳打爱人。我们固然可以让玩家体会这样做的恶果，不过这样荒唐的行为是否有必要从设计上就加以避免呢？

对实时进展的故事世界追加上下文相关的种种限制是可能的，不过我们必须让玩家知晓这样的限制，进而打断玩家的流程。基于上述种种考虑，笔者建议采用回合制的进展方案，让玩家有足够的时间决定如何行动。当然，正如Façade所表明的，实时进展也是可行的。

19.2.2 计划

互动叙事引擎通过所谓“plans（计划）”来决定需要让何种事件在何时发生。Plan 指的是尚未发生的事件[54] ，它包含有事件需要在何时发生的时间信息。引擎把所有的 Plans 按照其预定发生时间的顺序存为一个列表，然后从最先需要发生的计划开始执行，直到把需要在当前时间点[55] 执行的计划全部执行完毕为止。等到下一个时间点，引擎会再次检查列表，看看是否有需要执行的计划。

如果玩家在这个过程中想做什么事情的话，那么又该怎么处理呢？玩家如何参与其中呢？

在需要玩家输入的情况下，引擎会暂停当前的运作并且向玩家提供行动选项。玩家做出行动选择之后，引擎再恢复运作，同时玩家的选择也会被转化为等待执行的plan。

19.2.3 计划的执行

Plan的执行过程非常简单：

• 步骤 1：把 Plan 从计划列表移到 HistoryBook 当中。被移动到HistoryBook 中的 Plan 就变成了 Event（事件）。HistoryBook 还会记录该 Event 的相关信息，包括发生时间、发生地点、发生原因（即何种事件导致它发生）等。

• 步骤 2：执行事件发生的结果脚本。Event 发生（即被执行）之后，引擎还需要实现 Event的 Consequences（结果）。所谓 Consequence，是一段脚本，它描述和实现故事世界因该事件而发生的变化。如果 Tex 用酒瓶砸了 Jim 的头，那么酒瓶就碎掉了，无法被再次用作打击的武器——这样的变化就是通过执行Consequence脚本来实现的。

• 步骤3：让Fate对事件作出回应。引擎首先给Fate回应的机会。具体的回应过程稍后详述。

• 步骤4：让事件目击者作出回应。所谓目击者（witness）是同在舞台上，但与所发生事件不直接相关的人物。让目击者先于事件参与者作出回应，是因为目击者的回应有可能阻断参与者的行为。如果警长是 Tex 与 Jim 斗殴的目击者，那么他朝天开枪并且朝斗殴的俩人大喊“住手”，那么斗殴就有可能因此立刻停止。

• 步骤 5：让事件的 DirObject 作出回应。DirObject 是最有可能对所发生事件做出回应的人物。如果有人对你做了什么，难道你不会有所反应吗？

• 步骤 6：让事件的 Subject 做出回应。Subject 是最后做出回应的人物。一般来说，只有在所发生事件属于某个事件序列的情况下，才需要Subject对事件做出回应（其原因如下所述）。

上述执行流程的顺序非常关键。Fate 必须第一个回应，因为 Fate 有可能对事态进展做出干预，导致其他故事角色无法进行回应。如果大反派将英雄绑在桌子上并且宣布“现在我要挖出你的心”，那么 Fate 此时就可以施加干预，让整个房间突然断电，进而给了英雄趁黑脱身的机会。Fate做出此种干预之后，就没有人须要再对大反派刚才的行为作出反应了。

为什么还要安排Subject对Event作出回应呢？这就好像在说：“Joe打了Tom，然后Joe对此作出回应说，‘我打他了吗？’”

由于Subject的一系列行动有可能被其他人打断，因此必须给Subject做出回应的机会。大反派可以发出3个事件组成的事件序列：首先会偷偷地合成一些毒药，接着把毒药偷偷拿到厨房，然后把毒药放入冰激凌里。每个事件都有可能被其他人目击到从而导致阴谋败露。如果不把这个阴谋分割为3个连续事件的话，那么包括大反派自己在内的任何一方就都无法对其做出适合的回应。

19.2.4 角色[56]

每个动词关联一个或多个 Roles，以此来界定故事人物如何对该动词代表的 Event 做出反应。每个Role包含3部分信息：需求脚本、情感反应和一组反应选项。

轮到某个人物对事件做出反应的时候，引擎首先检查该事件包含的每个 Role 的需求脚本。需求脚本界定了以这个Role为蓝本做出反应的人物必须满足的条件。以动词“出拳”为例：Jim刚刚对Tex执行了这个动词（Jim打了Tex一拳），那么现场的人会以符合自身角色（Role）的方式对这个事件做出反应；也就是说，不同的人可能符合不同的Role。作为DirObject的Tex显然会对自己被打做出回应，而 Tex 的女友 Stella 的反应必然与 Tex 不同，因此两人符合的 Role 是不同的。倘若Tex的大哥Lamont也在场，那么他可能也会对Tex被打有所反应。于是，这个事件就需要3种不同的 Role ，一种是针对 DirObject 的，一种是针对女友的，一种是针对家庭成员的。针对DirObject 的 Role 的需求很简单：只有事件的 DirObject 才符合该 Role。针对女友的 Role 的需求是：只有DirObject的女友才符合该Role。针对家庭成员的Role的需求是：只有DirObject的家庭成员才符合该Role[57] 。

轮到某个人物对事件做出反应时，互动叙事引擎逐个检查事件所涉Verb包含的Role需求，以期找出该人物符合其中哪一个 Role。如果无法为该人物找到匹配的 Role，那么引擎就跳过此人，继续处理下一位可能做出反应的人物。一旦为某人找到了匹配的 Role，引擎就会为此人执行匹配的Role（即依据该Role实现此人对事件的反应）。

19.2.5 Role的执行

为故事人物执行 Role 的第一个步骤是根据事件改变人物的情感状态。扮演 DirObject 角色的Tex 被 Jim 打了一拳之后，可能会对此很生气；Tex 的女友则可能感到恐惧。总之，人物对事件的反应从情感反应开始。

接下来，引擎还需要确定人物如何对事件做出行动上的反应。互动叙事创作者为每个 Role 创建一组反应选项，这些选项就是匹配该Role的人物针对该事件可能执行的Plans。扮演家庭成员角色的人物Lamont的恰当反应可以是站到Tex和Jim两个人之间阻止打斗、加入打斗，或者站在一边让 Tex 自己解决。这些 Plans 都可以作为家庭成员这个 Role 的反应选项。作为 Text 的家庭成员，Lamont绝不会要求与Jim玩一局象棋或者亲吻Tex的女友，因此这样的Verb就不应该出现在反应选项当中。

创作者必须为每个反应选项的 Verb 指定完整句子中的所有语法成分。在大部分情况下，这不难做到。如果Tex 选择了“break whiskey bottle over the Subject's head（用威士忌酒瓶砸Subject的头）”的反应选项，那么Verb 部分就是“break the whiskey bottle over head of”，只需要再指定谁是DirObject 就能形成完整的句子了。在本例中，作为打人事件 Subject 的 Jim 就是反应选项的DirObject。反应选项仍然是由Sappho脚本语言来描述的。

除此之外，还有一种复杂的情况需要考虑。假如Jim与Tex之间的斗殴恶化，发展成了众人的群殴，那么这就意味着酒吧里的每个人都参与了打斗。假如酒吧里牛仔 Gordon 也要参与斗殴，那么他应该打谁呢？对于 Tex 来说，反击对象很明确，就应该是 Jim。而对于 Gordon 来说，应该如何选择出手对象呢？

19.2.6 Acceptable（接受度）和Desirable（意愿）

这里就需要用到我们在第18章提到过的Acceptable和Desirable的概念。每个选择都是通过执行两个脚本计算出来的。一个脚本用于计算该选择的可接受度（acceptability），另一个用于计算人物执行该选择的意愿（desirability）。Gordon 匹配的 Role 当中可以包含“punch”的反应选项，该选项需要指定DirObject才能执行。于是，DirObject就须要由执行Acceptable和Desirable两个脚本的计算结果来确定。Acceptable 脚本的考察条件可以是：“在当前舞台上，并且不是酒吧店员的男性都是可接受的 DirObject”。Desirable脚本计算的是 Godron 对DirObject 执行反应选项 Verb 的意愿的强烈程度；这可能取决于Gordon对各备选DirObject的喜爱程度——他最想打的应该是他在现场最讨厌的那个人。

Acceptable与Desirable共同影响着反应选项。如果Gordon是当地的传教士，那么他就应该以身作则，树立良好的榜样。如果 Gordon 比较儒弱，那么他可能就不敢参与群殴。Acceptable 的考察条件完全可以是：“只要我不是传教士，我就可以参与”。Desirable 的考察条件完全可以是：“我的行动意愿取决于我对 DirObject 的讨厌程度减去我的儒弱程度”。反应选项的 Acceptable 结果是可接受，那么还要计算 Desirable；如果 Desirable 的结果大于零，并且大于所有其他选项的 Desirable 计算结果，那么该选项就会被选中。一旦确定了反应选项，引擎就为该人物建立新的Plan以备执行。

在处理了针对所发生事件的所有人物的反应之后，引擎就继续查询 Plan List（计划列表），决定接下来触发什么事件。Plan List 当中所有应该执行的计划都执行了之后，当前回合就结束了，引擎进入下一回合的运作。

还不算太复杂，不是吗？

19.2.7 其他细节

我们还可以在引擎中实现几个小的细节。第一个是密探行为（spying）。密探行为体现了戏剧与真实生活的重大区别。在真实生活当中，我们可以安排绝对私密的会面，保证谈话内容不会被偷听到。而在戏剧当中，两个人悄声密谈如何对付敌人之后离开现场，旁边拉开的门帘往往就露出了敌人的面孔！在戏剧里安排这种巧合事件有助于编织复杂的戏剧性情节。巧合太多固然可能显得不够“真实”，但毕竟这是戏剧，不是模拟现实。

第二个细节是称为 group（群体）的数据类型。所谓 group 是一组故事人物形成的社会单元。互动叙事创作者也许会为一个团伙创建 group，从而将这一伙人当做一个整体来对待。团伙首领可以带领众人集体行动，接受手下人的赞美和鼓励等。虽然戏剧中的大部分交互都限于两个人之间，但是群体互动也有其用武之地，因此互动叙事引擎应该支持这种功能。

第三个细节是引擎应该允许故事人物在某个 Plan 被执行之前，终止这个 Plan。大反派偷偷地往英雄的酒杯里放入了毒药，然后进一步建立了把酒杯递给英雄的Plan。如果一位服务员看到了大反派的投毒行为，随即质问他为什么要这么做，那么此时大反派的阴谋就已经暴露了，于是大反派自然应该会取消“把酒杯递给英雄”的Plan。

19.3 基于情节的引擎

基于情节（plot-based）的引擎源自对故事生成程序的探索。James R. Meehan在1977 年创建的Tale-Spin 就是最早的探索性尝试之一。Tale-Spin 采用的引擎基本上是个在叙事上下文当中运行的推理引擎（inference engine），其基本情节是固定的：故事人物遇到挑战，获得如何克服挑战的知识，然后克服挑战。

基于情节的引擎在过去数十年当中得到了长足的发展。在现今的引擎当中，我们可以定义诸如主人公、反面人物、人物目标、辅助性人物等抽象概念。故事可以经由这些设定被生成出来。

这样的做法其实是没有什么交互性的，它只是依据基本设定生成固定的故事而已。不过，在故事进展的关键节点中断故事发展，修改其中的基本设定参数之后再继续运行的做法也能提供某种形式的互动叙事。

迄今为止，基于情节的引擎还未能实现足够好的互动叙事，其面临的障碍有三。其一，它本质上就是推理引擎，其核心任务是对理性行为的决策；说到底，它与火星探测车上采用的软件并没有太多区别。除了推理理性行为以外，推理引擎当然也可以用来推理戏剧性行为。不过，推理理性行为所采用的技巧似乎不太适用于处理戏剧性行为。跨越这一障碍的门槛太高，还没有人能够实现突破。

基于情节的引擎的第二个障碍是在叙事过程中插入玩家行为而导致的种种问题。玩家对叙事过程的干预往往只出现在关键的戏剧性时刻，然而这样的关键时刻在故事中不会太多，从而使得玩家感觉自己只是故事的旁观者而不是参与其中的主人公。

第三个障碍在于，基于情节的引擎总是尝试把玩家拉入既定的整体情节主线当中去。引擎在故事进展过程中不断地迫使玩家遵从既定的情节发展路线，使得玩家的体验大打折扣。这就像汽车里的导航系统不断地提醒司机应该在哪里拐弯一样——倘若司机只遵从其中一部分指示，那么导航效果就很难保证了。基于情节的引擎遇到的挑战与之类似。

有人试图用所谓“适应性情节（adaptive-plot）”机制来跨越这第三个障碍。采用这种机制，叙事引擎会首先尝试遵从某个既定的情节主线发展，但是如果玩家的行为导致故事发展远远偏离了既定的主线，那么引擎就会查询所有其他可选的情节主线，从中找到与当前发展最贴切的情节，然后改为按照新的情节主线发展故事。这种做法应该更凑效，但是迄今为止的绝大部分引擎实现所包含的情节数据库都太小，不足以达到良好的效果。

19.4 本章小结

基于事件、基于时间点和基于情节的引擎绝不会是互动叙事引擎仅有的3种类型。笔者相信未来一定会有新想法和新类型出现。基于事件的引擎最容易实现，但是其戏剧性表达能力非常有限，无法满足互动叙事的要求。当然，笔者也不排除这种引擎在将来发展得能够提供良好的互动叙事体验的可能性。21 世纪的机动车引擎与 19 世纪末期的相比，简直是天壤之别；前者的能力要强大得多。不过，笔者还是不看好基于事件的引擎。

基于时间点的引擎是当前最有希望的引擎技术。无论是颇有突破性的 Façade 互动叙事游戏，还是笔者本人开发的 Storytron 互动叙事系统，都采用了基于时间点的引擎[58] 。这种引擎与基于事件的引擎之间的最大区别在于，前者能够轻松处理多个故事角色同时发展剧情的情况，而后者在这方面不太拿手。不过，前者实现起来也更加复杂。Façade 通过高度简化克服了复杂性的问题，而Storytron则因为太过复杂而以失败告终。笔者相信基于时间点的引擎最有希望让互动叙事实现突破性发展，不过需要做的工作还很多，成功尚需时日。

基于情节的引擎看起来似乎是一条死路，骨子里没有交互性可言，因为它依赖于按照既定情节主线实现故事发展，并没有考虑与玩家的互动，从根本上来说并不是以玩家为中心的。这种引擎背后所体现的设计思路是“如何让玩家按照既定情节发展故事”，而不是“在与玩家的互动过程中塑造故事情节”。

第20章 高层结构

上一章简单介绍了基于情节的引擎。这种引擎采用了从上至下的设计结构，从最高层的情节主线和故事结构开始，往下分析如何结合高层主线和玩家决策来实现低层的细节事件。迄今为止，这种技术还未在互动叙事领域获得任何突破。其他引擎采用了从下至上的设计结构，即从故事人物的行为决策开始，向上塑造故事体验。这种做法似乎更有希望一些，但是也面临重大的挑战，因为从下至上的故事塑造容易导致情节漫无目的地朝多个方向发展，很难实现故事结构的完整性。本章探讨如何缓解这个问题，提出一些能够增强整体叙事体验的方法。

20.1 剧情节点

要为互动叙事注入故事结构，最简单的技巧是使用所谓剧情节点（plot points）[59] 。在传统的故事叙述当中，剧情节点是故事中关键的戏剧性时刻；它通常意味着故事的某种转折点或者新发展。在互动叙事里，笔者用这个概念来代表由 Fate 强行触发的事件，Fate 借此操纵故事向特定方向发展。笔者将剧情节点分为3个大类，分别是定时型剧情节点、逻辑型剧情节点以及机遇型剧情节点。

20.1.1 定时型剧情节点

定时型剧情节点是最简单的实现方案：在故事的进展过程当中，Fate 于既定的时刻触发既定的事件。笔者设计的互动叙事故事世界《亚瑟王之死》[60] 分为两个主要时期。在前一个时期，玩家扮演的亚瑟王在群龙无首的英格兰逐步建立起自己的统治地位，同时改善各方关系、维护王国和平。然后，Fate 就会触发剧情节点，让故事世界进入第二个时期。在第二个时期，亚瑟王的手下莫德雷德联手其他不忠诚的领主举旗造反，几经辗转，最终与亚瑟王展开了大决战，整个故事以决战的告终而结束。

定时型剧情节点很容易实现。创作者只须要设定 Fate 在何时触发何种事件即可。定时型剧情节点特别适合强行为故事收尾。故事世界完全可以拥有多个定时型剧情节点。我们完全可以把电影《星球大战4》的剧情发展看作是Fate不断加以干预的结果。

1．Fate把R2D2和C3PO机器人带到了主人公天行者卢克跟前。

2．Fate让R2D2跑走，迫使天行者卢克追赶它。

3．Fate让绝地武士欧比旺与卢克不期而遇。

4．Fate让卢克的守护者死掉，使得他失去了留在家乡的理由。

5．Fate让卢克遭遇敌人的终极武器死星，从而给了他救出莉亚公主的机会。

6．Fate把死星引至起义军的秘密基地，迫使卢克不得不彻底摧毁死星。

从这个角度看来，似乎天行者卢克从头到尾都一直在应对Fate触发的剧情节点事件。

定时型剧情节点有一个糟糕的弱点——它完全无视玩家是否做好了应对的准备。假如天行者卢克一直在太空站里与美女调情，没心情与欧比旺一起离开家乡，那么当死星抵达莉亚公主的家乡奥德兰星球的时候，卢克一行可能就根本还没有赶到。

20.1.2 逻辑型剧情节点

既定事件发生的时间和地点无法切合玩家状态的问题，可以通过逻辑型剧情节点来解决。逻辑型剧情节点只在特定条件被满足的情况下才会被触发，比如：只要卢克没有赶到奥德兰星球，那么死星就不回摧毁它；只要卢克没有抵达起义军基地，那么死星也不会抵达。逻辑型剧情节点通常出现在定时型剧情节点之后，后者的触发敦促玩家付诸行动以满足特定的条件，前者则辅助玩家满足条件。倘若卢克与外星美女聊得毫无去意，那么就可以让欧比旺揪着他的耳朵，强行把他拉上太空船一起出发赶往奥德兰星球；假如卢克在被死星摧毁的奥德兰星球的废墟中徘徊，那么就可以让莉亚公主扇他一耳光，要求他们立刻赶往起义军基地。

逻辑型剧情节点效果很好，但是实现起来有些麻烦。创作者必须考虑预定条件无法被满足的情况。更糟糕的是，强迫玩家满足既定条件实际上剥夺了玩家的自由。如果玩家角色仅仅因为没有去做故事为其安排的事情就被扇耳光，那么玩家恐怕就会觉得很扫兴了。因此，逻辑型剧情节点还须谨慎使用。

20.1.3 机遇型剧情节点

机遇型剧情节点是实现起来最困难的方案，但是比逻辑型剧情节点更加巧妙。如果卢克在太空站徘徊，迟迟不出发，那么就触发机遇型剧情节点，让他卷入一个子情节，让这个子情节最终把他引至他应该抵达的目的地。或者，与他调情的外星美女其实是敌军间谍，她暴露身份之后，卢克不得不逃上太空船立刻出发。如果太空船没等卢克赶到就起飞了，那么还可以让卢克偷一艘太空船紧跟其后，并且让女间谍追击他，如此等等。

故事世界有时候会因为没有什么有趣的事件发生而暂时变得乏味起来，这既可能是玩家导致的，也可能是创作者设计不当导致。在戏剧性方面实现惊涛骇浪与风平浪静的完美平衡几乎是不可能的。预防乏味形势的办法是采用笔者称为“提神醒脑”的剧情节点，具体做法是：让 Fate 监控正在执行的所有动词（即正在发生的所有事件）的 Momentous_Trivial 值；一旦其平均值低于某个阀值，就让 Fate 触发惊爆的事件，比如像电影《星球大战》里安排的那样，让主人公发现他其实是大反派的儿子，或者告知主人公他失散多年的兄弟被坏人抓走了，等等。

总体来说，剧情节点对故事世界的高层结构起到了调节作用。同时也要记住，剧情节点终究是一种把创作者意愿强加给玩家的控制技巧，谨慎地使用它一般不会影响玩家的体验。使用得越多，整个故事就会变得越线性化，玩家的自由度也就越低。剧情节点就好比是最辛辣的调料——稍微放一点味道甚佳，放得太多就难以下咽了。

20.2 目标

制定目标是更自然的引导玩家行动的办法。在大部分故事里，主人公的最终目标往往很快就被确定下来。在故事世界当中，我们也须要尽快为玩家确立终极目标。这样的目标往往是显而易见的，比如：嫁给如意郎君；经历一段令人难忘的恋情；摆脱他人的束缚；等等。实现的难点在于建立一系列的次级目标，使得玩家在它们的综合作用之下间接达成终极目标。在理想的情况下，故事世界里的次级目标对于玩家来说也应该是显而易见的，然而技术实现方面的种种限制使得我们很难做到这一点。因此，目前应该考虑的是通过何种方式向玩家提供建议。

我们可以让故事中的配角敦促玩家朝特定目标前进。传统故事叙述经常采用这种做法，特别是在主人公很年轻的情况下。这样的配角可以是一位谆谆教导的长者，可以是一位提供不同想法的伙伴，还可以是玩家角色的手下或助手（比如机器人或者年龄更小的人物）。无论如何设定，配角都可以主动地（比如对确定目标提出建设性意见）或被动地（比如辅助玩家进行决策）对玩家施加影响。

20.3 预期的问题

笔者对互动叙事的早期探索充满了惨痛的教训。在笔者曾经创建过的亚瑟王传说的故事世界里，主要任务包括亚瑟王、王后格尼薇儿，以及兰斯洛[61] 。为了让故事世界与亚瑟王传说相吻合，笔者提供了让兰斯洛爱上王后的可能性。在一次故事世界的运行试验中，兰斯洛的确爱上了王后。动词 Make_Love_To 的 Important_Trivial 值非常高；由于兰斯洛是亚瑟王的挚友，王后与亚瑟王又是夫妻关系，因此亚瑟王对关乎王后和兰斯洛两人的任何事情都会非常感兴趣。结果，兰斯洛在与王后偷情之后再次见到亚瑟王时，gossip 系统经过计算后为兰斯洛找到了最能引起亚瑟王兴趣的话题：“亚瑟，你知道吗？我与你的妻子有染！”

这样的情况让笔者认识到，看似合理的算法仍然有可能导致极其荒唐的叙事。

上述问题体现了某种预期机制的缺失。兰斯洛应该能够预期亚瑟王得知王后偷情时的反应，从而决定在见到亚瑟王的时候对此避而不谈。然而事实表明，设计预期机制的算法比设计互动叙事引擎当中的其他算法难得多。

这种难度的根源来自两方面。其一，要对他人的反应做出预期，我们必须站在他人的角度进行思考。兰斯洛必须站在亚瑟王的角度，设想如果自己是亚瑟王的话会如何对王后的偷情行为做出反应。执行这样的假设涉及大量计算和巧妙的算法实现。其二，我们是在用虚拟语气考虑问题：“如果”亚瑟王知道了王后偷情的事情，那么他“可能”做出何种反应？

20.3.1 难点问题

笔者已经在互动叙事引擎里实现了故事角色的情感反应机制。这个机制能够保证，如果亚瑟王真的发现了兰斯洛的背叛行为（与王后偷情），那么他就会变得非常生气。然而，这种情感反应是建立在事件真实发生的基础之上的。换句话说，得知亚瑟王做出何种反应的唯一办法就是让他知道该事件并且真的做出实际反应（他会一怒之下杀死兰斯洛）。由于“预期”的意义是在事件实际发生之前对后果进行揣测，因此如果我们要实现预期机制，那么就须要在故事世界内部再创建一个虚拟故事世界，让兰斯洛能够通过在这个虚拟故事世界里模拟亚瑟王得知事件后的反应来实现预期，进而根据预期来决定如何行事。这问题可就复杂了。

这正是在计算机科学领域当中被称为“递归（recursion）”的一类问题。兰斯洛在脑海里模拟整个事件实际发生的情形，相当于在某个计算过程当中嵌套执行这个过程本身，这只能通过递归来实现。不过，递归实现对程序的设计提出了特定的要求。采用递归方法将迫使笔者重写引擎的绝大部分代码，于是笔者被迫寻求其他的解决方案。

20.3.2 解决方案

解决上述问题的办法相当复杂，实现起来耗力费时，而且具体做法与笔者的引擎设计相关，属于单纯的编程问题，故在此就不作详尽阐释了。总的来说，有3种可能的解决方案。第一个方案是首先计算听者的反应（即听者得知消息之后可能执行的动词），然后再从说话者的角度来计算听者的反应是否切合说话者的意愿。笔者在自己的互动叙事引擎设计当中没有采纳这个方案，因为它没有优先考虑情感反应，而情感反应恰恰是预期机制里最重要的因素。通过该方案，我们可以沿着决策树追溯所有可能的反应动词，但是追溯的分支层次越深，计算和处理复杂度也就越大。

第二个解决方案是笔者采用的方案：首先计算听者的情感反应，然后再衡量该情感反应是否符合说话者的意愿。

要实现这个方案，就需要为每个动词设定情感反应。每当故事人物目睹或得知某个事件之后，我们必须能够计算该人物对此事件的情感反应。此外，故事人物应该只针对事件的 Subject 做出情感反应，而不用针对 DirObject 做出，因为 Subject 才是实际导致该事件发生的人物。而 DirObject只是该事件中的被动一方，不应该受牵连。如此一来，故事世界创作者也无需指定反应的目标对象。这一“只针对 Subject 做出反应”的限制，对于绝大部分动词而言都不会产生问题，个别动词则可以单独做额外的处理。仍然以前面的亚瑟王传说故事世界为例，我们可以在兰斯洛与王后偷情的事件（其中兰斯洛是 Subject）之前插入一个以王后为 Subject 的新事件“王后同意与兰斯洛偷情”。如此一来，亚瑟王就可以根据这两个事件分别对两人作出反应。这样的做法能够简化计算，因为故事人物每次只需要对一个人物（即事件的Subject）作出反应。

如此一来，说话者在衡量是否向听者透露信息时，只需以听者的情感反应为依据。听者在得知消息后，其对说话者持有的 pNice_Nasty 和 pHonest_False 的数值会发生变化；我们把两者的变化量相加，如果结果为正值，那么就表明听者得知消息后对说话者的情感反应是正面积极的，说话者可以实际向听者透露这则消息。

不过，上述计算只适用于说话者本人是事件的 Subject 的情形。如果一系列事件当中某些Subject 是其他故事人物，那么说话者还应该考虑听者在得知消息后对这些人物的情感反应。举例来说，即使兰斯洛不关心亚瑟王得知消息后对他的反应，他可能还会考虑亚瑟王对王后格尼薇儿的反应。亚瑟王对王后的 pNice_Nasty 和 pHonest_False 值的减少对于王后来说是不利的；同时兰斯洛对王后的 pNice_Nasty 值是很高的，因此他也不愿意这种对王后不利的事情发生。于是，在计算兰斯洛是否应该向亚瑟王透露他与王后偷情的事情的时候，我们还须要追加新的判断条件，即亚瑟王在得知消息后对王后的 pNice_Nasty 和 pHonest_False 的变化情况。这两个值的综合应该根据兰斯洛对王后的 pNice_Nasty 予以加权处理。如果兰斯洛对王后的爱达到了最高值，那么亚瑟王得知消息后对王后的反应与对兰斯洛的反应就应该是同等重要的；如果兰斯洛对王后的爱只有50%，那么亚瑟王对王后的反应的权重就应该只有一半的效果。

20.3.3 解决方案面临的挑战

计算情感反应的解决方案还面临其他的挑战。假如叛徒莫德雷德掌握了兰斯洛与王后偷情的消息，那么从他的角度来看，亚瑟王得知这一消息对兰斯洛和王后都非常不利。由于莫德雷德对兰斯洛和王后都抱有敌意，因此他就有充分的动机向亚瑟王透露这一消息。

此外，还有一个复杂因素需要处理：兰斯洛谨慎行事，没有向亚瑟王透露他与王后偷情的事情，但是之后又遇到了莫德雷德。由于莫德雷德对事件本身的情感反应对于兰斯洛来说无关大碍，因此兰斯洛就有可能向莫德雷德透露这件事情，进而让莫德雷德有机会让亚瑟王、兰斯洛和王后三人之间产生矛盾。尽管兰斯洛完全可能会因为其他考虑而拒绝向莫德雷德透露任何消息，但是如果我们不妥当处理上述可能性的话，那么互动叙事引擎还是有可能把事情搞砸。

要解决这个问题，我们需要计算消息从听者传到亚瑟王那里的可能性。这个算法可能需要相当巧妙的实现，不过归根结底与gossip系统运用的各种算法在本质上是同类型的，因此可以从中借鉴一二。唯一需要纳入计算的新因素是故事人物透露秘密的倾向性，这个因素需要根据该人物对秘密当事人的忠诚度和对不知情者的忠诚度来综合计算。其中的种种算法细节可能会变得非常复杂。

20.3.4 对动词的选择

预期机制还可以应用于当事人的最初决策，即在当事人触发根源事件之前就把后续可能发生的变化纳入考量。说到底，兰斯洛和王后在决定偷情之前就应该考虑亚瑟王在得知此事之后的可能反应，而不光是在事后才考虑是否走漏风声的问题。基本的做法是为动词的倾向性公式追加新的判断条件。这一判断条件与计算透露信息的意愿的判断条件类似，同时还包括两个新的考虑因素。第一个考虑因素是其他人物的可能反应。在 gossip（传小道消息）的情形当中，我们需要考虑的是单个听者的可能反应；在其他的动词选择情形当中，我们需要考虑所有人物的可能反应。换句话说，王后在决定是否与兰斯洛偷情的时候，她必须考虑所有人物的可能反应。此外，王后还必须根据她与各个人物的关系好坏来对他们的可能反应进行加权计算。所有人物的反应可能需要通过非线性的方式来进行综合计算（比如根据与他人关系值的平方来进行加权计算），这样计算出来的结果能够让王后意识到偷情是有风险的。

第二个新的考虑因素是事件的保密程度。王后在考虑是否与兰斯洛偷情的时候，她知道兰斯洛和自己对此事保秘对双方都有利。两人偷情之后，王后相信兰斯洛也不会泄露秘密，亚瑟王也就无从得知此事——如果偷情之事不容易暴露，那么王后也就有可能选择偷情。

20.3.5 推理引擎

实现预期机制面临的最大挑战是实现逻辑推理。假如王后告诉亚瑟王说她要回娘家过夜，但是后来亚瑟王发现她并没有在娘家过夜，那么我们就需要实现逻辑推理，让亚瑟王能够对此事起疑心。

人工智能（AI）领域的研究者们研发了所谓推理引擎（inference engine）来实现逻辑推理功能。推理引擎是一种通用程序，它接收以特定形式描述的命题陈述，然后以此为基础得出推断。最简单的推理引擎基本上实现了基于三段论的推理。高级的推理引擎则可以进行复杂的逻辑计算，从大量陈述当中得出惊人的推断。

推理引擎的运作前提是数据库当中必须预先存储了大量可供使用的信息。以上述王后没有在娘家过夜的情况为例，如果推理引擎要得出事有蹊跷的推断，那么就必须从如下的两条陈述开始。

1. 王后说她要在娘家过夜。

2. 王后并没有在娘家过夜。

推理引擎必须首先识别这两条陈述之间存在的矛盾之处，然后尝试为这一矛盾寻求解释。为了找到可能的解释，推理引擎必须掌握大量关于人类行为的相关信息：

3. 如果某人说的话与事实不符，那么可能的原因要么是此人说谎，要么是有异常事件发生。

于是推理引擎就需要考察上述两种可能情况并且确定哪一种可能性更大。为了做出判定，推理引擎必须采纳如下的两条陈述。

4. 人们喜欢谈论异常事件。

5. 王后没有向亚瑟王提到任何异常事件。

推理引擎由此得出结论。

6. 没有任何异常事件导致王后不能在娘家过夜。

推理引擎将上述结论结合第3条陈述，得出最终的推断。

7. 王后谎称她在娘家过夜。

人工智能研究者们发现，推理引擎的计算过程需要以海量的信息为基础，因此推理引擎只能针对极为特定的情况才能实现，比如领域知识非常有限并且定义完备。互动叙事所需的这类通用推理引擎需要太多的信息储备，不太可能得到完整的实现和应用。尽管如此，推理引擎仍然是一个重要的方向。等到将来我们能够建立规模足够大的海量信息库的时候，或许推理引擎会在互动叙事领域占有一席之地。

20.3.6 树状分析机制

实现预期机制的第三个方案是探查人物的可能行为的分支树并且从中作出判断。如果互动叙事引擎能够在各个事件之间建立链接关系，那么它就有可能通过追溯这些链接关系来断定可能发生的事情。这种方案需要大量的编程才能实现，其原理与象棋游戏程序当中采用的树状搜索类似。好消息是这种树状搜索在每个节点的分支都不会太多；坏消息是每次决策的过程都比象棋游戏中的决策过程复杂得多，因为其涉及的变量非常多。

该方案的致命问题在于：在每个节点上的决策都必须以所涉人物对相关变量的认知为基础进行计算，而不是以各个变量的实际数值为基础。换句话说，如果叛徒莫德雷德设下诡计，让兰斯洛与王后偷情，那么他的算计必然要以他所认为的两人之间的爱慕程度为基础。倘若他并不知道兰斯洛与王后两情相悦，那么也就不可能想出这则诡计。这样的计算需要用到第14章讨论过的“第三人称属性”。

涉及第三人称属性的处理异常复杂，因为这些属性无法直接获得，只能通过第三人间接的推算出来。如果Tom想知道Dick对Harry的pNice_Nasty，有3类信息可以作为他的推算依据。

1．Tom 观察到的 Dick 针对 Harry 的言行。这意味着 Tom 要依据 Dick 的言行进行推测。如果Tom看到Harry热情地问候Dick，Dick也热情的回应，那么Tom就必须通过考察问候动词的倾向性公式来估算Dick对Harry的pNice_Nasty。然而，由于pNice_Nasty的值往往与其他属性值相关联，并且这些其他属性值也具有各自的不确定性，因此整个计算充满了太多不确定性，几乎无法达到实用的程度。

2．Tom 与 Dick 关于 Harry 的对话。了解某人对他人看法的最佳方式是直接与这个人谈论其看法。Tom可以对Dick说，“哥们儿，那个Harry真是个混蛋呐，你说是不是。”然后Tom可以通过观察 Dick 对此的反应来推测他对 Harry 的看法。如果 Dick 并不信任 Tom，那么这个办法就失效了，因为在这种情况下，Dick对Tom的回应可能具有防御性。

3．Tom 与其他人讨论Dick 对Harry 的看法。Tom 可以对Jane 说，“我听说Dick 讨厌Harry！”借此，Tom期望Jane也对Dick如何看待Harry发表看法。故事世界必须产生许多这样的对话才能较好地实现估算。这种关于第三人的对话往往是肥皂剧中的主要内容。

上述种种考察方式包含了诸多不确定性因素，因此我们既要在处理第三人称属性的时候衡量这些不确定性，还要在每个人物的相关计算处理当中考虑它们。

如果上述这些议题听起来复杂得不得了，那么不妨考察一下笔者设计的游戏 Gossip[62] 。这款简单的小游戏主要就是围绕上述第2类和第3类信息运作的。我开发这款游戏的目的正是探索如何对预期过程进行建模。

一言以蔽之，通过树状分析实现预期机制的难度极大；笔者建议各位在设计第一代互动叙事引擎的时候不要考虑这一实现方案。

20.4 本章小结

采用自底至上架构的互动叙事引擎很容易导致错综复杂而且毫无意义的故事发展，因此故事世界创作者必须动用特定的处理技巧来保持故事的完整性并且引导故事的发展过程。本章给出了几种可能的解决方案。总体来说，我们不能把思维局限于“玩家必须遵从我的剧情安排”，而应该把故事世界想象成一条水流缓慢的河，让水流推动玩家顺势前进，而不是把玩家拖着往前走。

注　释

[1].此处指的是美国著名卡通画家 Scott McCloud 的名作《理解漫画》（Understanding Comics）。详情参见：http://en.wikipedia.org/wiki/Scott_McCloud 以及 http://en.wikipedia.org/wiki/Understanding_Comics。

[2].《Pong》是最早进入主流的街机电子游戏之一，由Atari于1972 年推出。参见：http://en.wikipedia.org/wiki/Pong。

[3].这是《指环王》小说第三部《王者归来》当中的情节，参见：https://en.wikipedia.org/wiki/Lord_of_the_rings。

[4].原文为“Hell hath no fury like a woman scorned”，出处参见：http://en.wiktionary.org/wiki/hell_hath_no_fury_like_a_woman_scorned。

[5].原文为“A lie can travel around the world before the truth can lace its shoes”，也作“a lie can travel halfway around the world while the truth is putting on its shoes”，语出自著名美国作家马克·吐温。

[6].由于计算机用来存储数值的容量（比特位）总是有限的，因此计算机运算时得到的近似值与数学意义上的精确值存在误差。参见：http://en.wikipedia.org/wiki/Round-off_error。

[7].参见：www.choiceofgames.com。

[8].值得提示的是，第12章“关键细节”一节提到过加权的问题，作者这里探讨的正是改进的加权方案。

[9].具体的计算公式将在后文给出。

[10].莎士比亚的作品《哈姆雷特》的故事详情可参见：http://en.wikipedia.org/wiki/Hamlet。

[11].作者此处对比喻的解说似乎并不说明问题。正交的意义在于两个属性没有相关性，一个属性的变化不会导致另一个属性发生变化。在我们熟悉的二维坐标中，因为x 坐标轴与y 坐标轴是垂直的，所以描述位置的坐标点（x, y）沿着x 轴移动时，其 y 坐标值是不会发生变化——这正是我们需要的特性，即一个属性（x 坐标）的变化不会引起另一个属性（y 坐标）的变化，两个属性是互不相关的。

[12].参见：http://en.wikipedia.org/wiki/Five_Factor_Model

[13].Loquacious，健谈、喋喋不休；taciturn，不苟言笑、沉默寡言。

[14].Chaste，忠贞的；Licentious，放荡的。

[15].比如Nice_Nasty是很小的负值，Willful_Pliant是很大的正值。

[16].值得一提的是，她还是 Computer as Theatre 一书的作者。该书在互动叙事领域颇有影响力，于 1991 年出版第一版，2014 年出版了第二版。这本书也是Chris Crawford 在本书末尾推荐的图书之一。有兴趣的读者不妨一读。

[17].此处所谓 agent，类似于人工智能领域的“intelligent agnet”概念里的“agent”，指的是代理行使某种职能的程序。参见：http://en.wikipedia.org/wiki/Software_agent。

[18].这类似于“破窗理论”描述的情形。参见：http://en.wikipedia.org/wiki/Broken_windows_theory。

[19].《鲁拜集》是波斯 11 世纪的诗人欧玛尔·海亚姆（Omar Khayyám）的四行诗集。参见：http://en.wikipedia.org/wiki/Rubaiyat_of_Omar_Khayyam。

[20].这里有必要提醒读者的是，作者在介绍了这 5 种手段之后，还讨论了 3 种他认为不可取的方法：直面观众（Dropping the Fourth Wall）、强制情节（Plot Enforcement）和纠正玩家（"Correcting" the Player）。详见后文。

[21].参见：http://en.wikipedia.org/wiki/Mordred。

[22].原文为“Dropping the Fourth Wall”，字面意思为“消除第四面墙”。所谓“第四面墙（the fourth wall）”，指的是剧场舞台与观众之间的“无形的墙壁”，用来比喻演员与观众身处虚拟与现实两界，互不相通。舞台剧演员对着观众说话、与观众互动，或者影视剧中的演员对着镜头向观众说话，就意味着这第四面墙被消除或打破了。详情可参见：http://en.wikipedia.org/wiki/Fourth_wall。

[23].这与Don Norman 在The Design of Everyday Things中提出的看法是一致的。

[24].本段系摘自莎士比亚的戏剧《哈姆雷特》第五幕第一场。

[25].即动作的受动者，或称受事。

[26].即动作的施动者，或称施事。

[27].指的是Apple Mac OS 操作系统中窗口左上角的“关闭”、“最小化”图标按钮。

[28].这是诸如Mcirosoft Word 等文字处理软件当中常见的功能图标。

[29].作者在第1章提到过此片，详见第1章相关译注。

[30].Wordless novel（无字小说）就是典型的例子，这方面的代表人物包括 Lynd Ward 等。参见：http://en.wikipedia.org/wiki/Wordless_novel以及http://en.wikipedia.org/wiki/Lynd_Ward。

[31].Edward Sapir 是美国人类学家和语言学家，被广泛认为是语言学发展早期最重要的人物之一。Benjamin Whorf 是他的学生，两人共同提出了所谓语言相对性假说（linguistic relativity，也称 Sapir-Whorf hypothesis）。详情可参见：http://en.wikipedia.org/wiki/Edward_Sapir，http://en.wikipedia.org/wiki/Benjamin_Lee_Whorf。

[32].参见：http://en.wikipedia.org/wiki/Linguistic_relativity。

[33].参见：http://en.wikipedia.org/wiki/Cyc。

[34].参见：http://en.wikipedia.org/wiki/ELIZA。

[35].一家提供研发服务的美国高科技公司。参见：http://en.wikipedia.org/wiki/BBN_Technologies。

[36].Teletype，一种早期计算机使用的输入设备。参见：http://en.wikipedia.org/wiki/Teleprinter。

[37].Siri 是Apple公司2011 年推出的语音助手，搭载于其iOS系统中。参见：http://en.wikipedia.org/wiki/Siri。

[38].莱特兄弟（Wright brothers）是现代飞机的发明者。

[39].该游戏提供免费下载。参见：http://www.interactivestory.net/。

[40].WordNet是一个英语词法数据库项目，参见：http://en.wikipedia.org/wiki/WordNet及http://wordnet.princeton.edu/。

[41].影片详情参见：http://en.wikipedia.org/wiki/The_Ox-Bow_Incident。

[42].即事先录制好的固定的语音片段。

[43].参见：http://promweek.soe.ucsc.edu/。

[44].美国一份以报道丑闻著称的报纸。参见：http://en.wikipedia.org/wiki/National_Enquirer。

[45].参见：http://en.wikipedia.org/wiki/Constructed_language。

[46].参见：http://en.wikipedia.org/wiki/Solresol。

[47].参见：http://en.wikipedia.org/wiki/Basic_English。

[48].即俗称的“第六感”。详情参见：http://en.wikipedia.org/wiki/Extrasensory_perception。

[49].参见：http://en.wikipedia.org/wiki/Inverse_parser。

[50].恐怖谷理论是关于人类对机器人及其他非人类物体的感觉的假设。该假设指出，类人物体（比如机器人）在外形和动作上接近人类，但又仍然存在差别的特定情况下，作为观察者的人类可能会对其产生反感或恐惧感。详情参见：http://en.wikipedia.org/wiki/Uncanny_valley。

[51].KISS 代表“Keep It Simple, Stupid”，意思是保持简单最好，避免不必要的复杂性。参见：http://en.wikipedia.org/wiki/KISS_principle。

[52].世界著名的电影艺术大师，参见：http://en.wikipedia.org/wiki/Alfred_Hitchcock。

[53].作者的基本意思是，把一些常用的功能进行封装，在脚本语言中提供可供故事创作者直接使用的方法，从而避免让创作者使用脚本语言自行编程实现这些功能。

[54].参见第16章“计划与事件”一节。

[55].在回合制里，就是当前回合。

[56].注意区分此处的角色（role）概念与戏剧中的人物角色（character）概念。这里所谓的角色强调的是人物起到的作用。

[57].不难看出，作者所谓的 Role 类似于戏剧理论中的“角色”，但是作者实际是在技术实现的层面上来阐述的。作为技术实现机制的Role不是人物的属性，而是被包含在事件当中。在场人物通过比对自身的条件与各个Role的需求条件来确认自己在事件当中应该扮演何种角色，从而确定如何做出恰当的反应。

[58].Façade采用的是实时发展的机制，而Storytron 采用的是回合制。

[59].剧情节点已经在第15章做过简单介绍。

[60].该名称借用自英国作家托马斯·马洛里（Thomas Malory）编写的亚瑟王传说的经典作品。参见：http://en.wikipedia. org/wiki/Le_Morte_d'Arthur。

[61].在亚瑟王传说故事当中，王后与圆桌骑士兰斯洛发生过一段恋情。

[62].参见：http://en.wikipedia.org/wiki/Gossip_(video_game)。

第五部分 回顾与展望

学术界一直在从各种不同的角度研究互动叙事。我们在此要回顾一下这方面的成果，同时笔者还会展望互动叙事的未来。

第21章：诸多针对互动叙事的学术研究尝试从多种角度进行探索。

第22章：互动叙事有着什么样的未来呢？没有人知道，不过笔者会给出自己的预测。

第21章 学术研究

在本书中，笔者尽可能地以有条理的方式来阐述互动叙事这个充满变数、日新月异的领域。除了笔者在前文整理出来的诸多议题之外，还有许多事情尚未加以讨论，特别是该领域在学术界的发展。本章将介绍这方面的发展。

介绍互动叙事的学术发展颇为困难，其原因之一在于各个研究项目之间缺乏统一性和连贯性。笔者整理了4个互动叙事相关的学术会议在2001年、2006年、2009年和2011年的会议论文集，其作者有300多位。这300人当中，只有34人在两年及以上的会议中发表过论文。换句话说，超过 250 位作者只参加过一次会议，然后就消失了。这个情况反映了互动叙事领域里的一个常见问题：不断有人进入该领域，展开了一些有趣的探索，意味到该领域中的问题非常困难，然后就退出了。全球只有几十位互动叙事实践者多年以来一直持续探索该领域，他们取得了一些进展，但大部分探索成果都只是昙花一现。在互动叙事领域，新鲜想法和项目的诞生和消亡速度之快，恐怕巴黎时尚界都要自愧不如。

还有一个问题也减缓了互动叙事的学术发展：学术界完全没有纵身实践的动机。别忘了，学术生涯的成败往往在于学者发表的研究论文，而不在于能够实际运作的软件。即使学术界人士没有设计出任何可用的互动叙事系统，他们也仍然能够在学术生涯中取得巨大成功——只要有论文发表在学术期刊上就万事大吉了。

学术论文的评判标准也间接反映了学术成果与实践之间的失衡状态。笔者有两篇论文在提交后被拒绝的唯一原因是论文里没有引用其他学术论文。审查者对这两篇论文的内容没有异议，且不说我还在论文中提出了独到的见解。拒绝的原因仅仅只是我没有让自己的论文融入到既有的学术研究圈子里去——光是这一点就让我的论文不符合标准了。

你这是吃不着葡萄说葡萄酸嘛！

笔者能够理解论文被拒绝的合理性，毕竟学术界的良好运作依靠的是所有人都以既有的领域知识为基础添砖补瓦。我的论文与既有的学术界领域知识格格不入，因此也就不符合学术期刊的要求。笔者在此并不是要抱怨学术标准不妥，而是想指出：既有的学术标准和惯例导致了学术发展与商业实践的脱节。值得提到的是，的确也有一些学术期刊打破惯例，接受了我提交的论文，我也经常受邀参加相关学术会议。

21.1 戏剧管理器

互动叙事领域的学术研究的主要成果是所谓“戏剧管理器（Drama Manager）”的概念。这一概念由 Brenda Laurel 于 20 世纪 80 年代首次提出。它与笔者提出的“Fate（命运）”概念类似，不过前者采用的设计方案与后者不同。戏剧管理器的设计方案有好几种，大部分方案的基本出发点都是把计算机科学领域的概念应用到互动叙事当中去。

从基本结构来看，戏剧管理器是一个用来干预故事叙述过程的软件模块，以纠正玩家错误或者保持既定主线发展为主要功能特征。这种做法面临的难题在于如何计算出精彩的剧情。归根结底，精彩的剧情与糟糕的剧情之间的差异是无法计算的，于是保证剧情的精彩度也就无从谈起。

正如我们在第3章探讨过的那样，强迫玩家遵循既定剧情主线发展抑制了交互性。改良版的戏剧管理器削弱了强制性，只保证故事发展中存在冲突等其他优秀故事叙述所需的基本元素。

在笔者的印象里，大部分戏剧管理器都违背了 Crawford 软件设计第一定律：“始终考虑用户做什么，用户行为涉及的动词是什么”。虽然戏剧管理器能够针对当前剧情的形势做出是否施加干预的决定，但是它无法妥善地实施改变，无法根据当前形势设计出有针对性的干预方案，导致它对剧情施加的改变显得生硬和不自然。

笔者认为第15章探讨过的 Fate 在施加干预方面算是最为流畅的一种戏剧管理器的实现方案了。Fate 被互动叙事引擎当作一个故事角色来看待，因此它能够更好地融入故事世界的事件处理过程当中。Fate 执行动词的方式与任何其他故事人物一样，于是 Fate 的决策过程也显得更加自然。不过，把 Fate 的干预动作告知玩家的方式是值得斟酌的。我们不能直白地告诉玩家“Fate 让子弹从你胸前的金属盔甲上弹开了”，但是完全可以换一种说法：“子弹奇迹般地从你胸前的金属盔甲上弹开了”。

照你这么说，那岂不是得提供一个 Bullet_Miraculously_Ricohets 动词？那干嘛不让玩家自己使用这样的动词呢？

玩家并不是Fate。与其他戏剧管理器一样，Fate确实也需要针对具体情况定制干预方案，不过Fate 的优势在于它执行的动词与其他故事人物执行的动词在基本结构和执行方式上是完全一样的，从而使得整体运行流程变得更加干净利落，并且更容易实现。

我们固然不能排除学术界提出的传统戏剧管理器将来有一天能够在实现上取得突破的可能性。而且迄今为止学术界已经做了很多探索，取得了稳固的进展。但是我们仍然要明白，戏剧管理器离成功的距离还很远。

21.2 为非玩家角色指定目标

探索互动叙事的一种流行做法是沿用人工智能领域里用来操纵机器人完成既定目标的一些方法。驱动火星探险车的软件就属于这类方法的高端应用。一旦为探险车设定了需要抵达的目标位置，软件系统就必须分析出行驶至目标的路径。为了做到这一点，软件系统需要考察地面情况，侦测岩石等障碍物，分析如何绕过障碍物等。除此之外，还有许多其他因素须要考虑，比如路径地面的崎岖程度、地面坡度、行驶能耗等。这些针对目标分析达标方案的方法都有着数十年的研究发展史，已经变得相当智能了。于是互动叙事领域的探索者们就为之吸引，期望沿用这些方法来驱动非玩家角色（NPC）的行为。倘若故事中的非玩家角色能够自主地追寻颇具戏剧性的目标，并且由此与玩家的目标追寻过程产生冲突，那么就有可能实现逼真的戏剧性效果。

遗憾的是，这方面的探索实践还没有取得任何成果。借用自人工智能领域的这些方法都是建立在定义明晰、过程机械化的需求的基础之上的，因此它们还是无法满足互动叙事的复杂要求。研发这些方法的初衷是控制机器人的行为，然而机器人与戏剧性角色之间的差异远远超出了一些研究者的预期。故事中的角色并不是机器人，他们不一定会计算达到目标的最优途径，他们也不一定只会因为掌握的信息不足而犯错误。很多时候，故事角色犯下的最大错误都起因于他们的人格弱点。倘若故事角色都站在人工智能机器人的角度来追寻并且实现目标，那么恐怕《黑客帝国》里的尼奥就会选择蓝色药丸，《指环王》里的佛罗多就绝不会自愿答应把魔戒送到毁灭山谷予以销毁，《星际迷航》里的柯克船长更是做不出任何激动人心的事情了。

对于运用人工智能方法解决互动叙事的核心问题，笔者保持怀疑态度。这些方法在结构上过于机械化，很难满足故事叙述的戏剧性要求。不过，也有一些新的研究正在尝试将这样的方法与人类认知机制调和到一起。

21.3 新式的Comme il Fault互动叙事引擎

以笔者的拙见，互动叙事学术研究当中最可观的成果是一种以法语“Comme il Faut（得体、合乎礼仪）”命名的新式的互动叙事引擎。这个颇具风情的名字确实也颇具描述性，因为 Comme il Faut（简称 CiF）系统不仅把故事角色的内部驱动因素纳入了计算，而且还把角色身处的社会规则也纳入了计算。

值得称赞的是，CiF 系统的设计者没有选择沿用和修改既有的互动叙事技术，而是回归原本，从头开始考虑引擎的设计方案。他们从叙事理论开始考察，采纳了著名加拿大社会学家 Erving Goffman 的拟剧分析理论（Dramaturgical Analysis）[1] ——这是一种能够用来描述故事演化的复杂体系；它把叙事拆分为多个部件并予以归类，但并不是面向计算的体系。由此，CiF 设计者确立了新引擎的理论根基。

然后，CiF 设计者又深入考察了许多社会交互（social interaction）方面的理论，采纳了美国精神病学家Eric Berne 的交流分析（Transactional Analysis）理论。该理论体系从既定的“社交游戏”的角度来描述社会行为[2] ，其定义的一系列社交游戏界定了社交角色、社交动机以及可能的行为等要素。我们不妨把这个体系理解为一种角色扮演系统，只不过其中的 dungeon master[3] 是一位没什么艺术素养的心理学专家。

CiF 设计者将交流分析理论付诸于编码实现之后，又进一步采纳了美国教授 Steven Reiss 提出的动机分析（Motivation Analysis）理论[4] 。该理论归纳了16 种人类的基本诉求，被CiF 设计者用来作为建立人格模型的基础。在人格模型当中，这 16 种基本需求分别用 0 到 1 之间的数值来表示。

接下来，CiF 设计者把交流分析和动机分析两种体系集成到了一起，并且又在此基础上附加了用于调节故事发展的目标追求系统。最终的设计结果是一个复杂、强大的互动叙事引擎，它能够实现多种叙事所需的社交情境。

CiF 技术最大的亮点在于它是可修改和可扩展的。它允许创作者针对特定故事世界的具体情况实现特殊的操纵，并且通过扩充来增强和改善运行效果。20 年后的今天，历经扩展和改进的 CiF完全有可能成为互动叙事领域的核心体系。

21.4 Prom Week

CiF 并非只是实验室里的怪物。已经有一款基于该体系的游戏《Prom Week》[5] 被成功开发了出来。这款令人印象深刻的互动叙事游戏超越了笔者对互动叙事系统的分类，难以用任何单一的类型概念来界定；唯一可以辨识的类型特征是它采用了基于时间点的引擎设计。《Prom Week》最偏离常规的特征是它采用了独特的非对称（asymmetric）交互系统，同时运用了语言和点选（point-and-click）作为沟通方式。玩家的输入都是通过点选操作来实现的。玩家可以通过点选故事角色来查看该角色的属性；如果再点选另一个角色的话，那么后者就会被作为前者可选动作的 DirObject（作为 Subject 的前者周围会出现动作选项）。点选 Subject 的某个动作选项就会触发一系列事件（即交流分析理论中的“社交游戏”的概念），这些事件主要通过 Subject 与 DirObject 之间的一系列对话展开。

《Prom Week》故事世界的主题是高中毕业舞会以及舞会之前的各种社交铺垫。整个故事世界共有 18 位角色，每位角色具有既定的性格特点和与其他角色的关系。玩家点选角色开始游戏，在毕业舞会之前一个星期的时间之内完成一系列的目标；这些目标都是通过操纵社交关系来达成的。

这样的故事世界设定有效地限制了故事角色的行为选项，动词的数目被控制在 60 个左右。清晰的设计思路得益于毕业舞会这样的狭窄的情境设定。《Prom Week》推出之后就得到了肯定。

21.5 关门放狗[6]

CiF 系统的发展潜力巨大，不过笔者对它不能光表扬，还要批评。在笔者试玩《Prom Week》的过程中，玩家角色的目标是让一位女孩喜欢他。为了做到这一点，游戏建议玩家角色跑去贬低这位女孩痛恨的另一位女孩，从而得到前者的倾心。这样的情节安排固然可以被看作是展现CiF系统运作过程的最简单的范例，但是如此生硬的安排实际上充斥于整个系统——其中的故事角色毫无戏剧性色彩，更像是玩家可以用按钮实施操纵的机器人。

上述问题源自 CiF 设计当中对布尔计算的过度使用。CiF 引擎很少使用更富变化的数值计算；其包含的数值计算也只是最简单的加减操作。在CiF中加入更巧妙的数值计算处理应该是可行甚至是相对容易的，然而问题的根源并不在于技术实现，而是在于设计者的思路。

在笔者看来，计算机科学家更容易用非黑即白的布尔逻辑来看问题。这并非是因为他们思维单纯，而是多年浸淫于计算机科学所需的布尔逻辑的结果。计算机本质上就是由数以亿计的布尔逻辑组件组合而成的巨型布尔计算器，布尔逻辑驱动着影音、游戏和网络背后的一切处理过程。他们对布尔逻辑的强大能力抱有充分的信心，也就不足为怪了。

尽管布尔运算从理论上讲确实能够处理任何问题，但是这并不意味着它是处理所有问题的最佳方案。诚然，布尔运算既是所有计算机处理过程的理论根基，也是编程的最基本语言。现在已经几乎没有人使用汇编语言了，因为使用它编写程序是个既艰巨又繁杂的事情。相比之下，使用高级语言的效率就高得多。数值计算较之布尔运算，就相当于汇编语言较之高级语言。对于许多计算处理而言，采用数值计算方法就是比采用基本的布尔运算要简单、高效得多。

计算机科学家在探索互动叙事的时候，很难认识到上述问题，因为他们一辈子都一直在与最基本的理论和最底层的布尔逻辑打交道，已经根深蒂固的布尔逻辑思维方式有助于他们解决研究中的底层问题。一旦他们跳到高层运用其他数值计算方法的时候，积累的经验就远远不如在布尔运算方面的多。

我们在互动叙事领域面临的种种新问题比计算机科学当中的问题更加微妙，很多时候无法用布尔运算那种非对即错、非黑即白的方式来予以界定。关于这一点，笔者已经在第13章探讨过了。

笔者对CiF的第二条批评是它的实现思路过于偏重技术层面的考量。各位学术界的同胞们，我们探索的是故事叙述，而不是学术理论呀！虽然我们不一定非要完全脱离学术研究的思路，但是做技术有技术思路，玩艺术也得有艺术思路吧！

倘若学术界同胞们能够根据自己对故事叙述本质的理解来打造一个完整、丰富的互动叙事系统，那么也许还能做得更好。如果不能参透故事叙述的要义，那么干嘛还要跑到互动叙事领域来备受煎熬呢？

我深信CiF技术会继续发展，在处理种种微妙的戏剧性行为方面得到改进。不过，只要设计者的思路还局限于计算机科学那样的学术研究方式，而不是从艺术创作的角度来进行思考，那么恐怕就永远无法跨越生动与生硬之间的uncanny valley[7] 。

21.6 IRIS项目

从 2008 年到 2011 年，欧盟曾经联合多家技术公司，拨款建立了 Integrating Research in Interactive Storytelling（IRIS，互动叙事集成研究）项目。这个雄心勃勃的项目涉及 7 个国家 10 所院校的协同研究，旨在为将来的互动叙事领域的发展确立坚实的研究基础。整个项目的包罗面广，从创作工具、故事叙述引擎到评测技术，无所不包。项目衍生了为数众多的学术论文和详尽的项目终结报告。笔者觉得最后的成果还是没有达到参与项目的研究者们的预期；由那么多杰出专家共同研发出来的故事叙述引擎并没有达到我期望的目标。尽管如此，该项目看起来还是完成了确立研究基础的基本目标。只要他们能够在此基础上继续前进，我相信我们陆续会看到欧洲研究者们在互动叙事领域取得的喜人成果。

21.7 本章小结

学术研究起步的脚步很慢，但是已经逐渐打开了发展局面。笔者看到，诸如“narrative vs. agency”之类的无谓争论的论文越来越少，而探讨实质性内容的论文越来越多。如今的互动叙事学术界已经远远走在了其他探索者的前头，在将来必然会取得更大的成果。

第22章 展望未来

互动叙事的发展之路通向何方？互动叙事还需要多久才能发展成为真正的艺术表达媒体？它能否取得商业上的成功？未来的互动叙事体验会是怎么样的？这样的问题谁也说不准，作答的人必然会遭遇尴尬。不过笔者已经达到“死猪不怕开水烫”的水平了，因此不妨大胆的对未来做一些预测。也许二三十年之后，各位可以拿着这本书来笑话我。

22.1 互动叙事前途无量

一旦互动叙事走向成熟，互动叙事产业将会把电子游戏产业取而代之。虽然互动故事不会让传统电子游戏绝迹，但是两者之间的差距将会是天壤之别。我们不妨看看超市里的冰激凌食品，它占用的货架空间远远不如其他食品多。电子游戏就相当于冰激凌，它是零食，能够提供强烈的感官刺激（冰爽香甜）。相比之下，虽然大部分其他食品无法提供如此强烈的味觉享受，但是它们提供更具多样性和更加微妙的味觉体验。许多孩子都爱吃冰激凌，然而吃多了之后还是会吃腻，还是会渴望品尝其他温和、多样的食物，比如蔬菜、水果，比如中国菜、德国菜、法国菜、墨西哥菜、泰国菜、印度菜、日本料理、英国菜、意大利菜、希腊菜，比如烤肉、面包、奶酪、酒、鱼、通心粉、薯片以及各种香料等。大部分人都爱吃冰激凌，然而吃得更多的还是其他食品。电子游戏之于互动叙事，就好比冰激凌之于其他食品。

影视作品也是个不错的比喻。动画片、漫画电影和动作电影都非常好看，然而影视作品并不限于此，还包括浪漫喜剧、剧情片、悬疑片、警匪片、真人秀、纪实报道、科普节目等一系列欣赏品味各不相同的类型。孩子们也许主要以观看动画片为主，但那只是诸多影视作品当中的一小部分而已。类似地，与范围宽广、内容丰富的互动叙事比起来，电子游戏只是整个娱乐体验的一小部分而已。

容笔者再拿文学作品做个比喻，说明电子游戏的穷途末路。书店里漫画专区往往只占据书店的一个小角落。虽然漫画能给人带来不少欢乐，但是仍然有许许多多其他种类的图书作品是大家喜闻乐见的，比如食谱、浪漫小说、旅行手册、科幻小说、生活指南、惊悚小说、科普作品、幽默故事等。虽然互动叙事并不一定是包罗万象的，但是它仍然要比漫画丰富得多。

现今的电子游戏玩家与糖果店里的小孩子们别无二致，他们看着柜台里琳琅满目的糖果，觉得糖果的世界是无穷无尽的。虽然有大量电子游戏产品满足玩家各种不同的偏好和娱乐需求，但是电子游戏仍然只是娱乐体验宇宙当中的一个星系而已。互动叙事不会占据整个宇宙，但是它的星系要比电子游戏多得多。

22.2 消极的预测

说坏话比说好话容易（不过该说不准的还是说不准），所以笔者先从比较有把握的预测入手，谈一谈消极的预测。

22.2.1 互动叙事不会发展自既有领域

笔者对此非常有把握：从既有的研究或专业领域当中无法发展出优秀的互动叙事。现今的电子游戏世界可以用固步自封、作茧自缚来形容。整个产业的商业模式已经固化，专注于推出制造感官刺激的产品；同时，玩家也对产品的期望也因此固化，不断追求制造感官刺激的游戏产品。电子游戏产业的商业大局已定，无法分散精力去专注互动叙事这样的新兴市场。整个产业对互动叙事抱着观望态度，希望等到有人开辟出一条路之后再取而代之——讽刺的是，当年的 IBM、CDC 和 DEC等计算机制造商对于个人电脑的看法也是如出一辙[8] 。

同样，互动小说和角色扮演游戏同样也不会演化为互动叙事。两者还会按照各自的方向发展，但是发展结果不会是互动叙事。

22.2.2 互动叙事不会直接从学术界获得成功发展

学术界对互动叙事领域的贡献最大，其影响深远。然而，笔者认为其对发表学术论文的偏重和开发实践的不足使得他们无法推出能够获得商业成功的互动叙事技术。

当然，这并不是说学术研究只是浪费时间；学术研究是互动叙事作为新兴媒体向前发展演化的必备要素之一。学术研究者的学生们会从老师那里习得真传并且推陈出新，成功的互动叙事产品将出自他们之手。这些新一代的互动叙事探索者会提出千奇百怪的新想法和新方案，他们的大部分尝试都会以惨败告终。然而，总会有一小部分人取得成功，进而成为这个新兴产业的中流砥柱。

22.3 积极的预测

积极的预测几乎是鞭长莫及的。预测什么事情会发生的风险比预测什么事情不会发生更大。因此接下来的一些预测就相对比较宽泛了。

22.3.1 女性会成为互动叙事发展的骨干力量

自20世纪80年代以来，游戏界人士就一直在谈论所谓“女性游戏”的话题。基于这个思路推出的第一款游戏是《吃豆人小姐》[9] ，也被戏称为“头上顶个领结的吃豆人”。游戏开发者还曾经用“把枪设计成粉红色”这样的话来讥讽“针对女性的电子游戏”的提法。所有人都意识到游戏似乎一直无法打入庞大的女性消费市场[10] ，但数十年的探索和尝试似乎都没有取得太多进展。究其原因，其实显而易见：空间推理（spatial reasoning）与社会推理（social reasoning）相比，女性对后者更感兴趣。现今的游戏大多强调前者而缺乏后者。

你这不是说胡话吗？社交游戏现在不是红得发紫了吗？

请牢记 Crawford 软件设计第一定律：“始终考虑用户做什么，用户行为涉及的动词是什么”。现在的社交游戏当中的动词运用可谓是简单生硬，本质上还是面向空间推理的。社交行为在这些游戏当中并不具有核心地位，仍然只是辅助性的次要元素。

互动叙事与传统游戏之间最大的区别就在于社会推理。互动叙事包含大量的社会推理活动，而电子游戏则极少包含它们。与打打杀杀相比，女性玩家更倾向于选择以社会推理活动为主的娱乐项目。因此，互动叙事对于女性群体的吸引力将会远远大于传统男性游戏玩家。

22.3.2 成功的互动叙事会来自独立开发者

最先在商业市场上获得突破的互动叙事产品将会来自势单力薄的独立开发者。如果有学生在进修了互动叙事课程之后希望创业，那么笔者愿意全力支持他们。当然，笔者也不排除其他人首先取得成功的可能性——如果我能够放下手里的琐事，转而继续探索互动叙事，搞不好我也能成功呢！

22.3.3 早期的故事世界的视觉效果不会太好

因为早期的互动叙事产品会出自独立开发者之手，所以这样的产品不会包含成本高昂的惊艳视听效果。当然，首款取得商业成功的互动叙事产品大概也不会只用文本和表情图标来凑合。

22.3.4 互动叙事更有可能在欧洲首先获得成功

成功没有秘诀；失败才是最好的老师。笔者对互动叙事的深入理解恰恰得益于失败的经验和教训。北美的开发商主宰者电子游戏市场，他们的市场利润数以亿计，赚得不亦乐乎，恐怕不会把本投在互动叙事这种“阳春白雪”的领域当中。另一方面，欧洲则是蓄势待发。他们知道自己无法在电子游戏市场与北美相抗衡，却同样拥有天分和热情，也不像北美那样深受“两种文化”的毒害。

欧洲在互动叙事领域的主宰地位，从学术研究论文的情况可见一斑。笔者检索了互动叙事的主流会议文集（来自 International Conference on Interactive Digital Storytelling，ICIDS，即数码互动叙事国际会议），发现其中52篇来自欧洲，35篇来自北美，15篇来自其他国家和地区。

第21章提到过的 IRIS 项目是欧盟筹建的雄心勃勃的互动叙事研究项目。该项目资金投入充足，参与方囊括了7个国家的10所院校，美国完全没有类似的先例。

此外，笔者在与许多欧洲的互动叙事领域探索者进行交流之后，发现他们具备正确的态度和该有的知识储备来探索互动叙事。希望我的这番话能够鼓励欧洲加倍努力，进而敦促美国也能跟上发展的脚步。

22.3.5 对时间进程的预测

下面再来说说最大的问题：互动叙事离我们还有多远？笔者曾经对此过于乐观；在出版于2005年的本书第一版当中，笔者做出过如下的预测：

首款货真价实的互动叙事产品会在2006年至2008年之间面市，到2010年我们会拥有一个蓄势待发的市场，几家小公司之间的激烈竞争将会推动整个市场的蓬勃发展。2010 年至 2020 年的 10 年之间，大公司会逐渐吞并小的竞争对手，互动叙事市场会走向成熟并且得到极大的拓展，互动叙事也会成为大众媒体。

笔者的上述预测可谓是言过其实。这些年的发展让我认识到，对互动叙事的探索相当艰难，人们对交互的基本概念的理解和接纳也比想象得慢。在笔者发起的 Phrontisterion 会议[11] 上，我经常须要就基本原则的问题进行辩论。

2012 年的 Phrontisterion 会议最能让人清醒地意识到问题的严峻程度。与会者在讨论了技术策略的议题之后得出结论：目前还没有在基础问题上达成共识，无法探讨任何一种策略的优劣问题。与会者无法就互动叙事的概念达成一致，甚至连基本的术语都无法达成统一的认识；大家唯一都认同的观点是，互动叙事当中的“active agents”应该被称为“characters（角色）”，而不是“actors”或“agents”。整个会议只有 11 个人参加，所有人都是领域内的尖子；即使这样，大家也无法在最基本的问题上达成共识。我们对互动叙事的理解差异如此之大，显然说明这个领域尚处在早期发展阶段。我们离探讨技术实现还差得十万八千里，恐怕在概念性问题的定夺方面都还需要10年的时间。

有鉴于此，笔者决定在本书第二版里做出比较悲观的时间预测：我们会看到许多互动叙事的早期原型产品和失败尝试，至少要等到2020年才有可能有像样儿的商业产品出现。

22.4 本章小结

笔者在此要向读者提供一些建议。你之所以会听我在本书中胡言乱语，正是因为你希望了解互动叙事，或许还憧憬着创造互动叙事产品。

从积极的方面来看，笔者可以向你保证，互动叙事绝对是娱乐软件的最前沿。电子游戏产业已经被利欲熏心的大公司主宰，他们的脑子里只想着这个季度怎么赚钱。追求创意的人才已经无法在电子游戏这样的产业里找到归宿。在1979年笔者加入Atari公司工作的时候，电子游戏与现在的互动叙事倒是有些相似。那个时候，没有人知道应该如何制作游戏。于是包括我在内的一帮无知无畏的傻小子就在摸爬滚打中探索，逐渐推动了电子游戏市场的发展。倘若让当时的我与现在的新秀竞争，那么恐怕我根本比不过。我之所能在游戏领域获得成功，完全是因为我对这个领域接触得早。作为本书读者的你面对互动叙事这个新兴领域，正处于同样的有利位置。

投身互动叙事领域在金钱上的回报也会与投身早期电子游戏领域类似。许多电子游戏产业的先驱获得了大得惊人的回报，这在现今的产业当中是几乎没有的。如果你成功加入了互动叙事先驱之列，那么你的境遇绝对不会差到哪里去，大有可能获得丰厚的金钱回报。

当然，先驱者的探索之路并不容易，电子游戏的早期发展充满了艰险。Atari 公司的倒闭瞬间导致近万人失业[12] 。要想在这样的逆境中生存下去，你就必须想办法解决笔者在本书当中探讨过的种种异常困难的问题。如果这些问题没有巨大的挑战性，那么恐怕笔者早就已经都解决了！你需要站在前人的肩上继续前进，或许有一天真的能够实现让互动叙事焕发生机的突破。

千万不要错误地估计形势——你最终成功的可能性并不大。本书成千上万的读者都可能成为你前进途中的竞争对手。

尽管如此，对于那些既有天赋又有热情，希望通过自己的努力来改变世界的人来说，互动叙事仍然是值得投身探索的绝佳新领域。

勇者莫不一往无前！

注　释

[1].Goffman 的拟剧分析理论（dramaturgy analysis，也称拟剧论即 dramaturgy）主要是一个社会学理论，与戏剧领域的剧作理论（英文原词仍然是 dramaturgy ，因为 Goffman 借用了戏剧理论的术语）有所区别。详情可参见：http://en.wikipedia.org/wiki/Dramaturgy_(sociology)。

[2].该理论的详情可参见：http://en.wikipedia.org/wiki/Transactional_analysis。

[3].Dungeon Master（DM）的概念可参见第10章关于角色扮演游戏的阐述。

[4].参见：http://en.wikipedia.org/wiki/Motivation#Intrinsic_motivation_and_the_16_basic_desires_theory。

[5].参见http://promweek.soe.ucsc.edu。

[6].原文为“Release the Kraken”，语出自 1981 年的电影《诸神之战》。原文字面意思为“释放海怪”，作者在这里的用意是表明接下来要开始说些批评的话了。

[7].Uncanny valley的概念在第17章17.4 节探讨过。

[8].这些公司都因此错失了商业良机。

[9].参见：http://en.wikipedia.org/wiki/Ms._Pac-Man

[10].近年来，游戏玩家的男女比例已经越来越接近。参见：http://en.wikipedia.org/wiki/Women_and_video_games。

[11].感兴趣的读者可参考 http://arkuzphrontisterion.wordpress.com，该网站不但介绍了 Phrontisterion 会议，还收录大量互动叙事相关的信息。

[12].作者提到的事件是 1983 年北美的电子游戏市场大崩溃。Chris Crawford 本人也因此被 Atari 裁员。参见：http://en.wikipedia.org/wiki/North_American_video_game_crash_of_1983。

延伸阅读

自本书第一版出版以来，又有许多新的相关资源出现了。以下列出笔者知晓的信息资源，并对每个资源给出了拙见。

图书

Character Development and Storytelling for Games, by Lee Sheldon, 2004, ISBN 1-59200-353-2

这是一本由故事叙述专家撰写的好书[1] 。读者绝对应该阅读，以便加深对故事叙述过程的理解。不过，该书没有谈及互动叙事，只探讨如何在传统游戏中纳入传统故事元素。

Interactive Storytelling for Video Games, by Josiah Lebowitz and Chris Klug, 2011, ISBN 978-0-240-81717-0

该书颇受好评。如果你想在传统游戏当中加入交互性低的故事，那么本书非常适合阅读。此书几乎没有包含本书探讨的互动叙事的内容。

Hamlet on the Holodeck, by Janet Murray, 1997, ISBN 0-262-63187-3

这本关于叙事和计算机的经典著作已经出版数十年了，但是其内容仍然具有参考价值。

Expressive Processing, by Noah Wardrip-Fruin, 2009, ISBN 978-0-01343-7

阐述计算机游戏、叙事以及两者之间的关系。

On the Origin of Stories, by Brian Boyd, 2009, ISBN 978-0-674-03357-3

该书前半部分非常精彩，把进化心理学与叙事理论结合起来讨论，提出艺术是认知游戏的一种形式。

Computers as Theatre, by Brenda Laurel, 1991, ISBN 0-201-51048-0

这是一本奇怪的书[2] 。作者是一位戏剧专业的博士，在 IT 公司工作多年。她将自己在戏剧和计算机两方面的专业积累结合了起来。虽然这本书的内容与互动叙事关系不大，但是仍然是非常有趣的。

Tell Me A Story, by Roger Schank, 1995, ISBN 0-8101-1313-9

该书作者是杰出的计算机科学家，一直致力于把叙事领域的概念应用于人工智能的开发当中。

The Literary Mind, by Mark Turner, 1996, ISBN 0-19-510411-0

该书内容翔实，但是不太好读，需要花时间反复琢磨。包含大量相当不错的想法。

Narrative: A Critical Linguistic Introduction, by Michael J. Toolean, 1988, ISBN 0-415-00869-7[3]

该书更不容易读懂。只推荐给希望深入理解故事叙述的读者参考。

On Narrative, Edited by W.J.T. Mitchell, 1980

学术理论专著。读得懂该书的人一定相当厉害。

The Thirty-Six Dramatic Situations, by Georges Polti, 1977, ISBN 0-87116-109-5

这本最早出版于1921年的经典著作给出了36种基本的情节构造及其多种变体。计算机科学领域的从业人士一直希望采用该书给出的框架来设计能够生成情节的系统，但迄今为止还没有人获得过成功。

Morphology of the Folktale, by Vladimir Propp, 1996, ISBN 0-292-78376-0

该书是作者Propp在20世纪30年代撰写的，吸引了许多互动叙事探索者的关注。该书把俄罗斯民间故事进行了归纳梳理，建立了一个简单的体系，其中的各个部件能够串联在一起生成民间故事。尽管有些研究者间接地采纳了这个体系并且取得了一定的进展，但是迄今为止还是没有人成功地直接应用这个体系。

The Folktale, by Stith Thompson, 1977, ISBN 0-520-03537-2

该书最早出版于 1946 年，对民间故事进行了透彻和详尽的研究。该书包含了故事类型及其他母题（ motif ）的精简索引，这些索引可作为故事生成系统的基础设施。完整的索引由 Indiana University Press以六卷的形式出版，电子版相对便宜一些。

The Uses of Enchantment, by Bruno Bettelheim, 1989, ISBN 0-679-72393-5

该书讨论民间故事对人在童年时代产生的影响，对于互动叙事而言关系不大，不过包含一些有趣的想法。

The Human Face, by John Liggett, 1974, ISBN 0-8128-1754-0

该书很重要！脸部是人类沟通的关键元素。如果想在互动叙事系统当中包含图像显示，那么就必须处理脸部表情的问题。

The Art of Interactive Design, by Chris Crawford, 2003, ISBN 1-8864-1184-0

这是全宇宙有史以来最棒的书，因为它是由Chris Crawford 撰写的！

The Cambridge Encyclopedia of Language, by David Crystal, ISBN 0-521-55967-7

该书对语言做了全方位的概览。

The Language Instinct, by Steven Pinker, 2007, ISBN 0-688-12141-1

这是一本探讨人类心智创建和使用语言的经典著作。

Homo Ludens, by Johan Huizinga, 1950, ISBN 0-8070-4681-7

该书必读[4] 。

会议文集

以下列出的是历年来各个学术会议的文论集。总的来说，文集的年代越久远，参考价值就越小。文集当中有许多很好的想法，不过其学术写作的风格让人读起来颇为费神。

Virtual Storytelling, Proceedings of the ICVS Conference in Avignon, France, 2001, ISBN 3-540-42611-6

Proceedings of the Third International Conference on Technologies for Interactive Digital Storytelling and Entertainment, 2006, ISBN 3-540-49934-2

Proceedings of the First Joint International Conference on Interactive Digital Storytelling, 2008, ISBN 3-540-89424-1

Proceedings of the Second Joint International Conference on Interactive Digital Storytelling, 2009 ISBN 3-642-10642-0

Proceedings of the Fourth Joint International Conference on Interactive Digital Storytelling, 2011, ISBN 3-642-25288-4

互联网资源

互联网资源经常发生变化，因此如下给出的URL不一定都是有效的，仅供参考。

http://xenia.media.mit.edu/～mueller/storyund/storyres.html

非常全面的互动叙事学术资源的链接大集合。

http://stagconf.com

于2011在维也纳召开的主题为故事叙述与游戏的会议的专门网站，包含一部分演讲视频。

http://gamesandnarrative.net

一群互动叙事和计算机游戏叙事研究者的博客。

http://grandtextauto.org

内容丰富的博客，有些是关于故事叙述的。

www.erasmatazz.com/TheLibrary/Library2.html

笔者自己的个人网站资源，包含了游戏设计和互动叙事相关的文章。

www.storytron.com

笔者开发的互动叙事游戏引擎Storytron的网站。Storytron项目于2010年启动，但是由于系统太过复杂而未能获得成功。网站上有许多阐述系统工作原理的内容，但 Storytron 系统已经不再对外提供下载了。也许读者在读到本书时，新一代的互动叙事引擎就已经上线了[5] 。

www.inform7.com

互动小说开发环境Inform 7 的网站。

www.tads.org

互动小说开发环境 TADS 的网站。TADS 在编程能力方面强于 Inform 7，但是要求使用者具备编程技能。

www.choiceofgames.com

一家商业公司，其游戏产品与互动小说有些相似。

www.storybricks.com

采用全新方式设计大型多人在线游戏的系统，为创建故事世界提供了基于鼠标点击的优秀界面。该系统是否会成功，现在下结论还为时过早[6] 。

www.en.wikipedia.org/wiki/Aarne–Thompson_classification_system

Aarne-Thompson童话故事分类体系的Wikiepedia页面。

注　释

[1].该书已经于2013 年推出了第二版。ISBN: 1435461053。

[2].该书已经于2013 年出版了第二版，ISBN: 032191862。

[3].该书已于2001 年推出了第二版。ISBN: 0415231752。

[4].该书是荷兰文化史家、语言学家约翰·赫伊津哈的经典著作，中文版《游戏的人：文化中游戏成分的研究》。

[5].截至 2014 年年底，该网站仍然处于“休眠”状态。网站上除了提供少量 Storytron 相关内容之外，还有两篇 Chris Crawford撰写的文章，作者在其中总结了探索失败的经验教训，同时展望了未来的计划。

[6].译者于2014 年9 月查看网站时，该网站已经改版并宣布即将启动“提供浸入式互动体验”的新项目。

索引

Table of Contents

目录

扉页

版权

内容提要

其他

作者简介

译者序

前言

第一部分 互动叙事基础

第1章 故事叙述

1.1 故事叙述的历史

1.2 两种思维方式

1.3 故事的本质

1.4 视觉效果的专制

1.5 空间思维

1.6 时间的不连续性

1.7 本章小结

第2章 交互性

2.1 我对交互性的界定

2.2 第二人称视角的洞察力

2.3 人类理解模型

2.4 自我克制

2.5 交互的程度

2.6 那又如何

2.7 本章小结

第3章 互动叙事

3.1 互动叙事作为游戏概念的外延

3.2 互动化的电影

3.3 情节与交互性

3.4 独一无二的互动叙事

3.5 个体化

3.6 互动叙事中不能包含什么

3.7 本章小结

第二部分 思维方式

第4章 抽象机制

4.1 公正问题

4.2 科学

4.3 金融

4.4 上述例子的中心思想

4.5 扮演上帝的角色

4.6 把中心思想转译为故事

4.7 本章小结

第5章 用动词思考

5.1 动词与名词

5.2 案例聚焦：多媒体

5.3 动词思考方式入门

5.4 本章小结

第6章 数学之苦劳

6.1 拥抱数学

6.2 因果关系

6.3 作为比喻的建模过程

6.4 本章小结

第7章 两种文化的问题

7.1 神经生理学基础

7.2 游戏与故事的交往史

7.3 劝诫和预测

7.4 本章小结

第三部分 进化式策略

第8章 分支树

8.1 整体游戏结构

8.2 解决方案：状态变量

8.3 本章小结

第9章 互动小说

9.1 文字冒险游戏

9.2 图像冒险游戏

9.3 互动小说（Interactive Fiction，IF）：文字冒险的继承者

9.4 谜题

9.5 真实案例

9.6 互动小说机理剖析

9.7 互动小说算是互动叙事吗

9.8 互动小说的未来

9.9 本章小结

第10章 角色扮演游戏

10.1 动词

10.2 RPG缺乏创新的余地

10.3 考拉熊与山羊：过度特化的弊端

10.4 MMORPG有希望吗

10.5 受众的问题

10.6 本章小结

第11章 电子游戏

11.1 固化的故事

11.2 多种结局

11.3 分支树

11.4 开放式故事

11.5 完全由玩家驱动的故事

11.6 故事叙述与成本问题

11.7 本章小结

第四部分 组件技术

第12章 建模

12.1 媒体

12.2 建模基础

12.3 增加复杂性

12.4 抽象化的步骤

12.5 关键细节

12.6 本章小结

第13章 有界数值

13.1 超限

13.2 有界数值

13.3 钟形曲线与人

13.4 技术细节

13.5 调和操作

13.6 布尔运算

13.7 本章小结

第14章 人格模型

14.1 完备

14.2 精炼

14.3 正交

14.4 对行为的界定

14.5 过度特化

14.6 人格属性的类型

14.7 在三个核心人格属性的基础上扩展

14.8 外形特征

14.9 情绪

14.10 倾向性的计算公式

14.11 两道练习题

14.12 本章小结

第15章 命运驱动故事世界

15.1 倾听

15.2 思考

15.3 发言

15.4 计分系统

15.5 本章小结

第16章 动词与事件

16.1 动词的数量问题

16.2 通用的动词处理机制

16.3 句子结构

16.4 计划与事件

16.5 HistoryBooks

16.6 本章小结

第17章 语言

17.1 通过输入设备“说话”

17.2 Sapir-Whorf假说

17.3 模拟现实语言

17.4 创建新语言

17.5 本章小结

第18章 脚本语言

18.1 互动叙事所需的语言设施

18.2 文本生成的脚本示例

18.3 本章小结

第19章 互动叙事引擎

19.1 基于事件的互动叙事引擎

19.2 基于时间点的引擎

19.3 基于情节的引擎

19.4 本章小结

第20章 高层结构

20.1 剧情节点

20.2 目标

20.3 预期的问题

20.4 本章小结

第五部分 回顾与展望

第21章 学术研究

21.1 戏剧管理器

21.2 为非玩家角色指定目标

21.3 新式的Comme il Fault互动叙事引擎

21.4 Prom Week

21.5 关门放狗

21.6 IRIS项目

21.7 本章小结

第22章 展望未来

22.1 互动叙事前途无量

22.2 消极的预测

22.3 积极的预测

22.4 本章小结

延伸阅读

索引