Skip to content

第一站:点亮第一个场景

欢迎来到您的第一个创作现场!

在这一站,我们的目标非常简单:创造一个故事的起点,让它在屏幕上显示出第一句话。这就像为一部戏剧搭建好第一个舞台,并让主角说出第一句台词。别担心,这个过程比您想象的要简单得多。


故事的“剧本”:common/data.json 文件

在 BandTwine 的世界里,您所有的故事都居住在一个名为 common/data.json 的文件中。您可以把它想象成是您故事的“总剧本”或“设计蓝图”。我们所有的创作,都将通过修改这个文件来完成。

一个最基础的剧本,是一个空的 JSON 对象:

json
{

}

很简单,对吧?现在,让我们开始往里面填充内容。


搭建第一个“场景” (Node)

在 BandTwine 的术语里,一个“场景”、一个“段落”或者一个“事件”,都被称作一个 节点 (Node)。故事就是由许许多多这样的节点连接而成的。

让我们来创建第一个节点。这个节点将是故事的入口,我们给它起个名字,叫 start

请将以下代码复制到您的 common/data.json 文件中:

json
{
  "nodes": {
    "start": {
      "text": "你在一间安静的房间里醒来,阳光透过窗帘的缝隙洒在地板上。"
    }
  }
}

这段代码的意思是:

  • "nodes" 是一个大书架,用来存放我们所有的场景(节点)。
  • "start" 是我们给第一个场景起的名字(ID)。这个名字必须是唯一的,就像每个人的身份证号。
  • "text" 属性,就是这个场景要显示的文字内容。这里就是您作为故事讲述者,对玩家说的第一句话。

重要提示

在实际开发中,请确保您的 common/data.json 文件编码为 UTF-8,以避免中文显示异常。

指定故事的“入口”

现在,我们已经有了一个场景,但还需要告诉 BandTwine 引擎:“嘿,请从这个叫 start 的场景开始我的故事!”

我们需要在剧本里加一个“路标”,告诉引擎故事的入口在哪里。这个路标就是 indexNode

让我们来完善 common/data.json

json
{
  "metadata": {
    "indexNode": "start"
  },
  "nodes": {
    "start": {
      "text": "你在一间安静的房间里醒来,阳光透过窗帘的缝隙洒在地板上。"
    }
  }
}

这段代码的意思是:

  • "metadata" 用来存放故事的基本信息,就像一本书的封面信息。
  • 其中最重要的 "indexNode" 就指定了故事的起始节点ID。它的值 "start",必须和我们在 "nodes" 里定义的场景名字完全一样。

重要提示

indexNode 的值必须与 nodes 中定义的节点ID完全一致,否则引擎将无法找到故事入口。


🎉 恭喜!您已完成第一步!

就是这么简单!您已经成功地创建了故事的第一个场景。当这个 common/data.json 文件被 BandTwine 引擎加载时,玩家的屏幕上就会显示出:“你在一间安静的房间里醒来,阳光透过窗帘的缝隙洒在地板上。”

虽然现在它还不能互动,但您已经点亮了故事世界的第一盏灯。

在下一站,我们将学习如何为这个场景添加选择,让故事真正地“动”起来。

下一站: 第二步:创造岔路口