Skip to content

Yuxi-Labs/vscode-storymode

Repository files navigation

storymode logo

Build Status Latest Release Open Issues Pull Requests Last Commit Contributors Version

StoryMode

StoryMode is a Visual Studio Code extension that turns VS Code into a clean, purpose-built writing studio for story scripts used in video-games. Write scenes in plain text with the Narrative DSL, collect them with a single .story manifest, preview the screenplay layout in-editor, and export a print-perfect PDF – all without ever leaving VS Code.

A screenshot of a .narrative file.

──────────────────────────────────────────────────────────────────────── FEATURES ────────────────────────────────────────────────────────────────────────

Manifest-driven projects – one <title>.story file lists every .narrative arc in playback order.

Strict, readable headers
::story: & ::scene: declarations, plus rich @title, @location, @time, @characters, etc.

Precision syntax highlighting for keys and values, anchors, cues, dialogue headers, comments.

Snippets & IntelliSense for scene skeletons, dialogue blocks, metadata tags and common cues.

Hover tool-tips – every recognised @key shows an in-editor description.

Live Preview – render the whole script as a paginated screenplay in a side panel.

Print Script – one-click PDF export, including cover page, table of contents, per-arc page breaks and an End of Document page.

Download-once Chromium – headless Chrome (≈ 40 MB) is fetched once and cached for all future PDF jobs.

Verbose Output panel – real-time logs for parsing, preview refresh, PDF progress and Chromium management.

──────────────────────────────────────────────────────────────────────── QUICK START ────────────────────────────────────────────────────────────────────────

1 Install StoryMode from the VS Code Marketplace.
2 Create a file intro.narrative and start a scene:

::scene: intro_arrival
@title:  Arrival
@location: Forest Edge
@characters: Alex, Guide

[[ Alex ]]
"Is anyone out here?."

^^ Leaves rustle in the wind.

3 Create the project manifest echoes-of-light.story:

::story: echoes_of_light
@title: Echoes of Light
@authors: Morgan Yu
@start: intro.narrative

files:
- intro.narrative
- main.narrative
- outro.narrative

4 Press Ctrl ⇧ P / Cmd ⇧ P and run
StoryMode: Preview Story – opens the formatted script.
StoryMode: Print Story – exports a ready-to-send PDF.

──────────────────────────────────────────────────────────────────────── PROJECT LAYOUT ────────────────────────────────────────────────────────────────────────

echoes-of-light.story ← manifest / global metadata ├── intro.narrative ← arc: intro ├── main.narrative ← arc: main └── outro.narrative ← arc: outro

Each .narrative file may hold one or more scenes:

::scene: main_chase
@title:  The Chase
@location: Old City Rooftops
@time:    Night

[[ Hunter ]]
>>>sfx: [crossbow_bolt_01]
"End of the line!."

──────────────────────────────────────────────────────────────────────── NARRATIVE DSL – CHEAT SHEET ────────────────────────────────────────────────────────────────────────

Declaration lines

::story: id – manifest header (one per project)
::scene: id – scene start
::end: {{ id }} – scene end (linear)
::end: {{ from }} -> {{ to }} – optional jump to a different arc file

Metadata

@key: value – title, location, time, characters, tone, mood…
custom keys are preserved by the compiler.

Body blocks

[[ Character ]] – dialogue header
^^ action line – stage direction / narration
>>>sfx: [alarm_01] – cue (sfx | music | vfx | camera | event)
"Spoken line." – dialogue text
-> target_scene – hard jump at runtime
# comment – ignored in output
/// writer note /// – prints as footnote in PDF

Anchors

Any declaration ID becomes an anchor: reference it elsewhere as {{ id }}.

──────────────────────────────────────────────────────────────────────── EXAMPLES ────────────────────────────────────────────────────────────────────────

Full working samples live in docs/examples/ – including a manifest, three arcs, cues, jumps and final PDF export.

──────────────────────────────────────────────────────────────────────── CONTRIBUTING & LICENSE ────────────────────────────────────────────────────────────────────────

Pull requests are welcome – read CONTRIBUTING.md.
Code licensed under the Yuxi Labs License (see LICENSE.md).

GitHub ▶ https://github.com/Yuxi-Labs/storymode

About

This is a VS Code extension that provides tools in the VS Code editor for Video Game Authors to write and print stories.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors