Skip to content

Harlowe 的优势领域

Harlowe 是 Twine 内置的几个故事格式之一,每个格式都有其独特的侧重点和目标用户。Harlowe 是为以下类型的作者和作品而设计的:

无需 HTML、JavaScript 或 CSS 经验

Harlowe 语言的核心设计目标,就是帮助那些不熟悉 HTML、JavaScript 或 CSS 的作者。它没有要求你学习这三种语言,而是提供了一种单一的语言,无缝整合了这三种语言的基本功能,满足了绝大多数创作需求。

  • 样式与布局:你可以使用诸如分栏和对齐器等布局语法来组织你的文本结构。Harlowe 包含一些特殊的“样式值”,它们实际上是预打包好的一组或多组 CSS 样式,方便你直接调用。
  • 轻松应用样式:你可以将这些样式附加到一段文本上,实现类似行内样式的效果。或者,你也可以使用变量、(change:)(enchant:) 宏来全局地影响某些带有标签的结构。
  • 更安全的编程语法:Harlowe 的编码语言(在宏调用内部)平滑规避了 JavaScript 的一些常见陷阱和不一致之处。更好的类型检查和更清晰的语法可以防止诸如 1 + “1”1 == “1”if (a = 1) 这类明显的数据类型错误。
  • 友好的错误提示:更丰富的错误信息取代了静默失败和 NaNundefined 这类无意义的返回值。
  • 统一的数据操作:不同的数据结构都使用相同的设置、获取和检查语法。
  • 便捷的样式处理:样式数据类型可以像其他数据一样轻松处理。例如,样式可以通过简单的加法来组合,并且可以根据当前游戏状态动态计算。

给有经验的开发者:如果你已经具备 HTML、JavaScript 或 CSS 经验,并且希望在创作中充分利用这些技能,你可能会更倾向于使用 SugarCube,它提供了对页面 HTML 元素和 JavaScript 语言更直接的访问权限。

专注于动态超文本

我对早期和近期的超文本媒介(如 HyperCard、Shockwave、Flash 以及早期的 HTML 小说)所蕴含的叙事潜力深表钦佩,并在创造 Harlowe 时始终牢记它们的灵活性。

  • 鼓励动态页面:Harlowe 强烈鼓励你将页面视为一个动态的互动空间,而不仅仅是一段文字加上几个选项。
  • 链接无处不在:它鼓励你将链接和互动元素穿插在行文之中,而非仅仅放在末尾。
  • 改变文本本身:你可以用链接以意想不到的方式改变文本——在已读段落中插入或删除文字、改变词语的样式、仅改变链接本身等等。这些效果能揭示文本的新含义,以超文本独有的方式传达你的故事。

给钟情传统分支叙事的作者:如果你更喜欢传统、分支式的互动散文写作,你可能会更愿意使用 Chapbook,或者 Twine 之外的语言如 Ink

在需要时提供编程深度

别让前面的描述让你误以为 Harlowe 作为一个编程环境能力有限。尽管我将 Harlowe 设计成一种独立于 JavaScript 的语言,但我依然为它配备了处理复杂数据操作的工具和实用功能。

  • 强大的数据操作:它拥有一系列丰富的转换宏和语法结构,用于处理和转换数组、字符串和映射(Map),甚至包括 lambda 表达式语法。
  • 创建自定义宏(macro:) 宏允许你在 Harlowe 内部塑造属于你自己的子语言。
  • 实时调试:“调试模式”让你能够在故事进行时,实时查看变量、样式和游戏状态。
  • 伴随成长:虽然这些功能对首次使用的作者来说可能不是立即可用的,但当你在使用 Harlowe 的过程中雄心渐长时,便可以调用它们来制作计算上更复杂的故事,例如基础的角色扮演游戏。随着你编程信心的增长,Harlowe 也能与你一同成长。

不包含特定的模拟元素

互动小说通常与具有高度空间模拟和程序生成文本的文本冒险游戏联系在一起,在这类游戏中,你控制一个玩家角色,操纵物体并在房间中导航。

  • 更广阔的叙事范畴:Harlowe(以及其他 Twine 故事格式)旨在服务于更广泛类型的故事,这些故事与内部世界的交互程度通常较轻。
  • 无预置结构:因此,它不包含为房间、物体、库存、操纵动词等文本冒险游戏的常见设计元素预先构建的编程结构。

给模拟游戏爱好者:如果你更倾向于编写具有更高程度模拟和互动的故事,你可能会希望使用 Twine 之外的语言,例如 Inform