Narrat是一款开源的、基于Web技术的叙事游戏引擎,由开发者Liana P(GitHub ID: liana-p)创建并维护。Narrat的核心理念是让创作者无需编程经验即可制作具有深度RPG机制的叙事游戏,其设计灵感主要来源于《极乐迪斯科》(Disco Elysium)。与Belle类似,Narrat同样采用Web技术路线,游戏可部署为静态网站,在浏览器中直接运行。
Narrat采用MIT开源协议发布,引擎与编辑器均开放源代码,项目托管于GitHub平台。引擎的底层基于TypeScript编写,UI层使用Vue.js框架构建,状态管理则采用Pinia。
架构设计
Narrat的架构围绕“引擎 + 脚本”的范式构建,与Belle的“编辑器+引擎”双组件模式有本质区别。Narrat不提供图形化编辑器,创作者通过编写Narrat脚本语言来构建游戏,这一设计更接近于Ren‘Py的工作流。
1. 引擎核心(Narrat Engine)
引擎本身是一个基于Vue.js的Web应用程序,负责解析Narrat脚本、管理游戏状态、渲染UI和处理玩家交互。引擎的状态存储在Pinia中,所有UI组件均为Vue组件,这意味着有前端开发经验的创作者可以通过编写Vue组件和TypeScript代码来深度定制游戏界面。
2. 脚本系统(Narrat Scripts)
Narrat脚本是游戏创作的核心载体。脚本使用Narrat专有的领域特定语言(DSL)编写,存储在.narrat文件中。脚本语言的设计目标是“让初学者无需编程即可编写分支对话”。
脚本的基本语法单位是命令,格式为command [arg1] [arg2] ...,参数以空格分隔。标签使用[label_name]:定义,用于跳转和流程控制。Narrat 2.0.0版本将脚本语言升级为支持表达式、变量和函数的完整编程语言,语法风格与Ren’Py的.rpy文件相似,因此可以在VS Code等编辑器中获得语法高亮支持。
3. 配置与资源
游戏配置通过YAML文件管理。characters.yaml定义角色信息(名称、立绘变体等),common.yaml管理游戏标题、对话框布局、文本速度等全局设置。资源文件(图片、音频等)存放在public目录中,脚本和配置文件则位于src目录。
技术特性
叙事RPG机制
Narrat最显著的特征是其内置的桌面角色扮演游戏(TTRPG)机制。引擎开箱即提供技能系统与技能检定(基于骰子判定的技能检定)、物品库存、任务系统、成就系统和多结局支持,这些功能在其他引擎中通常需要大量手工编码或依赖第三方插件才能实现。
界面组件
一个Narrat游戏的标准界面由以下视觉组件构成:
-
视口(Viewport) :显示游戏视觉元素的主区域,可包含背景(图片或视频)、按钮和精灵。
-
对话框(Dialog Panel) :故事和对话的展示区域,也是玩家进行选择、推进故事的主要交互场所。
-
HUD数值(HUD Stats) :用于显示生命值、金钱等需要实时追踪的数值。
-
角色立绘(Character Portraits) :角色发言时显示在对话框旁的立绘,支持多种姿态。
-
自动/跳过按钮:视觉小说的常见功能,自动按钮自动推进故事,跳过按钮跳至下一个选择点或脚本末尾。
UI定制与插件
引擎的UI完全通过CSS进行主题化定制。对于需要更深度定制的场景,创作者可以使用Vue.js组件创建自定义“场景”(Scenes),或通过插件API以TypeScript代码扩展引擎功能——包括添加新的UI元素、新功能和新命令。
平台支持与导出
Narrat游戏可导出为静态网站,部署到任意Web服务器或itch.io等平台。通过内置的Electron模板,也可打包为Windows、MacOS和Linux的桌面应用。Narrat 4进一步提供了改进的Steam支持,包括成就系统、云存档和Steam Deck原生适配,以及面向所有平台的Steam构建发布流程。
版本历史
Narrat的首个版本发布于2021年8月,此后保持较为活跃的迭代节奏:
| 版本 | 发布时间 | 主要变更 |
|---|---|---|
| 1.x | 2021年 | 首个公开版本,奠定引擎基础架构与脚本语言 |
| 2.0.0 | 2022年7月 | 脚本语言重大升级,支持表达式、变量和函数,解析器改进为完整编程语言 |
| 2.1.0 / 2.2.0 | 2022年7月 | 脚本功能增强,新增Steam支持、音效功能和存档槽位 |
| 3.0.0 | 2023年6月 | 引擎架构重构,支持Vue应用访问和高级UI定制 |
| 3.4.0 | 2023年10月 | 新增动画系统、Narrat编辑器演示 |
| 3.11.0 | 2024年7月 | 场景功能文档化 |
| 3.15.0 | 2024年8月 | 新增输入提示、对话历史、自动保存指示器等 |
| 4.0.0 | 2025年7月 | 发布Narrat 4,内置本地化支持,改进Steam模板 |
| 4.1.18 | 2026年9月 | 最新版本,系统菜单垂直布局等改进 |
截至2026年,Narrat已迭代至4.1.x版本,GitHub上获得约174颗星标,保持着稳定的开发更新节奏。
与其他引擎的对比
| 特性 | Narrat | Ren’Py | Twine | Belle |
|---|---|---|---|---|
| 开发语言 | TypeScript / Vue.js | Python | JavaScript | C++ / HTML5+JS |
| 脚本语言 | Narrat DSL(类Ren‘Py语法) | Ren’Py脚本语言 | 可视化/宏语言 | 可视化编辑 |
| 目标平台 | 浏览器(Web原生) | 桌面端为主 | 浏览器 | 浏览器 |
| TTRPG机制 | 内置(技能、检定、库存、任务) | 需插件/自行编码 | 需自行编码 | 不支持 |
| 编程门槛 | 低(脚本为主,支持代码扩展) | 中(需Python) | 极低 | 极低 |
| 开源协议 | MIT | MIT | MIT | GPLv3 |
| 在线分发 | 原生支持 | 需额外配置 | 原生支持 | 原生支持 |
Narrat的差异化定位在于Web原生 + 内置TTRPG机制。与Twine相比,Narrat提供了更完整的游戏系统(技能、库存、任务),使其更适合制作“游戏”而非单纯的互动小说。与Ren‘Py相比,Narrat的Web原生特性使其在浏览器分发和跨终端运行方面具有天然优势,同时其内置的RPG机制也省去了大量编码工作。不过,对于纯视觉小说(无RPG元素)的制作,Ren’Py的成熟生态和丰富文档可能仍是更稳妥的选择。
社区与生态
Narrat拥有较为活跃的社区生态。官方论坛(narrat.discourse.group)用于长期讨论、问题追踪和项目展示,Discord服务器则提供快速的技术支持渠道。引擎的文档网站(docs.narrat.dev)持续更新,并提供多语言版本(包括部分中文翻译)。
Narrat社区定期举办Game Jam活动,鼓励创作者在限定时间内完成Narrat游戏作品。使用Narrat制作的游戏在narrat.games网站上集中展示,其中《Lovely Lady RPG》已在Steam平台发行,作为引擎商业可行性的重要验证。
VS Code的Narrat语言扩展为脚本编写提供了语法高亮和代码补全支持,降低了脚本学习的门槛。
现状与总结
Narrat是叙事游戏引擎领域中一个定位清晰、持续活跃的项目。它在2021年发布时,精准地填补了“Web原生叙事游戏引擎 + 内置TTRPG机制”这一细分市场的空白。其Vue.js + TypeScript的技术栈使得有前端经验的创作者可以深度定制,而脚本语言的类Ren‘Py语法则降低了叙事创作者的入门门槛。
与Belle的对比颇具意义:两者都选择了Web技术路线,但Belle以“可视化编辑器”降低门槛,Narrat则以“脚本语言 + 内置游戏系统”提供更强的表达能力和更完整的游戏机制。Belle在2015年后逐渐沉寂,而Narrat至今仍保持活跃更新,这在一定程度上反映了以代码/脚本为中心的工作流在专业创作者群体中具有更持久的生命力。
对于希望制作《极乐迪斯科》风格叙事RPG的创作者而言,Narrat是目前最为对口且活跃维护的免费开源方案之一。
评论 0
登录后参与讨论
登录 GalWiki 后即可发表评论、回复其他用户以及使用贴纸。