Skip to content

Glossary

Glossary 用来解释 NovaMark 中反复出现的概念词。

如果你看到这些词时不太确定它们的区别,可以优先查这里。


VM(虚拟机)

NovaMark 的 VM 是负责执行脚本、推进剧情、更新状态的核心运行时。

它不直接绘制界面,也不决定动画、布局、HUD 或存档 UI;它只负责把故事推进到下一个离散状态点。

相关文档:

运行时状态(Runtime State / NovaState)

运行时状态是宿主真正要消费的数据快照。它通常包含当前场景、变量、背包、角色定义、对话、选项、背景、BGM、立绘与文本配置等。

你可以把它理解为:

引擎在某一个时刻,告诉渲染器“现在应该显示什么”。

相关文档:

宿主(Host)

宿主是承载 NovaMark VM 的外层应用。它可以是 CLI、Web 前端、桌面客户端、移动端 App,或任何能够调用运行时接口的程序。

宿主负责:

  • 接收玩家输入
  • 调用 advance() / choose()
  • 读取运行时状态
  • 决定 UI、动画、音频与存档行为

渲染器(Renderer)

渲染器是把运行时状态转成界面的那一层。NovaMark 的渲染器是“哑”的:它不拥有剧情逻辑,只负责呈现状态。

这意味着同一个 .nvmp 游戏包可以对应多个渲染器实现,例如:

  • Text Mode
  • Web Chat / Web VN
  • Native GUI

.nvmp 游戏包

.nvmp 是 NovaMark 的单文件分发格式。它会把脚本、编译后的内容结构和资源数据打包成一个可分发文件。

这意味着:

  • 分发时不需要额外整理资源目录
  • 平台接入方只需要加载一个包文件
  • Web / Native / CLI 可以消费同一个游戏包

场景(Scene)

场景是故事的主要组织单位。你可以把它理解为“一个章节内的片段”或“一个故事节点”。

通常由 #scene_xxx "标题" 开始定义。

标签(Label)

标签是场景内部的局部跳转点,通常写作 .label_name

它常用于:

  • 让选项跳到场景内部某个位置
  • 把一个场景拆成多个小片段
  • 组织较长的分支内容

对话(Dialogue)

对话是角色说出的文本,通常写作:

角色名: 对话内容

对宿主来说,对话通常会进入当前状态里的 dialogue 字段,再由渲染器决定如何展示。

旁白(Narration)

旁白是没有说话人名称的叙述文本,通常写作:

> 月光透过树梢洒落。

它常用于环境描写、动作说明、系统提示等。

选择(Choice)

选择是让玩家决定后续走向的交互节点。通常由问题行和多个选项组成。

? 你要做什么?
- [探索周围] -> .explore
- [原地等待] -> .wait

检定(Check)

检定表示一次显式的成功 / 失败判断,通常使用 @check@success@fail@endcheck 结构。

它适合:

  • 骰子表达式
  • 属性比较
  • 资源条件验证

变量(Variable)

变量是脚本中的内部状态,一般用 @var 定义、用 @set 修改。

它适合保存:

  • 数值
  • 字符串
  • 布尔条件
  • 剧情内部标志

物品(Item / Inventory)

物品是面向玩家可见的状态项,通常会被展示到 UI 上。常见命令包括 @item@give@take

它既可以是传统道具,也可以是货币、HP、San 值之类的可显示资源。

标记(Flag)

标记用于记录关键剧情节点或长期状态,通常使用 @flag 设置,并通过 has_flag() 判断。

它适合保存:

  • 是否见过某角色
  • 是否解锁隐藏路线
  • 是否完成某个关键事件

结局(Ending)

结局表示一次正式的故事完成状态,通常使用 @ending 触发,并可通过 has_ending() 判断。

它与普通分支的区别在于:结局通常会被平台记录为“已解锁结果”,用于回顾、成就或多周目系统。

快照(Snapshot)

快照是某一时刻的运行时状态保存结果。NovaMark 当前区分两类:

  • 正式二进制存档
  • 调试 / 工具使用的 JSON 快照

渲染提示(Rendering Hint)

渲染提示是脚本给渲染器的表现建议,例如:

  • transition
  • position
  • opacity
  • loop
  • volume

这些字段表达的是创作者意图,不代表引擎内部存在完整时间轴系统。真正如何播放、过渡、淡入淡出,取决于宿主和渲染器实现。

advance() / choose()

这是宿主最核心的两个推进动作:

  • advance():继续推进剧情,直到遇到下一个需要宿主处理的状态点
  • choose():告诉引擎玩家选中了哪个选项,并继续剧情

如果你在做平台接入,理解这两个动作比理解所有语法细节更重要。

Last updated on