程序化叙事生成(Procedural Narrative Generation)是程序化内容生成(Procedural Content Generation)的一个子概念。程序化内容生成代表着一种全新的内容生产过程——对于需要生产的内容,设计师不需要作精确到一切细节的设计,而只需要给出一些很少甚至接近于零的大局上的方向指导,就能由某种算法性的(Algorithmic)过程半自动甚至全自动地产生出符合设计师要求的具体内容。在游戏的开发过程中,内容的(半)自动生成技术使得一个游戏能够具有超出其制作团队规模的内容丰富性,个性化游戏体验,增加游戏的重玩价值。在现今游戏中,关卡和地图的程序化生成已经很常见(尤其在Roguelike类型的游戏中)。美术和音乐素材的自动生成也不同程度地存在着(例子包括沙盒游戏中随机组合身体各部分视觉要素而产生的NPC形象,以及一些游戏中根据玩家行动产生实时变化的背景音乐)。
叙事的程序化生成,在现今的游戏中也以各种形式存在着。从广义上来说,它有一种非常古老和朴素也完全为我们所熟知的存在形式——随机事件。回合制RPG中的随机遇敌,沙盒世界RPG中的随机任务,经营模拟类游戏中的随机剧情,都可以在不同程度上被称作程序化叙事生成。
最基础的情况,游戏有一个庞大的事件库,所谓的叙事生成仅仅是在这个事件库中完全随机地抽取一个。想象一个桌游大富翁玩家在牌堆中抽取事件牌——游戏中最简单的随机事件实现方式不过是这种过程的自动化。
有的游戏在此基础之上,会根据玩家当前的状态计算出一个抽取事件的概率分布,甚至排除掉一些完全不适合当前状态的事件。比如传统RPG中会根据玩家所在的地域决定随机遇到的敌人。又比如许多策略经营类游戏中,一个城市发生居民暴乱的概率,是由这个城市的治安数值所决定的。
有的游戏的事件库不是静态预定义的,而是在一些预先设计的事件的模版或模块基础上动态生成。例如一些CRPG中的任务自动生成系统,定义参数化的基本任务类型(攻击敌人X、与某NPC X交谈、寻找X物品、将X物品交给NPC Y、守卫X、在X上使用物品Y,等等),通过参数的随机设置和多个基本任务的随机排列组合,产生出千百个不同的任务来。
更有甚者,一个游戏的机制空间和叙事空间甚至是同一的——玩家能玩出多少花样,叙事就有多少花样,模拟人生系列是一个非常典型的例子——作为某种意义上的肥皂剧模拟器,说叙事就是它的游戏机制本身都不为过。另外还有许多Roguelike游戏(FTL,The Curious Expedition,等等)也属于这个类别。
尽管程序化叙事生成在游戏中的应用——以随机事件为主要表现形式——已经历史已久,我们却仍然很难说它们已经达到了令人满意的程度。其中一个重要的问题就在于随机生成的叙事很难像人为写就的故事那样,让读者能够感觉到“精彩”,甚至沉浸于其中。一个故事要达到这个目标,一方面,其情节展开要在“情理之中”和“意料之外”之间把握住一个平衡,在读者接受到的信息能够被其思考回路“不过于费劲”地接受的前提下,给与思考回路新鲜的刺激。另一方面,读者又通常希望故事能够是有意义的——其中应当存在某种集中得到表达的隐含信息。当我们读一个故事时,我们吸收进入思想并不仅仅只是一串文字的序列。我们同时也在根据这些字面信息,在脑海中建构一个文字背后隐含的“真相”。通过感官直接接收到的表面信息,解析出一个隐藏在背后的“真相的世界”,是我们在阅读故事时享受到愉悦感的一个重要来源。而当我们看到的只是一堆无论怎么想都联系不起来的零散的随机事件,我们很自然地就会感到无聊。不得不承认的是,现今的大部分包含程序化叙事生成的游戏,其中自动生成的叙事还停留在“缺少强内在联系的零散的随机事件”的阶段。
如何自动生成优秀的故事?这是一个很难的问题,但也正因为如此是一个有意思的问题。因此在这篇文章中,我想讨论一些可能运用到游戏中的程序化叙事生成中,并且改善故事质量的技术。这些技术大多来自于传统的人工智能领域(相对于深度学习、大数据相关的技术)。希望这些讨论能够给游戏开发者带来启发,同时也作为我对游戏业界的未来的一些展望。
从广义上来说,程序化叙事生成可以是任何辅助对故事内容毫无头绪的作者产生想法的机制,而计算机程序仅仅只是这样一些机制的自动化实现。一个缺乏构思的作者会通过各种方式来刺激自己产生想法。比如说,他们可能会把自己只言片语的零散想法用简短的词组写在卡片上丢进黑盒子,然后从黑盒子中抽几张出来,看看抽到的几张卡片能否产生有意义的组合。有时候,随机抽到的卡片组合能够刺激作者产生让他自己都大吃一惊的奇妙构思。
这个抽卡的过程仿佛是在探索着作者想象力形成的空间,对于自身想象力丰富的人而言,它能带来不少惊喜,因此本身就是一个很有乐趣的过程。这种乐趣被人们发现以后,这种想象力刺激机制本身甚至被设计成了游戏。Snake Oil (蛇油) 就是这样一款游戏。在这个游戏中,一个玩家扮演随机身份的顾客,而其他的玩家则扮演商人,负责推销自己的商品给顾客。每个扮演商人的玩家可以随机抽取六张手牌,每张手牌上写有一个单词。向顾客推销的商品必须组合这六张手牌中的两张上的单词形成。扮演商人的玩家为了组合出跟顾客身份相关的词组并且自圆其说,不得不各种天马行空,将随机出现在手牌中的单词强行解释成有意义的东西。这个解释的过程则可以充满各种各样让人忍俊不禁甚至拍案叫绝的瞬间。类似的游戏还有Once upon a Time (很久很久以前),在其中玩家需要将自己抽到的卡牌上的内容强行联系起来形成一个童话故事。
在这些游戏中,玩家阅读着由卡牌上的提示、随机性和自身的想象力共同实时生成的故事。而这些游戏的核心内容也正是产生这些故事的机制。它们可以说是程序化叙事生成在脱离计算机程序的情况下的原始形式。
桌上角色扮演游戏(跑团)是另一个由随机性探索想象力空间实时生成故事的例子。游戏主持人(Game Master)需要根据玩家的反应和骰子掷出的点数临时编出与之一致的故事接下去的发展。在游戏进行之前,游戏主持人的脑子里可以有各种可能的发展路线,各种逸闻式的故事片断,各种可能连成完整故事的零散元素——我们可以将之视为生成故事的资源(故事的搜索空间)。而真正决定这些资源如何被利用起来串连成一个完整的故事的(搜索策略),其实是一次又一次的玩家的反应和骰子掷出的点数。在这个过程中,没有任何一个角色能真正从整体上把握整个故事的走向,没有任何一个角色可以称得上是整个故事的作者。每个角色都只是按照自己的喜好在自己能够控制的很小范围内作出一些局部性的选择,这许许多多的局部性的选择最终在宏观上产生出了一个超越了每个单独的角色的意志的“没有被任何人设计”的故事。广义来说,这种叙事生成的方式也可以被视作一种“算法式”的机制,只不过这种机制依赖的计算资源不是计算机,而是人。
既然有了计算机,一个自然的想法就是以计算机作为计算资源来自动化上面所提到的这些机制,从而以最小化人类劳动介入的方式生产出故事来。这远远不是一个像“用机器解放流水线工人的双手”那么简单的任务,因为流水线工人付出的毕竟只是双手,作家或者跑团玩家所付出的却是脑子。虽然解放作家的脑子这项努力早在上世纪七十年代就已经开始了,至今我们仍然没有看到一个成熟的解决方案。但是,还是有很多这方面的尝试值得我们去了解。下面我们就来看看这样的一些尝试。
历史上有记载的第一个故事写作程序,是1973年由Sheldon Klein开发的叫做Novel Writer的程序 [1]。这个程序使用FORTRAN语言编制,能够生成2100个单词的谋杀悬疑故事。用户可以指定出场的人物和一些故事的背景信息,规定好人物之间的关系和人物的性格特质。基于这些输入信息,Novel Writer能够随机生成一个与用户输入的背景和人物关系相一致的围绕着一场谋杀案展开的事件序列(甚至谋杀的动机都与用户指定的角色特质相关)。作为一个计算语言学(Computational Linguistic)方向的研究项目,这个程序的原理是一个庞大的语义网络,其中每个节点代表一个语义对象(故事世界中的人事物),节点之间的有向边表示语义对象之间的关系。语义网络的每个节点都存储着相对应的语义对象的状态,这个状态在合乎情理的范围内(由一系列人为设置的规则决定)一步一步地发生随机变化,记录下整个网络所有节点每一个时间点的状态,就形成了一个故事。这个程序向人类展示了程序化叙事生成的可能性,但是它有能力产生的故事,仍然被限制在比较狭窄的范围内。尽管由于随机性的介入,每次它都能产生不同的情节来,但由于框架限定得太死,还是很难生成能够让人眼前一亮的新鲜的情节来。比如说,谋杀的动机只有贪欲、愤怒、嫉妒和恐惧这四种,人物的关系也只能在预定义的几种关系中进行选择。语言表达方式的枯燥无味当然也是故事并不吸引人的原因之一(可以从配图中看出),但这一点并不是我们讨论的重点。
Novel Writer向人们展示了自动写作机器的理论上的可能性。在其基础之上,人们得以进一步去探讨如何产生质量更高的文本的问题。自那时到现在的叙事生成技术,大致可以分为两种:审慎叙事方法(Deliberated Narrative)和基于模拟的方法(Simulation-based Approaches)。
审慎叙事方法(Deliberated Narrative)
前面我们提到过,一个精彩的故事需要让读者在其中读到某种“作者想要表达的东西”。一个故事不能仅仅是一连串毫无内在联系的随机事件,它应当是为了作者的某个“叙事目标”而精心安排起来的事件序列。这个叙事目标可以是传达某种体验、抒发某种情感、宣扬某种理论等等。通过阅读故事,读者慢慢被引导到作者想要呈现给读者的那个地方。这个走进作者精神世界的过程,往往也是读者阅读故事的过程中“意义感”的来源。Novel Writer的问题就在于,其中的故事情节是全局性地随机变化的,读者找不到那个能够走进的精神世界,找不到任何正在被表达的东西,也因此得不到什么意义感。
而人工智能自身是很难去产生这个叙事目标的。它真正擅长做的,是将人类给出的叙事目标敷衍成为一个完整的故事。叙事自动生成的一个更加具有可行性的形式是由人类给出一个叙事目标,然后让人工智能找到能够实现这个叙事目标的情节发展路线,并以确保符合逻辑的方式填充细节。审慎叙事方法(Deliberated Narrative)就是一系列这种指导思想下发展出的叙事自动生成技术。
审慎叙事方法将叙事生成看作人工智能领域的规划问题(Planning Problem)的一个例子。规划问题的本质则是图论中的路径搜索(Path Finding)问题。给定一组人物、地点、可能的人物关系、人物可能进行的动作、人物可能的社会属性等等,我们能够定义起一个“故事空间”,这个空间中每一个点都是一个可能的“世界状态”,即一个可能的人物属性和关系的组合。比如说,“张三和李四是好哥们”就可以是一个世界状态。最终,故事空间由一个故事中涉及到的每个元素的可能状态的所有排列组合所定义,它限定了一个故事生成程序从原则上说可能产生的全部故事的范围。如果两个世界状态可以通过某一组人物动作来实现从一个到另一个的转换,那么我们就可以认为这两个世界状态对应的节点之间有一条通路。比如说,从“张三和李四是好哥们”这个节点到“张三和李四是不共戴天的仇人”这个节点,就可以通过“张三杀了李四的父亲”这个人物动作来实现。这样,我们的故事空间就变成了一个图。叙事生成则可以看作是在这个图中寻找路径的问题,而作家的叙事目标则是这条路径需要满足的约束条件。比如说,如果叙事目标是“好人终有好报”,我们就需要寻找一条路径,其中某个人做了好事,并最终获得了某种回报。
审慎叙事方法很接近现实中作家编写故事时的思想过程——作家可能首先想到了一些零散的精彩桥段,之后为了能将这些零散的桥段扩展成完整的故事,再去补充其他的情节。在审慎叙事方法的框架下,这些一开始就决定出现在最终故事中的零散桥段,就像是要求目标路径必须经过的几个节点——而作为对目标路径的约束,这些零散桥段也可以被视为叙事目标的一种表现形式。1981年由Natalie Dehn开发的程序AUTHOR[2]就是这种思路引导下的作品:在一开始由人类作家指定一个他已经想好的精彩桥段,程序的作用是以前后一致的方式生成这个桥段以外的情节。类似于这样的故事生成系统还有很多,像1983年的UNIVERSE (Lebowitz)[3],1993年的MINSTREL(Turner)[4],2001年的Mexica(Pérez y Pérez & Sharples)[5],2005年的ProtoPropp(Gervás, Díaz-Agudo, Peinado, & Hervás)[6]等等。
基于模拟的方法(Simulation-based Approaches)
Novel Writer的另一个问题是,在其中每个人物看起来都是扁平的——它们不过是全局故事发展的棋子。人物的特征并不能真正推动情节的发展,而只是一些装饰性的要素。更不用指望在其中看到人物精神世界的发展,以及人物意图和动机的变化。人物对于故事来说如此重要,甚至于很多时候故事情节的设计都是以表现人物的特征为中心的。很难想象一个人物毫无内容的故事会有多精彩。
为了解决这个问题,人们提出了基于模拟(Simulation-based Approaches)的方法。其基本思路就是精确模拟人物的属性、意图、动作、社会关系,最后将很多这样的人物模型放到一起,让程序模拟他们之间的相互作用。而故事就自然而然地从这些相互作用中产生。
这种方法就像乔纳森布洛的“让系统展开其自身”的游戏设计理论在叙事设计中的对应物。一旦有了有趣的人物设定,精彩的故事就会自然而然地产生。作家的任务不是去设计这样的故事,而是在人物可能的相互作用中发现这样的故事。只要被模拟的社会系统复杂性足够,好的故事就能够以作者都意想不到的方式从中突现。由于这个原因,基于模拟的叙事系统有时候也被称作是突现系统(Emergent System)。
模拟人生系列可以被看作是这种类型的叙事自动生成的典型例子。整个游戏实际上就是一个社会关系模拟器。尽管没有人去设计其中的故事,却时不时就会有有意思的情节出现。学术界的例子则有1976年的Tale-Spin (Meehan)[7],卡耐基梅隆大学的Oz Project[8],等等。
可以看到,对于现有的大多数自动叙事生成技术,如何有效率地表示故事空间和如何有效率地在一个故事空间中进行搜索,是主要的技术瓶颈。一个故事空间是一个非常庞大的图,要求作者去列举其中每一个节点和边明显是不可行的。现在解决这个问题的思路是,采用一种高层级(High-level)的语言去描述故事空间(例如,由一阶逻辑代替命题逻辑作为故事空间描述语言)。这样作者就能够以简洁得多的方式描述故事空间。比如,作者可以简单地定义“所有有钱人都内心空虚”(借助概率语言或者模糊逻辑,甚至可以表达“大多数有钱人都内心空虚”),而不是一个一个地定义故事空间中的有钱人是内心空虚的(“张三是内心空虚的”,“李四是内心空虚的”,……)。另一个效率瓶颈则是寻找符合约束的路径。在最不受限制的情况下,这个问题可以被视为一种可满足性问题(SAT Problem)。而可满足性问题则是经典的NP完全问题(NP Complete Problem),其时间复杂度是随输入呈指数级增长的。在现有的计算机架构下我们还做不到游刃有余地算法化地解决这类问题。但量子计算机的出现很可能会带来这方面技术的飞跃。
决定一个故事的精彩程度的,也远不止是否存在一个集中得到表达的叙事目标和人物设定是否立体这两个因素。以上所说的两种基本方法,也只是在解决自动化生成叙事领域的最基本的问题。人类在这个领域显然还有很长的路要走。
正如我们前面所说的,程序化叙事生成是一个非常年轻而不成熟的领域。我们不仅仅在技术上难以想象很多难题的解决办法,甚至难以想象一个拥有成熟的程序化叙事生成技术的社会会是怎样的一番模样。如果说机械自动化生产是工业生产领域的一场革命,那么包括程序化叙事生成的自动化内容生成技术将成为这场革命在文化产品创作领域的对应物。而文化产品的生产与工业产品的生产一个很关键的区别就是审美观的介入。真正成熟的文化产品自动化生成技术必定要以某种方式“程序化”地产生审美意见。这个审美意见在作品中的注入也是真正使得作品具有“设计感”,而不仅仅只是一堆随机堆砌起来的内容的关键。从这种意义上说,现有的自动化内容生成技术只能称作是“人工智能辅助创作”,而远远达不到“人工智能创作”的程度。它能够负责随机生成一些可能的方案,而最终的取舍还是要由某个人类创作者来进行;它能够验证人类创作者编造出的故事是否符合逻辑甚至物理、社会规律,但它评价不了这个故事从一开始是不是就值得被述说;它能够让每一个不具有专业技术的人都能像大导演一样对基于缜密的专业知识创作出来的作品指指点点,它自身却永远担任不了这个导演的角色。比起“程序化生成内容”,更加具有挑战性的问题是“程序化生成审美意见”。
从另一个角度上说,为什么我们要追求文化作品中的“设计感”?就像人造的雕像和自然形成的山丘各有各的美感,缺乏设计感的人工智能文化作品,能否正因其设计感的缺乏而带来一种独特的美感呢?在很多艺术领域中,我们都看到过追求表现媒材本身的美而争取摆脱内容主旨的艺术流派,美术中有野兽派,音乐中有后摇滚,文学中有意识流,等等等等。或许缺乏设计感的人工智能文化作品有一天也能成为一种新的艺术流派。
再换一个角度,当我们想要程序化生成审美意见的时候,我们想要的究竟是用程序去模拟人类的审美观,还是真正地去生成人工智能自己的审美观?当有一天人工智能产生了它自身的审美观,我们真的能够理解吗?会变成人类审美观被人工智能审美观引导变化的局面吗?
即使不说审美意见的形成,只讨论人工智能辅助创作,它也将给这个社会的文化产品创作模式带来巨大的变革。就像自动化流水线促进了工业界的劳动异化,当创作者对他的作品只有一个笼统的认知时,创作者与他的作品之间的距离也被扩大了。一个创作者甚至可以是他自己作品的消费者。一个没有任何文学创作经验的普通人,可以简单地告诉人工智能他想看一个什么样的故事,然后就由人工智能为他定制完美满足他的需求的故事。
进一步说,在这样的条件下,文化产品的消费者究竟还有什么动力去消费其他人创作出的作品?当每个人都只接触为自己定制的文化产品时,个体之间的思考回路差异难免要不断扩大。在最极端的情况下,人们会被划分为无数个相互隔离的观念群。来自两个不同观念群的人甚至都很难相互交流。
技术的变革从来就不会仅仅只是生产效率的提高,它必然要引起社会和人文层面的变化,更何况是文化产品生成技术这样与人类意识形态紧密相关的技术。
想象有一天,你跟室友宅在家里。你的室友生来家境优渥,每天不学习不工作沉迷游戏,而你却是一个吃了上顿没下顿的穷实习编辑。上个月的房租还欠着,要是再不赚点稿费来,下个月恐怕就要被赶出去了。为了自己的实习编辑工作能转正,也得赶紧产出几篇文章来。看着完全不需要努力也能吃穿不愁的室友,你觉得心里非常不平衡,内心充满情绪根本无法专注工作。为了安抚自己,你决定自己给自己灌点鸡汤。
于是你打开叫做WritingAssistant310的程序,敲入一堆指令:
敲入命令“generate”,不到一秒钟的时间,一篇洋洋洒洒的每天食不果腹的穷实习编辑通过自己坚持不懈的努力最终变成身价千万的大文豪的故事便立刻浮现在你眼前。故事中的那个男(女)二号,一个每天就知道躺在沙发上看着肥皂剧吃着薯片的富二代,最后却因为父母破产而不得不沦落到街头乞讨的境地。
你的心情立刻开朗了起来,瞬间对自己的职业有了强烈的认同感和归属感,连心态都仿佛变成了未来的大文豪。然而读着读着,你忽然看到故事中出现了一个你从未定义过的人物——一个美丽善良的女教师(英俊温柔的男医生)。她(他)为第二主角富二代的与世无争的性格所吸引而爱上了富二代,两人最终步入了婚姻的殿堂。虽然无论在谁看起来这都像是一场钱色交易,然而当富二代不得不在街头乞讨时,女教师(男医生)却仍然对他(她)不离不弃,两人相濡以沫携手生存,虽然贫穷却成为了人人称羡的神仙眷侣。
你简直读不下去了。这算什么啊。出身贫寒的实习编辑通过努力变成大文豪的励志故事中怎么能出现这种偏离主线甚至扭曲全文中心思想的桥段。你赶紧敲了几行命令:
这个叫做gen:a67d9e的人物一定就是莫名其妙出现的女教师(男医生)!于是你输入
删掉了这个人物以后,你又从头开始读这个故事。这次,富二代在家庭破产后终于成为了彻头彻尾的Loser。你的嘴角露出了一丝笑容。
然而这个时候,你忽然注意到,在实习编辑成为大文豪的过程中,故事中出现了各种各样莫名其妙的角色——闯入着火的屋子救出被困小孩的勇敢消防员,揭开无数案件谜题的神探,领导人民起义推翻暴政的政治英雄——跟这些角色的故事线比起来,变成大文豪的实习编辑什么的简直就是背景中的一个路人。
这些喧宾夺主的支线故事究竟是怎么回事?你开始怀疑是不是有人动了这台你写作专用的电脑。你敲入命令:
你的目光聚焦在了”Story Entropy”这一行。究竟是哪个混蛋把默认故事熵值设得这么高!
重新生成一遍故事。终于,这次的故事里一点杂音都看不到,几乎文字中的一切细节都跟故事主旨紧密相关,就连进入咖啡馆听到的路人的闲聊都是“你要相信,有志者事竟成”。你心满意足地把故事打印了出来,放在床头,准备每到人生低谷期就拿出来读一读。
[1] Klein, S. (1973). Automatic Novel Writing: A Status Report. University of Wisconsin-Madison Department of Computer Sciences.
[2] Dehn, Natalie (1981). “Story Generation after Tale-Spin.” A. Drinan (ed). Proceedings of the Seventh International Joint Conference on Artificial Intelligence , August 24–28, University of British Columbia, Vancouver, Canada. Los Altos, CA: Kaufmann, vol. 116–18.
[3] Lebowitz, Michael (1983). “Creating a Story-Telling Universe.” A. Nundy (ed). Proceedings of the Eighth International Joint Conference on Artificial Intelligence, August 8–12, Karlsruhe, Germany. Los Altos, CA: Kaufmann, vol. 1, 63–65.
[4] Turner, Scott R. (1993). Minstrel: a computer model of creativity and storytelling . PhD Dissertation, University of California at Los Angeles, Los Angeles.
[5] Pérez y Pérez, R., & Sharples, M. (2001). MEXICA: A computer model of a cognitive account of creative writing. Journal of Experimental and Theoretical Artificial Intelligence, 13, 119–139.
[6] Gervás, P., Díaz-Agudo, B., Peinado, F., & Hervás, R. (2005). Story plot generation based on CBR. Journal of Knowledge-Based Systems, 18 (4–5), 235–242.
[7] Meehan, J. R. (1977). TALE-SPIN: An interactive program that writes stories. In Proceedings of the 5th International Joint Conference on Artificial Intelligence, pp. 91–98.
[9] Riedl, Mark Owen; Young, Robert Michael. (2014) Narrative Planning: Balancing Plot and Character. Journal Of Artificial Intelligence Research, Volume 39, pages 217-268, 2010; doi:10.1613/jair.2989
[10] Jonathan Doran and Ian Parberry, "A Prototype Quest Generator Based on a Structural Analysis of Quests from Four MMORPGs", Proceedings of the Second International Workshop on Procedural Content Generation in Games, pp. 1-8, Bordeaux, France, 2011.
评论区
共 59 条评论热门最新