Basic Syntax
Comments
Use // for single-line comments:
// This is a comment, will not be executed
林晓: Hello! // End of line commentNarrative Text
Text starting with > is narrator narration:
> Moonlight filters through the trees, all is silent.
> You don't remember how you got here.Dialogue
Format: CharacterName: Dialogue content
林晓: Where... am I?
神秘精灵: Welcome to the magic forest.Dialogue with emotion:
林晓 (surprised): How is this possible!Text Interpolation {{ }}
NovaMark supports embedding expression results inside player-facing text. The currently supported locations are:
- Narration
- Dialogue
- Choice option text
Basic usage:
@var hp = 100
@var mp = 35
> Current HP: {{hp}}
林晓: I still have {{mp}} mana left.
? What will you do?
- [Cast a spell for {{mp}} mana] -> .castSupported expressions
{{ }} is not limited to variable names. It can contain any valid expression, for example:
@var hp = 100
@var cost = 20
> HP after damage: {{hp - 10}}
> Has the key: {{has_flag("got_key")}}
- [Pay {{cost}} gold] -> .payCommon cases:
{{hp}}: variable lookup{{hp - 10}}: arithmetic expression{{has_flag("got_key")}}: function call
Scope and limitations
{{ }} currently works only in display text. It is not used for:
- Command arguments themselves
- Conditions in
@check/if - Structural syntax such as jump targets, character names, or asset paths
In other words, its job is to display runtime values inside text, not to replace the rest of the scripting syntax.
Failure behavior
If {{ }} is not properly closed, or the expression inside cannot be parsed, NovaMark keeps the original text instead of aborting the whole text line.
Front Matter
YAML format metadata can be used at the beginning of the file:
---
title: Game Title
author: Author Name
version: 1.0
description: Game Description
---Identifiers
NovaMark fully supports Chinese identifiers:
@var health = 100
@var gold = 50
林晓: I have {{gold}} gold coins.