欢迎光临散文网 会员登陆 & 注册

语涵编译器介绍

2023-04-01 08:26 作者:远行的泥土  | 我要投稿

摘要: 语涵编译器是一个目前(2023-04-01)仍在开发中的视觉小说辅助开发工具,主要功能是实现从视觉小说剧情文本(如 Word 文档格式的剧本)到常见视觉小说引擎的脚本(如 RenPy 脚本)的转换,包括自动录入和演出。本文首次公开介绍该开发项目,并描述部分设计特性和理念。


背景和介绍

随着越来越多开源免费的开发工具的出现,“视觉小说”这种弱游戏性、以讲故事为主的游戏已经成为最容易制作的游戏类型之一。由于不同视觉小说游戏的程序部分的功能高度一致,有时只有像故事剧本、美术和音乐资源等素材不同,所以为减少程序部分的重复开发,大部分视觉小说游戏在项目结构上分为两部分:(1)引擎,负责游戏的程序部分,以及(2)演出脚本和素材,负责游戏的内容部分。打个比方,如果餐厅想要提供外卖服务,他们不需要亲自招聘外卖员,而是可以与外卖平台签约,由他们组织的外卖员进行递送。在这个例子中,外卖员(视觉小说引擎)提供的递送服务(程序)对各个餐厅都是相似的,所以餐厅在提供外卖服务(视觉小说游戏)时只需要准备食物(素材)。这样,同一个视觉小说引擎可以用于不同的视觉小说,减少了重复开发的浪费。在像 RenPy, NVLMaker + KiriKiri 这样的免费引擎与开发工具的帮助下,视觉小说的开发只需要准备演出脚本和素材即可,小规模团体甚至个人开发者也可以利用闲暇时间完成自己的视觉小说作品。


然而,相较于更成熟的现代软件工程体系,视觉小说的开发流程仍有值得改进的地方。语涵编译器立项之初是为了解决如下两个问题。

一、演出脚本格式与引擎的高度绑定影响了开发流程或效率。演出脚本基本是以引擎所接受的格式编写的故事剧本,这样的脚本只能用于一种特定的引擎。这就像是不同外卖平台对餐厅的食物有不同的要求,A平台要求食物只能用圆盒装,B平台要求食物只能用方盒装,不可能同时满足。对于视觉小说创作者来说,如果开始创作时剧本是写在 Word 文档中的、没有按照引擎所用格式来写的话,那么所有剧本都需要重新按照引擎的格式写一遍(也成为录入)。这给开发工作带来了额外的负担。目前最好的做法是作者从一开始就选好引擎、按照引擎所用的格式(比如 RenPy 脚本语法)写剧本,或者再开发一套程序把特定的剧本格式(比如 Excel 表格)转化成引擎的格式。这些方法本质上都是“在做菜时就必须想最后装盒的问题”,对作者和剧本来源提出了更高的要求。

二、缺乏对常见问题的检查方法。在过去的视觉小说创作中发生的问题以及内容呈现(演出)方面的问题几乎一定会随着新人的加入而不断重复。比如素材管理的问题,作者边写剧本边制作素材,后面发现部分素材最后没有用上,部分素材可能用的不够充分(比如一张CG图只出现了一秒),或是需要在制作后期补素材。


为解决以上两个问题,语涵编译器的设计将主要提供以下功能:

一、剧本转换:语涵编译器提出一种(1)更贴近自然语言(中文)习惯、(2)便于修改和定制的剧本格式,按照该格式编写的剧本可以使用语涵编译器转化为引擎所用的格式。在设想的开发流程中,开发者可以先使用语涵编译器生成引擎所用的工程文件夹,再使用像是 RenPy 或是 NVLMakek 这样的工具完成开发。

二、内容分析:语涵编译器将可以对剧本进行检查(包括在剧本尚未全部完成时),进行数据统计、资源需求整理等。

语涵编译器的输入输出以及在开发流程中的位置。

在当今人工智能发展浪潮的背景下,语涵编译器在完成核心功能后也将尝试尝试整合第三方接口,尝试如自动语法检查、机翻,或是其他依赖人工智能的功能。语涵编译器是一个 Python 程序,所有代码都使用模块化的组织结构以便于修改定制。


语法与特点

与现有的视觉小说引擎相比,语涵编译器的格式和对内容的理解(即“语法”和“语义”)有以下决定性的差别:

一、富文本(rich text)输入。语涵编译器的剧本基于 Word 等文档的格式。文档可以内嵌图片、音频等素材。剧本文本可以使用大小、颜色、加粗等效果,这些效果将直接反馈在输出的游戏内容中。语涵编译器在特定环境下使用列表、段落背景色等方式来提供命令参数或是区分特殊命令生效范围。目前的原型使用 odt 格式的文件(Word 可以导入导出),以后会直接支持 docx 文件。

(开发中的)角色声明的命令语法。方括号【】包裹着命令,命令后紧跟的列表将被作为命令内容的一部分

二、渐进式开发。大多数引擎需要保证唯一的输入剧本有唯一的演出效果,所以不会做没有被命令的事。语涵编译器将剧本中的命令视为约束条件,有命令的地方遵守命令,其他地方语涵编译器可以自动填补细节、丰富效果。比如,作者可以先写故事,确定主要人物、剧情和场景且不用考虑演出效果,由编译器来生成大堆的占位图片和转场效果。然后,作者可以加入图片素材,编译器来决定图片坐标等。最后微调时,作者可以再把所有不满意的地方改了。在开发过程中的任意阶段(包括剧本创作阶段),语涵编译器输出的项目都将是可运行的,作者将能够直接看到自己改动的最终成果。

三、容错。大多数引擎碰到命令出错后都将无法继续执行。语涵编译器碰到错误的命令时会将其记录下来,在生成的游戏运行到相应位置时会提示此处错误,但不阻止继续执行。作者可以选择不修复问题,继续运行至其他部分。换句话说,语涵编译器尽可能避免(无法忽略的)错误,尽可能使用(可以忽略的)警告来处理问题。

具体的命令与剧本格式仍在探索中,等完成度足够高后会再公布。


开发计划

目前的首要目标是在2023年8月底之前完成从 odt 文档(可以由 Word 导出)到 RenPy 的完整管线,并在Steam上发布一个介绍该程序的“游戏”。在这之后,会再开始整理文档、征集意见,并对语法进行迭代,补足其他功能。

目前只有一人进行开发,不过由于没有整理好的文档以及较深的学习曲线,现在加入开发还是“劝退”级难度,对本项目感兴趣的小伙伴请耐心等待。


语涵编译器介绍的评论 (共 条)

分享到微博请遵守国家法律