Skip to content

vnefall is a simple, visual novel engine built in Odin .

License

Notifications You must be signed in to change notification settings

bymehul/vnefall

Repository files navigation

Vnefall

Vnefall is a simple, no-nonsense visual novel engine. It's built in Odin using SDL2 and OpenGL 3.3.

Vnefall Demo

Features

  • Branching Dialogue: Full support for labels, jumps, and player choices.
  • Configuration System: demo/config.vnef for engine settings, demo/ui.vnef for UI styling + transitions, and demo/char.vnef for per-character colors.
  • Virtual Resolution: Design once, it scales automatically to any screen.
  • Simple Syntax: Commands like say, bg, char, choice, set, and if.
  • Audio Support: Background music with looping support.
  • Sthiti Persistence: Fast, native Save/Load system for story progress.
  • Character Stacking: Responsive scaling and Z-index control for sprites.
  • Cinematic Transitions: with fade|wipe|slide|dissolve|zoom|blur|flash|shake|none for backgrounds + character fades/slides.
  • Text Effects: Inline {color=...} tags, {shake}, and per-line [speed=...] overrides.

How to get started

Just want to run it? (Linux)

If you're on Linux, grab the vnefall binary from the Releases page. Run the new high-quality demo:

chmod +x vnefall
./vnefall demo/assets/scripts/demo_game.vnef

Want to build from source?

(Note: Windows and Mac versions are currently untested).

You'll need the Odin Compiler and SDL2 libraries.

Linux (Ubuntu/Debian):

# Install dependencies
sudo apt install libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev

# Build (v1.2.0)
./build.sh
./vnefall demo/assets/scripts/v120_char_pro.vnef

Windows: Install Odin, download the SDL2 development libs, and run:

odin build src -out:vnefall.exe
./vnefall.exe demo/assets/scripts/demo.vnef

Mac:

brew install sdl2 sdl2_mixer
odin build src -out:vnefall
./vnefall demo/assets/scripts/demo.vnef

Writing your own story

Scripts are just simple text files ending in .vnef. You can change backgrounds, play music, and write dialogue without touching a single line of code.

See the detailed command guide for all available commands.

Project layout (demo-style):

  • demo/config.vnef (engine paths, entry script, resolution)
  • demo/ui.vnef (textbox, choice UI, transitions)
  • demo/char.vnef (per-character name/text colors)
  • demo/assets/ (images, audio, scripts)

Here's what a script looks like:

bg room.png
say Alice "Welcome to the new Vnefall!"

choice_add "Go to the Night" see_night
choice_add "Stay in Day" stay_day
choice_show

label see_night:
    bg night.png
    say Alice "The night is cool."
    jump end_story

label stay_day:
    say Alice "Sunlight is nice too."

label end_story:
    say Alice "Thanks for playing!"
    end

Controls

  • Click / Space / Enter: Next line.
  • Escape: Quit.

Contributing

Check out CONTRIBUTING.md for the guide. We like clean, readable code with simple logic.

License

This project is licensed under the MIT License.

I am also planning to transition to a dual-licensing model in the future to support long-term development.