Inkle
Sorcery, 八十天环游地球系列的开发者使用的文本工具。基于 C#,生成结果为 json 文件,提供 unity3d 套件。
战棋游戏 Banner Saga 的文本也是用它制作的。
支持平台
和 unity3d 一致。也可以 parse 到其他工具中,或者 web 发布。
上手体验 & 剧本逻辑
这两块难分难舍,我就放在一起写了。
严格来说,我觉得 inkle 算不上是个文字游戏制作工具,而更像是剧本管理器。
inkle 包含 ink(语言)和 inky(原生编辑器)。inky 最棒的地方是即时预览,所见即所得。左边窗格写作,右边可以直接测试,还有资源管理窗格。官方提供的语法文档虽然不多(只有1个),但基本功能都覆盖了,也很容易上手,和 markup 类语言接近,通过 label 控制流程。相比前面介绍的工具,其文本标记功能极其强大。
自带的效果很优雅,是我见过的最漂亮的纯文字游戏界面。另外官方还发明了一套术语,用于形容游戏流程和标记效果:
- Knot(绳结):一小段游戏内容。
- Divert(变道):从一个绳结连向另一个绳结。
- Glue(黏合):去除换行符。(这个功能可以用于连接选项前后的文字。)
- Branching(分支):剧情分歧。
- Joining(汇聚):剧情汇合。
- Stitch(针脚):绳结下的子区块,用于控制显示条件等。
- Sticky Choices(粘性选项):永远固定存在的选项。一般选项默认选择后消失。
- Weave(编织):在选项下写出细小的分支,而不用单独创造绳结。文档作者形容为:“编织就好像一泄如注的文本流,永远自上向下,没有复杂易错的逻辑。”
- Gather(收束):把编织带来的分支收拢在一起。
- Node(节点):选项内连续嵌入多个子选项时,当中的收束被称作节点。
- Tunnel(隧道):可以在其他地方呼叫的子剧情。
- Thread(绳束):管理大量的分支,比如在一个房间里和随机出现的人对话。
……
- 还有些很有趣的 feature,比如:
- 标签名(绳结,针脚名等)其实是 int 变量,存储了到达该剧情段的次数。因此也可以用来做 bool 判断……
- 语料库(list)拥有四种显示模式:顺序,循环,阅后即焚和完全随机。
- 语料库的项目可以嵌套、空白、用于选项等。
- 大部分标签都可以起名。(包括上文提到的选项、收束。)
……
光文字介绍这个特立独行的工具实在无法表达我的惊叹之情,直接截图好了:
上面是官方提供的打地鼠范例,可以看出,对随机语料的支持很不错。打地鼠的每个选项都是由语句碎片随机生成的。
然而在一时的激动过后,问题来了。作为一个纯文字游戏工具,inkle中只能插入有限的插图,且不能控制格式。其实它被设计出来的初衷,是为了导入一个更强大的引擎,而且如何在 unity 中使用的文档是开发者在一个制作组的要求下专门写的……
官网提供一个 demo 的下载,打开看了一下,并不复杂,效果也简单。熟悉 json parsing 的开发者可以考虑一下。
多说一句,我理想中的文字游戏制作工具,应该就是 ren'py 和 inkle 的结合。
整体性
专注于文本、逻辑,其他功能(几乎)没有。
亮点和弊端
亮点:
- 优雅,充满情怀
- 令人眼花缭乱的标记
- 简单利落的编辑器和导出过程
弊端:
- 基本只适用于中高端开发
易扩展性
非常高,可以胜任任何游戏类型的文本管理。
与其说是 inkle 具有扩展性,还不如说具有适配性……
社区
这个可以说是完全没有了。文档虽然详尽,只有可怜的几份,我已经翻来覆去看完。和 fungus 一样,大部分人拿来直接用于 unity 开发。Github 上搜索半天,也只有几个 repo,提供了相关 unity GUI 套件等。
但是如果写信给 inkle 制作组,说不定能获得一份“定制文档”呢。
(仍然待续。下期:RPG Maker MV)
给个赞!
@eastecho:谢谢支持!
感谢分享!
对了,文主有没有研究过各个引擎对本地化的支持呢?
@indiest:你提得很对,仔细一想除了 rmmv,其他对中国开发者都不太友好……但是我之前介绍的都支持 unicode,这点可以确定