- TypeScript 90.3%
- CSS 7%
- HTML 1.6%
- Rust 1.1%
Replace the Python (Tkinter/Pillow) player with a web-based player under web/, runnable in the browser or as a native desktop app via Tauri. The YAML scene format and the _characters/_locations/_story/_audio asset layout are unchanged. - Framework-agnostic engine core, PixiJS renderer, DOM/CSS UI layer - Forced title screen (game.yml); save/load with 8 slots + autosave - Web Audio (per-view voice, per-scene music crossfade); crossfade transitions - Scene-directory discovery + validation checker (npm run check) - Remove play.py and _engine/ (Python); history preserved in git Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| web | ||
| .gitignore | ||
| CHANGELOG.md | ||
| LICENSE | ||
| README.md | ||
| SCENE_FORMAT.md | ||
VNovelPlayer
A visual novel player built on web tech (TypeScript + PixiJS), runnable in the browser or as a native desktop app via Tauri. Define characters, locations, and story scenes with a simple file-based layout, then play.
This repository is the engine. Your game's content — _characters/,
_locations/, _story/, _audio/, _title/, and game.yml — lives alongside
it untracked (see .gitignore), so the engine stays separate from any one game.
Project structure
VNovelPlayer/
web/ # the player (TypeScript + PixiJS + Vite + Tauri)
game.yml # title screen / game config (required)
_characters/<name>/<outfit>/<emotion>.png # character sprites
_locations/<name>/<variant>.png # background images
_story/<chapter>/<scene>.yml # story scenes
_title/ # title art (referenced by game.yml; optional dir)
_audio/ # music and voice files (optional, any layout)
Running
cd web
npm install
npm run dev # browser: open the printed localhost URL
npm run check # validate scenes + game.yml (errors + missing-asset warnings)
npm run build # static web build in web/dist/
npm run tauri:dev # native desktop app (dev)
npm run tauri:build # native desktop installer/binary
npm run tauri:* requires the Rust toolchain plus the platform's webview
dev libraries (on Linux: webkit2gtk-4.1). See the Tauri prerequisites docs.
Controls: Space / Enter / Click to advance. In-game, Esc or the ☰ Menu button opens save / load / title. The window is freely resizable; the picture scales to fit while preserving aspect ratio (letterboxed as needed).
Writing scenes
See SCENE_FORMAT.md for the full YAML scene specification, and
web/README.md for the player's architecture, the game.yml
title config, and the save format.