为什么有 Fountain CN?
Fountain 的剧本语法让编剧可以快速编写自己的剧本,而不用太过担心剧本的排版格式。
我在开发 ADV.JS(一个面向未来与前端的文字冒险游戏引擎)时,需要设计一种语言以便能够将剧本快速转换为视觉小说的形式。
我们先假设这种语言叫做 AdvScript
,它应当是剧本优先的,任何附加的配置、逻辑不影响作者编写剧本的体验。 所以我希望它是基于 Markdown 的语法扩展。 在草案进行的过程中,我幸运地发现了 Fountain,它基本可以说是目前剧本业界的标准之一,不少剧本软件也基于此进行实现。
Fountain 本身便是基于 Markdown 的扩展语法规范,并可通过解析器编译为好莱坞剧本的事实标准格式。
因此,我们只需要基于此去做一些程序交互上的扩展语法,就可以实现不需要大幅度修改剧本的同时来生成对应的视觉小说。
Fountain 是为英文剧本设计,所以其存在一些英文的专业字符,对于中文剧本来说,我们完全可以使用中文的对应关键词来替代,因此我们还可以对其进行中文的适配。
而剧本的一些配置则可以放到 Front matter 里,这与平时写博客非常相似。需要多个页面分割,这部分则可以参考 slidev。
即:
Fountain
+ 中文兼容语法
+ Markdown 的代码块(实现扩展交互语法)
+ front matter(文件头部配置语法)
= AdvScript
gray-matter: Front Matter 解析器。
可惜的是,Fountain 目前的官方实现只有 Object-C
的版本。
毫无疑问,为了实现我的最终目标,我需要一个 TypeScript 编写的类型提示友好的 Fountain 解析器。 而为了体现开源精神,Fountain 的解析器应当是与基于 Fountain 的 AdvScript 的解析器是解耦的,可以为不同的用户群所使用。
既然要编写解析器了,那么必然需要先完整彻底地了解一下 Fountain 语法,但 Fountain 的中文资源少之又少。 不得不啃英文文档,而这般,又不如借此机会,将此翻译一遍,也算是共产主义精神的体现。
那么开始吧?