No description
  • TypeScript 90.3%
  • CSS 7%
  • HTML 1.6%
  • Rust 1.1%
Find a file
schattenan 83da6bcd5e Re-platform to TypeScript + PixiJS + Tauri (v0.1.0)
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>
2026-06-16 19:52:37 +02:00
web Re-platform to TypeScript + PixiJS + Tauri (v0.1.0) 2026-06-16 19:52:37 +02:00
.gitignore Re-platform to TypeScript + PixiJS + Tauri (v0.1.0) 2026-06-16 19:52:37 +02:00
CHANGELOG.md Re-platform to TypeScript + PixiJS + Tauri (v0.1.0) 2026-06-16 19:52:37 +02:00
LICENSE Initial commit: visual novel player engine and scene format 2026-04-02 17:57:43 +02:00
README.md Re-platform to TypeScript + PixiJS + Tauri (v0.1.0) 2026-06-16 19:52:37 +02:00
SCENE_FORMAT.md Re-platform to TypeScript + PixiJS + Tauri (v0.1.0) 2026-06-16 19:52:37 +02:00

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.