easyvn
Version:
Modular visual novel engine for the web
112 lines (75 loc) • 3.14 kB
Markdown
# EasyVN - Visual Novel Engine
A lightweight, modular TypeScript-based visual novel engine for creating interactive stories in the browser.
## Overview
EasyVN provides a simple yet powerful framework for building visual novels with features like character dialogue, sprite management, branching narratives, and interactive choices. Built with TypeScript for type safety and modern web standards.
## Key Features
### 🎭 Character System
- Create characters with multiple sprites and expressions.
- Smooth character positioning and movement.
- Chainable method calls for fluid scene composition.
### 🎬 Scene Management
- Organize stories into discrete scenes with backgrounds.
- Smooth transitions between scenes.
- Scene registration with metadata support.
### 🔀 Branching Narratives
- Advanced routing system for complex story paths.
- Label-based navigation with `goto`/`jump` mechanics.
- Conditional story branching.
### 💬 Interactive Dialogue
- Click-to-continue dialogue system.
- Multiple choice decision points.
- Asynchronous choice handling.
### 🎨 Visual Elements
- Background management with automatic switching.
- Character sprite positioning (left, center, right).
- Smooth animations and transitions.
## Architecture
The engine is built with a modular architecture:
- **Character**: Manages character sprites, dialogue, and positioning.
- **Engine**: Core scene management and background handling.
- **Router**: Advanced navigation and branching logic.
- **Choices**: Interactive decision point system.
- **VN**: Utility class for simple scene playback.
## Getting Started
### Installation
Follow the installation instructions to set up EasyVN.
### Basic Usage
Import the components you need and start building your story.
### HTML Requirements
Your HTML needs these key elements:
- `#background` - Background image element.
- `#character` - Character sprite element.
- `#textbox` - Dialogue container.
- `#speaker` - Character name display.
- `#dialogue` - Dialogue text display.
- `#choices` - Choice buttons container.
### Asset Structure
Organize assets in the following directories:
- `./assets/characters/` - Character sprites.
- `./assets/backgrounds/` - Background images.
## Core Concepts
### Scenes
The fundamental unit of your story. Each scene is an async function that can contain dialogue, choices, and navigation.
### Characters
Entities with names, sprites, and the ability to speak and move around the scene.
### Routing
A powerful system for creating branching narratives with labels and conditional jumps.
### Choices
Interactive decision points that can trigger different story paths or character reactions.
## API Summary
### Exports
- **Character**: Character class for managing sprites and dialogue.
- **VN**: Utility class for simple scene playback.
- **waitClick**: Promise-based click waiting.
- **showChoice**: Interactive choice system.
- **startScene**, **registerScene**, **setBackground**, **gotoScene**, **jumpToScene**: Scene management.
- **runNextRouteIfAny**, **route**, **goto**: Advanced routing system.