【GDC 2022】将作家变为程序员:故事语言与灰箱叙事

作者:HarryLu
2022-06-11
11 12 0

视频地址

在这场 GDC 中,演说者 John Manning 向我们介绍除了电子表格和节点编辑器的一种对话编辑工具,作家们可以使用一种与电影脚本格式非常相似的 DSL 来更高效率地完成游戏中的剧情对话工作,并提出了灰箱叙事的概念。除此之外,演说者还对电子游戏工具开发者们提出了一些关于工具开发的建议。

Turn Your Writers Into Programmers: Greyboxing Narrative with Story Languages:
https://www.youtube.com/watch?v=JGZQSFvcQzo

关于演说者

John Manning

John Mannin 是一位获奖的游戏开发者,技术作家以及公众演说者。他的工作领域囊括移动游戏开发,叙事开发以及工具开发。John Manning 在澳大利亚塔斯马尼亚大学获得了计算机学士学位与人机交互哲学博士学位。他现在是独立游戏工作室 Secret Lab 的联合创始人以及 Yarn Spinner 的技术总监。


Ryan North

Ryan North 是 New York Times 畅销书作家与爱斯纳奖获得者。同时他也为视频游戏,电视与 Dinosaur Comics 写故事。Ryan North 在卡尔顿大学获得了计算机学士学位,并在多伦多大学获得了理学硕士学位。

引言

现在的游戏开发团队中常用三种对话编辑器。第一种是节点式的对话编辑器,这种编辑器可以更好地从视觉上表现剧情的故事分支,但是对于作者来讲这种编辑器执行一次编辑需要多次点击。第二种是电子表格,但是当需要处理对话分支时,电子表格的效率是十分低的。当然你也有可能更多在 word,google docs 中写故事,但是当你需要制作故事分支的时候,这种扁平结构的设计可能会导致文档很混乱。并且你还需要在这之后复制粘贴到游戏中,并不能说是一个理想的工作流程。

因此,有没有一种更好的工具可以既能高效地处理剧情分支,又可以让作家们有更好的写作体验呢?

上图图一为节点对话编辑器,图二为电子表格,图三为使用 Word 文档创作的对话脚本。

什么是 Yarn Spinner?

因此们,John Manning 希望可以将程序中的流程控制和对话与剧情编写结合在一起。他们的解决方案就是 Yarn Spinner。这是一个专门用于处理游戏中的对话系统的领域特定语言(DSL)。

与此同时,Yarn Spinner 也是一款完整的编程语言。因此这也是本次演说的主题:将作家变为程序员。当然,Yarn Spinner 也并不是第一个将故事编程的语言,这种思想最早可以追溯到无限引擎,Baldur‘s Gate 和 Iceland Dale。


关于 Yarn Spinner

  1. 这是一个 MIT 协议的开源项目
  2. 灵感来源于 Twine
  3. 最早用于 Night in the Woods 的开发中
  4. github.com/YarnSpinnerTool/YarnSpinner

Yarn Spinner 的好处之一在于很容易让那些没有编程经验的作家们使用。Yarn Spinner 的语法基于电影脚本。


什么是故事编程语言:

  1. 作家可以像写脚本那样写对话
  2. 编辑器可以读脚本并且对其进行语法分析
  3. 当在 gameplay 中,Yarn Spinner 可以执行脚本
  4. 通过这种语法,可以使创建分支对话更加简单。这也可以使尝试的成本更简单

上图图一是 Yarn Spinner,图二是一般故事的剧本

Yarn Spinner 的优势与劣势

Yarn Spinner 的优势

  1. 快速创作
  2. 更快的编辑,即使在项目开发的晚期
  3. 可以在编辑时 Debug
  4. 与文本编辑器一样,可以即时调试
  5. 简单的文本格式意味着更容易在版本跟踪软件中使用它
  6. Yarn Spinner 可以让编辑做得更加简单,因为在很多时候场景的逻辑是场景的故事


Yarn Spinner 的劣势

  1. Yarn Spinner 的 Sandbox 在实际应用时并没有想象的那么大
  2. 当处理非线性数据时,应该使用表格而非 Yarn Spinner
  3. Yarn Spinner 不支持函数

叙事灰箱处理

在一些关卡设计中,关卡设计师可以对游戏进行“灰箱处理”,用一些粗糙的几何形状来进行初期的游戏开发,在开发昂贵的 3D/2D 美术品前。因此在 Yarn Spinner 中,也提供了供作家使用的“叙述灰箱处理”。

  1. 作家可以自己书写逻辑控制并编写自己的系统,无需工程师参与
  2. 而工程师也可以搭建自己的系统并用 Yarn Spinner 创建一些占位符等待作家来书写剧情

演说者对游戏工具开发者的建议

  1. 创建一个编辑器比你想的要简单!
  2. 在这里开发者使用的是 ANTLR,你只需要定义语法,这个工具就可以生成 parser 的源代码,Yarn Spinner 的 parser 的代码就是这样生成的
  3. 不要尝试设计一“整”个编程语言
  4. 不要创造一个 C#的克隆
  5. 解决特定的问题,作为工具开发着需要开发的是一个“脚手架”