vn-settings 0.4.0

Various settings intended to simulate visual novels
Documentation

Visual Novel settings

Crates.io

A cross-platform configuration system for visual novels, featuring cascading overrides and real-time state management.

Overrides

This library provides various settings to simulate visual novels in Rust applications. It includes settings for colors, timing, images, objects, layout, and names.

Each parameter can have a default value and you can add temporary overrides to these values, which will only be active during a single continuous dialog.

Most parameters can also have a character specific values, which are only set when a character speaks. These character specific parameters can also have temporary overrides.

The priorities of the values is like this:

  1. Scene value (scene)
  2. Character specific scene value (characters_scene)
  3. Aspect value (aspect)
  4. Character specific aspect value (characters_aspect)
  5. Character specific default value (characters_default)
  6. Default value (default)

Aspects are story-driven overrides (e.g. a "Mood" aspect with values like "Happy" or "Sad") that globally affect visual settings based on the current state of the story.

This should make managing state for visual novels easy.

Features

🎨 Cascading Settings

Override colors, timing, and layouts at multiple levels:

settings.set_character_default(Setter::Color(
    ColorParameter::Dialog(BoxColorParameter::TextFill).named("Alice"),
    Color::RED
));

🔄 State Management

Track defaults, character-specific overrides, and scene changes:

settings.change(&Change::Timing(
    TimingParameter::AutoNext.named("FastMode"),
    1.0
));

📦 Serialization Ready

All types implement serde::Serialize (enable serde feature).

Core Types

Type Description
PlayerSettings Root container for all configuration
Override<T> 6-level hierarchical value management
Parameter Addressable setting path
Setter Setting path paired with a value
Change Mutation operation for scene-level overrides

Documentation

API Reference

Developed with ❤️ for visual novel creators