Snowman:给开发者的极简故事格式
Snowman 是一个极简主义的 Twine 2 故事格式,专为已经熟悉 JavaScript 和 CSS 的创作者设计。它最初由 Chris Klimas 创建,目前由 Dan Cox 维护。
如果你是一名开发者,希望用自己熟悉的 Web 技术栈来构建互动故事,Snowman 提供了最大的自由度。
版本变迁:1.x 与 2.x 的主要区别
在开发 1.4.0 版本的过程中,团队决定将代码库从老旧的 ES5 迁移到更现代的 JavaScript ES6(ES2015+) 功能集。这个分支最终演变成了现在的 2.x 系列,并在迁移基础上添加了更多功能。
对大多数用户来说,最主要的区别是:
- 事件名称不同:2.x 版本采用了与 1.x 不同的、更现代化的命名规范。
- 新增全局函数:2.x 版本引入了一些新的全局工具函数,提升了开发体验。
选择建议:对于新项目,强烈建议直接从 2.x 版本开始。1.x 版本仅适合维护遗留项目。
Snowman 的核心设计理念
与其他主流故事格式不同,Snowman 没有提供封装好的“宏”命令语言(如 Harlowe 或 SugarCube)。它的设计哲学是直接暴露底层能力,让你用原生 Web 技术去构建一切。
核心能力:两个全局对象
Snowman 的核心是两个暴露给你的全局对象:
window.story:这个对象提供了对整个故事进行操作的功能。比如,用它来控制故事流程、管理变量、或处理存档。window.passage:这个对象则专注于当前段落。你可以通过它获取当前段落的元信息、操作其内容等。
内置的工具库
为了进一步方便开发者,Snowman 默认集成了几个强大且流行的 JavaScript 库,并直接作为全局变量提供:
window.$:大名鼎鼎的 jQuery,用于简化 DOM 操作和 AJAX 请求。window._:Underscore.js,提供了大量实用的函数式编程工具,用于处理数组、对象和函数。window.marked:Marked,一个高性能的 Markdown 解析器。这意味着你可以在 Snowman 段落里直接写 Markdown 语法,它会被自动转换为 HTML。
浏览器兼容性保障
从 2.0 版本开始,Snowman 引入了完整的 Babel Polyfill。这意味着,即使在不支持最新 JavaScript 功能(ES2015+)的老旧浏览器中,你的代码也能正常运行,兼容性无忧。
许可证
Snowman 采用 知识共享 署名-相同方式共享 4.0 国际 (CC BY-SA 4.0) 许可证。这代表你可以自由地:
- 共享 — 在任何媒介以任何形式复制、发行本作品。
- 演绎 — 修改、转换或以本作品为基础进行创作。
只要你遵守许可协议条款,包括署名(注明原作者)以及以相同方式共享(任何基于本作品的演绎作品必须使用相同的许可证)。
文档版本:2.1.0(当前最新)
总而言之,Snowman 就像一张白纸,为你提供了基础的画布(story 和 passage 接口)和高质量的画笔(jQuery, Underscore, Marked),把创作的具体“画法”完全交给了你这位 JavaScript 画师。