Skip to content

基础语法

注释

使用 // 进行单行注释:

// 这是注释,不会被执行
林晓: 你好! // 行尾注释

叙述文本

> 开头的文本为旁白叙述:

> 月光透过树梢洒落,四周寂静。
> 你不记得自己是如何来到这里的。

对话

格式:角色名: 对话内容

林晓: 这里是...哪里?
神秘精灵: 欢迎来到魔法森林。

带表情的对话:

林晓 (惊讶): 这怎么可能!

文本插值 {{ }}

NovaMark 支持在显示给玩家的文本中插入表达式结果。当前支持的位置包括:

  • 旁白
  • 角色对话
  • 选择选项文本

基本写法:

@var hp = 100
@var mp = 35

> 当前生命:{{hp}}
林晓: 我还有 {{mp}} 点魔力。
? 你要做什么?
- [消耗 {{mp}} 点魔力施法] -> .cast

支持的表达式

{{ }} 中不是只能写变量名,而是可以写任意合法表达式,例如:

@var hp = 100
@var cost = 20

> 受伤后生命:{{hp - 10}}
> 是否拿到钥匙:{{has_flag("got_key")}}
- [支付 {{cost}} 枚金币] -> .pay

常见场景:

  • {{hp}}:读取变量
  • {{hp - 10}}:算术表达式
  • {{has_flag("got_key")}}:函数调用

使用边界

{{ }} 目前只用于显示文本,不会用于:

  • 命令参数本身
  • @check / if 的条件位置
  • 跳转目标、角色名、资源路径等结构性语法位置

也就是说,它的职责是“把运行时值显示到文本里”,而不是替代脚本其它语法。

解析失败时的行为

如果 {{ }} 没有正确闭合,或内部表达式无法被解析,NovaMark 会保留原始文本,而不是中断整段文本渲染。

Front Matter

文件开头可以使用 YAML 格式的元数据:

---
title: 游戏标题
author: 作者名
version: 1.0
description: 游戏描述
---

标识符

NovaMark 完整支持中文标识符:

@var 生命值 = 100
@var 金币 = 50

林晓: 我有 {{金币}} 枚金币。
Last updated on