Skip to content

第二站:创造岔路口

在上一站,我们点亮了故事的第一个场景。但一个真正的互动故事,魅力在于选择。现在,我们将学习如何为玩家创造故事的“岔路口”,让他们通过自己的决定,走向不同的未来。


第一步:在“剧本”中定义选项

要让玩家做出选择,我们需要在场景(节点)中添加一个名为 "links" 的属性。"links" 是一个数组(用 [ ] 表示),里面可以存放一个或多个“选择项”。

每个选择项都是一个独立的对象(用 { } 表示),它至少需要两个关键信息:

  • "text": 选项按钮上显示的文字。
  • "target": 当玩家点击这个选项后,要跳转到的目标场景的名字(ID)。

让我们为 start 节点定义两个选择项:

json
"start": {
  "text": "...",
  "links": [
    {
      "text": "查看窗外",
      "target": "look_outside"
    },
    {
      "text": "检查床边的桌子",
      "target": "check_desk"
    }
  ]
}

第二步:在“舞台”上放置选项

重要规则

这是 BandTwine 最核心的规则之一:仅仅定义了选项是不够的,我们还必须在场景的 "text" 属性中,明确地告诉引擎在哪里显示这些选项

我们使用特殊的链接标记 {数字} 来完成这件事。{0} 代表 "links" 数组中的第一个选项,{1} 代表第二个,以此类推。

现在,让我们把链接标记放进 start 节点的 "text" 里:

json
"start": {
  "text": "你在一间安静的房间里醒来,阳光透过窗帘的缝隙洒在地板上。你决定 {0} 还是 {1}?",
  "links": [
    { "text": "查看窗外", "target": "look_outside" },
    { "text": "检查床边的桌子", "target": "check_desk" }
  ]
}

提示

引擎在渲染这段文本时,会把 {0} 替换成一个可点击的"查看窗外"链接,把 {1} 替换成"检查床边的桌子"链接。

第三步:创建新的“场景”

最后,我们把 look_outsidecheck_desk 这两个新场景搭建起来,形成完整的 common/data.json

json
{
  "metadata": {
    "indexNode": "start"
  },
  "nodes": {
    "start": {
      "text": "你在一间安静的房间里醒来,阳光透过窗帘的缝隙洒在地板上。你决定 {0} 还是 {1}?",
      "links": [
        { "text": "查看窗外", "target": "look_outside" },
        { "text": "检查床边的桌子", "target": "check_desk" }
      ]
    },
    "look_outside": {
      "text": "你拉开窗帘,外面是一片宁静的森林,薄雾弥漫在树林间。"
    },
    "check_desk": {
      "text": "你走向桌子,上面放着一盏熄灭的油灯和一本合上的旧书。"
    }
  }
}

🎉 太棒了!故事开始流动了!

恭喜!您现在已经掌握了创造非线性故事的核心技巧,并且理解了 BandTwine 最重要的链接标记规则。

故事不再是一条直线,而是拥有了分支。在下一站,我们将学习如何让这个世界拥有“记忆”,记录下玩家的每一个重要发现。

下一站: 第三步:赋予世界记忆