Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Pictures, sound, and folders

Lives in: your project folder

The script names people and places. Those names only work if the files exist. The simplest game still needs pictures (and usually a little sound) on disk — not only script.txt.

This page is the map. Deeper character packs come under Characters; props under The stage.

A tiny project that can run

my-game/
  game.json                 required — name and defaults
  story/
    script.txt              your play
  characters/
    hana/
      hana.png              default look
      hana_happy.png        optional expression
  backgrounds/
    street.jpg              a place
  audio/                    optional at first
    bgm/
    sfx/
  themes/
    default.json            dialogue-box look (copy from an example)
  screens.json              title / pause (copy from an example)

Copy examples/example-00-boilerplate or example-01-hello-vn and replace pictures — you do not need to invent game.json from scratch on day one.

Characters = folders of pictures

On diskIn the script
Folder characters/hana/Speaker HANA: and direction [hana left]
hana.png (or hana_default.png)Default look
hana_happy.pngHANA [happy]: or [hana happy left]

Rules that matter:

  • One folder per character id — folder name is the id (hana), case-insensitive in the script.
  • File name = id or id_expression, plus an image extension.
  • You do not need a JSON pack for a first game. One PNG per expression is enough.
  • Layered packs (blinking, talking mouths) are optional later — Characters, Reusing settings.

People often call these “sprites.” In VN-Mikro, character pictures live under characters/. The separate sprites/ folder is for props and gadgets on top of the scene — optional; skip it until you need a lamp, phone overlay, or HUD widget.

Places (background pictures)

On diskIn the script
backgrounds/street.jpg[bg street] or [bg street fade 0.5]

Write the name without the extension. Formats: .png, .jpg / .jpeg, .webp, .svg.

Sound (when you want it)

On diskIn the script / settings
audio/bgm/theme.ogg[bgm theme]
audio/sfx/door.mp3[sfx door]
same sfx/ foldertyping beeps and button clicks in game.json

Formats: .ogg or .mp3. Name without extension in commands.

Title music can also be set once in game.json — Music and sounds by default.

Formats at a glance

KindFolderFormatsNamed in script as
Charactercharacters/<id>/.png .jpg .jpeg .webp .svgid / expression
Placebackgrounds/.png .jpg .jpeg .webp .svg[bg name]
Musicaudio/bgm/.ogg .mp3[bgm name]
Sound effectaudio/sfx/.ogg .mp3[sfx name]

What can wait

Folder / fileWhen you need it
sprites/Props, meters, clickable objects — Sprites and objects
fonts/, richer themes/Custom look — Look and menus
Character *.json packsLayered art, drive — Characters
shaders/, animations/Polish
extensions/Custom extension packs — Native extensions
Extra story packsEarly multi-scripting — In development

Next

Your first ten minutes if you have not run an example yet · otherwise What a script is