the studio needs a bigger desk. writing works best on a computer.

games play beautifully right here, though:

PLAY THE DEMO home
SCRIPT
LANGUAGE REFERENCE

This is the quick version. The full reference, with descriptions and examples for everything, lives at andstar.org/docs.

Declarations (top of file)

@title My Game
@author Me
@points 4 max 6                     # players distribute 4 points before play
@wardrobe open                      # let players swap gear anytime (default: locked)
@reveal paced                       # line pacing: click (default, tap per line), paced, off
@fail morale <= 0 "message"         # fail state — player returns to the last ~ save
@bg #101820                         # background color (other shades are derived)
@accent #e94560                     # accent color
@font serif                         # book (default), mono, serif, sans, humanist
skill logic "Logic" #6cb9ff = 3     # speaking voice + rollable, starts at 3
char kim "Kim" #f0c987              # a character
item flask "Hip Flask" gut+2 logic-1  # equipment with skill modifiers
item page "Torn Page"               # no modifiers = plain possession (no equip box)
currency real "Réal" = 20           # money, shown in the HUD
var seen_body = false               # hidden variable
stat morale = 2                     # variable shown in the sidebar HUD

Passages

== start                  # defines a passage; the first one starts the game
Plain text is narration.
kim: "Dialogue is speaker-id, colon, text."
logic: Skills can speak too — they render in italics, in their color.
? perception 8: A passive check — only shown if Perception total ≥ 8.
~ set morale = morale - 1   # effects: set / give / take / equip / unequip
~ give flask
~ pay 20                    # spend currency (~ earn 5 to gain); gate with [real >= 20]
~ wardrobe open             # allow equipping here (~ wardrobe close to lock)
~ points 1                  # grant skill points; the player allocates immediately
~ skill sangfroid -1        # author-directed skill change, shown to the player
~ save                      # checkpoint — players resume here after closing the tab
-> other_passage            # jump straight to another passage

Choices & checks

* Plain choice -> target_passage
* [morale >= 2] Conditional choice -> target
* [has(flask)] Item-gated choice -> target
* [once] Disappears after being picked -> target
* [white logic 10] Retryable skill roll -> success_passage | fail_passage
* [red authority 12] One-shot skill roll -> success_passage | fail_passage
* [pay 20] Costs money, greyed when broke -> target    # [earn 5] to gain
* [once] [morale >= 2] [pay 5] Brackets combine freely -> target
* The end -> END            # END finishes the game
* Doomed move -> FAIL       # FAIL sends the player back to the last ~ save

Line gates — one passage, many states

[once] Narration shown only the first time this passage runs.
[seen_body] kim: "You saw it too."     # line only when the condition holds
[morale < 1] ~ set shaky = true        # conditional effect
[has(key) and !seen_body] -> vault     # conditional jump

Exporting — backups and itch.io

The EXPORT button downloads a zip containing your whole game as a single self-contained page (index.html) plus your script (source.txt). The zip is both your backup — IMPORT reads it back directly — and an upload-ready build you can host anywhere, including for money. On itch.io: create a new project, set Kind of project to HTML, upload the zip, tick "This file will be played in the browser", and set a viewport of about 960×640 (or enable the fullscreen button). To update the game later, export again and re-upload.

Rolls

Checks roll 2d6 + skill + equipped item modifiers vs the difficulty. Double sixes always succeed, double ones always fail. White checks lock on failure until the skill itself is upgraded past where it failed (via ~ points or ~ skill name +1 — equipment affects rolls but won't reopen a failed check); red checks are once-ever. Text supports {expr} interpolation, e.g. {morale}.

PREVIEW