The simple and portable, writer-first visual novel engine with Markdown-like syntax. https://vinora.parthen.site
  • C 97.1%
  • Makefile 1.8%
  • HTML 0.8%
  • CMake 0.2%
  • Shell 0.1%
Find a file
2026-10-02 13:22:48 +03:00
assets Add support for BMP marks/emojis 2026-09-15 14:01:28 +03:00
docs Add support for BMP marks/emojis 2026-09-15 14:01:28 +03:00
ext/raylib Remove overhead raylib files 2026-08-24 00:43:20 +03:00
src Add chunk types and chunk structure 2026-10-02 13:11:45 +03:00
tests/vnrs Add parser tests 2026-10-02 13:22:48 +03:00
.clang-format Fix code style 2026-08-21 23:25:53 +03:00
.editorconfig Exclude vendored raylib from line-ending conversion 2026-08-24 20:25:24 +03:00
.gitattributes Add parser tests 2026-10-02 13:22:48 +03:00
.gitignore Add chunk types and chunk structure 2026-10-02 13:11:45 +03:00
AUTHORS.md Update docs for outside contributors 2026-08-21 23:25:38 +03:00
CONTRIBUTING.md Update docs for outside contributors 2026-08-21 23:25:38 +03:00
CONVENTIONS.md Fix code style 2026-08-21 23:25:53 +03:00
LICENSE.md Add CONVENTIONS.md LICENSE.md README.md 2026-05-23 00:34:38 +03:00
Makefile Add parser tests 2026-10-02 13:22:48 +03:00
README.md Add parser tests 2026-10-02 13:22:48 +03:00
vnrs_parser.c Add parser tests 2026-10-02 13:22:48 +03:00

Vinora Engine

Vinora Engine is a visual novel engine with a focus on simplicity and portability. It doesn't use any scripting language (like Python in Ren'Py), but instead it uses markup (well, a Markdown dialect).

It's in an early stage of development, so it has little use for an average user yet. But if you are a programmer -- you are welcome to contribute.

Status

Right now the engine can:

  • open a .vnrs scene and show it as dialogue
  • type the text out, skip it, go to the next chunk
  • wrap UTF-8 text (Cyrillic, CJK, and friends)
  • resize the window without crying

It cannot yet do the fun parts of a visual novel: choices, sprites, music, NVL mode, and the rest of the language. The specification is ahead of the code. That is on purpose.

Linux / X11 is the only platform that make knows about. Portability is a goal, not a checkbox we already ticked.

Quickstart

You need a C99 compiler, make, and the usual X11 + OpenGL libs.

On Debian/Ubuntu:

sudo apt install build-essential libgl1-mesa-dev libx11-dev \
    libxcursor-dev libxinerama-dev libxrandr-dev libxi-dev

Then, from the repository root:

make run

(make help lists the other targets.)

It will build the bundled copy of raylib, then the engine, then open the multilingual smoke test (assets/i18n.vnrs).

The first build takes a bit (raylib is not small). Later ones are quick.

To play another scene:

./vinora assets/alice.vnrs
make run assets/hamlet.vnrs

To print how a scene was split:

make vnrs_parser
./vnrs_parser assets/alice.vnrs
make test

Controls: click, Space, or Enter to advance. Close the window to quit. There is no settings menu. There is no menu.

If that fails on a missing X11/GL header, you are in raylib's Linux notes, not in a Vinora-specific circle of hell:

https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux

Sample scenes

  • assets/i18n.vnrs -- multilingual smoke test (the default)
  • assets/alice.vnrs -- Alice in Wonderland, chapter I
  • assets/hamlet.vnrs -- Hamlet, act I scene 1
  • assets/lorem.vnrs -- lorem ipsum, plus one line that is too long on purpose

See docs/vnrs_specification.md for the language these files are written in. The engine understands a small subset of it today (plain dialogue chunks). The rest is waiting for somebody -- maybe you.

Repository layout

src/          the engine
assets/       scenes, fonts, sprites, backgrounds
docs/         Vinora Screenplay spec
ext/raylib/   vendored raylib (zlib license)

raylib lives in-tree so make does not start with a package-manager quest. We did not write it; Ramon did. Credit is in AUTHORS.md. The copy is the library itself -- no upstream IDE projects, tools, or extra docs.

Contributing

Read CONVENTIONS.md before you write code, and CONTRIBUTING.md before you send it.

Work happens on develop. Pull requests go to develop. master is releases -- you cannot PR there.

Patches by email are fine. Pull requests are also fine. Silly questions are fine. 80-column lines are not optional.

License

Vinora Engine is free software under the GNU GPL v3 or later.

Third-party bits keep their own licenses: raylib is zlib, the fonts are OFL, the house backgrounds are CC BY 4.0, and Sumi has her own rules. Credit is not optional -- see AUTHORS.md.