新的计划
indienova 正在与落日间共同推进内容合作计划(xpaidia.com/makegames/),希望为中文世界拓宽深入思考独立游戏文化与开发的入口。我们相信,了解游戏的创作者与创作背景,探索更多样、未受到广泛关注乃至实验性的独立游戏,追踪不同维度的游戏设计,汲取丰富路径的游戏研究,有助于我们从更加多元的视角品味、探究游戏,并进行反思。我们也相信,游戏的开发与创作应该被祛魅为更易被大众认知的话题,让所有被触及者更好地理解并参与到电子游戏的未来发展中。
按
说起游戏中的交互式叙事,我们大多想到的是可以用树状流程图表示的分支叙事。根据玩家在关键事件中所做的选择,作者会设计好不同的故事走向。
这种方法有一些明显的问题。对于创作者来说,他们要预测玩家可能的不同选择,并为每一种选择都设计好情节发展,工作量非常庞大。另一方面,这样创作出来的叙事也往往与游戏机制脱节,影响玩家整体游戏体验的沉浸感,造成经典的”叙事失调(Ludonarrative dissonance)”问题。
在《80 天:如何以软件工程的思路编写一部互动小说》这篇文章中,我初步探讨了一种新思路:构建一种基于文本的世界模拟引擎。其本质是让叙事内容依附于某种游戏世界状态模拟,而不再是独立于游戏机制的一套自成一体的内容,成为游戏机制执行过程的一种呈现方式。
事实上,包括《80 天》在内的很多新型交互叙事内容组织结构,都能够用艾米莉·肖特(Emily Short) 最先提出的一种“故事块(storylet)”架构来描述。
这种架构由一个“所有可能的游戏世界状态所组成的空间”概念出发,将玩家在一次具体游戏中的经历看作是在这个空间中的游历(Traversal)。叙事作者不能控制玩家具体的游历路线,但是可以给这个空间的子空间赋予特殊叙事含义(Narrative Meaning),并用原子化的故事块去定义这个叙事含义。最后,玩家在这个空间中的游历,配合作者分配给不同子空间的故事块,就形成了与游戏机制紧密相关的、由玩家和游戏开发者共同创作的完整叙事。
为了让国内的朋友们更加了解艾米莉·肖特提出的这种故事块架构,我们特此翻译了这个主题的三篇文章。
第一篇文章《Beyond Branching: Quality-Based, Salience-Based, and Waypoint Narrative Structures》适合作为一个引子。它是艾米莉·肖特的一篇博文,作者从传统的分支叙事出发,介绍了另外三种与游戏世界状态联系更加紧密的叙事内容组织架构,逐步引导读者脱离传统的分支叙事思维,看到其他可能性。
第二篇文章《Storylet: You Want Them》仍然是艾米莉的一篇博文。本文比较系统性地引出了”故事块”概念和以这个概念为中心的叙事内容组织架构。作者探讨了一些游戏中常见的叙事内容组织方式,并展示了这些组织方式都可以用”故事块”更加灵活且可扩展地复现。
第三篇文章《Sketching a Map of the Storylets Design Space》是马克斯·克雷明斯基(Max Kreminski)和诺亚·沃德里普·弗瑞恩(Noah Wardrip-Fruin)在 2018 年的国际交互式数字化叙事大会(International Conference for Interactive Digital Storytelling)上发表的一篇综述性论文。这篇论文以更强的学术严谨性定义了故事块架构,并通过考察应用故事块架构来组织叙事内容的游戏实例,总结出了能够覆盖这些游戏叙事结构差异的几个独立的变化维度。
厌氧菌
艾米莉·肖特
艾米莉·肖特是一位互动小说 (interactive fiction) 作家,多年来一直担任 IGF(独立游戏节)最佳叙事奖评审团成员。在 2020 年到 2024 年担任 Failbetter Games 创意总监,该工作室是《伦敦陷落》(Fallen London)及其衍生产品背后的工作室。
- 翻译:瑟瑟
- 校对:厌氧菌
本文已获得作者授权。
超越分支:基于变量、相关性和检查点叙事的结构
Beyond Branching: Quality-Based, Salience-Based, and Waypoint Narrative Structures
这篇博文的标题相较通常来说更有技术性,对此我深表歉意。文章的灵感来自于最近的一些交谈,我发现人们用“分支叙事”(branching narrative)这个词来描述“非线性的叙述,玩家对故事结局有一定的掌控”,但他们没有意识到还有许多其他方式可以组织和呈现这样的故事。
关于如何使分支叙事的主题性更强,如何整合数值状态,避免组合爆炸,以及精简相对于所提供选择数量的分支数量,已有相当多的技术文章。
杰伊·泰勒-莱尔德(Jay Taylor-Laird)在 GDC 2016 上发表了关于分支结构的演讲,其中包括一张《暴雨》(Heavy Rain)的分支结构图。每次提到这个话题,我都有义务放上山姆·卡博·艾许威尔(Sam Kabo Ashwell)关于 CYOA 结构的著名文章的链接。(译注:CYOA,Choose Your Own Adventure 的缩写,意为“选择你自己的冒险”,用以描述一种互动式叙事的术语,玩家通过在故事中做出选择来影响情节的发展,通常包含多分支和不同结局。)
这篇文章并不是要介绍这些优化分支叙事的方法,而是要介绍应对下述基本问题的其他(很多!)选择中的三种:
我的故事由多个内容片段组成。我如何选择下一步向玩家展示哪个片段?
对于这个问题,我着眼于在“故事如何发展”上给玩家提供中高程度的控制权,而非只是影响或控制故事的讲述方式。
我也选择了那些不主要基于复杂模拟的方法,因为这些方法——从《矮人要塞》(Dwarf Fortress)到《Façade》——往往根据被模拟内容的不同有很多专业考量,而且它们通常并不是一开始就以相同的方式构想出来的。因此,让我们先把这些说清楚。
“基于变量的叙事”(Quality-based narrative,下文简称 QBN)是由 Failbetter Games 发明的术语,用来指代围绕由变量解锁的故事块(storylets)构建的互动叙事。
故事块通常是一两段文本,接着是玩家的选择(在 Failbetter 的说法中,每个选项称为一个分支),以及描述该选择结果的文本。(译注:关于故事块的详细解释,请参考艾米莉的另一篇文章《Storylet: You Want Them。》)
变量(Qualities)是在游戏中可以增减的数值变量,它们代表从库存(你携带了多少瓶鸦片酊?)到技能属性(你的“危险”等级是多少?)再到故事进度(你与舅妈的关系进展到了哪一步?)的所有事物。StoryNexus 工具实现了 QBN;Varytale 在它还运营的时候也实现了 QBN,尽管是以一种混合形式,允许故事块本身包含 CYOA 风格的部分(译注:StoryNexus 和 Varytale 都是基于浏览器的互动小说创作工具)。
QBN 的一大优势在于,它能让许多短篇幅故事以有趣的方式组合在一起。《伦敦陷落》是基于变量叙事的典型作品,游戏中包含了许多关于角色和情境的叙事弧线,散布在城市各个角落。
一些叙事弧线基本上是一个故事块的长度:发生某件事,你做出回应,得到一个结果,故事结束。你的技能可能会决定你在某个挑战中的成败,你选择的分支结果可能会改变你的属性数值,但对叙事结果的影响可能是轻微的,或结合得相当松散。 其他叙事弧线则更长,尤其是付费内容“特别章节”中:我所写的故事《常逝者》(The Frequently Deceased)包含了大约一百个分支的内容。
某处发生的一个故事块可能需要你使用在别处获得的资源,但是资源获取和资源使用之间的联系通常取决于玩家,你甚至可能不记得因果链是什么。
另一方面,这些因果链有时会以丰富多彩的方式组合在一起:你知道一个故事块所需要的资源能在城市别处得到,因此你去获得它,然后回来,这样你就有效地编织了一个新支线任务,尽管这个支线不需要被设计成当前故事线的一部分。
这其中蕴藏着巨大潜力,这种潜力能够带来程序化叙事那样的乐趣,但主导权在玩家手中,而不是依赖算法。比如我试图和游戏中的一位神父交朋友,但为了筹集资金捐赠给他的教堂,我跑去做了一大堆邪恶的怪活儿:这是一个由玩家自己实现的讽刺桥段,在系统中确实隐含着这种可能性,但完全没有固定做法。
我喜欢 QBN 的另一点是它给后续故事留出了空间,以便对前期内容作出精巧的呼应。我的几个故事中有一些独特的分支,当玩家恰好在前期获得了特定的资源,分支就会触发:它们通常实现了玩家用其他方法也能达成的目标,但却是以一种特别的方式,比如附带特殊文本,或者带有一个额外的小奖励。
内容极多和极少的情况都会给 QBN 模式带来挑战。我认为 StoryNexus 对新手创作者来说很难,因为当数据库中还没有一定数量的故事块时,内容往往不够有趣,所以你很难感觉到真正有所进展,直到你在工具上花费了足够时间。相反,当你拥有非常庞大的内容时,你可能会发现可选故事块的数量有点让玩家应接不暇了。
《伦敦陷落》近期推出了一些新功能来解决这个问题:故事作者可以指定故事块在玩家页面上的显示顺序,给重要的故事块标不同的颜色,等等。至于较长的故事,比如《卓越之友》(Exceptional Friends)故事集,如何让这些元素展现出来则成为了关键。
不过,在中等体量下,仍可以将新内容的模块化元素加入到旧内容中,并且对其如何影响系统的其余部分保持乐观。这对于一个拥有分集内容和大量共创者的系统来说至关重要。
在我们希望让玩家以任意顺序获得三项信息的情况下,与传统的 CYOA 结构相比,QBN 模式更为灵活。太过简单的分支叙事则会用很多笨拙的重复来处理,例如:
找出犯罪手段
然后找出犯罪动机
然后找出犯罪时机
然后找出犯罪时机
然后找出犯罪动机
找出犯罪动机
然后找出犯罪手段
然后找出犯罪时机
然后找出犯罪时机
然后找出犯罪手段
找出犯罪时机
然后找出犯罪手段
然后找出犯罪动机
然后找出犯罪动机
然后找出犯罪手段
而 QBN 模式可以通过四个故事块来处理(其中之一设有门槛):
找出犯罪手段
找出犯罪动机
找出犯罪时机
指控凶手(前三项皆完成时解锁)
当然,许多分支叙事系统实际上都能够设置循环(loop)和变量(variables)来管理相同的事情:例如,在 ChoiceScript 中,你可以不断将玩家重定向到同一个收集证据的节点,直到所有证据被找到。但在 ChoiceScript 中,可再次进入的节点是特例,而在 QBN 中,此类情况是常态(译注:ChoiceScript,简单的开源编程语言,用于创建互动小说游戏)。
QBN 的另一特点在于它要求作者必须手动记录故事的进展情况,至少在 StoryNexus 系统中是如此。假设你的故事有一条叙事主线——首先发生 A,然后是一些随机事件,接着发生 B,然后是无序的更多事件,最后是 C——你必须手动设置一个属性表示事件 A 的可用;设置另一个值表示它已完成;然后再设置一个值表示事件 B 的可用;再设置事件 B 已完成……你懂的。这需要大量簿记工作,而在许多其他系统中,这种功能是自动集成在脚本编写过程中的。(我认为这可能是因为在《伦敦陷落》的开发早期,多故事块的叙事弧线并不常见。)
读过 Storyspace 3 的使用指南后,我的印象是其雕塑式超文本(Sculptural Hypertext)功能可能与 QBN 结构有关联,但我自己没有使用过这个工具。(译注:Storyspace 3,一个用于创建、编辑和阅读超文本作品的工具。)
(* Failbette 公司已经完全不再使用“基于变量的叙事”这个术语,因为它听起来似乎在暗示其他叙事类型不具备变量;但在没有更好的替代术语之前,我还是会继续使用这个旧术语。)
“基于相关性的叙事”是我现造的一个术语,指的是从大量内容中挑选出一小部分来呈现的交互叙事,挑选的内容则是基于判断当下时刻哪一内容元素最为适用。和 QBN 类似,这种方法不会预设重要的信息类型:就像《伦敦陷落》中的一个变量可以是几乎任何东西,相关性叙事可以与世界状态中几乎任何可度量的信息相关联。
QBN 允许玩家从当前所有可行的元素中选择下一个要查看的最佳元素,而基于相关性的方法则自行作出这一选择。
例如,如果我们有如下标记的对话:
(位置=厨房)“嘿,有人饿了吗?”
(位置=厨房,储藏室=空)“哈,看起来有人已经把这里的东西都清空了。”
(位置=厨房,炉子=燃烧)“把你的火把给我,我来点亮它。”
我们会去找最适合当下情况的对话。如果我们在厨房,并且储藏室空着,并且炉子在燃烧,那么陈述 1 的相关性低于 2 或 3,但是 2 和 3 的相关性相等,所以我们会在它们之间随机选择。
依兰·路斯金(Elan Ruskin)为《求生之路》(Left 4 Dead)设计的对话系统就是一个绝佳的例子,近期的《看火人》(Firewatch)也采用了这种系统。这两款游戏允许玩家在一个三维世界中穿行并遇到各种不同的情况,两者都需要能够根据不同情况来选择紧密匹配的对话。
你可以相对轻松地拟定一套基础内容,为其创建合理且通用的默认设置,然后再逐步根据个别情境添加更具针对性的内容。你无需对所有可能的情境都做到全面覆盖。
此外,这种系统对于创作者而言也更易于构思:当你在玩游戏的过程中发现某个情境需要特别关注,就可以创建一个规则来描述它,并将这个规则嵌入游戏中,整个过程就完成了;通常来说,如果这种系统实施得当,你就不必过多操心这样做带来的连带效应。
我提到的两个“基于相关性”的应用都专门用于触发对话,并且它们都是在一个可探索环境之上叠加叙事层,这并非巧合。
《看火人》在游戏底层使用了许多触发条件(flags),但同时它也非常依赖于玩家的位置和邻近的物体,这些元素有着独立建模的世界状态。(与此相反,在 QBN 系统中,变量就是世界状态。甚至“位置”也可以看作是一种变量,玩家在任何时刻只能处于一个特定位置。)
与此同时,游戏中的许多对话并不直接改变三维世界的状态,尽管它们可能为之后的对话设置了触发条件,而且《看火人》确实精心设计了一些物理反馈来回应玩家的某些互动。即便如此,大多数选择并不会带来太多直接后果,这使得开发者能更自由地添加更多对话变体,而不必担心影响到游戏的其他部分。
在文字冒险游戏世界(译注:parser world,原意为“文本解析器世界”)里,这有点像《新鲜寿司的一天》(A Day for Fresh Sushi)中反应灵敏的 NPC 鱼:这些角色会评论玩家的行为,但不会将对话作为主要的互动方式。然而,这是一种非常有效的方法,来对玩家迄今为止所做的行为给出情感层面的反馈。
道格·夏普(Doug Sharp)的《芝加哥之王》(The King of Chicago)是一个更极致的例子(强烈建议你阅读这篇文章,它太绝妙了),它不仅仅是生成合适的对话,确切来说是根据目前为止发生的一切,从一组可能的情境中动态地编排接下来应该发生什么。它还使用数值变量(numerical variables)而非布尔状态变量来衡量相关性。
从表面上看,这样的情节设计显然存在设计漏洞。《求生之路》和《看火人》都有一条独立于相关性叙事机制的游戏弧线,它为事件提供了大背景和整体走向。
如果你真的要对游戏事件进行编排,你可以想象这样一种情况:玩家开心地玩了一两幕,然后或多或少偶然满足了他们的角色被黑帮干掉的所有先决条件:如果经过了作者的合理规划安排,这可能会是一个有效、有力的坏结局,但如果是通过相关性匹配来选择,就不一定能保证如此有效了。
我不清楚《芝加哥之王》在解决这个问题上做了什么(虽然我还没有机会尝试重制版),但我认为,如果在进行相关性匹配时考虑到的一些状态变量是基于戏剧性弧线而非其他,那么这个问题是可以解决的。
确实,学术界关于交互式故事的文献中很可能有更多这类尝试,而我可能并不了解(如果你有所了解,欢迎留言评论)。
我们现在拥有足够的算力来解决这种设计中的一些其他问题。道格·夏普在他的演讲中提到,很难对他的系统进行严格测试,但现在你可以运行几千次随机游戏过程(randomized playthroughs),并使用一些可视化工具来检查是否存在从未被触发的序列,以及是否存在一些似乎被过度使用的序列,以便拆分为多个不同类别。
与此同时也存在调整优化的难题,即确定如何给可行的故事序列打分,以判断它们是否符合接下来的叙事需求。这种评分系统过去通常由人工构建和微调,但现在我们或许可以将机器学习应用到人工挑选的最佳匹配数据集里。
检查点叙事(waypoint narrative)。这个词同样是我自创的,但它对应了我在《Glass》中使用的方法。在《Glass》中,互动的主要形式是对话,玩家和 NPC 们都能够改变当前的对话主题。当我们最终选到一些触发话题(trigger topics)时,就会将故事推进到新的状态。
特定的对话台词与话题本身没有关联,而是与话题之间的转换(transitions)相关——比如一个 NPC 可能有办法将话题从“王室”转换到“神”——并且能根据可行的转换路径在话题之间进行路径寻找(pathfind)。例如,我们的对话网络可能看起来是这样:
这意味着系统可以动态地寻找通往下一个触发话题的路径。如果玩家将话题转到某个本身就会引发特定结果的主题上,那么就可以由此触发场景变化,这可能会使故事的走向偏离预定路线。
有些话题只有玩家能够提及,因为它们并不存在于 NPC 的“话题路径”中。即使玩家没有提到这些话题,它们仍然可以改变我们在话题地图上的位置,进而影响接下来要叙述的内容,直到到达下一个预定的触发话题。
以这个例子来说明:这里有五个可能的交谈主题,以及一些连接这些主题的对话片段;我们以“人民”作为对话的开端,而 NPC 们则希望绕到关于“王室”的话题。一旦他们谈及王室,就会触发下一个默认场景。然而,如果我们开始讨论“革命风险”,就会触发另一个场景。NPC 们永远不会触及这个话题,但玩家可以提出来。如此一来,对话可能会这样展开:
作为第一步,NPC 找到“人民-> 神-> 王室”的路径,并说出与“人民->神”转换相关的台词。然而,玩家采取某种行动将话题重新引回到“人民”。
这时 NPC 已经使用过“人民->神”的路径,因此这条路径在之后会被赋予较低的优先级——为了确保系统的稳定性,我们准备了一些在必要时展示的备选文本,但除非别无选择,NPC 绝对不会使用这种方式。因此,为了找到通向“王室”话题的新路径,它们现在必须尝试通过“政府”这一话题来规划:
在这个过程中,NPC 在叙述中提到了“民众不满”。这样做暗示玩家“革命风险”是一个潜在的讨论话题,所以玩家可以在这时提出这个话题,触发一个与原本预期不同的场景。
如果玩家在这一点上没有进行干预,那么 NPC 接下来可以谈论皇家顾问,并以“王室”话题作为落点,通过标准方式结束这一场景。
最后做一些补充:有人可能会好奇,为什么对话网络要提供与 NPC 意图相反的转换选项;我们可能也想要纳入这样的情况:NPC 的对话意图因响应某些刺激而中途改变,而在这种情况下,我们希望有足够健壮的对话网络来支持这些变化。另外也有可能(尽管为了简化我跳过了这一点)将数句台词与单一转换相关联,例如写三四条不同的台词讲王室如何与政府互动,并根据需要按顺序使用它们。
这个系统的设计是为了让玩家感觉到 NPC 会根据你的输入改变他们所说的话,然而故事进展的主要责任在它们身上,而非玩家。这也使主角处于某种越轨的位置,因为让有趣事情发生的主要手段就是提出 NPC 们不太想讨论的话题:你的任务就是坐在那儿揭示对话中的潜台词。有时,策略性地等待一两个回合,让 NPC 们多说一些,然后从新的起点来介入对话也是有用的。
我确实为这个系统设计了一个叙事框架:《Glass》的主角其实是一只置身于满是人的房间里的鹦鹉,因此从叙事的角度来说,你不应,也不必期望拥有与其他角色相同的能动性(agency)。
某种意义上,这与组合性爆炸的分支叙事方式相反。在那种方式中,作者创作新内容会带来“惩罚”,因为这迫使你进一步创作更多内容。而在《Glass》中,故事引擎始终在尝试修复故事,从玩家混乱的输入中回到作者设定的关键点。我添加的内容越多,连接话题之间的路径就越多,故事的自我修复就会更高效、更灵敏。
《Glass》的例子是关于如何在对话中实现这种机制的,不过这种结构的另一种应用可以是这样:故事拥有一个强烈的叙事声音(narrative voice)或一位不可靠、试图隐瞒的叙述者(narrator),玩家可能会表达他们接下来想听的内容,而叙述者则可能讲一个相关的趣事来回应,然后重新回到它们更喜欢的话题上。因此,我认为这是一种可行的互动故事模型,也可以称为玩家与叙述者之间的拉锯战。
以上得出的推论:Twine(译注:一款开源的交互故事创作工具,允许用户创建非线性、多分支的叙事结构)既是完成作品的出色工具,也是原型设计的绝佳平台,但它并没有专门针对上述这些结构进行设计。特别要指出的是,我们无疑应该向学生介绍 Twine 以及它的用法,但不应该让他们认为这是制作互动故事原型的唯一或通用方法。否则,他们很可能会陷入组合性爆炸问题中,而这原本可以通过使用具有更强大的状态跟踪功能的系统来解决。(恰巧在上个月我才和学生们就此话题进行了多次讨论。)
当然,除此之外还有很多其他选择,包括但不限于大家熟悉的基于地图的架构(如《80 天环游地球》;或许多使用解析器的互动小说游戏采用的谜题门控“puzzle-gated”变体——你必须解开某个谜题才能进入下一步);数据库研究式游戏(database-research games),如《她的故事》或《类似:仇恨故事》;全息游戏(holographic games),它们通过即时扩展、修改或重写文本来深挖故事的不同层面,有时从游戏开始就提供了整个叙事弧线的全景(可以参考我最近关于《Claro Largo 的姐妹们》或《PRY》的文章);以及基于牌组的叙事游戏,这类游戏将排序的决定权交给玩家。(我手头有几个待评测的牌组叙事游戏,我会在之后的文章中再次讨论它们。)
其它领域:马克·里克比(Mark Rickerby )最近分享了他为一款间谍主题游戏制作叙事元素图表的体验。关于谜题门控,这里也有一篇关于谜题可视化的有趣文章。
indienova 是一个侧重独立游戏的媒体平台,一处活跃而含蓄的游戏开发者社区,也是一家独立游戏发行商。致力于传递由游戏承载并沉淀的时代文化的同时,我们也不断尝试探索游戏背后的深层价值,同样重要的是,作为海内外游戏群体间的桥梁,将游戏玩家、学者、开发者与发行商联结在一起,促成高效的交流和沟通。期待玩家能在这里找到游戏本真的乐趣,期待开发者能在这里完成初心所向的作品,期待知识、技巧和思想,能够时时汇融。
落日间是一个试图回答「何为游戏」与「游戏何为」的数字人文实验室,我们希望探索一种新的扩展但具体的游戏概念,面对当今游玩化的世界并发掘电子游戏的可能形态。我们正在创作帮助我们理解游戏/电子游戏的文字,音频节目,视频,以及电子游戏(xpaidia.com)。
延伸阅读
Marc LeBlanc 创造戏剧化游戏动态的工具 Creating Dramatic Game Dynamics
Rami Ismail:什么是冥想游戏? What are the Meditations Games
更多关于 “做游戏 makegames” 计划和网页端更好的阅读体验,请访问 xpaidia.com/makegames
虽然没太看懂但大致上是那种乱七八糟的结构,我也用的乱七八糟的结构,测试起来特别糟心