在Twine 2 vs Ink vs Yarn中编写交互式叙事

使用示例进行快速而肮脏的比较

更新 我现在在比较中包括了Yarn。)

注意 :这篇文章的后续内容,关于在Twine 2,Ink和Yarn中启动和运行Unity集成的比较,可以在这里找到。)

最近,对于一个客户项目,我开始研究提供Unity集成的交互式叙事创作系统。 具体来说,我一直在研究如何使用每个系统编写一些常见的模式。 我没有在线找到两个系统的任何系统比较,因此在这里我非常简要地记录了自己的工作。

注意事项:

  • 我是Twine,Ink和Yarn的新手,所以欢迎您提出任何更正或建议。
  • 我正在从事的项目有相当具体的约束和要求,包括非技术人员需要参与写作过程这一事实。 我的目的是想像这些系统的创作和工作流程会是什么样,而不是对哪种系统“更好”做出任何判断。
  • 我的意图不是要深入学习或教任何人如何使用Twine,Ink或Yarn,并且以下示例均不附带说明。 转到此处以麻绳2,此处为墨水,此处(以及高级材料,此处)为Yarn文档。
  • 我可能会在以后添加到此文档中。

要创建下面的示例,我使用了:

  • 墨迹脚本编辑器Inky
  • Twine 2编辑器,采用Harlowe(默认)故事格式的脚本。
  • 使用记事本++编写纱线文件。 (我发现我的Yarn Editor存在保存/加载问题,这很可惜,因为我喜欢它提供的Twine样式图形界面。)

选择项

给玩家一个选择(例如对话选择)。

缠绕

分行

根据玩家的选择或其他触发因素,故事分为不同的子叙事。

缠绕

状态追踪

存储和修改变量数据。

缠绕

条件逻辑

示例1:选项的可用性取决于游戏状态。

请注意,除了我自己的变量( sense_of_mortality )外,Ink还允许我检查是否已看到一段内容(在本例中为At_the_pony_store )。

缠绕

示例2:内容根据游戏状态进行调整。

缠绕

集线器/回路

允许玩家反复返回某个点(例如游戏中的“枢纽”),从中可以做出其他选择。

缠绕

默认情况下,Ink会记住播放器已经做出的选择并将其隐藏在播放器中。

要在Twine 2中获得相同的行为,您可以使用脚本(即状态跟踪+条件逻辑)手动进行操作,例如:

外部函数调用

在这里,我只是复制/解释了在Ink and Cradle文档中找到的信息:

具有Ink Unity集成的墨水

  • 使用“可变观察者”通知游戏状态变化
  • 使用标签将不可见的元数据添加到墨水行中。
  • 使用文本本身向游戏编写指令,然后让游戏特定的文本解析器决定如何处理它。

与Cradle Unity插件缠绕

Cradle通过其“线索”和“运行时宏” API允许这样做。

使用Yarn Spinner Unity插件进行Yarn

Yarn Spinner允许使用YarnCommand属性

Unity整合

我还比较了Ink和Twine 2的基本集成,以了解哪种系统可以满足我们项目的需求。 我在这里简要记录了一下。 (我很快将在其中添加Yarn Unity集成。)