Published on

【Twine游戏开发】01 Twine 15分钟入门

Authors

Twine 是一个可视化游戏制作工具,虽然已经极大降低了门槛,但并不意味着不需要任何学习。不过不用担心,看完这篇文章,你就入门了。


1 Twine 是什么

Twine 是一个创作"超文本"的工具。与传统的线性故事不同,超文本最大的魅力在于赋予读者选择权。

在超文本故事中,你可以决定接下来发生什么。比如在鬼屋探险中,选择"立刻逃跑"还是"深入探索";在个人随笔中,选择"了解更多背景故事"。

这种选择通过点击链接实现,当你点击链接打开这个页面时,就已经是超文本的熟练读者了!

由于故事分支众多,作者容易"迷路"。Twine 提供了直观的"段落视图",像一张故事地图,可视化呈现整个作品结构,帮助作者掌控所有可能路径。

能用 Twine 做游戏吗?当然能!

不过,Twine 本身更像是一个故事编辑器,真正支撑游戏运行的变量、条件逻辑等编程概念,都隐藏在它的"故事格式"中。

2 Twine 的基本概念

Twine 的核心概念不多,和写代码相比可以说是“一眼就可以看完”。比较重要的有 3 个:段落、变量、宏。

段落 Passages

段落可以被视为时间、空间或两者结合的分隔。它们也可以被视为对话块、代码段,或者只是将复杂项目分解为更易于理解的部分的方式。在Twine中,段落是任何故事的核心。

连接段落的最简单方法是在任何字母、数字或标点符号的集合周围添加两个开头和结尾的括号。如果存在一个具有相同顺序和组合的字符的段落,这些段落将被链接在一起。在查看编译后的HTML版本时,现在将有一个链接可以在两者之间导航。默认情况下,段落链接是单向的。导航链接意味着从一个段落移动到另一个段落。

几种常见写法

[[跳转到另一个段落]]

可以 使用 | 来显示
[[跳转到另一个段落|显示的文本]]

可以使用 -><- 来跳转
[[跳转到另一个段落->另一个段落]]

变量 Variables

在编程术语中,变量是存储可变值的容器。在Twine中,变量是一种存储和处理某种数据的方式。从数字到一系列字符,任何内容都可以存储在变量中。与段落中的其他代码或文本不同,在Harlowe和SugarCube故事格式中,变量通常以 美元符号($)下划线(_) 开头。

故事级别的变量 (Harlowe and SugarCube)

Twine中的故事变量一旦创建,就可以在任何时候从任何段落访问。它们是全局可用的,所有功能都可以在任何地方访问它们。

例如:变量的值 = $someVariable

临时变量 (Harlowe and SugarCube)

可以使用临时变量。这些变量仅在当前段落显示时存在。临时变量以 下划线(_) 开头。

例如:变量的值 = _someVariable

宏 Macros

宏可以理解为嵌入代码。它们能为故事添加多种功能,从改变文本外观到响应鼠标和触摸事件。不同故事格式的宏写法不一样。这里只列出 SugarCube 的写法(双箭头):

<<display "Another Passage">>

3 第一个游戏

好了,前面说的够多了,我们开始吧!这里我们采用 SugarCube 格式,这并不是默认的故事格式,因此需要先设置一下:

设置默认格式

然后我们就可以按照不同的段落来组织我们的故事,这里用一个我自己写的在月球接触到外星人的故事:

第三次回响

这个简单的例子里,包含了分支、条件、打字机特效、血条和侧边栏的状态展示。提示:需要什么效果,就去 Twine Cookbook 中对应的 Example 去找。

接下来我们看看效果:

第三次回响

4 总结时间

总体来说,Twine 的体验还是很不错的,非常适合可视化处理分支。但是涉及到变量的处理,就比较难以集中控制了,一个分布式的状态机可能并不是一个好主意。另外如何接入 AI 和图片也都需要一些动手能力,比较难提供相对完整的引擎侧解决方案。

不过话说回来,如果要做纯文字+一些简单状态的游戏,Twine 上手快非常合适!